public boolean isEmpty() { return golddb.getAllLinks().isEmpty(); }
@Test public void emptyTest() { assertEquals(linkdb.getAllLinks().size(), 0); assertEquals(linkdb.getAllLinksFor("1").size(), 0); }
@Test public void testAddOne() { Link link = new Link("1", "2", LinkStatus.ASSERTED, LinkKind.SAME, 1.0); linkdb.assertLink(link); Collection<Link> links = linkdb.getAllLinks(); assertEquals(links.size(), 1); assertTrue(links.contains(link)); links = linkdb.getAllLinksFor("1"); assertEquals(links.size(), 1); assertTrue(links.contains(link)); links = linkdb.getAllLinksFor("2"); assertEquals(links.size(), 1); assertTrue(links.contains(link)); }
@Test public void testEmpty() { // nothing's happened, so there should be no links assertTrue(linkdb.getAllLinks().isEmpty()); }
@Test public void testAddIdempotent() { Link link = new Link("1", "2", LinkStatus.ASSERTED, LinkKind.SAME, 1.0); linkdb.assertLink(link); link = new Link("2", "1", LinkStatus.ASSERTED, LinkKind.SAME, 1.0); linkdb.assertLink(link); Collection<Link> links = linkdb.getAllLinks(); assertEquals(links.size(), 1); assertTrue(links.contains(link)); links = linkdb.getAllLinksFor("1"); assertEquals(links.size(), 1); assertTrue(links.contains(link)); links = linkdb.getAllLinksFor("2"); assertEquals(links.size(), 1); assertTrue(links.contains(link)); }
@Test public void testEmpty() throws IOException { writer.close(); load(); assertEquals("shouldn't contain links", 0, db.getAllLinks().size()); }
@Test public void testInferenceDifferent() { ((InMemoryLinkDatabase) linkdb).setDoInference(true); Link link1 = new Link("1", "2", LinkStatus.ASSERTED, LinkKind.DIFFERENT, 1.0); linkdb.assertLink(link1); Link link2 = new Link("1", "3", LinkStatus.ASSERTED, LinkKind.DIFFERENT, 1.0); linkdb.assertLink(link2); Collection<Link> links = linkdb.getAllLinks(); assertEquals(2, links.size()); assertTrue(links.contains(link1)); assertTrue(links.contains(link2)); links = linkdb.getAllLinksFor("1"); assertEquals(2, links.size()); assertTrue(links.contains(link1)); assertTrue(links.contains(link2)); links = linkdb.getAllLinksFor("2"); assertEquals(1, links.size()); assertTrue(links.contains(link1)); links = linkdb.getAllLinksFor("3"); assertEquals(1, links.size()); assertTrue(links.contains(link2)); }
@Test public void testSingleLink() throws IOException { out.write("1", "2", true, 0.95); writer.close(); load(); assertEquals(1, db.getAllLinks().size()); Link link = db.getAllLinks().iterator().next(); verifySame(new Link("1", "2", LinkStatus.ASSERTED, LinkKind.SAME, 0.95), link); }
@Test public void testInference() { ((InMemoryLinkDatabase) linkdb).setDoInference(true); Link link1 = new Link("1", "2", LinkStatus.ASSERTED, LinkKind.SAME, 1.0); linkdb.assertLink(link1); Link link2 = new Link("1", "3", LinkStatus.ASSERTED, LinkKind.SAME, 1.0); linkdb.assertLink(link2); Link link3 = new Link("2", "3", LinkStatus.ASSERTED, LinkKind.SAME, 1.0); Collection<Link> links = linkdb.getAllLinks(); assertEquals(3, links.size()); assertTrue(links.contains(link1)); assertTrue(links.contains(link2)); assertTrue(links.contains(link3)); links = linkdb.getAllLinksFor("1"); assertEquals(2, links.size()); assertTrue(links.contains(link1)); assertTrue(links.contains(link2)); links = linkdb.getAllLinksFor("2"); assertEquals(2, links.size()); assertTrue(links.contains(link1)); assertTrue(links.contains(link3)); links = linkdb.getAllLinksFor("3"); assertEquals(2, links.size()); assertTrue(links.contains(link2)); assertTrue(links.contains(link3)); }
@Test public void testMakeLinkFile() throws IOException { File linkfile = tmpdir.newFile(); Result r = duke("--showmatches --linkfile=\"" + linkfile.getAbsolutePath() + "\" doc/example-data/countries.xml"); int outmatches = r.countOccurrences("MATCH 0."); LinkDatabase db = LinkDatabaseUtils.loadTestFile(linkfile.getAbsolutePath()); assertEquals("disagreement on number of matches", outmatches, db.getAllLinks().size()); }
@Test public void testEmptyBatch() { // when running as a server there are often empty batches listener.startProcessing(); listener.endProcessing(); // nothing's happened, so there should be no links assertTrue(linkdb.getAllLinks().isEmpty()); }
@Test public void testSingleRecord() { Record r1 = makeRecord("id", "1"); Record r2 = makeRecord("id", "2"); listener.startProcessing(); listener.batchReady(1); listener.matches(r1, r2, 0.95); listener.batchDone(); listener.endProcessing(); Collection<Link> all = linkdb.getAllLinks(); assertEquals(1, all.size()); TestUtils.verifySame(new Link("1", "2", LinkStatus.INFERRED, LinkKind.SAME, 0.95), all.iterator().next()); }
@Test public void testSingleRecordPerhaps() { Record r1 = makeRecord("id", "1"); Record r2 = makeRecord("id", "2"); listener.startProcessing(); listener.batchReady(1); listener.matchesPerhaps(r1, r2, 0.7); listener.batchDone(); listener.endProcessing(); Collection<Link> all = linkdb.getAllLinks(); assertEquals(1, all.size()); TestUtils.verifySame(new Link("1", "2", LinkStatus.INFERRED, LinkKind.MAYBESAME, 0.7), all.iterator().next()); }
@Test public void testSingleRecordRetract() { testSingleRecord(); // now we've asserted they're equal. then let's retract pause(); // ensure timestamps are different Record r1 = makeRecord("id", "1"); listener.startProcessing(); listener.batchReady(0); listener.noMatchFor(r1); listener.batchDone(); listener.endProcessing(); Collection<Link> all = linkdb.getAllLinks(); assertEquals(1, all.size()); TestUtils.verifySame(new Link("1", "2", LinkStatus.RETRACTED, LinkKind.SAME, 0.0), all.iterator().next()); }
@Test public void testOverride2() { Link l1 = new Link("1", "2", LinkStatus.ASSERTED, LinkKind.DIFFERENT, 1.0); linkdb.assertLink(l1); Record r1 = makeRecord("id", "1"); Record r2 = makeRecord("id", "2"); listener.startProcessing(); listener.batchReady(1); listener.matches(r1, r2, 1.0); listener.batchDone(); listener.endProcessing(); Collection<Link> all = linkdb.getAllLinks(); assertEquals(1, all.size()); TestUtils.verifySame(new Link("1", "2", LinkStatus.ASSERTED, LinkKind.DIFFERENT, 1.0), all.iterator().next()); }
@Test public void testThreeLink() throws IOException { out.write("1", "2", true, 0.95); out.write("1", "3", false, 0.2); out.write("3", "4", true, 0.8); writer.close(); load(); assertEquals(3, db.getAllLinks().size()); Collection<Link> links = db.getAllLinks(); Link link = find(links, "1", "2"); verifySame(new Link("1", "2", LinkStatus.ASSERTED, LinkKind.SAME, 0.95), link); link = find(links, "1", "3"); verifySame(new Link("1", "3", LinkStatus.ASSERTED, LinkKind.DIFFERENT, 0.2), link); link = find(links, "3", "4"); verifySame(new Link("3", "4", LinkStatus.ASSERTED, LinkKind.SAME, 0.8), link); }
@Test public void testUpgradeFromPerhaps() { testSingleRecordPerhaps(); pause(); // ensure timestamps are different Record r1 = makeRecord("id", "1"); Record r2 = makeRecord("id", "2"); listener.startProcessing(); listener.batchReady(1); listener.matches(r1, r2, 1.0); listener.batchDone(); listener.endProcessing(); Collection<Link> all = linkdb.getAllLinks(); assertEquals(1, all.size()); TestUtils.verifySame(new Link("1", "2", LinkStatus.INFERRED, LinkKind.SAME, 1.0), all.iterator().next()); }
@Test public void testOverride() { Link l1 = new Link("1", "2", LinkStatus.ASSERTED, LinkKind.SAME, 1.0); linkdb.assertLink(l1); Record r1 = makeRecord("id", "1"); Record r2 = makeRecord("id", "2"); listener.startProcessing(); listener.batchReady(1); listener.matches(r1, r2, 1.0); listener.batchDone(); listener.endProcessing(); Collection<Link> all = linkdb.getAllLinks(); assertEquals(1, all.size()); TestUtils.verifySame(new Link("1", "2", LinkStatus.ASSERTED, LinkKind.SAME, 1.0), all.iterator().next()); }
@Test public void testNoMatchFor() { Record r1 = makeRecord("id", "1"); Record r2 = makeRecord("id", "2"); Record r3 = makeRecord("id", "3"); Record r4 = makeRecord("id", "4"); listener.startProcessing(); listener.batchReady(3); listener.matches(r1, r3, 1.0); listener.noMatchFor(r2); listener.matches(r3, r1, 1.0); // need to repeat this one listener.matches(r3, r4, 1.0); listener.batchDone(); listener.endProcessing(); Link l1 = new Link("1", "3", LinkStatus.INFERRED, LinkKind.SAME, 1.0); Link l2 = new Link("3", "4", LinkStatus.INFERRED, LinkKind.SAME, 1.0); Collection<Link> all = linkdb.getAllLinks(); assertEquals(2, all.size()); assertTrue(all.contains(l1)); assertTrue(all.contains(l2)); }
@Test public void testInferenceDifferentBig() { ((InMemoryLinkDatabase) linkdb).setDoInference(true); // cluster 1 Link link1 = same("1", "3"); Link link2 = different("1", "2"); Link link3 = new Link("2", "3", LinkStatus.ASSERTED, LinkKind.DIFFERENT, 1.0); // cluster 2 Link link4 = same("4", "6"); Link link5 = different("4", "5"); Link link6 = new Link("5", "6", LinkStatus.ASSERTED, LinkKind.DIFFERENT, 1.0); // merge the two clusters Link link7 = same("3", "4"); Link link8 = new Link("2", "4", LinkStatus.ASSERTED, LinkKind.DIFFERENT, 1.0); Link link9 = new Link("2", "6", LinkStatus.ASSERTED, LinkKind.DIFFERENT, 1.0); Link link10 = new Link("1", "4", LinkStatus.ASSERTED, LinkKind.SAME, 1.0); Link link11 = new Link("1", "6", LinkStatus.ASSERTED, LinkKind.SAME, 1.0); Link link12 = new Link("3", "5", LinkStatus.ASSERTED, LinkKind.DIFFERENT, 1.0); Link link13 = new Link("1", "5", LinkStatus.ASSERTED, LinkKind.DIFFERENT, 1.0); Link link14 = new Link("3", "6", LinkStatus.ASSERTED, LinkKind.SAME, 1.0); Collection<Link> links = linkdb.getAllLinks(); verifyContained(links, new Link[] {link1, link2, link3, link4, link5, link6, link7, link8, link9, link10, link11, link12, link13, link14}); }