package com.github.mygreen.supercsv.expression;
import static org.junit.Assert.*;
import static org.assertj.core.api.Assertions.*;
import java.text.DecimalFormat;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import org.junit.Before;
import org.junit.Test;
import com.github.mygreen.supercsv.cellprocessor.format.TextPrinter;
import com.github.mygreen.supercsv.expression.CustomFunctions;
/**
* {@link CustomFunctions}のテスタ
*
* @since 2.0
* @author T.TSUCHIE
*
*/
public class CustomFunctionsTest {
private TextPrinter<Integer> printer;
@Before
public void setUp() throws Exception {
this.printer = (value) -> new DecimalFormat("#,##0").format(value);
}
@Test
public void testDefaultString() {
assertThat(CustomFunctions.defaultString(null)).isEqualTo("");
assertThat(CustomFunctions.defaultString("")).isEqualTo("");
assertThat(CustomFunctions.defaultString("abc")).isEqualTo("abc");
}
/**
* {@link CustomFunctions#join(int[], String)}
*/
@Test
public void testJoin_int_array() {
assertThat(CustomFunctions.join((int[])null, ", ")).isEqualTo("");
assertThat(CustomFunctions.join(new int[]{}, ", ")).isEqualTo("");
assertThat(CustomFunctions.join(new int[]{1,2,3}, ", ")).isEqualTo("1, 2, 3");
assertThat(CustomFunctions.join(new int[]{1,2,3}, null)).isEqualTo("123");
}
/**
* {@link CustomFunctions#join(Object[], String)}
*/
@Test
public void testJoin_object_array() {
assertThat(CustomFunctions.join((Object[])null, ", ")).isEqualTo("");
assertThat(CustomFunctions.join(new Object[]{}, ", ")).isEqualTo("");
assertThat(CustomFunctions.join(new Object[]{1,2,3}, ", ")).isEqualTo("1, 2, 3");
assertThat(CustomFunctions.join(new Object[]{1,2,3}, null)).isEqualTo("123");
}
/**
* {@link CustomFunctions#join(Object[], String, TextPrinter)}
*/
@Test
public void testJoin_object_array_printer() {
Object[] input = new Object[]{1000, 2000, 3000};
assertThatThrownBy(() -> CustomFunctions.join((Object[])null, ", ", null)).isInstanceOf(NullPointerException.class);
assertThat(CustomFunctions.join((Object[])null, ", ", printer)).isEqualTo("");
assertThat(CustomFunctions.join(new Object[]{}, ", ", printer)).isEqualTo("");
assertThat(CustomFunctions.join(input, ", ", printer)).isEqualTo("1,000, 2,000, 3,000");
assertThat(CustomFunctions.join(input, null, printer)).isEqualTo("1,0002,0003,000");
}
/**
* {@link CustomFunctions#join(java.util.Collection, String)}
*/
@Test
public void testJoin_collection() {
Collection<Integer> input = Arrays.asList(1000, 2000, 3000);
assertThat(CustomFunctions.join((Collection<Integer>)null, ", ")).isEqualTo("");
assertThat(CustomFunctions.join(Collections.emptyList(), ", ")).isEqualTo("");
assertThat(CustomFunctions.join(input, ", ")).isEqualTo("1000, 2000, 3000");
assertThat(CustomFunctions.join(input, null)).isEqualTo("100020003000");
}
/**
* {@link CustomFunctions#join(Collection, String, TextPrinter)}
*/
@Test
public void testJoin_collection_printer() {
Collection<Integer> input = Arrays.asList(1000, 2000, 3000);
assertThatThrownBy(() -> CustomFunctions.join((Object[])null, ", ", null)).isInstanceOf(NullPointerException.class);
assertThat(CustomFunctions.join((Collection<Integer>)null, ", ", printer)).isEqualTo("");
assertThat(CustomFunctions.join(Collections.emptyList(), ", ", printer)).isEqualTo("");
assertThat(CustomFunctions.join(input, ", ", printer)).isEqualTo("1,000, 2,000, 3,000");
assertThat(CustomFunctions.join(input, null, printer)).isEqualTo("1,0002,0003,000");
}
}