1 package org.lcsim.detector.identifier;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import junit.framework.TestCase;
7 import junit.framework.TestSuite;
8
9
10
11
12
13
14
15
16
17
18 public class IdentifierHelperTest extends TestCase
19 {
20 public IdentifierHelperTest(String name)
21 {
22 super(name);
23 }
24
25 public static junit.framework.Test suite()
26 {
27 return new TestSuite(IdentifierHelperTest.class);
28 }
29
30 public void testFieldPack() throws Exception
31 {
32 List<IIdentifierField> fields = new ArrayList<IIdentifierField>();
33 fields.add(new IdentifierField("field1", 16, 0, false));
34 IIdentifierDictionary iddict = new IdentifierDictionary("test3", fields);
35 IdentifierHelper helper = new IdentifierHelper(iddict);
36 IIdentifier check = helper.pack(new ExpandedIdentifier("/10"));
37
38 IIdentifier id = new Identifier();
39 iddict.getField(0).pack(10, id);
40
41 assertEquals("Field packed id does not match compact!", id, check);
42 }
43
44 public void testIdContext()
45 {
46 int i1[] = new int[3];
47 i1[0] = 2;
48 i1[1] = 3;
49 i1[2] = 4;
50
51 IdentifierContext c1 = new IdentifierContext(i1);
52 assertTrue(c1.isRange());
53 assertTrue(c1.getStartIndex() == 2);
54 assertTrue(c1.getEndIndex() == 4);
55 assertTrue(c1.isValidIndex(2));
56 assertTrue(c1.isValidIndex(3));
57 assertTrue(c1.isValidIndex(4));
58 assertTrue(!c1.isValidIndex(0));
59 assertTrue(!c1.isValidIndex(5));
60 assertTrue(c1.getNumberOfIndices() == 3);
61
62 IdentifierContext c2 = new IdentifierContext(2, 4);
63 assertTrue(c2.isRange());
64 assertTrue(c2.getStartIndex() == 2);
65 assertTrue(c2.getEndIndex() == 4);
66 assertTrue(c2.isValidIndex(2));
67 assertTrue(c2.isValidIndex(3));
68 assertTrue(c2.isValidIndex(4));
69 assertTrue(!c2.isValidIndex(0));
70 assertTrue(!c2.isValidIndex(5));
71 assertTrue(c2.getNumberOfIndices() == 3);
72
73 int i2[] = new int[3];
74 i2[0] = 0;
75 i2[1] = 2;
76 i2[2] = 4;
77 IdentifierContext c3 = new IdentifierContext(i2);
78 assertTrue(!c3.isRange());
79 assertTrue(c3.getStartIndex() == 0);
80 assertTrue(c3.getEndIndex() == 4);
81 assertTrue(c3.isValidIndex(0));
82 assertTrue(c3.isValidIndex(2));
83 assertTrue(c3.isValidIndex(4));
84 assertTrue(!c3.isValidIndex(5));
85 assertTrue(!c3.isValidIndex(1));
86 assertTrue(!c3.isValidIndex(3));
87 assertTrue(c3.getNumberOfIndices() == 3);
88 }
89
90 public void testUnpack() throws Exception
91 {
92 List<IIdentifierField> fields = new ArrayList<IIdentifierField>();
93 fields.add(new IdentifierField("field1", 8, 0, false));
94 fields.add(new IdentifierField("field2", 8, 8, true));
95 fields.add(new IdentifierField("field3", 8, 16, false));
96 IIdentifierDictionary iddict = new IdentifierDictionary("test2", fields);
97 IdentifierHelper helper = new IdentifierHelper(iddict);
98
99 IExpandedIdentifier expId = new ExpandedIdentifier();
100 expId.addValue(1);
101 expId.addValue(-1);
102 expId.addValue(2);
103
104 IIdentifier id = helper.pack(expId);
105
106 IExpandedIdentifier expIdCheck1 = helper.unpack(id);
107 assertTrue(expIdCheck1.toString().equals("/1/-1/2"));
108
109
110
111
112
113
114
115
116 }
117
118 public void testPack() throws Exception
119 {
120 List<IIdentifierField> fields = new ArrayList<IIdentifierField>();
121 fields.add(new IdentifierField("field1", 8, 0, false));
122 fields.add(new IdentifierField("field2", 8, 8, true));
123 IIdentifierDictionary iddict = new IdentifierDictionary("test3", fields);
124 IIdentifierHelper helper = new IdentifierHelper(iddict);
125
126 IExpandedIdentifier expId = new ExpandedIdentifier();
127 expId.addValue(10);
128 expId.addValue(-11);
129
130 IIdentifier compactId = helper.pack(expId);
131
132 IExpandedIdentifier expIdCheck = helper.unpack(compactId);
133
134 assertTrue("ExpandedIdentifiers do not match!", expId.equals(expIdCheck));
135
136 expId.clear();
137 expId.addValue(10);
138 expId.addValue(11);
139
140 compactId = helper.pack(expId);
141 expIdCheck = helper.unpack(compactId);
142
143 assertTrue("ExpandedIdentifiers do not match!", expId.equals(expIdCheck));
144 }
145 }