package ivory.ffg.data; import static org.junit.Assert.assertEquals; import junit.framework.JUnit4TestAdapter; import org.junit.BeforeClass; import org.junit.Test; import tl.lin.data.map.HMapII; public class DocumentVectorUtilityTest { private static final int[] document = new int[500]; private static final HMapII counts = new HMapII(); private static int[] terms; @BeforeClass public static void setUp() { for(int i = 0; i < document.length; i++) { document[i] = (int) (Math.random() * 100); if(!counts.containsKey(document[i])) { counts.put(document[i], 0); } counts.put(document[i], counts.get(document[i]) + 1); } terms = new int[counts.size()]; int i = 0; for(int key: counts.keySet()) { terms[i++] = key; } } @Test public void testGetPositions() throws Exception { int[][] positions = DocumentVectorUtility.getPositions(document, terms); for(int i = 0; i < positions.length; i++) { assertEquals(positions[i].length, counts.get(terms[i])); for(int j = 0; j < positions[i].length; j++) { assertEquals(terms[i], document[positions[i][j] - 1]); } } } @Test public void testIO() throws Exception { int[][] positions = DocumentVectorUtility.getPositions(document, terms); for(int i = 0; i < positions.length; i++) { int[] pCopy = DocumentVectorUtility. deserializePositions(DocumentVectorUtility.serializePositions(positions[i])); assertEquals(positions[i].length, pCopy.length); for(int j = 0; j < positions[i].length; j++) { assertEquals(positions[i][j], pCopy[j]); } } } public static junit.framework.Test suite() { return new JUnit4TestAdapter(DocumentVectorUtilityTest.class); } }