33import emissary .test .core .junit5 .UnitTest ;
44
55import jakarta .xml .bind .DatatypeConverter ;
6+ import org .apache .commons .codec .DecoderException ;
7+ import org .apache .commons .codec .binary .Hex ;
68import org .junit .jupiter .api .Test ;
79
810import static org .junit .jupiter .api .Assertions .assertFalse ;
@@ -84,12 +86,17 @@ void testLessThanBelong() throws ParseException {
8486 }
8587
8688 @ Test
87- void testLessEqualBelong () throws ParseException {
89+ void testLessEqualBelong () throws ParseException , DecoderException {
8890 // ABCD
8991 MagicNumber m = MagicNumberFactory .buildMagicNumber ("0 belong <=0x41424344 FOO" );
9092 assertTrue (m .test ("ABCC" .getBytes ()), "LessEqual magic operator failed" );
9193 assertTrue (m .test ("ABCD" .getBytes ()), "LessEqual magic operator failed" );
9294 assertFalse (m .test ("ABCE" .getBytes ()), "LessEqual magic operator failed" );
95+
96+ m = MagicNumberFactory .buildMagicNumber ("0 belong <=0x00010000 FOO" );
97+ assertTrue (m .test (Hex .decodeHex ("00010000" )), "Big Endian less than equal failed on exact match" );
98+ assertTrue (m .test (Hex .decodeHex ("0000FFFF" )), "Big Endian less than equal failed" );
99+ assertFalse (m .test (Hex .decodeHex ("00020000" )), "Big Endian less than equal failed" );
93100 }
94101
95102 @ Test
@@ -101,12 +108,23 @@ void testBeshort() throws ParseException {
101108 }
102109
103110 @ Test
104- void testGreaterThanBeshort () throws ParseException {
111+ void testGreaterThanBeshort () throws ParseException , DecoderException {
105112 // AB
106113 MagicNumber m = MagicNumberFactory .buildMagicNumber ("0 beshort >0x4142 FOO" );
107114 assertTrue (m .test ("AC" .getBytes ()), "Greater than magic operator failed" );
108115 assertFalse (m .test ("AB" .getBytes ()), "Greater than magic operator failed" );
109116 assertFalse (m .test ("AA" .getBytes ()), "Greater than magic operator failed" );
117+
118+ m = MagicNumberFactory .buildMagicNumber ("0 beshort >0x0000 FOO" );
119+ assertFalse (m .test (Hex .decodeHex ("0000" )), "Greater than magic operator failed" );
120+ assertTrue (m .test (Hex .decodeHex ("0001" )), "Greater than magic operator failed" );
121+ assertTrue (m .test (Hex .decodeHex ("0101" )), "Greater than magic operator failed" );
122+ assertTrue (m .test (Hex .decodeHex ("0100" )), "Greater than magic operator failed" );
123+
124+ m = MagicNumberFactory .buildMagicNumber ("0 beshort >0x0100 FOO" );
125+ assertTrue (m .test (Hex .decodeHex ("0200" )), "Big Endian greater than failed on MSB" );
126+ assertFalse (m .test (Hex .decodeHex ("00FF" )), "Big Endian greater than failed on MSB tie-breaker" );
127+ assertTrue (m .test (Hex .decodeHex ("0101" )), "Big Endian greater than failed on LSB tie-breaker" );
110128 }
111129
112130 @ Test
@@ -136,6 +154,48 @@ void testLessEqualBeshort() throws ParseException {
136154 assertFalse (m .test ("AC" .getBytes ()), "LessEqual magic operator failed" );
137155 }
138156
157+ @ Test
158+ void testGreaterThanLeshort () throws ParseException , DecoderException {
159+ MagicNumber m = MagicNumberFactory .buildMagicNumber ("0 leshort >0x0001 FOO" );
160+ assertTrue (m .test (Hex .decodeHex ("0200" )), "Little Endian greater than failed on LSB increment" );
161+ assertTrue (m .test (Hex .decodeHex ("0001" )), "Little Endian greater than failed on MSB increment" );
162+ assertFalse (m .test (Hex .decodeHex ("0000" )), "Little Endian greater than failed on lower value" );
163+ }
164+
165+ @ Test
166+ void testLessThanEqualLelong () throws ParseException , DecoderException {
167+ MagicNumber m = MagicNumberFactory .buildMagicNumber ("0 lelong <=0x00000100 FOO" );
168+ assertTrue (m .test (Hex .decodeHex ("00010000" )), "Little Endian less than equal failed on exact match" );
169+ assertTrue (m .test (Hex .decodeHex ("FF000000" )), "Little Endian less than equal failed on lower value" );
170+ assertFalse (m .test (Hex .decodeHex ("01010000" )), "Little Endian less than equal failed on higher value" );
171+ }
172+
173+ @ Test
174+ void testSameInputBigEndianVsLittleEndian () throws ParseException , DecoderException {
175+ MagicNumber bem = MagicNumberFactory .buildMagicNumber ("0 beshort >0x0005 FOO" );
176+ assertTrue (bem .test (Hex .decodeHex ("0200" )), "Big Endian failed: 0x0200 (512) should be greater than 5" );
177+
178+ MagicNumber lem = MagicNumberFactory .buildMagicNumber ("0 leshort >0x0005 FOO" );
179+ assertFalse (lem .test (Hex .decodeHex ("0200" )), "Little Endian failed: 0x0200 (2) should NOT be greater than 5" );
180+ }
181+
182+ @ Test
183+ void testOrBeshort () throws ParseException , DecoderException {
184+ MagicNumber m = MagicNumberFactory .buildMagicNumber ("0 beshort x0x1010 FOO" );
185+
186+ assertFalse (m .test (Hex .decodeHex ("0000" )), "OR magic operator failed" );
187+ assertFalse (m .test (Hex .decodeHex ("0001" )), "OR magic operator failed" );
188+ assertFalse (m .test (Hex .decodeHex ("0101" )), "OR magic operator failed" );
189+
190+ assertTrue (m .test (Hex .decodeHex ("0010" )), "OR magic operator failed" );
191+ assertTrue (m .test (Hex .decodeHex ("0011" )), "OR magic operator failed" );
192+ assertTrue (m .test (Hex .decodeHex ("1000" )), "OR magic operator failed" );
193+ assertTrue (m .test (Hex .decodeHex ("1010" )), "OR magic operator failed" );
194+ assertTrue (m .test (Hex .decodeHex ("1100" )), "OR magic operator failed" );
195+ assertTrue (m .test (Hex .decodeHex ("1111" )), "OR magic operator failed" );
196+ assertTrue (m .test (Hex .decodeHex ("FFFF" )), "OR magic operator failed" );
197+ }
198+
139199 @ Test
140200 void testString () throws ParseException {
141201 // ABCD
0 commit comments