package com.gh.mygreen.xlsmapper;
import static org.hamcrest.Matchers.*;
import static org.junit.Assert.*;
import java.awt.Point;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Deque;
import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
import java.util.Set;
import java.util.Vector;
import org.junit.Before;
import org.junit.Test;
import com.gh.mygreen.xlsmapper.Utils;
/**
* {@link Utils}のテスタ
*
* @version 1.1
* @since 0.5
* @author T.TSUCHIE
*
*/
public class UtilsTest {
@Before
public void setUp() throws Exception {
}
/**
* {@link Utils#capitalize(String)}
*/
@Test
public void testCapitalize() {
assertThat(Utils.capitalize(null), is(nullValue()));
assertThat(Utils.capitalize(""), is(""));
assertThat(Utils.capitalize("cat"), is("Cat"));
assertThat(Utils.capitalize("cAt"), is("CAt"));
}
/**
* {@link Utils#uncapitalize(String)}
*/
@Test
public void testUncapitalize() {
assertThat(Utils.uncapitalize(null), is(nullValue()));
assertThat(Utils.uncapitalize(""), is(""));
assertThat(Utils.uncapitalize("CAT"), is("cAT"));
assertThat(Utils.uncapitalize("Cat"), is("cat"));
}
/**
* {@link Utils#matches(String, String, XlsMapperConfig)}
* @since 1.1
*/
@Test
public void testMatches_normalize(){
String rawText = "a bc \t de\nfg h ";
String normalizedText = "a bc defg h";
XlsMapperConfig config = new XlsMapperConfig();
config.setNormalizeLabelText(false);
assertFalse(Utils.matches(rawText, normalizedText, config));
config.setNormalizeLabelText(true);
assertTrue(Utils.matches(rawText, normalizedText, config));
}
/**
* {@link Utils#matches(String, String, XlsMapperConfig)}
* @since 1.1
*/
@Test
public void testMatches_regex(){
XlsMapperConfig config = new XlsMapperConfig();
config.setNormalizeLabelText(false);
config.setRegexLabelText(true);
assertTrue(Utils.matches("test_data", "/test.*/", config));
assertFalse(Utils.matches("test_data", "/nottest.*/", config));
}
@Test
public void testIsEmpty() {
// 文字列の場合
assertThat(Utils.isEmpty(""), is(true));
assertThat(Utils.isEmpty((String)null), is(true));
assertThat(Utils.isEmpty(" "), is(false));
assertThat(Utils.isEmpty("ab"), is(false));
assertThat(Utils.isEmpty(String.valueOf('\u0000')), is(true));
}
@Test
public void testIsNotEmpty() {
// 文字列の場合
assertThat(Utils.isNotEmpty(""), is(false));
assertThat(Utils.isNotEmpty((String)null), is(false));
assertThat(Utils.isNotEmpty(" "), is(true));
assertThat(Utils.isNotEmpty("ab"), is(true));
assertThat(Utils.isNotEmpty(String.valueOf('\u0000')), is(false));
}
@Test
public void testParseCellAddress() {
Point p1 = Utils.parseCellAddress("A1");
assertEquals(0, p1.x);
assertEquals(0, p1.y);
Point p2 = Utils.parseCellAddress("AX232");
assertEquals(49, p2.x);
assertEquals(231, p2.y);
Point p3 = Utils.parseCellAddress("a32A132");
assertNull(p3);
}
@Test
public void testConvertListToCollection() {
final FactoryCallback<Class<?>, Object> beanFactory = new XlsMapperConfig().getBeanFactory();
List<String> list = new ArrayList<>();
list.add("abc");
list.add("efg");
Class toClass;
Collection<String> value;
// 変換先がCollectionインタフェースの場合
toClass = Collection.class;
value = Utils.convertListToCollection(list, toClass, beanFactory);
assertThat(value, is(instanceOf(ArrayList.class)));
// 変換先がListインタフェースの場合
toClass = List.class;
value = Utils.convertListToCollection(list, toClass, beanFactory);
assertThat(value, is(instanceOf(ArrayList.class)));
// 変換先がArrayListで元のインスタンスと同じ場合。
toClass = ArrayList.class;
value = Utils.convertListToCollection(list, toClass, beanFactory);
assertThat(value, is(instanceOf(ArrayList.class)));
// 変換先がVectorの場合
toClass = Vector.class;
value = Utils.convertListToCollection(list, toClass, beanFactory);
assertThat(value, is(instanceOf(Vector.class)));
// 変換先がSetインタフェースの場合
toClass = Set.class;
value = Utils.convertListToCollection(list, toClass, beanFactory);
assertThat(value, is(instanceOf(LinkedHashSet.class)));
// 変換先がQueueインタフェースの場合
toClass = Queue.class;
value = Utils.convertListToCollection(list, toClass, beanFactory);
assertThat(value, is(instanceOf(LinkedList.class)));
// 変換先がDequeインタフェースの場合
toClass = Deque.class;
value = Utils.convertListToCollection(list, toClass, beanFactory);
assertThat(value, is(instanceOf(LinkedList.class)));
// 変換先がLinkedListの場合
toClass = LinkedList.class;
value = Utils.convertListToCollection(list, toClass, beanFactory);
assertThat(value, is(instanceOf(LinkedList.class)));
}
@Test
public void testConvertCollectionToList() {
List<String> data = Arrays.asList("abc", "efg");
Collection<String> collection;
List<String> value;
// 変換元がリストの場合
collection = new ArrayList<>(data);
value = Utils.convertCollectionToList(collection);
assertThat(value, is(instanceOf(ArrayList.class)));
// 変換元がSetの場合
collection = new LinkedHashSet<>(data);
value = Utils.convertCollectionToList(collection);
assertThat(value, is(instanceOf(ArrayList.class)));
// 変換元がLinkedListの場合
collection = new LinkedList<>(data);
value = Utils.convertCollectionToList(collection);
assertThat(value, is(instanceOf(LinkedList.class)));
// 変換元がArrayDequeの場合
collection = new ArrayDeque<>(data);
value = Utils.convertCollectionToList(collection);
assertThat(value, is(instanceOf(ArrayList.class)));
}
}