Imported Upstream version 2.28.6
[platform/upstream/pygobject2.git] / tests / test_gicon.py
1 # -*- Mode: Python -*-
2
3 import os
4 import unittest
5
6 import glib
7 import gio
8
9
10 class TestIcon(unittest.TestCase):
11     def test_eq(self):
12         self.assertEquals(gio.FileIcon(gio.File('foo.png')),
13                           gio.FileIcon(gio.File('foo.png')))
14         self.assertEquals(gio.ThemedIcon('foo'),
15                           gio.ThemedIcon('foo'))
16
17         self.assertNotEqual(gio.FileIcon(gio.File('foo.png')),
18                             gio.FileIcon(gio.File('bar.png')))
19         self.assertNotEquals(gio.ThemedIcon('foo'),
20                              gio.ThemedIcon('bar'))
21         self.assertNotEquals(gio.FileIcon(gio.File('foo.png')),
22                              gio.ThemedIcon('foo'))
23
24     def test_hash(self):
25         self.assertEquals(hash(gio.FileIcon(gio.File('foo.png'))),
26                           hash(gio.FileIcon(gio.File('foo.png'))))
27         self.assertEquals(hash(gio.ThemedIcon('foo')),
28                           hash(gio.ThemedIcon('foo')))
29
30 class TestLoadableIcon(unittest.TestCase):
31     def setUp(self):
32         self.file = open('temp.svg', 'w')
33         self.svg = ('<?xml version="1.0" encoding="UTF-8" standalone="no"?>'
34                     '<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" '
35                     '"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">'
36                     '<svg width="32" height="32"/>')
37         self.file.write(self.svg)
38         self.file.close()
39         self.icon = gio.FileIcon(gio.File('temp.svg'))
40
41     def tearDown(self):
42         if os.path.exists('temp.svg'):
43             os.unlink('temp.svg')
44
45     def test_load(self):
46         stream, type = self.icon.load()
47         try:
48             self.assert_(isinstance(stream, gio.InputStream))
49             self.assertEquals(self.svg, stream.read())
50         finally:
51             stream.close()
52
53     def test_load_async(self):
54         def callback(icon, result):
55             try:
56                 stream, type = icon.load_finish(result)
57                 self.assert_(isinstance(stream, gio.InputStream))
58                 self.assertEquals(self.svg, stream.read())
59             finally:
60                 loop.quit()
61                 stream.close()
62
63         self.icon.load_async(callback)
64
65         loop = glib.MainLoop()
66         loop.run()
67
68 class TestFileIcon(unittest.TestCase):
69     def test_constructor(self):
70         file = gio.File('foo.png')
71         self.assert_(file is gio.FileIcon(file).get_file())
72
73 class TestThemedIcon(unittest.TestCase):
74     def setUp(self):
75         self.icon = gio.ThemedIcon("open")
76
77     def test_constructor(self):
78         have_use_default_fallbacks = ('use_default_fallbacks'
79                                       in gio.ThemedIcon.props.__members__)
80         icon = gio.ThemedIcon('foo')
81         self.assertEquals(['foo'], icon.props.names)
82         self.assert_(not have_use_default_fallbacks
83                      or not icon.props.use_default_fallbacks)
84
85         icon = gio.ThemedIcon(['foo', 'bar', 'baz'])
86         self.assertEquals(['foo', 'bar', 'baz'], icon.props.names)
87         self.assert_(not have_use_default_fallbacks
88                      or not icon.props.use_default_fallbacks)
89
90         icon = gio.ThemedIcon('xxx-yyy-zzz', True)
91         self.assertEquals(['xxx-yyy-zzz', 'xxx-yyy', 'xxx'], icon.props.names)
92         self.assert_(not have_use_default_fallbacks
93                      or icon.props.use_default_fallbacks)
94
95     def test_constructor_illegals(self):
96         self.assertRaises(TypeError, lambda: gio.ThemedIcon(42))
97         self.assertRaises(TypeError, lambda: gio.ThemedIcon(['foo', 42, 'bar']))
98
99     def test_get_names(self):
100         self.assertEquals(self.icon.get_names(), ['open'])
101
102     def test_append_name(self):
103         self.assertEquals(self.icon.get_names(), ['open'])
104         self.icon.append_name('close')
105         self.assertEquals(self.icon.get_names(), ['open', 'close'])
106
107 class TestEmblemedIcon(unittest.TestCase):
108     def test_emblemed_icon(self):
109         icon = gio.FileIcon(gio.File('foo.png'))
110         emblem = gio.Emblem(icon)
111         emblemed = gio.EmblemedIcon(icon, emblem)
112         self.assertEquals(emblemed.get_emblems()[0], emblem)