1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.yaml.snakeyaml.parser;
17
18 import java.util.LinkedList;
19
20 import junit.framework.TestCase;
21
22 import org.yaml.snakeyaml.error.Mark;
23 import org.yaml.snakeyaml.events.DocumentEndEvent;
24 import org.yaml.snakeyaml.events.DocumentStartEvent;
25 import org.yaml.snakeyaml.events.Event;
26 import org.yaml.snakeyaml.events.ImplicitTuple;
27 import org.yaml.snakeyaml.events.MappingEndEvent;
28 import org.yaml.snakeyaml.events.MappingStartEvent;
29 import org.yaml.snakeyaml.events.ScalarEvent;
30 import org.yaml.snakeyaml.events.SequenceEndEvent;
31 import org.yaml.snakeyaml.events.SequenceStartEvent;
32 import org.yaml.snakeyaml.events.StreamEndEvent;
33 import org.yaml.snakeyaml.events.StreamStartEvent;
34 import org.yaml.snakeyaml.reader.StreamReader;
35
36 public class ParserImplTest extends TestCase {
37
38 public void testGetEvent() {
39 String data = "string: abcd";
40 StreamReader reader = new StreamReader(data);
41 Parser parser = new ParserImpl(reader);
42 Mark dummyMark = new Mark("dummy", 0, 0, 0, "", 0);
43 LinkedList<Event> etalonEvents = new LinkedList<Event>();
44 etalonEvents.add(new StreamStartEvent(dummyMark, dummyMark));
45 etalonEvents.add(new DocumentStartEvent(dummyMark, dummyMark, false, null, null));
46 etalonEvents.add(new MappingStartEvent(null, null, true, dummyMark, dummyMark,
47 Boolean.FALSE));
48 etalonEvents.add(new ScalarEvent(null, null, new ImplicitTuple(true, false), "string",
49 dummyMark, dummyMark, (char) 0));
50 etalonEvents.add(new ScalarEvent(null, null, new ImplicitTuple(true, false), "abcd",
51 dummyMark, dummyMark, (char) 0));
52 etalonEvents.add(new MappingEndEvent(dummyMark, dummyMark));
53 etalonEvents.add(new DocumentEndEvent(dummyMark, dummyMark, false));
54 etalonEvents.add(new StreamEndEvent(dummyMark, dummyMark));
55 while (parser.checkEvent(null)) {
56 Event event = parser.getEvent();
57 if (etalonEvents.isEmpty()) {
58 fail("unexpected event: " + event);
59 }
60 assertEquals(etalonEvents.removeFirst(), event);
61 }
62 assertFalse("Must contain no more events: " + parser.getEvent(), parser.checkEvent(null));
63 }
64
65 public void testGetEvent2() {
66 String data = "american:\n - Boston Red Sox";
67 StreamReader reader = new StreamReader(data);
68 Parser parser = new ParserImpl(reader);
69 Mark dummyMark = new Mark("dummy", 0, 0, 0, "", 0);
70 LinkedList<Event> etalonEvents = new LinkedList<Event>();
71 etalonEvents.add(new StreamStartEvent(dummyMark, dummyMark));
72 etalonEvents.add(new DocumentStartEvent(dummyMark, dummyMark, false, null, null));
73 etalonEvents
74 .add(new MappingStartEvent(null, null, true, dummyMark, dummyMark, Boolean.TRUE));
75 etalonEvents.add(new ScalarEvent(null, null, new ImplicitTuple(true, false), "american",
76 dummyMark, dummyMark, (char) 0));
77 etalonEvents.add(new SequenceStartEvent(null, null, true, dummyMark, dummyMark,
78 Boolean.FALSE));
79 etalonEvents.add(new ScalarEvent(null, null, new ImplicitTuple(true, false),
80 "Boston Red Sox", dummyMark, dummyMark, (char) 0));
81 etalonEvents.add(new SequenceEndEvent(dummyMark, dummyMark));
82 etalonEvents.add(new MappingEndEvent(dummyMark, dummyMark));
83 etalonEvents.add(new DocumentEndEvent(dummyMark, dummyMark, false));
84 etalonEvents.add(new StreamEndEvent(dummyMark, dummyMark));
85 while (parser.checkEvent(null)) {
86 Event event = parser.getEvent();
87 if (etalonEvents.isEmpty()) {
88 fail("unexpected event: " + event);
89 }
90 assertEquals(etalonEvents.removeFirst(), event);
91 }
92 assertFalse("Must contain no more events: " + parser.getEvent(), parser.checkEvent(null));
93 }
94 }