/*
* codjo.net
*
* Common Apache License 2.0
*/
package net.codjo.dataprocess.common.codec;
import static net.codjo.test.common.matcher.JUnitMatchers.assertThat;
import static net.codjo.test.common.matcher.JUnitMatchers.equalTo;
import java.util.ArrayList;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
/**
*
*/
public class ListCodecTest {
private ListCodec listCodec;
@Test
public void encode() {
List<String> list = new ArrayList<String>();
list.add("toto");
list.add("titi");
list.add("tata");
list.add("tutu");
assertThat(listCodec.encode(list), equalTo("'toto','titi','tata','tutu'"));
assertThat(listCodec.encode(list, "\"", ",,,"), equalTo("\"toto\",,,\"titi\",,,\"tata\",,,\"tutu\""));
assertThat(listCodec.encode(list, "", ","), equalTo("toto,titi,tata,tutu"));
assertThat(listCodec.encode(list, new ListCodec.Quote("[", "]"), ","),
equalTo("[toto],[titi],[tata],[tutu]"));
assertThat(listCodec.encode(list, new ListCodec.Quote("[<", ">]"), ",,"),
equalTo("[<toto>],,[<titi>],,[<tata>],,[<tutu>]"));
list = new ArrayList<String>();
assertThat(listCodec.encode(list), equalTo(""));
}
@Test
public void decode() {
List<String> list = listCodec.decode("'to, to','titi','tata','tu, tu, va'");
assertThat(list.toString(), equalTo("[to, to, titi, tata, tu, tu, va]"));
assertThat(list.size(), equalTo(4));
list = listCodec.decode("'to, to' , ' titi', 'tata', ' tu, tu, va' ");
assertThat(list.toString(), equalTo("[to, to, titi, tata, tu, tu, va]"));
assertThat(list.size(), equalTo(4));
assertThat(list.get(3), equalTo(" tu, tu, va"));
listCodec.setTrim(true);
list = listCodec.decode("'to, to' , ' titi', 'tata', ' tu, tu, va' ");
assertThat(list.toString(), equalTo("[to, to, titi, tata, tu, tu, va]"));
assertThat(list.size(), equalTo(4));
assertThat(list.get(3), equalTo("tu, tu, va"));
listCodec.setTrim(false);
list = listCodec.decode("\"toto\",,, \"titi\" ,,, \"tata\",,, \" tutu\"",
"\"", ",,,");
assertThat(list.toString(), equalTo("[toto, titi, tata, tutu]"));
list = listCodec.decode("");
assertThat(0, equalTo(list.size()));
assertThat(list.toString(), equalTo("[]"));
list = listCodec.decode("XXtotoXX,,, XXtitiXX ,,, XXtataXX,,, XX tutuXX",
"XX", ",,,");
assertThat(list.toString(), equalTo("[toto, titi, tata, tutu]"));
list = listCodec.decode("");
assertThat(0, equalTo(list.size()));
assertThat(list.toString(), equalTo("[]"));
list = listCodec.decode(null);
assertThat(0, equalTo(list.size()));
list = listCodec.decode("to, to, titi,tata,tu, tu, va", "", ",");
assertThat(list.toString(), equalTo("[to, to, titi, tata, tu, tu, va]"));
assertThat(list.size(), equalTo(7));
list = listCodec.decode("[[toto]],,, [[titi]] ,,, [[tata]],,, [[ tutu]]",
new ListCodec.Quote("[[", "]]"), ",,,");
assertThat(list.toString(), equalTo("[toto, titi, tata, tutu]"));
}
@Test
public void removeQuote() {
assertThat("toto", equalTo(listCodec.removeQuote("'toto'")));
}
@Before
public void before() {
listCodec = new ListCodec();
}
}