Fix linux compilation
[vapoursynth.git] / test / prop_dict_test.py
blob12f29e5e53f6133b673c4a9685bc3996ae3fc8ad
1 import unittest
2 import vapoursynth as vs
5 class PropDictTest(unittest.TestCase):
6 def setUp(self):
7 self.core = vs.core
8 self.core.num_threads = 1
9 self.frame = self.core.std.BlankClip().get_frame(0)
10 self.props = self.frame.props
12 self.frame_copy = self.frame.copy()
13 self.props_rw = self.frame_copy.props
15 def test_video_props(self):
16 self.core.std.BlankClip().get_frame(0).props
18 def test_audio_props(self):
19 self.core.std.BlankAudio().get_frame(0).props
21 def test_item_access(self):
22 self.assertEqual(self.props['_DurationDen'], 24)
23 with self.assertRaises(KeyError):
24 self.props['_NonExistent']
26 with self.assertRaises(vs.Error):
27 self.props['_DurationDen'] = 1
29 with self.assertRaises(vs.Error):
30 del self.props['_DurationDen']
32 self.assertEqual(self.props['_DurationDen'], 24)
34 self.assertEqual(self.props_rw['_DurationDen'], 24)
35 self.props_rw['_DurationDen'] = 1
36 self.assertEqual(self.props_rw['_DurationDen'], 1)
37 del self.props_rw['_DurationDen']
38 self.assertFalse('_DurationDen' in self.props_rw)
40 def test_length(self):
41 self.assertCountEqual(self.props, self.props_rw)
42 self.assertEqual(len(self.props_rw), 2)
43 del self.props_rw['_DurationDen']
44 self.assertEqual(len(self.props_rw), 1)
45 self.props_rw['_DurationDen'] = 1
46 self.assertEqual(len(self.props_rw), 2)
47 self.props_rw['TestEntry'] = "123"
48 self.assertEqual(len(self.props_rw), 3)
50 def test_iterators(self):
51 self.assertEqual(list(self.props.keys()), list(self.props))
52 self.assertEqual(self.props.keys(), set(['_DurationDen', '_DurationNum']))
53 self.assertEqual(list(self.props.values()), [24, 1])
54 self.assertEqual(self.props.items(), {('_DurationDen', 24), ('_DurationNum', 1)})
55 self.assertEqual(dict(self.props), dict(self.props_rw))
56 self.assertEqual(dict(self.props), {'_DurationDen': 24, '_DurationNum': 1})
58 def test_get_pop(self):
59 self.assertEqual(self.props.get('_DurationDen'), 24)
60 self.assertEqual(self.props.get('_NonExistent'), None)
61 self.assertEqual(self.props.get('_NonExistent', "Testificate"), "Testificate")
63 with self.assertRaises(KeyError):
64 self.props.pop("_NonExistent")
66 x = []
67 self.assertTrue(self.props.pop("_NonExistent", x) is x)
68 self.assertEqual(self.props.pop("_NonExistent", None), None)
69 self.assertEqual(self.props.pop("_NonExistent", "Testificate"), "Testificate")
71 self.assertEqual(self.props_rw.pop("_DurationDen"), 24)
72 with self.assertRaises(KeyError):
73 self.props_rw.pop("_DurationDen")
74 self.assertEqual(self.props_rw.pop("_DurationDen", "Test"), "Test")
75 self.assertEqual(self.props_rw.popitem(), ("_DurationNum", 1))
77 def test_setdefault(self):
78 self.assertEqual(self.props_rw.setdefault("_DurationDen"), 24)
79 self.assertFalse("_NonExistent1" in self.props_rw)
80 self.assertEqual(self.props_rw.setdefault("_NonExistent1"), 0)
81 self.assertEqual(self.props_rw["_NonExistent1"], 0)
83 self.assertEqual(self.props_rw.setdefault("_NonExistent2", b"Testificate"), b"Testificate")
84 self.assertEqual(self.props_rw["_NonExistent2"], b"Testificate")
86 def test_attr_access(self):
87 self.assertEqual(self.props._DurationDen, 24)
88 with self.assertRaises(AttributeError):
89 self.props._NonExistent
91 with self.assertRaises(vs.Error):
92 self.props._DurationDen = 1
94 with self.assertRaises(vs.Error):
95 del self.props._DurationDen
97 self.assertEqual(self.props._DurationDen, 24)
99 self.assertEqual(self.props_rw._DurationDen, 24)
100 self.props_rw._DurationDen = 1
101 self.assertEqual(self.props_rw._DurationDen, 1)
102 del self.props_rw._DurationDen
103 self.assertFalse(hasattr(self.props_rw, '_DurationDen'))
105 def test_data_props(self):
106 self.props_rw.DataPropStr = 'hello'
107 self.props_rw.DataPropBytes = b'hello'
108 self.assertEqual(type(self.props_rw.DataPropStr), str)
109 self.assertEqual(type(self.props_rw.DataPropBytes), bytes)
112 if __name__ == '__main__':
113 unittest.main()