View Javadoc

1   /**
2    * Copyright (c) 2008-2012, http://www.snakeyaml.org
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *     http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.yaml.snakeyaml.resolver;
17  
18  import junit.framework.TestCase;
19  
20  public class RagelMachineTest extends TestCase {
21      private RagelMachine machine = new RagelMachine();
22  
23      public void testScan() {
24          assertNull(machine.scan("abc"));
25      }
26  
27      public void testNullPointerException() {
28          try {
29              machine.scan(null);
30              fail("null must not be accepted.");
31          } catch (NullPointerException e) {
32              assertEquals("Scalar must be provided.", e.getMessage());
33          }
34      }
35  
36      public void testScanBoolean() {
37          assertEquals("tag:yaml.org,2002:bool", machine.scan("true"));
38          assertEquals("tag:yaml.org,2002:bool", machine.scan("True"));
39          assertEquals("tag:yaml.org,2002:bool", machine.scan("TRUE"));
40          assertEquals("tag:yaml.org,2002:bool", machine.scan("false"));
41          assertEquals("tag:yaml.org,2002:bool", machine.scan("False"));
42          assertEquals("tag:yaml.org,2002:bool", machine.scan("FALSE"));
43          assertEquals("tag:yaml.org,2002:bool", machine.scan("on"));
44          assertEquals("tag:yaml.org,2002:bool", machine.scan("ON"));
45          assertEquals("tag:yaml.org,2002:bool", machine.scan("On"));
46          assertEquals("tag:yaml.org,2002:bool", machine.scan("off"));
47          assertEquals("tag:yaml.org,2002:bool", machine.scan("Off"));
48          assertEquals("tag:yaml.org,2002:bool", machine.scan("OFF"));
49          assertEquals("tag:yaml.org,2002:bool", machine.scan("on"));
50          assertEquals("tag:yaml.org,2002:bool", machine.scan("ON"));
51          assertEquals("tag:yaml.org,2002:bool", machine.scan("On"));
52          assertEquals("tag:yaml.org,2002:bool", machine.scan("off"));
53          assertEquals("tag:yaml.org,2002:bool", machine.scan("Off"));
54          assertEquals("tag:yaml.org,2002:bool", machine.scan("OFF"));
55      }
56  
57      public void testScanNull() {
58          assertEquals("tag:yaml.org,2002:null", machine.scan("null"));
59          assertEquals("tag:yaml.org,2002:null", machine.scan("Null"));
60          assertEquals("tag:yaml.org,2002:null", machine.scan("NULL"));
61          assertEquals("tag:yaml.org,2002:null", machine.scan("~"));
62          assertEquals("tag:yaml.org,2002:null", machine.scan(" "));
63          assertEquals("tag:yaml.org,2002:null", machine.scan(""));
64      }
65  
66      public void testScanMerge() {
67          assertEquals("tag:yaml.org,2002:merge", machine.scan("<<"));
68      }
69  
70      public void testScanValue() {
71          assertEquals("tag:yaml.org,2002:value", machine.scan("="));
72      }
73  
74      public void testScanInt() {
75          assertEquals("tag:yaml.org,2002:int", machine.scan("0"));
76          assertEquals("tag:yaml.org,2002:int", machine.scan("1"));
77          assertEquals("tag:yaml.org,2002:int", machine.scan("-0"));
78          assertEquals("tag:yaml.org,2002:int", machine.scan("-9"));
79          assertEquals("tag:yaml.org,2002:int", machine.scan("0b0011"));
80          assertEquals("tag:yaml.org,2002:int", machine.scan("0x12ef"));
81          assertEquals("tag:yaml.org,2002:int", machine.scan("0123"));
82          assertEquals("tag:yaml.org,2002:int", machine.scan("1_000"));
83          assertEquals("tag:yaml.org,2002:int", machine.scan("1_000_000"));
84          assertEquals("tag:yaml.org,2002:int", machine.scan("+0"));
85          assertEquals("tag:yaml.org,2002:int", machine.scan("+10"));
86          assertEquals("tag:yaml.org,2002:int", machine.scan("1__000"));
87          assertEquals("tag:yaml.org,2002:int", machine.scan("24:12:34"));
88          assertEquals("tag:yaml.org,2002:int", machine.scan("240:12:34"));
89      }
90  
91      public void testScanFloat() {
92          assertEquals("tag:yaml.org,2002:float", machine.scan("1.0"));
93          assertEquals("tag:yaml.org,2002:float", machine.scan("-0.0"));
94          assertEquals("tag:yaml.org,2002:float", machine.scan("+2.2310"));
95          assertEquals("tag:yaml.org,2002:float", machine.scan("1.0e+12"));
96          assertEquals("tag:yaml.org,2002:float", machine.scan("1.345e-3"));
97          assertEquals("tag:yaml.org,2002:float", machine.scan("190:20:30.15"));
98          assertEquals("tag:yaml.org,2002:float", machine.scan("-.inf"));
99          assertEquals("tag:yaml.org,2002:float", machine.scan("+.INF"));
100         assertEquals("tag:yaml.org,2002:float", machine.scan(".Inf"));
101         assertEquals("tag:yaml.org,2002:float", machine.scan(".nan"));
102         assertEquals("tag:yaml.org,2002:float", machine.scan(".NaN"));
103         assertEquals("tag:yaml.org,2002:float", machine.scan(".NAN"));
104         assertEquals("tag:yaml.org,2002:float", machine.scan("1_000.5"));
105         assertEquals("tag:yaml.org,2002:float", machine.scan("1.023_456"));
106         assertEquals("tag:yaml.org,2002:float", machine.scan("-1_123.45"));
107         assertEquals("tag:yaml.org,2002:float", machine.scan(".5"));
108         assertEquals("tag:yaml.org,2002:float", machine.scan("1.E+1"));
109         assertNull(machine.scan("0x1,1"), machine.scan("0x1,1"));
110     }
111 
112     public void testScanTimestamp() {
113         assertEquals("tag:yaml.org,2002:timestamp", machine.scan("2009-02-28"));
114         assertEquals("tag:yaml.org,2002:timestamp", machine.scan("2001-12-15T02:59:43.1Z"));
115         assertEquals("tag:yaml.org,2002:timestamp", machine.scan("2001-12-14t21:59:43.10-05:00"));
116         assertEquals("tag:yaml.org,2002:timestamp", machine.scan("2001-12-14 21:59:43.10 -5"));
117         assertEquals("tag:yaml.org,2002:timestamp", machine.scan("2001-12-15 2:59:43.10"));
118     }
119 }