package com.github.mygreen.supercsv.cellprocessor.conversion;
import static org.junit.Assert.*;
import static org.assertj.core.api.Assertions.*;
import static com.github.mygreen.supercsv.tool.TestUtils.*;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import org.supercsv.cellprocessor.ift.CellProcessor;
import com.github.mygreen.supercsv.cellprocessor.NextCellProcessor;
import com.github.mygreen.supercsv.cellprocessor.conversion.NullConvert;
/**
* {@link NullConvert}のテスタ
*
* @since 2.0
* @author T.TSUCHIE
*
*/
public class NullConvertTest {
private CellProcessor processor;
private CellProcessor processorChain;
private CellProcessor ignoreProcessor;
private static final List<String> TOKENS = Arrays.asList("-", "N/A");
@Before
public void setUp() throws Exception {
this.processor = new NullConvert(TOKENS, false);
this.processorChain = new NullConvert(TOKENS, false, new NextCellProcessor());
this.ignoreProcessor = new NullConvert(TOKENS, true);
}
@Test(expected=NullPointerException.class)
public void testConstructor_tokenNull() {
new NullConvert(null, false);
fail();
}
@Test(expected=IllegalArgumentException.class)
public void testConstructor_tokenEmpty() {
new NullConvert(Collections.emptyList(), false);
fail();
}
@Test
public void testConstructor_tokenDuplicate() {
List<String> tokens = Arrays.asList("ABC", "efg", "ABC", "EFG");
{
NullConvert processor = new NullConvert(tokens, false);
assertThat(processor.isIgnoreCase()).isEqualTo(false);
assertThat(processor.getTokens()).containsExactly("ABC", "efg", "EFG");
}
{
// ignoreCase
NullConvert processor = new NullConvert(tokens, true);
assertThat(processor.isIgnoreCase()).isEqualTo(true);
assertThat(processor.getTokens()).containsExactly("abc", "efg");
}
}
@Test
public void testExecute_inputNull() {
String input = null;
assertThat((Object)processor.execute(input, ANONYMOUS_CSVCONTEXT)).isNull();
assertThat((Object)processorChain.execute(input, ANONYMOUS_CSVCONTEXT)).isNull();
}
@Test
public void testExecute_inputMatch() {
String input = "N/A";
assertThat((Object)processor.execute(input, ANONYMOUS_CSVCONTEXT)).isNull();
assertThat((Object)processorChain.execute(input, ANONYMOUS_CSVCONTEXT)).isNull();
}
@Test
public void testExecute_inputNotMatch() {
String input = "Hello";
assertThat((Object)processor.execute(input, ANONYMOUS_CSVCONTEXT)).isEqualTo(input);
assertThat((Object)processorChain.execute(input, ANONYMOUS_CSVCONTEXT)).isEqualTo(input);
}
@Test
public void testExecute_inputIgnoreCase() {
String input = "N/a";
assertThat((Object)ignoreProcessor.execute(input, ANONYMOUS_CSVCONTEXT)).isNull();
}
}