package com.gh.mygreen.xlsmapper; import static org.hamcrest.Matchers.*; import static org.junit.Assert.*; import java.util.List; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.Test; import com.gh.mygreen.xlsmapper.PropertyPath.Token; /** * {@link PropertyPathTokenizer}のテスタ * * @since 1.0 * @author T.TSUCHIE * */ public class PropertyPathTokenizerTest { @AfterClass public static void tearDownAfterClass() throws Exception { } @Before public void setUp() throws Exception { } @After public void tearDown() throws Exception { } @Test public void testParse_single_path() { PropertyPathTokenizer tokenizer = new PropertyPathTokenizer(); List<Token> tokens = tokenizer.parse("name").getPathAsToken(); assertThat(tokens, is(hasSize(1))); Token token; token = tokens.get(0); assertThat(token, is(instanceOf(Token.Name.class))); assertThat(token.getToken(), is("name")); } @Test public void testParse_nested_path() { PropertyPathTokenizer tokenizer = new PropertyPathTokenizer(); List<Token> tokens = tokenizer.parse("person.name").getPathAsToken(); assertThat(tokens, is(hasSize(3))); Token token; token = tokens.get(0); assertThat(token, is(instanceOf(Token.Name.class))); assertThat(token.getToken(), is("person")); token = tokens.get(1); assertThat(token, is(instanceOf(Token.Separator.class))); assertThat(token.getToken(), is(".")); token = tokens.get(2); assertThat(token, is(instanceOf(Token.Name.class))); assertThat(token.getToken(), is("name")); } @Test public void testParse_array() { PropertyPathTokenizer tokenizer = new PropertyPathTokenizer(); List<Token> tokens = tokenizer.parse("array[0]").getPathAsToken(); assertThat(tokens, is(hasSize(2))); Token token; token = tokens.get(0); assertThat(token, is(instanceOf(Token.Name.class))); assertThat(token.getToken(), is("array")); token = tokens.get(1); assertThat(token, is(instanceOf(Token.Key.class))); assertThat(token.getToken(), is("[0]")); assertThat(((Token.Key)token).getKey(), is("0")); } @Test public void testParse_map() { PropertyPathTokenizer tokenizer = new PropertyPathTokenizer(); List<Token> tokens = tokenizer.parse("map[abc]").getPathAsToken(); assertThat(tokens, is(hasSize(2))); Token token; token = tokens.get(0); assertThat(token, is(instanceOf(Token.Name.class))); assertThat(token.getToken(), is("map")); token = tokens.get(1); assertThat(token, is(instanceOf(Token.Key.class))); assertThat(token.getToken(), is("[abc]")); assertThat(((Token.Key)token).getKey(), is("abc")); } @Test public void testParse_map_escape() { PropertyPathTokenizer tokenizer = new PropertyPathTokenizer(); List<Token> tokens = tokenizer.parse("map[\\]abc]").getPathAsToken(); assertThat(tokens, is(hasSize(2))); Token token; token = tokens.get(0); assertThat(token, is(instanceOf(Token.Name.class))); assertThat(token.getToken(), is("map")); token = tokens.get(1); assertThat(token, is(instanceOf(Token.Key.class))); assertThat(token.getToken(), is("[\\]abc]")); assertThat(((Token.Key)token).getKey(), is("]abc")); } @Test public void testParse_map_escape2() { PropertyPathTokenizer tokenizer = new PropertyPathTokenizer(); List<Token> tokens = tokenizer.parse("map[\\\\]abc]").getPathAsToken(); assertThat(tokens, is(hasSize(2))); Token token; token = tokens.get(0); assertThat(token, is(instanceOf(Token.Name.class))); assertThat(token.getToken(), is("map")); token = tokens.get(1); assertThat(token, is(instanceOf(Token.Key.class))); assertThat(token.getToken(), is("[\\\\]abc]")); assertThat(((Token.Key)token).getKey(), is("\\]abc")); } @Test public void testParse_nested_array() { PropertyPathTokenizer tokenizer = new PropertyPathTokenizer(); List<Token> tokens = tokenizer.parse("data[0][abc]").getPathAsToken(); assertThat(tokens, is(hasSize(3))); Token token; token = tokens.get(0); assertThat(token, is(instanceOf(Token.Name.class))); assertThat(token.getToken(), is("data")); token = tokens.get(1); assertThat(token, is(instanceOf(Token.Key.class))); assertThat(token.getToken(), is("[0]")); assertThat(((Token.Key)token).getKey(), is("0")); token = tokens.get(2); assertThat(token, is(instanceOf(Token.Key.class))); assertThat(token.getToken(), is("[abc]")); assertThat(((Token.Key)token).getKey(), is("abc")); } @Test public void testParse_nested_array2() { PropertyPathTokenizer tokenizer = new PropertyPathTokenizer(); List<Token> tokens = tokenizer.parse("data[0].card[abc]").getPathAsToken(); assertThat(tokens, is(hasSize(5))); Token token; token = tokens.get(0); assertThat(token, is(instanceOf(Token.Name.class))); assertThat(token.getToken(), is("data")); token = tokens.get(1); assertThat(token, is(instanceOf(Token.Key.class))); assertThat(token.getToken(), is("[0]")); assertThat(((Token.Key)token).getKey(), is("0")); token = tokens.get(2); assertThat(token, is(instanceOf(Token.Separator.class))); assertThat(token.getToken(), is(".")); token = tokens.get(3); assertThat(token, is(instanceOf(Token.Name.class))); assertThat(token.getToken(), is("card")); token = tokens.get(4); assertThat(token, is(instanceOf(Token.Key.class))); assertThat(token.getToken(), is("[abc]")); assertThat(((Token.Key)token).getKey(), is("abc")); } @Test public void testParse_space() { PropertyPathTokenizer tokenizer = new PropertyPathTokenizer(); List<Token> tokens = tokenizer.parse(" name ").getPathAsToken(); assertThat(tokens, is(hasSize(1))); Token token; token = tokens.get(0); assertThat(token, is(instanceOf(Token.Name.class))); assertThat(token.getToken(), is("name")); } @Test public void testParse_space_nested() { PropertyPathTokenizer tokenizer = new PropertyPathTokenizer(); List<Token> tokens = tokenizer.parse(" person . name ").getPathAsToken(); assertThat(tokens, is(hasSize(3))); Token token; token = tokens.get(0); assertThat(token, is(instanceOf(Token.Name.class))); assertThat(token.getToken(), is("person")); token = tokens.get(1); assertThat(token, is(instanceOf(Token.Separator.class))); assertThat(token.getToken(), is(".")); token = tokens.get(2); assertThat(token, is(instanceOf(Token.Name.class))); assertThat(token.getToken(), is("name")); } @Test public void testParse_space_array() { PropertyPathTokenizer tokenizer = new PropertyPathTokenizer(); List<Token> tokens = tokenizer.parse(" array [ 0 ] ").getPathAsToken(); assertThat(tokens, is(hasSize(2))); Token token; token = tokens.get(0); assertThat(token, is(instanceOf(Token.Name.class))); assertThat(token.getToken(), is("array")); token = tokens.get(1); assertThat(token, is(instanceOf(Token.Key.class))); assertThat(token.getToken(), is("[ 0 ]")); assertThat(((Token.Key)token).getKey(), is(" 0 ")); } }