Skip to content

Commit 99b21c1

Browse files
committed
added unit tests to MagicNumberTest
1 parent 4693884 commit 99b21c1

1 file changed

Lines changed: 62 additions & 2 deletions

File tree

src/test/java/emissary/util/magic/MagicNumberTest.java

Lines changed: 62 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
import emissary.test.core.junit5.UnitTest;
44

55
import jakarta.xml.bind.DatatypeConverter;
6+
import org.apache.commons.codec.DecoderException;
7+
import org.apache.commons.codec.binary.Hex;
68
import org.junit.jupiter.api.Test;
79

810
import 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

Comments
 (0)