netlist: Fix component refdes mangling
[geda-gaf.git] / tests / gaf / plainread_log.py
blobc0d44eb8db281f3c17477b4929efc6ed00b3c2f3
1 # Copyright (C) 2013-2020 Roland Lutz
3 # This program is free software; you can redistribute it and/or modify
4 # it under the terms of the GNU General Public License as published by
5 # the Free Software Foundation; either version 2 of the License, or
6 # (at your option) any later version.
8 # This program is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # GNU General Public License for more details.
13 # You should have received a copy of the GNU General Public License
14 # along with this program; if not, write to the Free Software Foundation,
15 # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17 import cStringIO
18 import gaf.fileformat
19 import gaf.read
21 class TestLog:
22 def __init__(self, messages):
23 self.messages = messages
24 self.lineno = 0
26 def error(self, message):
27 message = '%d: error: %s' % (self.lineno + 1, message)
28 print message
29 assert self.messages[0] == message
30 del self.messages[0]
32 def warn(self, message):
33 message = '%d: warning: %s' % (self.lineno + 1, message)
34 print message
35 assert self.messages[0] == message
36 del self.messages[0]
38 def assert_read(data, messages, **kwds):
39 log = TestLog(messages)
40 try:
41 rev = gaf.read.read_file(
42 cStringIO.StringIO(data), '<test data>',
43 gaf.fileformat.FORMAT_SCH, log, **kwds)
44 except gaf.read.ParseError:
45 pass
46 assert not log.messages
48 ### general ###
50 assert_read("", [
52 assert_read("""
53 """, [
54 '1: error: read garbage'
56 assert_read("""v
57 """, [
58 '1: error: failed to parse version string'
61 ### arc objects ###
63 assert_read("""v 20150930 2
64 A 0 0 100 0 90 3 0 0 0 -1 -1
65 """, [
68 assert_read("""v 20150930 2
70 """, [
71 '2: error: failed to parse arc object'
74 assert_read("""v 20150930 2
75 A 0 0 0 0 90 3 0 0 0 -1 -1
76 """, [
77 '2: warning: arc has radius zero'
80 assert_read("""v 20150930 2
81 A 0 0 -100 0 90 3 0 0 0 -1 -1
82 """, [
83 '2: warning: arc has negative radius (-100), setting to 0'
86 assert_read("""v 20150930 2
87 A 0 0 100 0 90 -1 0 0 0 -1 -1
88 """, [
89 '2: warning: arc has invalid color (-1), setting to 3'
92 ### box objects ###
94 assert_read("""v 20150930 2
95 B 0 0 100 100 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
96 """, [
99 assert_read("""v 20150930 2
101 """, [
102 '2: error: failed to parse box object'
105 assert_read("""v 20150930 2
106 B 0 0 0 100 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
107 """, [
108 '2: warning: box has width/height zero'
111 assert_read("""v 20150930 2
112 B 0 0 100 0 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
113 """, [
114 '2: warning: box has width/height zero'
117 assert_read("""v 20150930 2
118 B 0 0 100 100 -1 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
119 """, [
120 '2: warning: box has invalid color (-1), setting to 3'
123 ### circle objects ###
125 assert_read("""v 20150930 2
126 V 0 0 100 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
127 """, [
130 assert_read("""v 20150930 2
132 """, [
133 '2: error: failed to parse circle object'
136 assert_read("""v 20150930 2
137 V 0 0 0 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
138 """, [
139 '2: warning: circle has radius zero'
142 assert_read("""v 20150930 2
143 V 0 0 -100 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
144 """, [
145 '2: warning: circle has negative radius (-100), setting to 0'
148 assert_read("""v 20150930 2
149 V 0 0 100 -1 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
150 """, [
151 '2: warning: circle has invalid color (-1), setting to 3'
154 ### component objects ###
156 assert_read("""v 20150930 2
157 C 0 0 1 0 0 sym.sym
158 """, [
161 assert_read("""v 20150930 2
163 """, [
164 '2: error: failed to parse complex object'
167 assert_read("""v 20150930 2
168 C 0 0 1 1 0 sym.sym
169 """, [
170 '2: warning: component has invalid angle (1), setting to 0'
173 assert_read("""v 20150930 2
174 C 0 0 1 0 2 sym.sym
175 """, [
176 '2: warning: component has invalid mirror flag (2), setting to 0'
179 assert_read("""v 20150930 2
180 C 0 0 1 0 0 missing.sym
181 """, [
182 '2: error: symbol "missing.sym" not found in library'
183 ], load_symbols = True)
185 ### line objects ###
187 assert_read("""v 20150930 2
188 L 0 0 100 100 3 0 0 0 -1 -1
189 """, [
192 assert_read("""v 20150930 2
194 """, [
195 '2: error: failed to parse line object'
198 assert_read("""v 20150930 2
199 L 0 0 0 0 3 0 0 0 -1 -1
200 """, [
201 '2: warning: line has length zero'
204 assert_read("""v 20150930 2
205 L 0 0 100 100 -1 0 0 0 -1 -1
206 """, [
207 '2: warning: line has invalid color (-1), setting to 3'
210 ### net objects ###
212 assert_read("""v 20150930 2
213 N 0 0 100 100 4
214 """, [
217 assert_read("""v 20150930 2
219 """, [
220 '2: error: failed to parse net object'
223 assert_read("""v 20150930 2
224 N 0 0 0 0 4
225 """, [
226 '2: warning: net has length zero'
229 assert_read("""v 20150930 2
230 N 0 0 100 100 -1
231 """, [
232 '2: warning: net has invalid color (-1), setting to 3'
235 assert_read("""v 20150930 2
236 P 0 0 100 100 1 0 0
237 """, [
240 assert_read("""P 0 0 100 100 1
241 """, [
242 '1: warning: pin does not have the whichone field set--verify and correct manually!',
243 '2: error: file is lacking pin orientation information'
246 assert_read("""v 20150930 2
248 """, [
249 '2: error: failed to parse pin object'
252 assert_read("""v 20150930 2
253 P 0 0 100 100 1 0 2
254 """, [
255 '2: warning: pin has invalid whichend (2), setting to first end'
258 assert_read("""v 20150930 2
259 P 0 0 100 100 -1 0 0
260 """, [
261 '2: warning: pin has invalid color (-1), setting to 3'
264 assert_read("""v 20150930 2
265 P 0 0 100 100 1 2 0
266 """, [
267 '2: warning: pin has invalid type (2), setting to 0'
270 assert_read("""v 20150930 2
271 U 0 0 100 100 10 0
272 """, [
275 assert_read("""v 20150930 2
277 """, [
278 '2: error: failed to parse bus object'
281 assert_read("""v 20150930 2
282 U 0 0 0 0 10 0
283 """, [
284 '2: warning: bus has length zero'
287 assert_read("""v 20150930 2
288 U 0 0 100 100 -1 0
289 """, [
290 '2: warning: bus has invalid color (-1), setting to 3'
293 assert_read("""v 20150930 2
294 U 0 0 100 100 10 2
295 """, [
296 '2: warning: bus has invalid ripper direction (2)'
299 ### path objects ###
301 assert_read("""v 20150930 2
302 H 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 1
304 """, [
307 assert_read("""v 20150930 2
309 """, [
310 '2: error: failed to parse path object'
313 assert_read("""v 20150930 2
314 H -1 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 1
316 """, [
317 '2: warning: path has invalid color (-1), setting to 3'
320 assert_read("""v 20150930 2
321 H 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 1
322 """, [
323 '3: error: unexpected end of file after 0 lines while reading path'
326 ### picture objects ###
328 assert_read("""v 20150930 2
329 G 0 0 100 100 0 0 0
330 pixmap.png
331 """, [
334 assert_read("""v 20150930 2
335 G 0 0 100 100 0 0 1
336 pixmap.png
338 """, [
341 assert_read("""v 20150930 2
343 pixmap.png
344 """, [
345 '2: error: failed to parse picture definition',
346 '3: error: read garbage'
349 assert_read("""v 20150930 2
350 G 0 0 0 100 0 0 0
351 pixmap.png
352 """, [
353 '2: warning: picture has width/height zero'
356 assert_read("""v 20150930 2
357 G 0 0 100 0 0 0 0
358 pixmap.png
359 """, [
360 '2: warning: picture has width/height zero'
363 assert_read("""v 20150930 2
364 G 0 0 100 100 1 0 0
365 pixmap.png
366 """, [
367 '2: warning: picture has unsupported angle (1), setting to 0'
370 assert_read("""v 20150930 2
371 G 0 0 100 100 0 2 0
372 pixmap.png
373 """, [
374 '2: warning: picture has wrong \'mirrored\' parameter (2), setting to 0'
377 assert_read("""v 20150930 2
378 G 0 0 100 100 0 0 0
379 """, [
380 '3: error: unexpected end of file while reading picture file name'
383 assert_read("""v 20150930 2
384 G 0 0 100 100 0 0 0
386 """, [
387 '3: warning: image has no filename'
390 assert_read("""v 20150930 2
391 G 0 0 100 100 0 0 2
392 pixmap.png
393 """, [
394 '3: warning: picture has wrong \'embedded\' parameter (2), setting to not embedded'
397 assert_read("""v 20150930 2
398 G 0 0 100 100 0 0 1
399 pixmap.png
401 """, [
402 '5: error: failed to load image from embedded data: Unexpected end-of-file'
405 ### text objects ###
407 assert_read("""v 20150930 2
408 T 0 0 9 12 1 0 0 0 1
409 blah
410 """, [
413 assert_read("""v 20150930 2
415 blah
416 """, [
417 '2: error: failed to parse text object',
418 '3: error: read garbage'
421 assert_read("""v 20150930 2
422 T 0 0 -1 12 1 0 0 0 1
423 blah
424 """, [
425 '2: warning: text has invalid color (-1), setting to 3'
428 assert_read("""v 20150930 2
429 T 0 0 9 0 1 0 0 0 1
430 blah
431 """, [
432 '2: warning: text has size zero'
435 assert_read("""v 20150930 2
436 T 0 0 9 12 1 0 1 0 1
437 blah
438 """, [
439 '2: warning: text has unsupported angle (1), setting to 0'
442 assert_read("""v 20150930 2
443 T 0 0 9 12 1 0 0 9 1
444 blah
445 """, [
446 '2: warning: text has unsupported alignment (9), setting to LOWER_LEFT'
449 assert_read("""v 20150930 2
450 T 0 0 9 12 1 0 0 0 0
451 """, [
452 '2: error: text has invalid number of lines (0)'
455 assert_read("""v 20150930 2
456 T 0 0 9 12 1 0 0 0 1
457 """, [
458 '3: error: unexpected end of file after 0 lines of text'
461 assert_read("""v 20150930 2
462 T 0 0 9 12 1 0 0 0 1
463 A\\B
464 """, [
465 '3: warning: stray backslash character(s)'
468 assert_read("""v 20150930 2
469 T 0 0 9 12 1 0 0 0 1
470 A\\\\B
471 """, [
474 assert_read("""v 20150930 2
475 T 0 0 9 12 1 0 0 0 1
476 A\\_B\\_C\\_D
477 """, [
478 '3: warning: mismatched overbar markers'
481 assert_read("""v 20150930 2
482 T 0 0 9 12 1 0 0 0 1
483 A\\_B\\_C\\_D\\_E
484 """, [
487 ### attribute lists ###
489 assert_read("""v 20150930 2
492 """, [
493 '2: error: unexpected attribute list start marker',
494 '3: error: unexpected attribute list end marker'
496 assert_read("""v 20150930 2
497 L 0 0 1 1 3 0 0 0 -1 -1
500 """, [
501 '3: error: can\'t attach attributes to this object type',
502 '4: error: unexpected attribute list end marker'
504 assert_read("""v 20150930 2
505 N 0 0 1 1 4
507 """, [
508 '4: error: unterminated attribute list'
510 assert_read("""v 20150930 2
511 N 0 0 1 1 4
513 L 0 0 1 1 3 0 0 0 -1 -1
515 """, [
516 '4: error: tried to attach a non-text item as an attribute'
518 assert_read("""v 20150930 2
520 """, [
521 '2: error: unexpected attribute list end marker'
524 ### embedded symbols ###
526 assert_read("""v 20150930 2
529 """, [
530 '2: error: unexpected embedded symbol start marker',
531 '3: error: unexpected embedded symbol end marker'
533 assert_read("""v 20150930 2
534 N 0 0 1 1 4
537 """, [
538 '3: error: embedded symbol start marker following non-component object',
539 '4: error: unexpected embedded symbol end marker'
541 assert_read("""v 20150930 2
542 C 0 0 1 0 0 sym.sym
545 """, [
546 '3: error: embedded symbol start marker following component with '
547 'non-embedded symbol',
548 '4: error: unexpected embedded symbol end marker'
550 assert_read("""v 20150930 2
551 C 0 0 1 0 0 EMBEDDEDsym.sym
552 """, [
553 '3: error: embedded symbol is missing'
555 assert_read("""v 20150930 2
556 C 0 0 1 0 0 EMBEDDEDsym.sym
561 """, [
562 '5: error: embedded symbol start marker following embedded symbol',
563 '6: error: unexpected embedded symbol end marker'
565 assert_read("""v 20150930 2
567 """, [
568 '2: error: unexpected embedded symbol end marker'