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