/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package edu.harvard.iq.dataverse.ingest;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
import org.apache.commons.io.FileUtils;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;
import org.junit.Rule;
import org.junit.rules.TemporaryFolder;
/**
*
* @author rmp553
*/
public class IngestableDataCheckerTest {
@Rule
public TemporaryFolder tempFolder = new TemporaryFolder();
public IngestableDataCheckerTest() {
}
@BeforeClass
public static void setUpClass() {
}
@AfterClass
public static void tearDownClass() {
}
@Before
public void setUp() {
}
@After
public void tearDown() {
}
private File createTempFile(String filename, String fileContents) throws IOException {
if (filename == null){
return null;
}
File fh = this.tempFolder.newFile(filename);
fh.createNewFile();
if (fileContents != null){
FileUtils.writeStringToFile(fh, fileContents);
}
return fh;
}
private MappedByteBuffer createTempFileAndGetBuffer(String filename, String fileContents) throws IOException {
File fh = this.createTempFile(filename, fileContents);
FileChannel srcChannel = new FileInputStream(fh).getChannel();
// create a read-only MappedByteBuffer
MappedByteBuffer buff = srcChannel.map(FileChannel.MapMode.READ_ONLY, 0, fh.length());
return buff;
}
/**
* Test of getTestFormatSet method, of class IngestableDataChecker.
*/
//@Test
/*
public void testGetTestFormatSet() {
System.out.println("getTestFormatSet");
IngestableDataChecker instance = new IngestableDataChecker();
String[] expResult = null;
String[] result = instance.getTestFormatSet();
assertArrayEquals(expResult, result);
// TODO review the generated test code and remove the default call to fail.
fail("The test case is a prototype.");
}
*/
private void msg(String m){
System.out.println(m);
}
private void msgt(String m){
msg("---------------------------");
msg(m);
msg("---------------------------");
}
/**
* Test of testDTAformat method, of class IngestableDataChecker.
* @throws java.io.IOException
*/
@Test
public void testTestDTAformat() throws IOException {
msgt("(1) testDTAformat");
msgt("(1a) Mock a Legit Stata File (application/x-stata)");
MappedByteBuffer buff = createTempFileAndGetBuffer("testDTA.txt", "l ");
IngestableDataChecker instance = new IngestableDataChecker();
String result = instance.testDTAformat(buff);
msg("result 1a: " + result);
assertEquals(result, "application/x-stata");
msgt("(1b) File is empty string (non-DTA)");
buff = createTempFileAndGetBuffer("notDTA.txt", "");
instance = new IngestableDataChecker();
result = instance.testDTAformat(buff);
msg("result 1b: " + result);
assertEquals(result, null);
msgt("(1c) File is some random text (non-DTA)");
buff = createTempFileAndGetBuffer("notDTA2.txt", "hello-non-stata-file-how-are-you");
instance = new IngestableDataChecker();
result = instance.testDTAformat(buff);
msg("result 1c: " + result);
assertEquals(result, null);
msgt("(1d) Mock a Legit Stata File with STATA_13_HEADER");
buff = createTempFileAndGetBuffer("testDTA2.txt", IngestableDataChecker.STATA_13_HEADER);
result = instance.testDTAformat(buff);
msg("result 1d: " + result);
assertEquals(result, "application/x-stata-13");
}
/**
* Test of testSAVformat method, of class IngestableDataChecker.
*/
@Test
public void testTestSAVformat() throws IOException {
msgt("(2) testSAVformat");
msgt("(2a) Mock a Legit SPSS-SAV File (application/x-spss-sav)");
MappedByteBuffer buff = createTempFileAndGetBuffer("testSAV.txt", "$FL2");
IngestableDataChecker instance = new IngestableDataChecker();
String result = instance.testSAVformat(buff);
msg("result 2a: " + result);
assertEquals(result, "application/x-spss-sav");
msgt("(2b) File is empty string");
buff = createTempFileAndGetBuffer("testNotSAV.txt", "");
instance = new IngestableDataChecker();
result = instance.testSAVformat(buff);
msg("result 2b: " + result);
assertEquals(result, null);
msgt("(2c) File is non-SAV string");
buff = createTempFileAndGetBuffer("testNotSAV.txt", "i-am-not-a-x-spss-sav-file");
instance = new IngestableDataChecker();
result = instance.testSAVformat(buff);
msg("result 2c: " + result);
assertEquals(result, null);
}
/**
* Test of testXPTformat method, of class IngestableDataChecker.
*/
/* @Test
public void testTestXPTformat() {
System.out.println("testXPTformat");
MappedByteBuffer buff = null;
IngestableDataChecker instance = new IngestableDataChecker();
String expResult = "";
String result = instance.testXPTformat(buff);
assertEquals(expResult, result);
// TODO review the generated test code and remove the default call to fail.
fail("The test case is a prototype.");
}*/
/**
* Test of testPORformat method, of class IngestableDataChecker.
*/
/*@Test
public void testTestPORformat() {
System.out.println("testPORformat");
MappedByteBuffer buff = null;
IngestableDataChecker instance = new IngestableDataChecker();
String expResult = "";
String result = instance.testPORformat(buff);
assertEquals(expResult, result);
// TODO review the generated test code and remove the default call to fail.
fail("The test case is a prototype.");
}
*/
/**
* Test of testRDAformat method, of class IngestableDataChecker.
*/
/*@Test
public void testTestRDAformat() {
System.out.println("testRDAformat");
MappedByteBuffer buff = null;
IngestableDataChecker instance = new IngestableDataChecker();
String expResult = "";
String result = instance.testRDAformat(buff);
assertEquals(expResult, result);
// TODO review the generated test code and remove the default call to fail.
fail("The test case is a prototype.");
}
*/
/**
* Test of detectTabularDataFormat method, of class IngestableDataChecker.
*/
/*
@Test
public void testDetectTabularDataFormat() {
System.out.println("detectTabularDataFormat");
File fh = null;
IngestableDataChecker instance = new IngestableDataChecker();
String expResult = "";
String result = instance.detectTabularDataFormat(fh);
assertEquals(expResult, result);
// TODO review the generated test code and remove the default call to fail.
fail("The test case is a prototype.");
}*/
}