Merge fixes from branch 'xorn'
[geda-gaf.git] / xorn / tests / gaf / pixmap.py
blobeed6a76cbd5d5e20c7f01479c5092c676635c3f8
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 StringIO, os, sys
18 import gaf.fileformat
19 import gaf.read
20 import gaf.ref
22 PIXMAP_DATA = \
23 '\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f' \
24 '\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f' \
25 ' !"#$%&\'()*+,-./0123456789:;<=>?' \
26 '@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_' \
27 '`abcdefghijklmnopqrstuvwxyz{|}~\x7f' \
28 '\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f' \
29 '\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f' \
30 '\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf' \
31 '\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf' \
32 '\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf' \
33 '\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf' \
34 '\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef' \
35 '\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff'
37 PICTURES_SCH = """v 20150930 2
38 G 0 0 100 100 0 0 0
39 pixmap.data
40 G 0 0 100 100 0 0 0
41 pixmap.data
42 G 0 0 100 100 0 0 1
43 pixmap.data
44 AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1
45 Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWpr
46 bG1ub3BxcnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6Ch
47 oqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX
48 2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/w==
50 G 0 0 100 100 0 0 1
51 pixmap.data
52 AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1
53 Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWpr
54 bG1ub3BxcnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6Ch
55 oqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX
56 2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/w==
58 """
60 for load_pixmaps in [False, True]:
61 rev = gaf.read.read_file(
62 StringIO.StringIO(PICTURES_SCH), '<test data>',
63 gaf.fileformat.FORMAT_SCH,
64 load_pixmaps = load_pixmaps,
65 pixmap_basepath = os.path.dirname(sys.argv[0]))
66 p0, p1, p2, p3 = (ob.data().pixmap for ob in rev.toplevel_objects())
67 assert p0 == p1
68 assert p0 != p2
69 assert p0 != p3
70 assert p2 != p3
72 for pixmap, embedded in [(p0, False), (p1, False), (p2, True), (p3, True)]:
73 assert isinstance(pixmap, gaf.ref.Pixmap)
74 assert pixmap.filename == 'pixmap.data'
75 assert pixmap.embedded == embedded
77 if load_pixmaps or embedded:
78 assert isinstance(pixmap.data, str)
79 assert pixmap.data == PIXMAP_DATA
80 else:
81 assert pixmap.data is None