/src/test/java/com/alibaba/json/bvt/parser/JSONScannerTest_ISO8601.java

https://github.com/alibaba/fastjson · Java · 128 lines · 121 code · 7 blank · 0 comment · 0 complexity · 57e179fb197751f8e8d1d15d479ee1af MD5 · raw file

  1. package com.alibaba.json.bvt.parser;
  2. import org.junit.Assert;
  3. import junit.framework.TestCase;
  4. import com.alibaba.fastjson.parser.Feature;
  5. import com.alibaba.fastjson.parser.JSONScanner;
  6. import com.alibaba.fastjson.parser.JSONToken;
  7. public class JSONScannerTest_ISO8601 extends TestCase {
  8. public void test_0() throws Exception {
  9. Assert.assertEquals(false, new JSONScanner("1").scanISO8601DateIfMatch());
  10. Assert.assertEquals(false, new JSONScanner("2").scanISO8601DateIfMatch());
  11. Assert.assertEquals(false, new JSONScanner("3").scanISO8601DateIfMatch());
  12. Assert.assertEquals(true, new JSONScanner("3000-10-02").scanISO8601DateIfMatch());
  13. Assert.assertEquals(true, new JSONScanner("4000-10-02").scanISO8601DateIfMatch());
  14. Assert.assertEquals(true, new JSONScanner("5000-10-02").scanISO8601DateIfMatch());
  15. Assert.assertEquals(true, new JSONScanner("6000-10-02").scanISO8601DateIfMatch());
  16. Assert.assertEquals(true, new JSONScanner("7000-10-02").scanISO8601DateIfMatch());
  17. Assert.assertEquals(true, new JSONScanner("8000-10-02").scanISO8601DateIfMatch());
  18. Assert.assertEquals(false, new JSONScanner("A000-10-02").scanISO8601DateIfMatch());
  19. Assert.assertEquals(false, new JSONScanner("a000-10-02").scanISO8601DateIfMatch());
  20. Assert.assertEquals(false, new JSONScanner("1997").scanISO8601DateIfMatch());
  21. Assert.assertEquals(false, new JSONScanner("1997-2-2").scanISO8601DateIfMatch());
  22. Assert.assertEquals(true, new JSONScanner("1997-02-02").scanISO8601DateIfMatch());
  23. Assert.assertEquals(false, new JSONScanner("1997:02-02").scanISO8601DateIfMatch());
  24. Assert.assertEquals(false, new JSONScanner("1997-02:02").scanISO8601DateIfMatch());
  25. Assert.assertEquals(false, new JSONScanner("2A00-02-02").scanISO8601DateIfMatch());
  26. Assert.assertEquals(false, new JSONScanner("2!00-02-02").scanISO8601DateIfMatch());
  27. Assert.assertEquals(false, new JSONScanner("20A0-02-02").scanISO8601DateIfMatch());
  28. Assert.assertEquals(false, new JSONScanner("20!0-02-02").scanISO8601DateIfMatch());
  29. Assert.assertEquals(false, new JSONScanner("200A-02-02").scanISO8601DateIfMatch());
  30. Assert.assertEquals(false, new JSONScanner("200!-02-02").scanISO8601DateIfMatch());
  31. Assert.assertEquals(false, new JSONScanner("2000-32-02").scanISO8601DateIfMatch());
  32. Assert.assertEquals(false, new JSONScanner("2000-1A-02").scanISO8601DateIfMatch());
  33. Assert.assertEquals(false, new JSONScanner("2000-1!-02").scanISO8601DateIfMatch());
  34. Assert.assertEquals(true, new JSONScanner("2000-10-02").scanISO8601DateIfMatch());
  35. Assert.assertEquals(true, new JSONScanner("2000-11-02").scanISO8601DateIfMatch());
  36. Assert.assertEquals(true, new JSONScanner("2000-12-02").scanISO8601DateIfMatch());
  37. Assert.assertEquals(false, new JSONScanner("2000-13-02").scanISO8601DateIfMatch());
  38. Assert.assertEquals(false, new JSONScanner("2000-20-02").scanISO8601DateIfMatch());
  39. Assert.assertEquals(false, new JSONScanner("2000-0A-02").scanISO8601DateIfMatch());
  40. Assert.assertEquals(false, new JSONScanner("2000-0!-02").scanISO8601DateIfMatch());
  41. Assert.assertEquals(true, new JSONScanner("2000-02-01").scanISO8601DateIfMatch());
  42. Assert.assertEquals(false, new JSONScanner("2000-02-00").scanISO8601DateIfMatch());
  43. Assert.assertEquals(false, new JSONScanner("2000-02-0!").scanISO8601DateIfMatch());
  44. Assert.assertEquals(false, new JSONScanner("2000-02-0A").scanISO8601DateIfMatch());
  45. Assert.assertEquals(true, new JSONScanner("2000-02-10").scanISO8601DateIfMatch());
  46. Assert.assertEquals(true, new JSONScanner("2000-02-20").scanISO8601DateIfMatch());
  47. Assert.assertEquals(false, new JSONScanner("2000-02-2A").scanISO8601DateIfMatch());
  48. Assert.assertEquals(false, new JSONScanner("2000-02-2!").scanISO8601DateIfMatch());
  49. Assert.assertEquals(true, new JSONScanner("2000-02-30").scanISO8601DateIfMatch());
  50. Assert.assertEquals(true, new JSONScanner("2000-02-31").scanISO8601DateIfMatch());
  51. Assert.assertEquals(false, new JSONScanner("2000-02-32").scanISO8601DateIfMatch());
  52. Assert.assertEquals(false, new JSONScanner("2000-02-42").scanISO8601DateIfMatch());
  53. Assert.assertEquals(false, new JSONScanner("2000-02-10T").scanISO8601DateIfMatch());
  54. Assert.assertEquals(true, new JSONScanner("2000-02-10T00:00:00").scanISO8601DateIfMatch());
  55. Assert.assertEquals(false, new JSONScanner("2000-02-10T00:00-00").scanISO8601DateIfMatch());
  56. Assert.assertEquals(true, new JSONScanner("2000-02-10T01:01:01").scanISO8601DateIfMatch());
  57. Assert.assertEquals(false, new JSONScanner("2000-02-10T0A:01:01").scanISO8601DateIfMatch());
  58. Assert.assertEquals(false, new JSONScanner("2000-02-10T0!:01:01").scanISO8601DateIfMatch());
  59. Assert.assertEquals(true, new JSONScanner("2000-02-10T00:10:01").scanISO8601DateIfMatch());
  60. Assert.assertEquals(true, new JSONScanner("2000-02-10T00:11:01").scanISO8601DateIfMatch());
  61. Assert.assertEquals(false, new JSONScanner("2000-02-10T10011:01").scanISO8601DateIfMatch());
  62. Assert.assertEquals(true, new JSONScanner("2000-02-10T10:11:01").scanISO8601DateIfMatch());
  63. Assert.assertEquals(false, new JSONScanner("2000-02-10T1!:11:01").scanISO8601DateIfMatch());
  64. Assert.assertEquals(false, new JSONScanner("2000-02-10T1a:11:01").scanISO8601DateIfMatch());
  65. Assert.assertEquals(false, new JSONScanner("2000-02-10T00:1A:01").scanISO8601DateIfMatch());
  66. Assert.assertEquals(false, new JSONScanner("2000-02-10T00:1!:01").scanISO8601DateIfMatch());
  67. Assert.assertEquals(true, new JSONScanner("2000-02-10T20:20:01").scanISO8601DateIfMatch());
  68. Assert.assertEquals(true, new JSONScanner("2000-02-10T21:21:01").scanISO8601DateIfMatch());
  69. Assert.assertEquals(true, new JSONScanner("2000-02-10T22:22:01").scanISO8601DateIfMatch());
  70. Assert.assertEquals(true, new JSONScanner("2000-02-10T23:23:01").scanISO8601DateIfMatch());
  71. Assert.assertEquals(true, new JSONScanner("2000-02-10T24:24:01").scanISO8601DateIfMatch());
  72. Assert.assertEquals(false, new JSONScanner("2000-02-10T25:25:01").scanISO8601DateIfMatch());
  73. Assert.assertEquals(false, new JSONScanner("2000-02-10T2!:20:01").scanISO8601DateIfMatch());
  74. Assert.assertEquals(false, new JSONScanner("2000-02-10T30:20:01").scanISO8601DateIfMatch());
  75. Assert.assertEquals(false, new JSONScanner("2000-02-10T00A22:01").scanISO8601DateIfMatch());
  76. Assert.assertEquals(true, new JSONScanner("2000-02-10T00:22:01").scanISO8601DateIfMatch());
  77. Assert.assertEquals(false, new JSONScanner("2000-02-10T00:!2:01").scanISO8601DateIfMatch());
  78. Assert.assertEquals(false, new JSONScanner("2000-02-10T00:A2:01").scanISO8601DateIfMatch());
  79. Assert.assertEquals(false, new JSONScanner("2000-02-10T00:2A:01").scanISO8601DateIfMatch());
  80. Assert.assertEquals(false, new JSONScanner("2000-02-10T00:2!:01").scanISO8601DateIfMatch());
  81. Assert.assertEquals(true, new JSONScanner("2000-02-10T00:60:01").scanISO8601DateIfMatch());
  82. Assert.assertEquals(false, new JSONScanner("2000-02-10T00:61:01").scanISO8601DateIfMatch());
  83. Assert.assertEquals(true, new JSONScanner("2000-02-10T00:00:01").scanISO8601DateIfMatch());
  84. Assert.assertEquals(false, new JSONScanner("2000-02-10T00:00:0!").scanISO8601DateIfMatch());
  85. Assert.assertEquals(false, new JSONScanner("2000-02-10T00:00:0A").scanISO8601DateIfMatch());
  86. Assert.assertEquals(true, new JSONScanner("2000-02-10T00:00:60").scanISO8601DateIfMatch());
  87. Assert.assertEquals(false, new JSONScanner("2000-02-10T00:00:61").scanISO8601DateIfMatch());
  88. Assert.assertEquals(false, new JSONScanner("2000-02-10T00:00:70").scanISO8601DateIfMatch());
  89. Assert.assertEquals(false, new JSONScanner("2000-02-10T00:00:!0").scanISO8601DateIfMatch());
  90. Assert.assertEquals(false, new JSONScanner("2000-02-10T00:00:A0").scanISO8601DateIfMatch());
  91. Assert.assertEquals(true, new JSONScanner("2000-02-10T00:00:00").scanISO8601DateIfMatch());
  92. Assert.assertEquals(false, new JSONScanner("2000-02-10T00:00:00.").scanISO8601DateIfMatch());
  93. Assert.assertEquals(true, new JSONScanner("2000-02-10T00:00:00.0").scanISO8601DateIfMatch());
  94. Assert.assertEquals(true, new JSONScanner("2000-02-10T00:00:00.00").scanISO8601DateIfMatch());
  95. Assert.assertEquals(true, new JSONScanner("2000-02-10T00:00:00.000").scanISO8601DateIfMatch());
  96. Assert.assertEquals(false, new JSONScanner("2000-02-10T00:00:00.A00").scanISO8601DateIfMatch());
  97. Assert.assertEquals(false, new JSONScanner("2000-02-10T00:00:00.!00").scanISO8601DateIfMatch());
  98. Assert.assertEquals(false, new JSONScanner("2000-02-10T00:00:00.0A0").scanISO8601DateIfMatch());
  99. Assert.assertEquals(false, new JSONScanner("2000-02-10T00:00:00.0!0").scanISO8601DateIfMatch());
  100. Assert.assertEquals(false, new JSONScanner("2000-02-10T00:00:00.00!").scanISO8601DateIfMatch());
  101. Assert.assertEquals(false, new JSONScanner("2000-02-10T00:00:00.00a").scanISO8601DateIfMatch());
  102. }
  103. public void test_2() throws Exception {
  104. JSONScanner lexer = new JSONScanner("2000-02-10T00:00:00.000");
  105. lexer.config(Feature.AllowISO8601DateFormat, true);
  106. Assert.assertEquals(true, lexer.scanISO8601DateIfMatch());
  107. Assert.assertEquals(JSONToken.LITERAL_ISO8601_DATE, lexer.token());
  108. lexer.nextToken();
  109. Assert.assertEquals(JSONToken.EOF, lexer.token());
  110. }
  111. public void test_3() throws Exception {
  112. JSONScanner lexer = new JSONScanner("2000-2");
  113. lexer.config(Feature.AllowISO8601DateFormat, true);
  114. lexer.nextToken();
  115. Assert.assertEquals(JSONToken.LITERAL_INT, lexer.token());
  116. lexer.nextToken();
  117. Assert.assertEquals(JSONToken.LITERAL_INT, lexer.token());
  118. lexer.nextToken();
  119. Assert.assertEquals(JSONToken.EOF, lexer.token());
  120. }
  121. }