package org.supercsv.cellprocessor;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.supercsv.cellprocessor.ift.CellProcessor;
import org.supercsv.exception.ClassCastInputCSVException;
import org.supercsv.exception.SuperCSVException;
import org.supercsv.mock.ComparerCellProcessor;
import org.supercsv.util.CSVContext;
/**
* @author Dominique De Vito
*/
public class FmtBoolTest {
private static final CSVContext CTXT = new CSVContext(0, 0);
private static final String TRUE_VALUE = "y";
private static final String FALSE_VALUE = "n";
CellProcessor cp, ccp;
@Before
public void setUp() throws Exception {
cp = new FmtBool(TRUE_VALUE, FALSE_VALUE);
}
@Test
public void testChaining() throws Exception {
ccp = new FmtBool(TRUE_VALUE, FALSE_VALUE, new ComparerCellProcessor(TRUE_VALUE)); // chain
// processors
Assert.assertEquals("make boolean", true, ccp.execute(Boolean.TRUE, CTXT));
ccp = new FmtBool(TRUE_VALUE, FALSE_VALUE, new ComparerCellProcessor(FALSE_VALUE)); // chain
// processors
Assert.assertEquals("make boolean", true, ccp.execute(Boolean.FALSE, CTXT));
}
@Test
public void testGoAndBack() throws Exception {
ccp = new FmtBool(TRUE_VALUE, FALSE_VALUE, new ParseBool(TRUE_VALUE, FALSE_VALUE)); // chain
// processors
Assert.assertEquals("go and back", true, Boolean.TRUE.equals(ccp.execute(Boolean.TRUE, CTXT)));
Assert.assertEquals("go and back", true, Boolean.FALSE.equals(ccp.execute(Boolean.FALSE, CTXT)));
ccp = new ParseBool(TRUE_VALUE, FALSE_VALUE, new FmtBool(TRUE_VALUE, FALSE_VALUE)); // chain
// processors
Assert.assertEquals("go and back", true, TRUE_VALUE.equals(ccp.execute(TRUE_VALUE, CTXT)));
Assert.assertEquals("go and back", true, FALSE_VALUE.equals(ccp.execute(FALSE_VALUE, CTXT)));
}
@Test(expected = SuperCSVException.class)
public void testEmptyInput() throws Exception {
cp.execute(null, CTXT);
}
@Test(expected = ClassCastInputCSVException.class)
public void testInvalidInput() throws Exception {
cp.execute("text-not-a-boolean", CTXT);
}
}