Beispiel #1
0
 def add_surveys(self):
     if not hasattr(self, "_dict_organizer"):
         self._dict_organizer = DictOrganizer()
     for i in self._data_dictionary.xform.surveys.iterator():
         d = xform_instance_to_dict(i.xml)
         obs = self._dict_organizer.get_observation_from_dict(d)
         self.add_obs(obs)
Beispiel #2
0
 def test_parse_xform_instance(self):
     # todo: need to test id string as well
     for d in self.inputs_and_outputs:
         self.assertEqual(xform_instance_to_dict(d[XML]), d[DICT])
         self.assertEqual(xform_instance_to_flat_dict(d[XML]), d[FLAT_DICT])
         flat_dict_with_id = {ID: d[ID]}
         flat_dict_with_id.update(d[FLAT_DICT])
         self.assertEqual(parse_xform_instance(d[XML]), flat_dict_with_id)
Beispiel #3
0
 def test_dict_organizer(self):
     serious_xml = u"""
     <?xml version=\'1.0\' ?>
       <household>
         <number_of_members>10</number_of_members>
         <man><name>Alex</name></man>
         <man><name>Bob</name></man>
         <woman>
           <name>Carla</name>
           <child><name>Danny</name></child>
           <child><name>Ed</name></child>
         </woman>
         <woman>
           <name>Fran</name>
           <child><name>Greg</name></child>
         </woman>            
       </household>"""
     serious_xml = re.sub(r">\s+<", "><", serious_xml)
     d = xform_instance_to_dict(serious_xml)
     dict_organizer = DictOrganizer()
     expected_dict = {
         u"household": [
             {u"_parent_table_name": u"", u"_parent_index": -1, u"number_of_members": u"10", u"_index": 0}
         ],
         u"woman": [
             {u"_parent_table_name": u"household", u"_parent_index": 0, u"name": u"Carla", u"_index": 0},
             {u"_parent_table_name": u"household", u"_parent_index": 0, u"name": u"Fran", u"_index": 1},
         ],
         u"man": [
             {u"_parent_table_name": u"household", u"_parent_index": 0, u"name": u"Alex", u"_index": 0},
             {u"_parent_table_name": u"household", u"_parent_index": 0, u"name": u"Bob", u"_index": 1},
         ],
         u"child": [
             {u"_parent_table_name": u"woman", u"_parent_index": 0, u"name": u"Danny", u"_index": 0},
             {u"_parent_table_name": u"woman", u"_parent_index": 0, u"name": u"Ed", u"_index": 1},
             {u"_parent_table_name": u"woman", u"_parent_index": 1, u"name": u"Greg", u"_index": 2},
         ],
     }
     self.assertEqual(dict_organizer.get_observation_from_dict(d), expected_dict)