package com.skp.experiment.cf.als.hadoop; import java.io.File; import java.io.IOException; import java.util.Arrays; import java.util.Map; import java.util.Map.Entry; import org.apache.hadoop.fs.Path; import org.junit.Before; import org.junit.Test; import com.skp.experiment.common.MahoutTestCase; public class ALSMatrixUtilTest extends MahoutTestCase { private File inputFile; private File outputDir; private File tempDir; private int testSize = 10; @Before public void setUp() throws IOException { inputFile = getTestTempFile("alsMatrixUtilTestIn"); outputDir = getTestTempDir("alsMatrixUtilTestOut"); tempDir = getTestTempDir("alsMatrixUtilTestTmp"); } private void writeTestCase(File testFile) throws IOException { StringBuffer sb = new StringBuffer(); for (int i = 0; i < testSize; i++) { if (i != 0) { sb.append("\n"); } sb.append((char)('A' + i)).append(",").append((char)('A' + 32 + i)); sb.append(",").append((char)('A' - 32 + i)); } writeLines(testFile, sb.toString()); } @Test public void testFetchTextFilesWhenPathIsFile() throws IOException { writeTestCase(inputFile); outputDir.delete(); Map<String, String> lines = ALSMatrixUtil.fetchTextFiles(new Path(inputFile.toString()), ",", Arrays.asList(0), Arrays.asList(1)); assertTrue(lines.size() == testSize); for (int i = 0; i < testSize; i++) { String expKey = String.valueOf((char)('A' + i)); String expValue = String.valueOf((char)('A' + 32 +i)); assertTrue(lines.containsKey(expKey)); assertTrue(lines.get(expKey).equals(expValue)); } } @Test public void testFetchTextFilesWithIndexs() throws IOException { writeTestCase(inputFile); outputDir.delete(); Map<String, String> lines = ALSMatrixUtil.fetchTextFiles(new Path(inputFile.toString()), ",", Arrays.asList(0), Arrays.asList(2)); assertTrue(lines.size() == testSize); for (int i = 0; i < testSize; i++) { String expKey = String.valueOf((char)('A' + i)); String expValue = String.valueOf((char)('A' - 32 + i)); assertTrue(lines.containsKey(expKey)); assertTrue(lines.get(expKey).equals(expValue)); } } }