89 lines
2.9 KiB
Java
89 lines
2.9 KiB
Java
|
package com.alibaba.fastjson.parser;
|
||
|
|
||
|
import com.alibaba.fastjson.JSONException;
|
||
|
import org.junit.Assert;
|
||
|
import org.junit.Test;
|
||
|
|
||
|
|
||
|
public class JSONScannerTest2 {
|
||
|
@Test
|
||
|
public void stringUtf8BomTest() throws Throwable {
|
||
|
JSONScanner scanner = new JSONScanner("\uFEFF,");
|
||
|
// After construction the UTF-8 BOM should be safely skipped
|
||
|
scanner.nextToken();
|
||
|
Assert.assertEquals(JSONToken.COMMA, scanner.token());
|
||
|
}
|
||
|
|
||
|
@Test
|
||
|
public void stringHasSpecialTest() throws Throwable {
|
||
|
JSONScanner scanner = new JSONScanner("\"\\b\\n\\t\\\"\\uABED\"");
|
||
|
// After construction the UTF-8 BOM should be safely skipped
|
||
|
scanner.nextToken();
|
||
|
Assert.assertEquals(JSONToken.LITERAL_STRING, scanner.token());
|
||
|
Assert.assertEquals("\b\n\t\"\uABED", scanner.stringVal());
|
||
|
}
|
||
|
|
||
|
@Test
|
||
|
public void stringWithIso8601Date() throws Throwable {
|
||
|
JSONScanner scanner = new JSONScanner("2012-04-23T18:25:43.511Z");
|
||
|
// After construction the UTF-8 BOM should be safely skipped
|
||
|
Assert.assertTrue(scanner.scanISO8601DateIfMatch());
|
||
|
}
|
||
|
|
||
|
@Test
|
||
|
public void scanSingleComment() throws Throwable {
|
||
|
JSONScanner scanner = new JSONScanner("//dsajfklsjfk");
|
||
|
// After construction the UTF-8 BOM should be safely skipped
|
||
|
scanner.nextToken();
|
||
|
Assert.assertTrue(scanner.isEOF());
|
||
|
}
|
||
|
|
||
|
@Test
|
||
|
public void scanMultiComment() throws Throwable {
|
||
|
JSONScanner scanner = new JSONScanner("/*dsajfklsjfk*/");
|
||
|
// After construction the UTF-8 BOM should be safely skipped
|
||
|
scanner.nextToken();
|
||
|
Assert.assertTrue(scanner.isEOF());
|
||
|
}
|
||
|
|
||
|
@Test
|
||
|
public void scannerSkipWhitespace() throws Throwable {
|
||
|
JSONScanner scanner = new JSONScanner("\n\t\t \r\b\f232");
|
||
|
scanner.nextToken();
|
||
|
Assert.assertEquals(JSONToken.LITERAL_INT, scanner.token());
|
||
|
Assert.assertEquals(232, scanner.intValue());
|
||
|
}
|
||
|
|
||
|
@Test
|
||
|
public void inputTokenTest_Null() throws Throwable {
|
||
|
JSONScanner scanner = new JSONScanner("null");
|
||
|
// After construction the UTF-8 BOM should be safely skipped
|
||
|
scanner.nextToken();
|
||
|
Assert.assertEquals(JSONToken.NULL, scanner.token());
|
||
|
}
|
||
|
|
||
|
@Test
|
||
|
public void inputTokenTest_Undefined() throws Throwable {
|
||
|
JSONScanner scanner = new JSONScanner("undefined");
|
||
|
// After construction the UTF-8 BOM should be safely skipped
|
||
|
scanner.nextToken();
|
||
|
Assert.assertEquals(JSONToken.UNDEFINED, scanner.token());
|
||
|
}
|
||
|
|
||
|
@Test
|
||
|
public void inputTokenTest_Undefined() throws Throwable {
|
||
|
JSONScanner scanner = new JSONScanner("undefined");
|
||
|
// After construction the UTF-8 BOM should be safely skipped
|
||
|
scanner.nextToken();
|
||
|
Assert.assertEquals(JSONToken.UNDEFINED, scanner.token());
|
||
|
}
|
||
|
|
||
|
@Test
|
||
|
public void inputTokenTest_ExplPosInt() throws Throwable {
|
||
|
JSONScanner scanner = new JSONScanner("+7531"); // explicit positive with sign
|
||
|
scanner.nextToken();
|
||
|
Assert.assertEquals(JSONToken.LITERAL_INT, scanner.token());
|
||
|
Assert.assertEquals(7531, scanner.intValue());
|
||
|
}
|
||
|
}
|