package test.beast.core;
import beast.core.Logger;
import beast.core.parameter.RealParameter;
import org.junit.*;
import java.io.*;
import java.util.Random;
import static org.junit.Assert.*;
/**
* junit 4
* http://www.asjava.com/junit/junit-3-vs-junit-4-comparison/
* http://stackoverflow.com/questions/2469911/how-do-i-assert-my-exception-message-with-junit-test-annotation
*
* @author Walter Xie
*/
public class LoggerTest {
Logger logger;
@Before
public void setUp() throws Exception {
logger = new Logger();
}
@After
public void tearDown() throws Exception {
}
@Test
public void initAndValidate() throws Exception {
}
@Test
public void isLoggingToStdout() throws Exception {
logger = new Logger();
logger.initByName("fileName", null, "log", new RealParameter());
assertTrue("fileName == null", logger.isLoggingToStdout());
logger = new Logger();
logger.initByName("fileName", "", "log", new RealParameter());
assertTrue("fileName.length() == 0", logger.isLoggingToStdout());
logger = new Logger();
logger.initByName("fileName", "beast.log", "log", new RealParameter());
assertFalse("fileName = \"beast.log\"", logger.isLoggingToStdout());
}
@Test
public void testFileLog() throws Exception {
logger = new Logger();
logger.initByName("fileName", "beast.log", "log", new RealParameter(new Double[]{0.3, 0.7}));
File f_log = new File(logger.fileNameInput.get());
if (f_log.exists()) {
boolean log_deleted = f_log.delete();
System.out.println("Delete log : " + f_log.getAbsolutePath() + " for testFileLog.");
}
logger.init();
assertTrue("beast.log created successfully", f_log.exists());
// rI >= 0
int rI = new Random().nextInt(10000000);
logger.log(-1);
logger.log(rI);
logger.close();
//TODO cannot get "closing" status from PrintStream
// assertNull("m_out is beast.log after close", logger.getM_out());
BufferedReader in = new BufferedReader(new FileReader(f_log));
// column names
String line = in.readLine();
// 1st sample
String sample1 = in.readLine();
String[] sp = sample1.split("\t", -1);
assertFalse("check beast.log -1 not logged", sp[0].equals("-1"));
assertEquals("check beast.log 1st sample", Integer.toString(rI), sp[0]);
}
@Test
public void testScreenLog() throws Exception {
logger = new Logger();
logger.initByName("fileName", "", "log", new RealParameter(new Double[]{0.3, 0.7}));
logger.init();
assertTrue("m_out is System.out", logger.getM_out() == System.out);
logger.log(1);
//TODO cannot extract content
// close all file, except stdout
logger.close();
assertTrue("m_out is still System.out after close", logger.getM_out() == System.out);
}
@Test
public void init() throws Exception {
}
@Test
public void log() throws Exception {
// logger = new Logger();
// logger.initByName("fileName", "", "log", new RealParameter(new Double[]{0.3, 0.7}));
// logger.log(-1);
// assertEquals("", , );
// logger.log(1);// need init m_out in openLogFile
}
@Test
public void close() throws Exception {
}
@Test
public void getSampleOffset() throws Exception {
}
}