def test_add_feature_hierarchy_and_get_default_view(self): root = api.Configuration("data/simple.confml") conf = api.Configuration("test/root.confml") root.add_configuration(conf) conf2 = api.Configuration("test2/root.confml", namespace="com.nokia") root.add_configuration(conf2) conf.add_feature(api.Feature("group1")) conf.add_feature(api.Feature("group2")) conf.add_feature(api.Feature("feature1")) conf.group1.add_feature(api.Feature("group21")) conf.group1.group21.add_feature(api.Feature("feature211")) conf.group1.group21.add_feature(api.Feature("feature212")) conf.feature1.add_feature(api.Feature("feature11")) conf2.add_feature(api.Feature("wlan")) conf2.add_feature(api.Feature("bluetooth")) self.assertEquals(conf.list_all_features(), [ 'group1', 'group1.group21', 'group1.group21.feature211', 'group1.group21.feature212', 'group2', 'feature1', 'feature1.feature11' ]) dview = conf.get_default_view() self.assertEquals(dview.list_features(), ['group1', 'group2', 'feature1']) self.assertEquals(dview.list_groups(), ['com']) self.assertEquals(dview.list_all_features(), [ 'group1', 'group1.group21', 'group1.group21.feature211', 'group1.group21.feature212', 'group2', 'feature1', 'feature1.feature11', 'com.nokia.wlan', 'com.nokia.bluetooth' ])
def test_dumps_and_loads_configuration_hierarchy_with_data(self): root = api.Configuration("root.confml") layer = api.Configuration("layer1") conf = api.Configuration("test") conf.add_feature(api.Feature("feature1")) conf.add_feature(api.Feature("feature2")) conf.feature1.add_feature(api.Feature("feature11")) conf.feature1.add_feature(api.Feature("feature12")) conf.feature1.set_value(1) conf.feature2.set_value(2) layer.add_configuration(conf) root.add_configuration(layer) root.add_configuration(api.Configuration("layer2")) root.get_default_view().feature1.feature11.set_value("testing11") root.get_default_view().feature1.set_value("test1") dumped = persistentdictionary.DictWriter().dumps(root) root2 = persistentdictionary.DictReader().loads(dumped) self.assertEquals(root.list_all_features(), root2.list_all_features()) self.assertEquals(root2.get_default_view().feature1.get_value(), "test1") self.assertEquals(root2.get_default_view().feature2.get_value(), 2) self.assertEquals( root2.get_default_view().feature1.feature11.get_value(), "testing11") self.assertEquals([ data.find_parent(type=api.Configuration).get_path() for data in root2.get_all_datas() ], ['test', 'test', 'layer2', 'layer2'])
def test_add_several_and_remove_last_layer(self): conf = api.Configuration("data/simple.confml") layer = api.Configuration("laa") conf.add_configuration(layer) conf.add_configuration(api.Configuration("foo")) conf.add_configuration(api.Configuration("faa")) conf.remove_configuration("faa") self.assertEquals(conf.list_configurations()[0], "laa") self.assertEquals(conf.list_configurations()[1], "foo")
def test_add_several_and_remove_all_configurations(self): conf = api.Configuration("data/simple.confml") layer = api.Configuration("laa") conf.add_configuration(layer) conf.add_configuration(api.Configuration("foo")) conf.add_configuration(api.Configuration("faa")) for layername in conf.list_configurations(): conf.remove_configuration(layername) self.assertTrue(len(conf.list_configurations()) == 0)
def test_add_several_and_try_to_remove_not_existing(self): conf = api.Configuration("data/simple.confml") layer = api.Configuration("laa") conf.add_configuration(layer) conf.add_configuration(api.Configuration("foo")) conf.add_configuration(api.Configuration("faa")) try: conf.remove_configuration("notthere") self.fail("removing of nonexisting layer succeeds!") except exceptions.NotFound: pass
def test_get_root_configuration(self): conf = api.Configuration("testmee.confml") self.assertEquals(conf.get_root_configuration(), conf) conf.add_configuration(api.Configuration("foo/foo.confml")) conf.add_configuration(api.Configuration("fii/fii.confml")) conf.fii__fii_confml.add_configuration( api.Configuration("fii/foo.confml")) self.assertEquals(conf.fii__fii_confml.get_root_configuration(), conf) self.assertEquals(conf.foo__foo_confml.get_root_configuration(), conf) self.assertEquals( conf.fii__fii_confml.fii__foo_confml.get_root_configuration(), conf)
def test_dumps_and_loads_configuration_hierarchy(self): root = api.Configuration("root.confml") root.add_configuration(api.Configuration("layer1")) layer = api.Configuration("layer2") conf = api.Configuration("test") conf.add_feature(api.Feature("feature1")) conf.add_feature(api.Feature("feature2")) conf.feature1.add_feature(api.Feature("feature11")) conf.feature1.add_feature(api.Feature("feature12")) layer.add_configuration(conf) root.add_configuration(layer) dumped = persistentdictionary.DictWriter().dumps(root) root2 = persistentdictionary.DictReader().loads(dumped) self.assertEquals(root.list_all_features(), root2.list_all_features())
def test_add_configuration_with_features_to_root(self): root = api.Configuration("test", namespace="com.nokia") conf1 = api.Configuration("foo/foo.confml") conf1.add_feature(api.Feature("feature1")) conf1.add_feature(api.Feature("feature12"), "feature1") conf2 = api.Configuration("bar/bar.confml") conf2.add_feature(api.Feature("feature2")) conf2.add_feature(api.Feature("feature22"), "feature2") root.add_configuration(conf1) self.assertEquals(root.list_all_features(), ['feature1', 'feature1.feature12']) root.add_configuration(conf2) self.assertEquals(root.list_all_features(), [ 'feature1', 'feature1.feature12', 'feature2', 'feature2.feature22' ])
def test_get_set_template_single_data_level(self): # Create a sequence feature with only a single level of sub-features # (i.e. no sub-sub-features) config = api.Configuration('foo.confml') seq = api.FeatureSequence("seq") seq.add_feature(api.Feature('child1')) seq.add_feature(api.Feature('child2')) seq.add_feature(api.Feature('child3')) config.add_feature(seq) # Add a template for the sequence with the data elements under it # in a different order than what the features were defined in template_data = api.Data(ref='seq', template=True) template_data.add(api.Data(ref='child2', value='foo2')) template_data.add(api.Data(ref='child3', value='foo3')) template_data.add(api.Data(ref='child1', value='foo1')) config.add_data(template_data) # Get the template data (should be in order) dview = config.get_default_view() seq = dview.get_feature('seq') self.assertEquals(seq.get_template(), ['foo1', 'foo2', 'foo3']) seq.set_template(['x1', 'x2', 'x3']) self.assertEquals(seq.get_template(), ['x1', 'x2', 'x3']) seq.set_template(None) self.assertEquals(seq.get_template(), None) # Test attempting to set invalid template data self.assertRaises(TypeError, seq.set_template, 'foo') self.assertRaises(ValueError, seq.set_template, []) self.assertRaises(ValueError, seq.set_template, ['foo', 'bar']) self.assertRaises(ValueError, seq.set_template, [['foo', 'x'], 'bar'])
def test_sequence_add_data_and_set_template(self): # Create a simple configuration with a sequence feature config = api.Configuration('foo.confml') fea = api.Feature('fea') config.add_feature(fea) seq = api.FeatureSequence("seq") fea.add_feature(seq) seq.add_feature(api.Feature('child1')) seq.add_feature(api.Feature('child2')) sequence = config.get_default_view().get_feature('fea.seq') # Check that initially the sequence is empty self.assertEquals(sequence.get_template(), None) self.assertEquals(sequence.value, []) # Add some data and check again sequence.add_sequence(['row1', 'foo']) sequence.add_sequence(['row2', 'foo']) self.assertEquals(sequence.get_template(), None) self.assertEquals(sequence.value, [['row1', 'foo'], ['row2', 'foo']]) # Setting the template should not affect the data sequence.set_template(['t1', 't2']) self.assertEquals(sequence.get_template(), ['t1', 't2']) self.assertEquals(sequence.value, [['row1', 'foo'], ['row2', 'foo']]) sequence.set_template(['T1', 'T2']) sequence.add_sequence(['row3', 'foo']) self.assertEquals(sequence.get_template(), ['T1', 'T2']) self.assertEquals(sequence.value, [['row1', 'foo'], ['row2', 'foo'], ['row3', 'foo']])
def test_create_views_and_remove_one(self): conf = api.Configuration("data/simple.confml") conf.create_view("view1") conf.create_view("view2") conf.create_view("view3") conf.remove_view('view2') self.assertEquals(conf.list_views(), ['view1', 'view3'])
def test_save_load_report_data_with_some_content(self): rdata = generation_report.ReportData() p = api.Project(api.Storage.open(TEMP_DIR, 'w')) config = api.Configuration('test.confml') fea = config.create_feature('Foo') fea.create_feature('Child1') fea.create_feature('Child2') c3 = fea.create_feature('Child3') c3.value = 'test' rdata.log = ['one', 'two', 'three'] p.add_configuration(config) p.save() rdata.context = plugin.GenerationContext(phase="pre", tags={'target': 'rofs3'}, output='foo', configuration=config, project=p) tmpfile = os.path.join(TEMP_DIR, 'repdata.dat') generation_report.save_report_data(rdata, tmpfile) rdata2 = generation_report.load_report_data(tmpfile) self.assertEquals(repr(rdata), repr(rdata2)) self.assertEquals(rdata.log, rdata2.log) self.assertEquals(rdata.log, rdata2.log) self.assertEquals(rdata2.context.phase, 'pre') self.assertEquals(rdata2.context.tags, {'target': 'rofs3'}) self.assertEquals(rdata2.context.output, 'foo') self.assertEquals(rdata2.context.configuration.Foo.Child3.fqr, 'Foo.Child3') self.assertEquals(rdata2.context.configuration.Foo.Child3.get_value(), 'test') self.assertEquals(rdata2.context.configuration.Foo.Child3.value, 'test')
def test_create_configuration_with_sequence_and_set_value_via_column(self): fea= api.FeatureSequence("foo") fea.add_feature(api.Feature('child1')) fea.add_feature(api.Feature('child2')) fea.add_feature(api.Feature('child3')) config = api.Configuration('foo.confml') config.add_feature(fea) dview = config.get_default_view() foofea = dview.get_feature('foo') # Test adding a data row with array foofea.value = [['1','2','3'],['4','5','6'],['7','8','9']] self.assertEquals(foofea.get_value(), [['1','2','3'], ['4','5','6'], ['7','8','9'] ]) api.set_column_value(foofea, 'child1', ['0','0','0']) self.assertEquals(foofea.get_value(), [['0','2','3'], ['0','5','6'], ['0','8','9'] ]) self.assertRaises(exceptions.ConeException, api.set_column_value, foofea, 'child2', 'over') self.assertRaises(exceptions.ConeException, api.set_column_value, foofea, 'child2', ['0','0','0', 'over']) foofea.child3.value = ['0','0','0'] self.assertEquals(foofea.get_value(), [['0','2','0'], ['0','5','0'], ['0','8','0'] ])
def test_create_configuration_with_sequence_and_add_sequence_value_directly(self): fea= api.FeatureSequence("foo") fea.add_feature(api.Feature('child1')) fea.add_feature(api.Feature('child2')) fea.add_feature(api.Feature('child3')) config = api.Configuration('foo.confml') config.add_feature(fea) dview = config.get_default_view() foofea = dview.get_feature('foo') # Test adding a data row with array foofea.set_value([['1','2','3'], ['4','5','6'], ['7','8','9'] ]) self.assertEquals(len(foofea.get_data()), 3) self.assertEquals(foofea.get_value(), [['1','2','3'], ['4','5','6'], ['7','8','9'] ]) # Check the data element values data_elem_values = [(d.fqr, d.value) for d in config._traverse(type=api.Data)] self.assertEquals(data_elem_values, [('foo', None), ('foo.child1', '1'), ('foo.child2', '2'), ('foo.child3', '3'), ('foo', None), ('foo.child1', '4'), ('foo.child2', '5'), ('foo.child3', '6'), ('foo', None), ('foo.child1', '7'), ('foo.child2', '8'), ('foo.child3', '9'),])
def test_meta_desc(self): conf = api.Configuration("test.confml") conf.meta = {'test':'data','test2':'value'} conf.desc = "Description osos" self.assertEquals(conf.meta['test'],"data") self.assertEquals(conf.meta['test2'],"value") self.assertEquals(conf.desc,"Description osos")
def test_create_feature_seq_and_access_feature_value_with_property(self): config = api.Configuration('foo.confml') fea= api.FeatureSequence("foo") fea.add_feature(api.Feature('child1')) fea.add_feature(api.Feature('child11'),'child1') fea.add_feature(api.Feature('child2')) fea.add_feature(api.Feature('child3')) config.add_feature(fea) dview = config.get_default_view() foofea = dview.get_feature('foo') # Test adding a data row with array foofea.set_value([[['1'],'2','3'], [['4'],'5','6'], [['7'],'8','9'] ]) self.assertEquals(foofea.value, [[['1'],'2','3'], [['4'],'5','6'], [['7'],'8','9'] ]) foofea.value = [[['1'],'2','3'], [['7'],'8','9'] ] self.assertEquals(foofea.data[0].value,[['1'],'2','3']) self.assertEquals(foofea.data[1].value,[['7'],'8','9']) self.assertEquals(foofea.data[1][1].value,'8') self.assertEquals(foofea.get_value(), [[['1'],'2','3'], [['7'],'8','9'] ]) self.assertEquals(foofea.child1.child11.value,['1','7']) self.assertEquals(foofea.child1.value,[['1'],['7']])
def test_create_configuration_with_sequence_and_mapping_properties(self): fea = api.FeatureSequence("SequenceSetting", mapKey='KeySubSetting', mapValue="ValueSubSetting") fea.add_feature(api.Feature('KeySubSetting')) fea.add_feature(api.Feature('ValueSubSetting')) config = api.Configuration('foo.confml') config.add_feature(fea) dview = config.get_default_view() seqfea = dview.get_feature("SequenceSetting") self.assertEquals(seqfea.mapKey, "KeySubSetting") self.assertEquals(seqfea.mapValue, "ValueSubSetting") #add item 1 data = api.Data(ref='SequenceSetting') data._add(api.Data(ref='KeySubSetting',value='Default')) data._add(api.Data(ref='ValueSubSetting',value='Default value')) seqfea.add_data(data) #add item 2 data1 = api.Data(ref='SequenceSetting', policy='append') data1._add(api.Data(ref='KeySubSetting',value='Key 1')) data1._add(api.Data(ref='ValueSubSetting',value='Value 1')) seqfea.add_data(data1) self.assertEquals(len(seqfea.get_data()), 2)
def test_dumps_simple(self): root = api.Configuration("root", namespace="com.nokia") conf = root.create_configuration("test.confml") dumped = persistentdictionary.DictWriter().dumps(conf) dict = dumped['Configuration']['dict'] self.assertEquals(dict['path'], 'test.confml') self.assertEquals(dict['namespace'], 'com.nokia')
def test_add_a_include_with_dots_in_path_and_remove_it(self): conf = api.Configuration("simple.confml") conf.include_configuration("test/foo.bar/data.confml") self.assertEquals(conf.list_configurations(), ['test/foo.bar/data.confml']) conf.remove_configuration("test/foo.bar/data.confml") self.assertEquals(len(conf.list_configurations()), 0)
def test_add_features_and_create_view_with_links(self): conf = api.Configuration("foo/foo.confml") conf.add_feature(api.Feature('feature1')) conf.add_feature(api.Feature('feature2')) conf.add_feature(api.Feature('feature3')) conf.add_feature(api.Feature('feature4')) conf.add_feature(api.Feature('feature11'), 'feature1') conf.add_feature(api.Feature('feature12'), 'feature1') conf.create_view('fea1') view1 = conf.get_view('fea1') view1.create_group('thegruppe1') view1.get_group('thegruppe1').add( api.FeatureLink('feature1.feature11')) view1.add(api.FeatureLink('feature1.*')) view1.populate() self.assertEquals(view1.list_all_features(), [ 'thegruppe1.proxy_feature1_feature11', 'proxy_feature1_feature11', 'proxy_feature1_feature12' ]) fpr = view1.get_feature('thegruppe1.proxy_feature1_feature11') self.assertEquals( fpr._obj.fqr, conf.get_default_view().get_feature('feature1.feature11').fqr) self.assertEquals(view1.list_all_features(), [ 'thegruppe1.proxy_feature1_feature11', 'proxy_feature1_feature11', 'proxy_feature1_feature12' ])
def test_set_ref_and_get_all(self): conf = api.Configuration("test.confml", namespace="com.nokia.s60") conf.add_feature(api.Feature("foo")) fea = conf.get_feature("foo") fea.set_ref("wlan") self.assertEquals(fea.get_ref(),"wlan") self.assertEquals(fea.namespace,"com.nokia.s60") self.assertEquals(fea.fqr,"com.nokia.s60.wlan")
def test_create_featuresequence_and_get_empty_data(self): conf = api.Configuration("foo/foo.confml") conf.add_feature(api.FeatureSequence('feature1')) conf.add_feature(api.Feature('child1'), 'feature1') conf.add_feature(api.Feature('child2'), 'feature1') conf.add_feature(api.Feature('child3'), 'feature1') self.assertEquals(conf.get_feature('feature1').get_data(), []) self.assertEquals(conf.get_feature('feature1').get_value(), [])
def test_create_views_and_remove_all(self): conf = api.Configuration("data/simple.confml") conf.create_view("view1") conf.create_view("view2") conf.create_view("view3") for view in conf.list_views(): conf.remove_view(view) self.assertEquals(conf.list_views(), [])
def test_create_configuration_and_access_feature_type_with_property(self): config = api.Configuration('foo.confml') fea= api.Feature("foo", type='int') config.add_feature(fea) self.assertEquals(fea.type, 'int') dview = config.get_default_view() feaproxy = dview.get_feature('foo') self.assertEquals(feaproxy.type, 'int')
def test_get_flat_configuration_with_single_config_hierarchy(self): conf = api.Configuration('foo.confml') conf.include_configuration('test1/root.confml') conf.include_configuration('test2/root.confml') conf.include_configuration('test3/root.confml') self.assertEquals( configroot2flat.get_flat_includes(conf), ['test1/root.confml', 'test2/root.confml', 'test3/root.confml'])
def test_set_data_to_configuration(self): conf = api.Configuration("foo/foo.confml") conf.add_data(api.Data(fqr='feature1', value=123)) self.assertEquals(conf.get_data('feature1').get_value(), 123) conf.add_data(api.Data(fqr='feature1.feature12', value="test")) self.assertEquals( conf.get_data('feature1.feature12').get_value(), "test") self.assertEquals(conf.data.feature1.feature12.get_value(), "test")
def test_create_configuration_and_features(self): conf = api.Configuration("data/simple.confml") fea = conf.create_feature("test") self.assertEquals(conf.get_feature('test'), fea) fea = conf.create_feature("test1", name="test name") self.assertEquals(conf.get_feature('test1').name, 'test name') fea.create_feature("subfea", name="subfea name") self.assertEquals(conf.list_all_features(), ['test', 'test1', 'test1.subfea'])
def test_get_configuration_and_path(self): conf1 = api.Configuration("testmee.confml") fea = conf1.create_feature('test1') conf1.create_feature('test2') subfea = fea.create_feature('child1') self.assertEquals(fea.get_configuration(), conf1) self.assertEquals(fea.get_configuration_path(), 'testmee.confml') self.assertEquals(subfea.get_configuration(), conf1) self.assertEquals(subfea.get_configuration_path(), 'testmee.confml')
def test_add_subconfiguration(self): conf = api.Configuration("test", namespace="com.nokia") conf.create_configuration("foo/root.confml") conf.create_configuration("platforms/s60.confml") dconf = api.Configuration('confml/data.confml') sconf = conf.get_configuration('foo/root.confml') sconf.add_configuration(dconf) self.assertEquals(conf.list_configurations(), [ 'foo/root.confml', 'platforms/s60.confml', ]) self.assertEquals(conf.list_all_configurations(), [ 'foo/root.confml', 'foo/confml/data.confml', 'platforms/s60.confml' ]) self.assertEquals( conf.get_configuration( 'foo/root.confml').list_all_configurations(), ['confml/data.confml'])
def test_create_configuration_with_sequence_and_get_default_view(self): fea= api.FeatureSequence("foo") fea.add_feature(api.Feature('child1')) fea.add_feature(api.Feature('child2')) fea.add_feature(api.Feature('child3')) config = api.Configuration('foo.confml') config.add_feature(fea) dview = config.get_default_view() self.assertEquals(dview.list_all_features(),['foo','foo.child1','foo.child2','foo.child3'])