package com.miguelfonseca.completely; import com.miguelfonseca.completely.data.TestRecord; import com.miguelfonseca.completely.text.index.HashMultiMap; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; @SuppressWarnings("checkstyle:multiplestringliterals") public class AutocompleteEngineTest { @Rule @SuppressWarnings("checkstyle:visibilitymodifier") public ExpectedException exceptionRule; private AutocompleteEngine<TestRecord> engine; public AutocompleteEngineTest() { this.exceptionRule = ExpectedException.none(); this.engine = new AutocompleteEngine.Builder<TestRecord>() .setIndex(new HashMultiMap<>()) .build(); } @Test public void testCreateEmpty() { exceptionRule.expect(NullPointerException.class); new AutocompleteEngine.Builder().build(); } @Test public void testAdd() { TestRecord record = new TestRecord("a"); assertTrue(engine.add(record)); assertFalse(engine.add(record)); } @Test public void testAddNull() { exceptionRule.expect(NullPointerException.class); engine.add(null); } @Test public void testAddAllNull() { exceptionRule.expect(NullPointerException.class); engine.addAll(null); } @Test public void testRemove() { TestRecord record = new TestRecord("a"); engine.add(record); assertTrue(engine.remove(record)); assertFalse(engine.remove(record)); } @Test public void testRemoveNull() { exceptionRule.expect(NullPointerException.class); engine.remove(null); } @Test public void testRemoveAllNull() { exceptionRule.expect(NullPointerException.class); engine.removeAll(null); } @Test public void testSearch() { engine.add(new TestRecord("a", "b")); engine.add(new TestRecord("a", "c")); engine.add(new TestRecord("a", "d")); assertEquals(3, engine.search("a").size()); assertEquals(1, engine.search("b").size()); assertEquals(1, engine.search("c").size()); assertEquals(1, engine.search("d").size()); } @Test public void testSearchLimit() { engine.add(new TestRecord("a")); engine.add(new TestRecord("a")); engine.add(new TestRecord("a")); assertEquals(2, engine.search("a", 2).size()); } @Test public void testSearchNegativeLimit() { exceptionRule.expect(IllegalArgumentException.class); engine.search("", -1); } @Test public void testSearchNullQuery() { exceptionRule.expect(NullPointerException.class); engine.search(null); } }