/*
* Copyright 2004-2015 the Seasar Foundation and the Others.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
* either express or implied. See the License for the specific language
* governing permissions and limitations under the License.
*/
package org.seasar.extension.jdbc.gen.internal.data;
import org.junit.Test;
import static org.junit.Assert.*;
import static org.seasar.extension.jdbc.gen.internal.data.DumpFileTokenizer.TokenType.*;
/**
* @author taedium
*
*/
public class DumpFileTokenizerTest {
private DumpFileTokenizer tokenizer = new DumpFileTokenizer(',');
/**
*
* @throws Exception
*/
@Test
public void testValue() throws Exception {
String s = "aaa, bbb, \r\n";
tokenizer.addChars(s.toCharArray(), s.length());
assertEquals(VALUE, tokenizer.nextToken());
assertEquals("aaa", tokenizer.getToken());
assertEquals(DELIMITER, tokenizer.nextToken());
assertEquals(",", tokenizer.getToken());
assertEquals(VALUE, tokenizer.nextToken());
assertEquals(" bbb", tokenizer.getToken());
assertEquals(DELIMITER, tokenizer.nextToken());
assertEquals(",", tokenizer.getToken());
assertEquals(VALUE, tokenizer.nextToken());
assertEquals(" ", tokenizer.getToken());
assertEquals(END_OF_LINE, tokenizer.nextToken());
assertEquals("\r\n", tokenizer.getToken());
assertEquals(END_OF_BUFFER, tokenizer.nextToken());
assertEquals("", tokenizer.getToken());
tokenizer.addChars(null, -1);
assertEquals(END_OF_FILE, tokenizer.nextToken());
}
/**
*
* @throws Exception
*/
@Test
public void testValue_escaped() throws Exception {
String s = "\"a\"\"a,a\"\r\n";
tokenizer.addChars(s.toCharArray(), s.length());
assertEquals(VALUE, tokenizer.nextToken());
assertEquals("\"a\"\"a,a\"", tokenizer.getToken());
assertEquals(END_OF_LINE, tokenizer.nextToken());
assertEquals("\r\n", tokenizer.getToken());
}
/**
*
* @throws Exception
*/
@Test
public void testValue_escaped_extraWhitespace() throws Exception {
String s = "\"a\" , \"b\" \r\n";
tokenizer.addChars(s.toCharArray(), s.length());
assertEquals(VALUE, tokenizer.nextToken());
assertEquals("\"a\" ", tokenizer.getToken());
assertEquals(DELIMITER, tokenizer.nextToken());
assertEquals(",", tokenizer.getToken());
assertEquals(VALUE, tokenizer.nextToken());
assertEquals(" \"b\" ", tokenizer.getToken());
assertEquals(END_OF_LINE, tokenizer.nextToken());
assertEquals("\r\n", tokenizer.getToken());
}
/**
*
* @throws Exception
*/
@Test
public void testEndOfBuffer() throws Exception {
String s = "aa";
tokenizer.addChars(s.toCharArray(), s.length());
assertEquals(END_OF_BUFFER, tokenizer.nextToken());
assertEquals("aa", tokenizer.getToken());
s = "a,bbb\r\n";
tokenizer.addChars(s.toCharArray(), s.length());
assertEquals(VALUE, tokenizer.nextToken());
assertEquals("aaa", tokenizer.getToken());
assertEquals(DELIMITER, tokenizer.nextToken());
assertEquals(",", tokenizer.getToken());
assertEquals(VALUE, tokenizer.nextToken());
assertEquals("bbb", tokenizer.getToken());
}
/**
*
* @throws Exception
*/
@Test
public void testEndOfBuffer_CRAfterDelimiter() throws Exception {
String s = "aaa,\r";
tokenizer.addChars(s.toCharArray(), s.length());
assertEquals(VALUE, tokenizer.nextToken());
assertEquals("aaa", tokenizer.getToken());
assertEquals(DELIMITER, tokenizer.nextToken());
assertEquals(",", tokenizer.getToken());
assertEquals(NULL, tokenizer.nextToken());
assertEquals("", tokenizer.getToken());
assertEquals(END_OF_BUFFER, tokenizer.nextToken());
assertEquals("\r", tokenizer.getToken());
s = "\n";
tokenizer.addChars(s.toCharArray(), s.length());
assertEquals(END_OF_LINE, tokenizer.nextToken());
}
/**
*
* @throws Exception
*/
@Test
public void testEndOfBuffer_CRAfterCRLF() throws Exception {
String s = "aaa\r\n\r";
tokenizer.addChars(s.toCharArray(), s.length());
assertEquals(VALUE, tokenizer.nextToken());
assertEquals("aaa", tokenizer.getToken());
assertEquals(END_OF_LINE, tokenizer.nextToken());
assertEquals("\r\n", tokenizer.getToken());
assertEquals(NULL, tokenizer.nextToken());
assertEquals("", tokenizer.getToken());
assertEquals(END_OF_BUFFER, tokenizer.nextToken());
assertEquals("\r", tokenizer.getToken());
s = "\n";
tokenizer.addChars(s.toCharArray(), s.length());
assertEquals(END_OF_LINE, tokenizer.nextToken());
}
/**
*
* @throws Exception
*/
@Test
public void testNull() throws Exception {
String s = "aaa,,bbb\r\n";
tokenizer.addChars(s.toCharArray(), s.length());
assertEquals(VALUE, tokenizer.nextToken());
assertEquals("aaa", tokenizer.getToken());
assertEquals(DELIMITER, tokenizer.nextToken());
assertEquals(",", tokenizer.getToken());
assertEquals(NULL, tokenizer.nextToken());
assertEquals("", tokenizer.getToken());
assertEquals(DELIMITER, tokenizer.nextToken());
assertEquals(",", tokenizer.getToken());
assertEquals(VALUE, tokenizer.nextToken());
assertEquals("bbb", tokenizer.getToken());
assertEquals(END_OF_LINE, tokenizer.nextToken());
assertEquals("\r\n", tokenizer.getToken());
assertEquals(END_OF_BUFFER, tokenizer.nextToken());
assertEquals("", tokenizer.getToken());
}
/**
*
* @throws Exception
*/
@Test
public void testNull_afterStartOfLine() throws Exception {
String s = ",bbb\r\n";
tokenizer.addChars(s.toCharArray(), s.length());
assertEquals(NULL, tokenizer.nextToken());
assertEquals("", tokenizer.getToken());
assertEquals(DELIMITER, tokenizer.nextToken());
assertEquals(",", tokenizer.getToken());
assertEquals(VALUE, tokenizer.nextToken());
assertEquals("bbb", tokenizer.getToken());
assertEquals(END_OF_LINE, tokenizer.nextToken());
assertEquals("\r\n", tokenizer.getToken());
assertEquals(END_OF_BUFFER, tokenizer.nextToken());
assertEquals("", tokenizer.getToken());
}
/**
*
* @throws Exception
*/
@Test
public void testNull_BeforeEndOfLine() throws Exception {
String s = "aaa,\r\n";
tokenizer.addChars(s.toCharArray(), s.length());
assertEquals(VALUE, tokenizer.nextToken());
assertEquals("aaa", tokenizer.getToken());
assertEquals(DELIMITER, tokenizer.nextToken());
assertEquals(",", tokenizer.getToken());
assertEquals(NULL, tokenizer.nextToken());
assertEquals("", tokenizer.getToken());
assertEquals(END_OF_LINE, tokenizer.nextToken());
assertEquals("\r\n", tokenizer.getToken());
assertEquals(END_OF_BUFFER, tokenizer.nextToken());
assertEquals("", tokenizer.getToken());
}
/**
*
* @throws Exception
*/
@Test
public void testEndOfLine_CRLF() throws Exception {
String s = "aaa\r\nbbb\r";
tokenizer.addChars(s.toCharArray(), s.length());
assertEquals(VALUE, tokenizer.nextToken());
assertEquals("aaa", tokenizer.getToken());
assertEquals(END_OF_LINE, tokenizer.nextToken());
assertEquals("\r\n", tokenizer.getToken());
assertEquals(END_OF_BUFFER, tokenizer.nextToken());
assertEquals("bbb\r", tokenizer.getToken());
s = "\nccc\r\n";
tokenizer.addChars(s.toCharArray(), s.length());
assertEquals(VALUE, tokenizer.nextToken());
assertEquals("bbb", tokenizer.getToken());
assertEquals(END_OF_LINE, tokenizer.nextToken());
assertEquals("\r\n", tokenizer.getToken());
assertEquals(VALUE, tokenizer.nextToken());
assertEquals("ccc", tokenizer.getToken());
assertEquals(END_OF_LINE, tokenizer.nextToken());
assertEquals("\r\n", tokenizer.getToken());
}
/**
*
* @throws Exception
*/
@Test
public void testEndOfLine_CR() throws Exception {
String s = "aaa\rbbb";
tokenizer.addChars(s.toCharArray(), s.length());
assertEquals(VALUE, tokenizer.nextToken());
assertEquals("aaa", tokenizer.getToken());
assertEquals(END_OF_LINE, tokenizer.nextToken());
assertEquals("\r", tokenizer.getToken());
assertEquals(END_OF_BUFFER, tokenizer.nextToken());
assertEquals("bbb", tokenizer.getToken());
s = "\rccc\r";
tokenizer.addChars(s.toCharArray(), s.length());
assertEquals(VALUE, tokenizer.nextToken());
assertEquals("bbb", tokenizer.getToken());
assertEquals(END_OF_LINE, tokenizer.nextToken());
assertEquals("\r", tokenizer.getToken());
assertEquals(END_OF_BUFFER, tokenizer.nextToken());
assertEquals("ccc\r", tokenizer.getToken());
}
/**
*
* @throws Exception
*/
@Test
public void testEndOfLine_LF() throws Exception {
String s = "aaa\nbbb";
tokenizer.addChars(s.toCharArray(), s.length());
assertEquals(VALUE, tokenizer.nextToken());
assertEquals("aaa", tokenizer.getToken());
assertEquals(END_OF_LINE, tokenizer.nextToken());
assertEquals("\n", tokenizer.getToken());
assertEquals(END_OF_BUFFER, tokenizer.nextToken());
assertEquals("bbb", tokenizer.getToken());
s = "\nccc\n";
tokenizer.addChars(s.toCharArray(), s.length());
assertEquals(VALUE, tokenizer.nextToken());
assertEquals("bbb", tokenizer.getToken());
assertEquals(END_OF_LINE, tokenizer.nextToken());
assertEquals("\n", tokenizer.getToken());
assertEquals(VALUE, tokenizer.nextToken());
assertEquals("ccc", tokenizer.getToken());
assertEquals(END_OF_LINE, tokenizer.nextToken());
assertEquals("\n", tokenizer.getToken());
}
/**
*
* @throws Exception
*/
@Test
public void testEndOfLine_escaped() throws Exception {
String s = "\"aaa\r\nbbb\"\r\n";
tokenizer.addChars(s.toCharArray(), s.length());
assertEquals(VALUE, tokenizer.nextToken());
assertEquals("\"aaa\r\nbbb\"", tokenizer.getToken());
assertEquals(END_OF_LINE, tokenizer.nextToken());
assertEquals("\r\n", tokenizer.getToken());
}
/**
*
* @throws Exception
*/
@Test
public void testEndOfFile() throws Exception {
String s = "aaa\r";
tokenizer.addChars(s.toCharArray(), s.length());
assertEquals(END_OF_BUFFER, tokenizer.nextToken());
assertEquals("aaa\r", tokenizer.getToken());
tokenizer.addChars(null, -1);
assertEquals(VALUE, tokenizer.nextToken());
assertEquals("aaa", tokenizer.getToken());
assertEquals(END_OF_LINE, tokenizer.nextToken());
assertEquals("\r", tokenizer.getToken());
assertEquals(END_OF_FILE, tokenizer.nextToken());
assertEquals("", tokenizer.getToken());
}
/**
*
* @throws Exception
*/
@Test
public void testEndOfFile_noValue() throws Exception {
tokenizer.addChars(null, -1);
assertEquals(END_OF_FILE, tokenizer.nextToken());
assertEquals("", tokenizer.getToken());
}
}