3 * Copyright (C) 2012 Florian Brosch
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2.1 of the License, or (at your option) any later version.
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 * Florian Brosch <flo.brosch@gmail.com>
26 public static void positive_1 () {
27 var reporter
= new
ErrorReporter ();
30 """<?xml version="1.0" ?>
32 <subelement level="1" nested="true">my text</subelement>
33 <simpletag1 level="2" nested="false" />
34 <simpletag2 level="3"/>
39 var reader
= new MarkupReader
.from_string ("testfile", content
, reporter
);
40 assert (reader
.filename
== "testfile");
42 MarkupSourceLocation begin
;
43 MarkupSourceLocation end
;
44 MarkupTokenType token
;
47 token
= reader
.read_token (out begin
, out end
);
48 token
= reader
.read_token (out begin
, out end
);
51 token
= reader
.read_token (out begin
, out end
);
52 assert (token
== MarkupTokenType
.START_ELEMENT
);
53 assert (reader
.name
== "root-element");
54 assert (reader
.content
== null);
55 assert (reader
.get_attributes ().size
== 0);
56 assert (reporter
.warnings
== 0);
57 assert (reporter
.errors
== 0);
58 assert (begin
.line
== 2);
59 assert (end
.line
== 2);
61 token
= reader
.read_token (out begin
, out end
);
62 assert (token
== MarkupTokenType
.START_ELEMENT
);
63 assert (reader
.name
== "subelement");
64 assert (reader
.content
== null);
65 assert (reader
.get_attributes ().size
== 2);
66 assert (reader
.get_attribute ("nested") == "true");
67 assert (reader
.get_attribute ("level") == "1");
68 assert (reporter
.warnings
== 0);
69 assert (reporter
.errors
== 0);
70 assert (begin
.line
== 3);
71 assert (end
.line
== 3);
73 token
= reader
.read_token (out begin
, out end
);
74 assert (token
== MarkupTokenType
.TEXT
);
75 assert (reader
.name
== null);
76 assert (reader
.content
== "my text");
77 assert (reader
.get_attributes ().size
== 0);
78 assert (reporter
.warnings
== 0);
79 assert (reporter
.errors
== 0);
80 assert (begin
.line
== 3);
81 assert (end
.line
== 3);
83 token
= reader
.read_token (out begin
, out end
);
84 assert (token
== MarkupTokenType
.END_ELEMENT
);
85 assert (reader
.name
== "subelement");
86 assert (reader
.content
== null);
87 assert (reader
.get_attributes ().size
== 0);
88 assert (reporter
.warnings
== 0);
89 assert (reporter
.errors
== 0);
90 assert (begin
.line
== 3);
91 assert (end
.line
== 3);
93 token
= reader
.read_token (out begin
, out end
);
94 assert (token
== MarkupTokenType
.START_ELEMENT
);
95 assert (reader
.name
== "simpletag1");
96 assert (reader
.content
== null);
97 assert (reader
.get_attributes ().size
== 2);
98 assert (reader
.get_attribute ("nested") == "false");
99 assert (reader
.get_attribute ("level") == "2");
100 assert (reporter
.warnings
== 0);
101 assert (reporter
.errors
== 0);
102 assert (begin
.line
== 4);
103 assert (end
.line
== 4);
105 token
= reader
.read_token (out begin
, out end
);
106 assert (token
== MarkupTokenType
.END_ELEMENT
);
107 assert (reader
.name
== "simpletag1");
108 assert (reader
.content
== null);
109 assert (reader
.get_attributes ().size
== 0);
110 assert (reporter
.warnings
== 0);
111 assert (reporter
.errors
== 0);
112 assert (begin
.line
== 4);
113 assert (end
.line
== 4);
115 token
= reader
.read_token (out begin
, out end
);
116 assert (token
== MarkupTokenType
.START_ELEMENT
);
117 assert (reader
.name
== "simpletag2");
118 assert (reader
.content
== null);
119 assert (reader
.get_attributes ().size
== 1);
120 assert (reader
.get_attribute ("level") == "3");
121 assert (reporter
.warnings
== 0);
122 assert (reporter
.errors
== 0);
123 assert (begin
.line
== 5);
124 assert (end
.line
== 5);
126 token
= reader
.read_token (out begin
, out end
);
127 assert (token
== MarkupTokenType
.END_ELEMENT
);
128 assert (reader
.name
== "simpletag2");
129 assert (reader
.content
== null);
130 assert (reader
.get_attributes ().size
== 0);
131 assert (reporter
.warnings
== 0);
132 assert (reporter
.errors
== 0);
133 assert (begin
.line
== 5);
134 assert (end
.line
== 5);
136 token
= reader
.read_token (out begin
, out end
);
137 assert (token
== MarkupTokenType
.START_ELEMENT
);
138 assert (reader
.name
== "simpletag3");
139 assert (reader
.content
== null);
140 assert (reader
.get_attributes ().size
== 0);
141 assert (reporter
.warnings
== 0);
142 assert (reporter
.errors
== 0);
143 assert (begin
.line
== 6);
144 assert (end
.line
== 6);
146 token
= reader
.read_token (out begin
, out end
);
147 assert (token
== MarkupTokenType
.END_ELEMENT
);
148 assert (reader
.name
== "simpletag3");
149 assert (reader
.content
== null);
150 assert (reader
.get_attributes ().size
== 0);
151 assert (reporter
.warnings
== 0);
152 assert (reporter
.errors
== 0);
153 assert (begin
.line
== 6);
154 assert (end
.line
== 6);
156 token
= reader
.read_token (out begin
, out end
);
157 assert (token
== MarkupTokenType
.END_ELEMENT
);
158 assert (reader
.name
== "root-element");
159 assert (reader
.content
== null);
160 assert (reader
.get_attributes ().size
== 0);
161 assert (reporter
.warnings
== 0);
162 assert (reporter
.errors
== 0);
163 assert (begin
.line
== 7);
164 assert (end
.line
== 7);
166 token
= reader
.read_token (out begin
, out end
);
167 assert (token
== MarkupTokenType
.EOF
);
168 assert (reader
.name
== null);
169 assert (reader
.content
== null);
170 assert (reader
.get_attributes ().size
== 0);
171 assert (reporter
.warnings
== 0);
172 assert (reporter
.errors
== 0);
173 assert (begin
.line
== 7);
174 assert (end
.line
== 7);
178 public static void positive_2 () {
179 var reporter
= new
ErrorReporter ();
181 string content
= "AA BB & "' < > %";
183 var reader
= new MarkupReader
.from_string ("testfile", content
, reporter
);
184 assert (reader
.filename
== "testfile");
186 MarkupSourceLocation begin
;
187 MarkupSourceLocation end
;
188 MarkupTokenType token
;
190 token
= reader
.read_token (out begin
, out end
);
191 assert (token
== MarkupTokenType
.TEXT
);
192 assert (reader
.content
== "AA BB & \"' < > %");
193 assert (reader
.name
== null);
194 assert (reader
.get_attributes ().size
== 0);
195 assert (reporter
.warnings
== 0);
196 assert (reporter
.errors
== 0);
197 assert (begin
.line
== 1);
198 assert (end
.line
== 1);
203 public static void main () {