xref: /aosp_15_r20/system/media/camera/docs/metadata_model_test.py (revision b9df5ad1c9ac98a7fefaac271a55f7ae3db05414)
1*b9df5ad1SAndroid Build Coastguard Workerimport unittest
2*b9df5ad1SAndroid Build Coastguard Workerfrom unittest import TestCase
3*b9df5ad1SAndroid Build Coastguard Workerfrom metadata_model import *
4*b9df5ad1SAndroid Build Coastguard Worker
5*b9df5ad1SAndroid Build Coastguard Workerclass TestInnerNamespace(TestCase):
6*b9df5ad1SAndroid Build Coastguard Worker  def test_combine_children_by_name(self):
7*b9df5ad1SAndroid Build Coastguard Worker    #
8*b9df5ad1SAndroid Build Coastguard Worker    # Set up
9*b9df5ad1SAndroid Build Coastguard Worker    #
10*b9df5ad1SAndroid Build Coastguard Worker    kind = Kind("some_root_kind", parent=None)
11*b9df5ad1SAndroid Build Coastguard Worker    ins_outer = InnerNamespace("static", parent=kind)
12*b9df5ad1SAndroid Build Coastguard Worker    kind._namespaces = [ins_outer]
13*b9df5ad1SAndroid Build Coastguard Worker
14*b9df5ad1SAndroid Build Coastguard Worker    ins1 = InnerNamespace("ins1", parent=ins_outer)
15*b9df5ad1SAndroid Build Coastguard Worker    ins1a = InnerNamespace("ins1", parent=ins_outer)  # same name deliberately
16*b9df5ad1SAndroid Build Coastguard Worker    entry1 = Entry(name="entry1", type="int32", kind="static",
17*b9df5ad1SAndroid Build Coastguard Worker                   parent=ins1, hal_version="3.2")
18*b9df5ad1SAndroid Build Coastguard Worker    entry2 = Entry(name="entry2", type="int32", kind="static",
19*b9df5ad1SAndroid Build Coastguard Worker                   parent=ins1a, hal_version="3.2")
20*b9df5ad1SAndroid Build Coastguard Worker    entry3 = Entry(name="entry3", type="int32", kind="static",
21*b9df5ad1SAndroid Build Coastguard Worker                   parent=ins_outer, hal_version="3.2")
22*b9df5ad1SAndroid Build Coastguard Worker
23*b9df5ad1SAndroid Build Coastguard Worker    ins_outer._namespaces = [ins1, ins1a]
24*b9df5ad1SAndroid Build Coastguard Worker    ins_outer._entries = [entry3]
25*b9df5ad1SAndroid Build Coastguard Worker
26*b9df5ad1SAndroid Build Coastguard Worker    ins1._entries = [entry1]
27*b9df5ad1SAndroid Build Coastguard Worker    ins1a._entries = [entry2]
28*b9df5ad1SAndroid Build Coastguard Worker
29*b9df5ad1SAndroid Build Coastguard Worker    #
30*b9df5ad1SAndroid Build Coastguard Worker    # Test
31*b9df5ad1SAndroid Build Coastguard Worker    #
32*b9df5ad1SAndroid Build Coastguard Worker    combined_children_namespace = ins_outer.combine_children_by_name()
33*b9df5ad1SAndroid Build Coastguard Worker
34*b9df5ad1SAndroid Build Coastguard Worker    self.assertIsInstance(combined_children_namespace, InnerNamespace)
35*b9df5ad1SAndroid Build Coastguard Worker    combined_ins = [i for i in combined_children_namespace.namespaces]
36*b9df5ad1SAndroid Build Coastguard Worker    combined_ent = [i for i in combined_children_namespace.entries]
37*b9df5ad1SAndroid Build Coastguard Worker
38*b9df5ad1SAndroid Build Coastguard Worker    self.assertEquals(kind, combined_children_namespace.parent)
39*b9df5ad1SAndroid Build Coastguard Worker    self.assertEquals(1, len(combined_ins))
40*b9df5ad1SAndroid Build Coastguard Worker    self.assertEquals(1, len(combined_ent))
41*b9df5ad1SAndroid Build Coastguard Worker
42*b9df5ad1SAndroid Build Coastguard Worker    self.assertEquals("ins1", combined_ins[0].name)
43*b9df5ad1SAndroid Build Coastguard Worker    self.assertEquals("entry3", combined_ent[0].name)
44*b9df5ad1SAndroid Build Coastguard Worker
45*b9df5ad1SAndroid Build Coastguard Worker    new_ins = combined_ins[0]
46*b9df5ad1SAndroid Build Coastguard Worker    self.assertIn(entry1, new_ins.entries)
47*b9df5ad1SAndroid Build Coastguard Worker    self.assertIn(entry2, new_ins.entries)
48*b9df5ad1SAndroid Build Coastguard Worker
49*b9df5ad1SAndroid Build Coastguard Worker
50*b9df5ad1SAndroid Build Coastguard Workerclass TestKind(TestCase):
51*b9df5ad1SAndroid Build Coastguard Worker  def test_combine_kinds_into_single_node(self):
52*b9df5ad1SAndroid Build Coastguard Worker    #
53*b9df5ad1SAndroid Build Coastguard Worker    # Set up
54*b9df5ad1SAndroid Build Coastguard Worker    #
55*b9df5ad1SAndroid Build Coastguard Worker    section = Section("some_section", parent=None)
56*b9df5ad1SAndroid Build Coastguard Worker    kind_static = Kind("static", parent=section)
57*b9df5ad1SAndroid Build Coastguard Worker    kind_dynamic = Kind("dynamic", parent=section)
58*b9df5ad1SAndroid Build Coastguard Worker    section._kinds = [kind_static, kind_dynamic]
59*b9df5ad1SAndroid Build Coastguard Worker
60*b9df5ad1SAndroid Build Coastguard Worker    ins1 = InnerNamespace("ins1", parent=kind_static)
61*b9df5ad1SAndroid Build Coastguard Worker    ins2 = InnerNamespace("ins2", parent=kind_dynamic)
62*b9df5ad1SAndroid Build Coastguard Worker    entry1 = Entry(name="entry1", type="int32", kind="static",
63*b9df5ad1SAndroid Build Coastguard Worker                   parent=kind_static, hal_version="3.2")
64*b9df5ad1SAndroid Build Coastguard Worker    entry2 = Entry(name="entry2", type="int32", kind="static",
65*b9df5ad1SAndroid Build Coastguard Worker                   parent=kind_dynamic, hal_version="3.2")
66*b9df5ad1SAndroid Build Coastguard Worker
67*b9df5ad1SAndroid Build Coastguard Worker    kind_static._namespaces = [ins1]
68*b9df5ad1SAndroid Build Coastguard Worker    kind_static._entries = [entry1]
69*b9df5ad1SAndroid Build Coastguard Worker
70*b9df5ad1SAndroid Build Coastguard Worker    kind_dynamic._namespaces = [ins2]
71*b9df5ad1SAndroid Build Coastguard Worker    kind_dynamic._entries = [entry2]
72*b9df5ad1SAndroid Build Coastguard Worker
73*b9df5ad1SAndroid Build Coastguard Worker    #
74*b9df5ad1SAndroid Build Coastguard Worker    # Test
75*b9df5ad1SAndroid Build Coastguard Worker    #
76*b9df5ad1SAndroid Build Coastguard Worker    combined_kind = section.combine_kinds_into_single_node()
77*b9df5ad1SAndroid Build Coastguard Worker
78*b9df5ad1SAndroid Build Coastguard Worker    self.assertEquals(section, combined_kind.parent)
79*b9df5ad1SAndroid Build Coastguard Worker
80*b9df5ad1SAndroid Build Coastguard Worker    self.assertIn(ins1, combined_kind.namespaces)
81*b9df5ad1SAndroid Build Coastguard Worker    self.assertIn(ins2, combined_kind.namespaces)
82*b9df5ad1SAndroid Build Coastguard Worker
83*b9df5ad1SAndroid Build Coastguard Worker    self.assertIn(entry1, combined_kind.entries)
84*b9df5ad1SAndroid Build Coastguard Worker    self.assertIn(entry2, combined_kind.entries)
85*b9df5ad1SAndroid Build Coastguard Worker
86*b9df5ad1SAndroid Build Coastguard Worker  def test_combine_children_by_name(self):
87*b9df5ad1SAndroid Build Coastguard Worker    #
88*b9df5ad1SAndroid Build Coastguard Worker    # Set up
89*b9df5ad1SAndroid Build Coastguard Worker    #
90*b9df5ad1SAndroid Build Coastguard Worker    section = Section("some_section", parent=None)
91*b9df5ad1SAndroid Build Coastguard Worker    kind_static = Kind("static", parent=section)
92*b9df5ad1SAndroid Build Coastguard Worker    section._kinds = [kind_static]
93*b9df5ad1SAndroid Build Coastguard Worker
94*b9df5ad1SAndroid Build Coastguard Worker    ins1 = InnerNamespace("ins1", parent=kind_static)
95*b9df5ad1SAndroid Build Coastguard Worker    ins1a = InnerNamespace("ins1", parent=kind_static)  # same name deliberately
96*b9df5ad1SAndroid Build Coastguard Worker    entry1 = Entry(name="entry1", type="int32", kind="static",
97*b9df5ad1SAndroid Build Coastguard Worker                   parent=ins1, hal_version="3.2")
98*b9df5ad1SAndroid Build Coastguard Worker    entry2 = Entry(name="entry2", type="int32", kind="static",
99*b9df5ad1SAndroid Build Coastguard Worker                   parent=ins1a, hal_version="3.2")
100*b9df5ad1SAndroid Build Coastguard Worker    entry3 = Entry(name="entry3", type="int32", kind="static",
101*b9df5ad1SAndroid Build Coastguard Worker                   parent=kind_static, hal_version="3.2")
102*b9df5ad1SAndroid Build Coastguard Worker
103*b9df5ad1SAndroid Build Coastguard Worker    kind_static._namespaces = [ins1, ins1a]
104*b9df5ad1SAndroid Build Coastguard Worker    kind_static._entries = [entry3]
105*b9df5ad1SAndroid Build Coastguard Worker
106*b9df5ad1SAndroid Build Coastguard Worker    ins1._entries = [entry1]
107*b9df5ad1SAndroid Build Coastguard Worker    ins1a._entries = [entry2]
108*b9df5ad1SAndroid Build Coastguard Worker
109*b9df5ad1SAndroid Build Coastguard Worker    #
110*b9df5ad1SAndroid Build Coastguard Worker    # Test
111*b9df5ad1SAndroid Build Coastguard Worker    #
112*b9df5ad1SAndroid Build Coastguard Worker    combined_children_kind = kind_static.combine_children_by_name()
113*b9df5ad1SAndroid Build Coastguard Worker
114*b9df5ad1SAndroid Build Coastguard Worker    self.assertIsInstance(combined_children_kind, Kind)
115*b9df5ad1SAndroid Build Coastguard Worker    combined_ins = [i for i in combined_children_kind.namespaces]
116*b9df5ad1SAndroid Build Coastguard Worker    combined_ent = [i for i in combined_children_kind.entries]
117*b9df5ad1SAndroid Build Coastguard Worker
118*b9df5ad1SAndroid Build Coastguard Worker    self.assertEquals(section, combined_children_kind.parent)
119*b9df5ad1SAndroid Build Coastguard Worker    self.assertEquals(1, len(combined_ins))
120*b9df5ad1SAndroid Build Coastguard Worker    self.assertEquals(1, len(combined_ent))
121*b9df5ad1SAndroid Build Coastguard Worker
122*b9df5ad1SAndroid Build Coastguard Worker    self.assertEquals("ins1", combined_ins[0].name)
123*b9df5ad1SAndroid Build Coastguard Worker    self.assertEquals("entry3", combined_ent[0].name)
124*b9df5ad1SAndroid Build Coastguard Worker
125*b9df5ad1SAndroid Build Coastguard Worker    new_ins = combined_ins[0]
126*b9df5ad1SAndroid Build Coastguard Worker    self.assertIn(entry1, new_ins.entries)
127*b9df5ad1SAndroid Build Coastguard Worker    self.assertIn(entry2, new_ins.entries)
128*b9df5ad1SAndroid Build Coastguard Worker
129*b9df5ad1SAndroid Build Coastguard Workerif __name__ == '__main__':
130*b9df5ad1SAndroid Build Coastguard Worker    unittest.main()
131