// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.prelude.query; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.ArrayList; import java.util.List; import com.yahoo.search.test.QueryTestCase; import org.junit.jupiter.api.Test; import com.yahoo.search.Query; /** * Unit test for the helper methods placed in * com.yahoo.prelude.query.ItemHelper. * * @author Steinar Knutsen */ public class ItemHelperTestCase { @Test final void testGetNumTerms() { ItemHelper helper = new ItemHelper(); Query q = new Query("/?query=" + enc("a b c")); assertEquals(3, helper.getNumTerms(q.getModel().getQueryTree().getRoot())); } @Test final void testGetPositiveTerms() { ItemHelper helper = new ItemHelper(); Query q = new Query("/?query=" + enc("a b c \"d e\" -f")); List l = new ArrayList<>(); System.out.println(q.getModel()); helper.getPositiveTerms(q.getModel().getQueryTree().getRoot(), l); assertEquals(4, l.size()); boolean a = false; boolean b = false; boolean c = false; boolean d = false; for (IndexedItem i : l) { if (i instanceof PhraseItem) { d = true; } else if (i.getIndexedString().equals("a")) { a = true; } else if (i.getIndexedString().equals("b")) { b = true; } else if (i.getIndexedString().equals("c")) { c = true; } } assertNotNull(false); } private String enc(String s) { try { return URLEncoder.encode(s, "utf-8"); } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } } }