Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(130)

Side by Side Diff: appengine/findit/libs/test/meta_dict_serializer_test.py

Issue 2641583002: [Cuprit-finder] Add MetaDict class. (Closed)
Patch Set: Fix nits. Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 # Copyright 2017 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4
5 import unittest
6
7 from libs.meta_dict_serializer import ElementSerializer
8 from libs.meta_dict_serializer import GetSerializer
9 from libs.meta_dict_serializer import MetaDictSerializer
10 from libs.meta_object import Element
11 from libs.meta_object import MetaDict
12
13
14 class ElementSerializerTest(unittest.TestCase):
15 """Tests that ``ElementSerializer`` works as expected."""
16
17 def testToList(self):
18 """Tests ``ToList`` method."""
19 element = Element()
20 element_serializer = ElementSerializer()
21 self.assertListEqual(element_serializer.ToList(element), [element])
22 self.assertListEqual(element_serializer.ToList(None), [None])
23
24 def testToListRaisesException(self):
25 """Tests that ``ToList`` raises exception when input is not ``Element``."""
26 element_serializer = ElementSerializer()
27 self.assertRaisesRegexp(
28 Exception,
29 'ElementSerializer can only serialize Element object.',
30 element_serializer.ToList, MetaDict({}))
31
32 def testFromList(self):
33 """Tests ``FromList`` method."""
34 element = Element()
35 element_serializer = ElementSerializer()
36 self.assertEqual(element_serializer.FromList([element], lambda x: x),
37 element)
38
39
40 class MockedElement(Element):
41
42 def __init__(self, value):
43 self.value = value
44
45 def __eq__(self, other):
46 return self.value == other.value
47
48 def __ne__(self, other):
49 return not self.__eq__(other)
50
51
52 class MockedMetaDict(MetaDict): # pragma: no cover
53
54 def __eq__(self, other):
55 if not len(self._value) == len(other._value):
56 return False
57
58 for key, meta_object in self.iteritems():
59 if meta_object != other[key]:
lijeffrey 2017/01/19 20:07:14 is key guaranteed to be in other? if not should th
Sharu Jiang 2017/01/19 21:00:46 Done.
60 return False
61
62 return True
63
64 def __ne__(self, other):
65 return not self.__eq__(other)
66
67
68 class MetaDictSerializerTest(unittest.TestCase):
69 """Tests that ``MetaDictSerializer`` works as expected."""
70
71 def testToList(self):
72 """Tests ``ToList`` method."""
73 meta_dict = MockedMetaDict(
74 {'a': MockedMetaDict({'b': MockedElement(1), 'c': MockedElement(3)}),
75 'd': MockedElement(2)})
76 serializer = GetSerializer(meta_dict)
77 expected_element_list = [MockedElement(1), MockedElement(3),
78 MockedElement(2)]
79 element_list = serializer.ToList(meta_dict)
80 for element, expected_element in zip(element_list, expected_element_list):
81 self.assertEqual(element.value, expected_element.value)
82
83 def testFromList(self):
84 """Tests ``FromList`` method."""
85 meta_dict = MockedMetaDict(
86 {'a': MockedMetaDict({'b': MockedElement(1), 'c': MockedElement(3)}),
87 'd': MockedElement(2), 'e': MockedElement(0)})
88 serializer = GetSerializer(meta_dict)
89 element_list = [MockedElement(1), MockedElement(3),
90 MockedElement(2), MockedElement(0)]
91 self.assertTrue(meta_dict == serializer.FromList(
92 element_list, meta_constructor=MockedMetaDict))
93 self.assertDictEqual(serializer.FromList(element_list),
94 {'a': {'b': MockedElement(1), 'c': MockedElement(3)},
95 'd': MockedElement(2), 'e': MockedElement(0)})
96
97 def testFromListRaisesException(self):
98 """Tests ``FromList`` raises exception when lengths mismatch."""
99 meta_dict = MetaDict(
100 {'a': MetaDict({'b': MockedElement(1), 'c': MockedElement(3)}),
101 'd': MockedElement(2), 'e': MockedElement(0)})
102 serializer = GetSerializer(meta_dict)
103 self.assertRaisesRegexp(
104 Exception,
105 'The element list should have the same length as serializer',
106 serializer.FromList, [], MockedMetaDict)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698