|
15 | 15 | import java.io.InputStream; |
16 | 16 | import java.math.BigInteger; |
17 | 17 | import java.net.InetAddress; |
| 18 | +import java.net.UnknownHostException; |
18 | 19 | import java.util.*; |
19 | 20 |
|
20 | 21 | import static org.hamcrest.CoreMatchers.containsString; |
@@ -54,6 +55,52 @@ public void test() throws IOException { |
54 | 55 | } |
55 | 56 | } |
56 | 57 |
|
| 58 | + class GetRecordTest { |
| 59 | + InetAddress ip; |
| 60 | + File db; |
| 61 | + String network; |
| 62 | + boolean hasRecord; |
| 63 | + |
| 64 | + GetRecordTest(String ip, String file, String network, boolean hasRecord) throws UnknownHostException { |
| 65 | + this.ip = InetAddress.getByName(ip); |
| 66 | + db = getFile(file); |
| 67 | + this.network = network; |
| 68 | + this.hasRecord = hasRecord; |
| 69 | + } |
| 70 | + } |
| 71 | + |
| 72 | + @Test |
| 73 | + public void testGetRecord() throws IOException { |
| 74 | + GetRecordTest[] tests = { |
| 75 | + new GetRecordTest("1.1.1.1", "MaxMind-DB-test-ipv6-32.mmdb", "1.0.0.0/8", false), |
| 76 | + new GetRecordTest("::1:ffff:ffff", "MaxMind-DB-test-ipv6-24.mmdb", "0:0:0:0:0:1:ffff:ffff/128", true), |
| 77 | + new GetRecordTest("::2:0:1", "MaxMind-DB-test-ipv6-24.mmdb", "0:0:0:0:0:2:0:0/122", true), |
| 78 | + new GetRecordTest("1.1.1.1", "MaxMind-DB-test-ipv4-24.mmdb", "1.1.1.1/32", true), |
| 79 | + new GetRecordTest("1.1.1.3", "MaxMind-DB-test-ipv4-24.mmdb", "1.1.1.2/31", true), |
| 80 | + new GetRecordTest("1.1.1.3", "MaxMind-DB-test-decoder.mmdb", "1.1.1.0/24", true), |
| 81 | + new GetRecordTest("::ffff:1.1.1.128", "MaxMind-DB-test-decoder.mmdb", "1.1.1.0/24", true), |
| 82 | + new GetRecordTest("::1.1.1.128", "MaxMind-DB-test-decoder.mmdb", "0:0:0:0:0:0:101:100/120", true), |
| 83 | + new GetRecordTest("200.0.2.1", "MaxMind-DB-no-ipv4-search-tree.mmdb", "0.0.0.0/0", true), |
| 84 | + new GetRecordTest("::200.0.2.1", "MaxMind-DB-no-ipv4-search-tree.mmdb", "0:0:0:0:0:0:0:0/64", true), |
| 85 | + new GetRecordTest("0:0:0:0:ffff:ffff:ffff:ffff", "MaxMind-DB-no-ipv4-search-tree.mmdb", "0:0:0:0:0:0:0:0/64", true), |
| 86 | + new GetRecordTest("ef00::", "MaxMind-DB-no-ipv4-search-tree.mmdb", "8000:0:0:0:0:0:0:0/1", false) |
| 87 | + }; |
| 88 | + for (GetRecordTest test : tests) { |
| 89 | + try (Reader reader = new Reader(test.db)) { |
| 90 | + Record record = reader.getRecord(test.ip); |
| 91 | + |
| 92 | + assertEquals(test.network, record.getNetwork().toString()); |
| 93 | + |
| 94 | + if (test.hasRecord) { |
| 95 | + assertNotNull(record.getData()); |
| 96 | + } else { |
| 97 | + assertNull(record.getData()); |
| 98 | + } |
| 99 | + } |
| 100 | + } |
| 101 | + } |
| 102 | + |
| 103 | + |
57 | 104 | @Test |
58 | 105 | public void testNoIpV4SearchTreeFile() throws IOException { |
59 | 106 | this.testReader = new Reader(getFile("MaxMind-DB-no-ipv4-search-tree.mmdb")); |
|
0 commit comments