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.
22 def __init__(self
, messages
):
23 self
.messages
= messages
26 def error(self
, message
):
27 message
= '%d: error: %s' % (self
.lineno
+ 1, message
)
29 assert self
.messages
[0] == message
32 def warn(self
, message
):
33 message
= '%d: warning: %s' % (self
.lineno
+ 1, message
)
35 assert self
.messages
[0] == message
38 def assert_read(data
, messages
, **kwds
):
39 log
= TestLog(messages
)
41 rev
= gaf
.read
.read_file(
42 cStringIO
.StringIO(data
), '<test data>',
43 gaf
.fileformat
.FORMAT_SCH
, log
, **kwds
)
44 except gaf
.read
.ParseError
:
46 assert not log
.messages
54 '1: error: read garbage'
58 '1: error: failed to parse version string'
63 assert_read("""v 20150930 2
64 A 0 0 100 0 90 3 0 0 0 -1 -1
68 assert_read("""v 20150930 2
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
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
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
89 '2: warning: arc has invalid color (-1), setting to 3'
94 assert_read("""v 20150930 2
95 B 0 0 100 100 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
99 assert_read("""v 20150930 2
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
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
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
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
130 assert_read("""v 20150930 2
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
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
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
151 '2: warning: circle has invalid color (-1), setting to 3'
154 ### component objects ###
156 assert_read("""v 20150930 2
161 assert_read("""v 20150930 2
164 '2: error: failed to parse complex object'
167 assert_read("""v 20150930 2
170 '2: warning: component has invalid angle (1), setting to 0'
173 assert_read("""v 20150930 2
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
182 '2: error: symbol "missing.sym" not found in library'
183 ], load_symbols
= True)
187 assert_read("""v 20150930 2
188 L 0 0 100 100 3 0 0 0 -1 -1
192 assert_read("""v 20150930 2
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
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
207 '2: warning: line has invalid color (-1), setting to 3'
212 assert_read("""v 20150930 2
217 assert_read("""v 20150930 2
220 '2: error: failed to parse net object'
223 assert_read("""v 20150930 2
226 '2: warning: net has length zero'
229 assert_read("""v 20150930 2
232 '2: warning: net has invalid color (-1), setting to 3'
235 assert_read("""v 20150930 2
240 assert_read("""P 0 0 100 100 1
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
249 '2: error: failed to parse pin object'
252 assert_read("""v 20150930 2
255 '2: warning: pin has invalid whichend (2), setting to first end'
258 assert_read("""v 20150930 2
261 '2: warning: pin has invalid color (-1), setting to 3'
264 assert_read("""v 20150930 2
267 '2: warning: pin has invalid type (2), setting to 0'
270 assert_read("""v 20150930 2
275 assert_read("""v 20150930 2
278 '2: error: failed to parse bus object'
281 assert_read("""v 20150930 2
284 '2: warning: bus has length zero'
287 assert_read("""v 20150930 2
290 '2: warning: bus has invalid color (-1), setting to 3'
293 assert_read("""v 20150930 2
296 '2: warning: bus has invalid ripper direction (2)'
301 assert_read("""v 20150930 2
302 H 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 1
307 assert_read("""v 20150930 2
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
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
323 '3: error: unexpected end of file after 0 lines while reading path'
326 ### picture objects ###
328 assert_read("""v 20150930 2
334 assert_read("""v 20150930 2
341 assert_read("""v 20150930 2
345 '2: error: failed to parse picture definition',
346 '3: error: read garbage'
349 assert_read("""v 20150930 2
353 '2: warning: picture has width/height zero'
356 assert_read("""v 20150930 2
360 '2: warning: picture has width/height zero'
363 assert_read("""v 20150930 2
367 '2: warning: picture has unsupported angle (1), setting to 0'
370 assert_read("""v 20150930 2
374 '2: warning: picture has wrong \'mirrored\' parameter (2), setting to 0'
377 assert_read("""v 20150930 2
380 '3: error: unexpected end of file while reading picture file name'
383 assert_read("""v 20150930 2
387 '3: warning: image has no filename'
390 assert_read("""v 20150930 2
394 '3: warning: picture has wrong \'embedded\' parameter (2), setting to not embedded'
397 assert_read("""v 20150930 2
402 '5: error: failed to load image from embedded data: Unexpected end-of-file'
407 assert_read("""v 20150930 2
413 assert_read("""v 20150930 2
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
425 '2: warning: text has invalid color (-1), setting to 3'
428 assert_read("""v 20150930 2
432 '2: warning: text has size zero'
435 assert_read("""v 20150930 2
439 '2: warning: text has unsupported angle (1), setting to 0'
442 assert_read("""v 20150930 2
446 '2: warning: text has unsupported alignment (9), setting to LOWER_LEFT'
449 assert_read("""v 20150930 2
452 '2: error: text has invalid number of lines (0)'
455 assert_read("""v 20150930 2
458 '3: error: unexpected end of file after 0 lines of text'
461 assert_read("""v 20150930 2
465 '3: warning: stray backslash character(s)'
468 assert_read("""v 20150930 2
474 assert_read("""v 20150930 2
478 '3: warning: mismatched overbar markers'
481 assert_read("""v 20150930 2
487 ### attribute lists ###
489 assert_read("""v 20150930 2
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
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
508 '4: error: unterminated attribute list'
510 assert_read("""v 20150930 2
513 L 0 0 1 1 3 0 0 0 -1 -1
516 '4: error: tried to attach a non-text item as an attribute'
518 assert_read("""v 20150930 2
521 '2: error: unexpected attribute list end marker'
524 ### embedded symbols ###
526 assert_read("""v 20150930 2
530 '2: error: unexpected embedded symbol start marker',
531 '3: error: unexpected embedded symbol end marker'
533 assert_read("""v 20150930 2
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
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
553 '3: error: embedded symbol is missing'
555 assert_read("""v 20150930 2
556 C 0 0 1 0 0 EMBEDDEDsym.sym
562 '5: error: embedded symbol start marker following embedded symbol',
563 '6: error: unexpected embedded symbol end marker'
565 assert_read("""v 20150930 2
568 '2: error: unexpected embedded symbol end marker'