コード例 #1
0
 def test_create_data_getters(self):
     data = api.Data(ref="foo", value=123)
     self.assertEquals(data.fqr, "foo")
     data = api.Data(fqr="foo.bar.test", value=123)
     self.assertEquals(data.get_ref(), "test")
     self.assertEquals(data.get_value(), 123)
     self.assertEquals(data.get_policy(), "")
 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'])
コード例 #3
0
 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")
コード例 #4
0
    def convert_value_to_data(self, value, attr=None):
        if not isinstance(value,
                          (types.ListType, types.TupleType, types.NoneType)):
            raise ValueError("Only list, tuple and None types are allowed.")

        if value:
            return [api.Data(fqr=self.fqr, value=v, attr=attr) for v in value]
        else:
            return [api.Data(fqr=self.fqr, empty=True, attr=attr)]
コード例 #5
0
 def test_create_data(self):
     data = api.Data(fqr="foo", value=123)
     self.assertTrue(data)
     data = api.Data(fqr="foo.bar", value=123, attr='rfs')
     self.assertEquals(data.attr,'rfs')
     data = api.Data(fqr="foo.bar", value=123, attr=None)
     self.assertEquals(data.attr,'data')
     data = api.Data(fqr="foo.bar", value=123, attr='data')
     self.assertEquals(data.attr,'data')
コード例 #6
0
 def test_clone_sequential_data(self):
     data1 = api.Data(ref="seq")
     data1._add(api.Data(ref="foo", value='sss'),container.APPEND)
     data1._add(api.Data(ref="foo", value='aaa'),container.APPEND)
     data1._add(api.Data(ref="foo", value=123),container.APPEND)
     
     data2 = data1._clone(recursion=True)
     self.comparedata(data1, data2)
     self.comparedata(data1.foo[0], data2.foo[0])
     self.comparedata(data1.foo[1], data2.foo[1])
     self.comparedata(data1.foo[2], data2.foo[2])
コード例 #7
0
 def test_clone_hierarchical_data(self):
     data1 = api.Data(ref="seq")
     data1._add(api.Data(ref="foo1", value='sss'))
     data1._add(api.Data(ref="foo2", value='aaa'))
     data1._add(api.Data(ref="foo3", value=123))
     
     data2 = data1._clone(recursion=True)
     self.comparedata(data1, data2)
     self.comparedata(data1.foo1, data2.foo1)
     self.comparedata(data1.foo2, data2.foo2)
     self.comparedata(data1.foo3, data2.foo3)
コード例 #8
0
 def test_create_configuration_with_data(self):
     config  = api.Configuration("dataconf")
     config.add_data(api.Data(fqr='foo.setting1',value=123))
     config.add_data(api.Data(fqr='foo.setting2',value=456))
     config.add_data(api.Data(fqr='foo.seq.data1',value='juhuu'))
     config.add_data(api.Data(fqr='foo.seq.data2',value='x:\\ss'))
     self.assertEquals(config.data.foo.setting1.get_value(), 123)
     self.assertEquals(config.data.foo.setting1.fqr, 'foo.setting1')
     self.assertEquals(config.data.foo.seq.data2.fqr, 'foo.seq.data2')
     self.assertEquals(config.data.foo.seq.data2.get_ref(), 'data2')
     self.assertEquals(config.get_data('foo.seq.data2').get_value(), 'x:\\ss')
 def test_create_feature_data_proxy(self):
     fea= api.Feature("foo")
     feaproxy = api._FeatureDataProxy("foo",fea)
     self.assertTrue(feaproxy.get_ref(),"foo")
     self.assertEquals(feaproxy._get_data(),None)
     self.assertEquals(feaproxy._get_value(),None)
     feaproxy._add_data(api.Data(ref="foo", value=123))
     self.assertEquals(feaproxy._get_data().get_value(),123)
     feaproxy._add_data(api.Data(ref="foo", value=321))
     self.assertEquals(feaproxy._get_data().get_value(),321)
     self.assertEquals(feaproxy._get_datas()[0].get_value(),123)
     self.assertEquals(feaproxy._get_datas()[1].get_value(),321)
     self.assertEquals(feaproxy._get_values(),[123,321])
コード例 #10
0
        def check(data_objs, policy, expected):
            conf = api.Configuration("foo/foo.confml")
            conf.add_data(api.Data(ref='base1', value="foo"))
            conf.add_data(api.Data(ref='foo', value="foobar"))
            conf.add_data(api.Data(ref='base2', value="bar"))

            if policy is None:
                conf.add_data(data_objs)
            else:
                conf.add_data(data_objs, policy=policy)

            actual = []
            for d in conf._traverse(type=api.Data):
                actual.append((d.fqr, d.value))
            self.assertEquals(actual, expected)
コード例 #11
0
 def loads(self, dict):
     """
     @param obj: The Configuration object 
     """
     fealist_expanded            = dict.get('expanded')
     fealist_version             = dict.get('version_identifier')
     fealist_is_latest_version   = dict.get('is_latest_version')
     fealist_list_id             = dict.get('list_id')
     fealist_path                = dict.get('path')
     fealist_version_title       = dict.get('version_title')
     fealist_can_be_released     = dict.get('can_be_released')
     fealist_type                = dict.get('type')
     fealist_has_external_relations = dict.get('is_latest_version')
     
     # Create a configuration object from the featurelist
     conf = model.FeatureList(path='featurelists/'+fealist_version_title+'.confml')
     conf.meta.add('version_identifier', fealist_version)
     
     for feature in dict.get('features'):
         reader = FeatureReader()
         fea = reader.loads(feature)
         if fea != None:
             conf.add_feature(fea)
     
     for feafqr in conf.list_all_features():
         # Add empty data object to featurelist configuration
         conf.add_data(api.Data(fqr=feafqr))
         
     return conf
コード例 #12
0
    def create_feature(self, config):
        """
        Add a feature based on this temp feature definition to the given configuration.
        """
        if '.' in self.ref:
            pos = self.ref.rfind('.')
            ref = self.ref[pos + 1:]
            namespace = self.ref[:pos]
        else:
            ref = self.ref
            namespace = ''

        mapping = {
            'string': cone.confml.model.ConfmlStringSetting,
            'int': cone.confml.model.ConfmlIntSetting,
            'real': cone.confml.model.ConfmlRealSetting,
            'boolean': cone.confml.model.ConfmlBooleanSetting
        }
        # Create temp variables always name being also the ref
        feature = mapping[self.type](ref, name=ref)
        setattr(feature, TEMP_FEATURE_MARKER_VARNAME, True)
        config.add_feature(feature, namespace)

        value = utils.expand_refs_by_default_view(self.value,
                                                  config.get_default_view())
        config.add_data(api.Data(fqr=self.ref, value=value))
コード例 #13
0
 def test_create_data_for_sequences(self):
     data = api.Data(ref="seq")
     data._add(api.Data(ref="foo", value='sss'),container.APPEND)
     data._add(api.Data(ref="foo", value='aaa'),container.APPEND)
     data._add(api.Data(ref="foo", value=123),container.PREPEND)
     
     self.assertEquals(data.fqr, "seq")
     self.assertEquals(data._get('foo[0]').get_ref(), "foo")
     self.assertEquals(data._get('foo[0]').fqr, "seq.foo")
     self.assertEquals(data.foo[0].get_value(), 123)
     self.assertEquals(data.foo[0].get_index(), 0)
     self.assertEquals(data.foo[1].get_value(), 'sss')
     self.assertEquals(data.foo[1].get_index(), 1)
     self.assertEquals(data.foo[2].get_value(), 'aaa')
     self.assertEquals(data.foo[2].get_index(), 2)
     data._add(api.Data(ref="foo", value='NEW'))
     self.assertEquals(data.foo.get_value(), 'NEW')
コード例 #14
0
    def test_create_features_with_rfs_data(self):
        conf = api.Configuration("foo/foo.confml")
        conf.add_feature(api.Feature('feature1'))
        conf.add_feature(api.Feature('child1'), 'feature1')
        conf.add_feature(api.Feature('child2'), 'feature1')
        conf.add_feature(api.Feature('child3'), 'feature1')

        conf.add_data(api.Data(fqr='feature1.child1', attr='rfs',
                               value='true'))
        conf.add_data(
            api.Data(fqr='feature1.child2', attr='rfs', value='false'))
        dview = conf.get_default_view()
        self.assertEquals(
            dview.get_feature('feature1.child1').get_value(), None)
        self.assertEquals(
            dview.get_feature('feature1.child1').get_value('rfs'), 'true')
        self.assertEquals(
            dview.get_feature('feature1.child2').get_value('rfs'), 'false')
 def test_simple_name_id_mapping(self):
     config = api.Configuration('foo.confml')
     seq = api.FeatureSequence('seq', mapKey='sub1', mapValue='sub1')
     seq.add_feature(api.Feature('sub1'))
     seq.add_feature(api.Feature('sub2'))
     config.add_feature(seq)
     config.add_feature(api.Feature('target'))
     
     config.add_data(api.Data(fqr='seq.sub1', value='foo'))
     config.add_data(api.Data(fqr='seq.sub2', value='bar'))
     config.add_data(api.Data(fqr='target', map="seq[@key='foo']"))
     
     fea = config.get_default_view().get_feature('target')
     self.assertEquals(fea.value, 'foo')
     self.assertEquals(fea.get_value(), 'foo')
     self.assertEquals(fea.get_original_value(), 'foo')
     
     seq.mapValue = 'sub2'
     self.assertEquals(fea.value, 'bar')
     self.assertEquals(fea.get_value(), 'bar')
     self.assertEquals(fea.get_original_value(), 'bar')
    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)
コード例 #17
0
 def loads(self, dict):
     """
     @param obj: The Configuration object 
     """
     datacont  = api.Configuration('confml/data.confml')
     for dataref in dict.keys():
         # Ignore null values
         if dict[dataref]:
             refs = []
             for elem in dataref.split('.'):
                 refs.append(utils.resourceref.to_objref(elem))
             newref = '.'.join(refs)
             dataelem = api.Data(fqr=newref, value=map_carbon2confml_value(dict[dataref]))
             datacont.add_data(dataelem)
     return datacont
    def test_create_configuration_with_sequence_and_add_data_with_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()
        foofea = dview.get_feature('foo')
        
        data = api.Data(ref='foo')
        data._add(api.Data(ref='child1',value='test1'))
        data._add(api.Data(ref='child2',value='test2'))
        data._add(api.Data(ref='child3',value='test3'))
        foofea.add_data(data)
        data1 = api.Data(ref='foo', policy='append')
        data1._add(api.Data(ref='child1',value='jee'))
        data1._add(api.Data(ref='child2',value='oo'))
        data1._add(api.Data(ref='child3',value='aa'))
        
        foofea.add_data(data1)
        self.assertEquals(len(foofea.get_data()), 2)
        
        self.assertEquals(foofea.get_data()[0].list_features(), ['child1','child2','child3'])
        self.assertEquals(foofea.get_data()[0].get_feature('child1').get_value(), 'test1')
        self.assertEquals(foofea.get_data()[0].get_feature('child2').get_value(), 'test2')
        self.assertEquals(foofea.get_data()[0].get_feature('child3').get_value(), 'test3')

        self.assertEquals(foofea.get_data()[1].list_features(), ['child1','child2','child3'])
        self.assertEquals(foofea.get_data()[1].get_feature('child1').get_value(), 'jee')
        self.assertEquals(foofea.get_data()[1].get_feature('child2').get_value(), 'oo')
        self.assertEquals(foofea.get_data()[1].get_feature('child3').get_value(), 'aa')

        self.assertEquals(foofea.get_value(), [['test1','test2','test3'],
                                               ['jee','oo','aa']])
        self.assertEquals(foofea.get_data()[0][0].get_value(), 'test1')
        # Test recurse
        for row in foofea.get_data():
            for col in row:
                print col.get_value(),
            print
コード例 #19
0
 def test_add_features_and_add_data_via_default_view(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('feature12'), 'feature1')
     dview = conf.get_default_view()
     dview.feature1._add_data(api.Data(ref="feature1", value=123))
     dview.feature2._add_data(api.Data(ref="feature2", value=123))
     dview.feature3._add_data(api.Data(ref="feature3", value=123))
     dview.feature1.feature12._add_data(api.Data(ref="feature12",
                                                 value=123))
     dview.feature1._add_data(api.Data(ref="feature1", value=123))
     self.assertEquals(dview.feature1.get_value(), 123)
     dview.feature1._add_data(api.Data(ref="feature1", value=111))
     self.assertEquals(dview.feature1.get_value(), 111)
 def test_get_set_template_two_data_levels(self):
     # Create a sequence feature with two levels of sub-features
     config = api.Configuration('foo.confml')
     seq = api.FeatureSequence("seq")
     seq.add_feature(api.Feature('a1'))
     seq.add_feature(api.Feature('b1'), 'a1')
     seq.add_feature(api.Feature('b2'), 'a1')
     seq.add_feature(api.Feature('a2'))
     seq.add_feature(api.Feature('a3'))
     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='a3', value='t: a3'))
     data_a1 = api.Data(ref='a1')
     data_a1.add(api.Data(ref='b2', value='t: a1.b2'))
     data_a1.add(api.Data(ref='b1', value='t: a1.b1'))
     template_data.add(data_a1)
     template_data.add(api.Data(ref='a2', value='t: a2'))
     config.add_data(template_data)
     
     template_data = api.Data(ref='seq')
     template_data.add(api.Data(ref='a3', value='t: a3'))
     data_a1 = api.Data(ref='a1')
     data_a1.add(api.Data(ref='b2', value='t: a1.b2'))
     data_a1.add(api.Data(ref='b1', value='t: a1.b1'))
     template_data.add(data_a1)
     template_data.add(api.Data(ref='a2', value='t: a2'))
     config.add_data(template_data, api.FeatureSequence.POLICY_APPEND)
     
     # Get the template data (should be in order)
     dview = config.get_default_view()
     seq = dview.get_feature('seq')
     self.assertEquals(seq.value, [[['t: a1.b1', 't: a1.b2'], 't: a2', 't: a3']])
     self.assertEquals(seq.get_template(), [['t: a1.b1', 't: a1.b2'], 't: a2', 't: a3'])
     
     # Set the template and get it again
     seq.set_template([['t: a1.b1 (x)', 't: a1.b2 (x)'], 't: a2 (x)', 't: a3 (x)'])
     self.assertEquals(seq.get_template(), [['t: a1.b1 (x)', 't: a1.b2 (x)'], 't: a2 (x)', 't: a3 (x)'])
コード例 #21
0
 def test_clone_data(self):
     data1 = api.Data(ref="dat")
     data2 = data1._clone()
     self.comparedata(data1, data2)
 def test_create_feature_data(self):
     dataobj = api.Data(ref="foo", value=132)
     self.assertTrue(dataobj.fqr,"foo")
     self.assertTrue(dataobj.get_value(),123)
     self.assertTrue(dataobj.value,123)
コード例 #23
0
    def test_add_data_to_configuration_from_list(self):
        def check(data_objs, policy, expected):
            conf = api.Configuration("foo/foo.confml")
            conf.add_data(api.Data(ref='base1', value="foo"))
            conf.add_data(api.Data(ref='foo', value="foobar"))
            conf.add_data(api.Data(ref='base2', value="bar"))

            if policy is None:
                conf.add_data(data_objs)
            else:
                conf.add_data(data_objs, policy=policy)

            actual = []
            for d in conf._traverse(type=api.Data):
                actual.append((d.fqr, d.value))
            self.assertEquals(actual, expected)

        # Adding an empty list should do nothing
        check(data_objs=[],
              policy=None,
              expected=[('base1', 'foo'), ('foo', 'foobar'), ('base2', 'bar')])

        # Default policy (replace)
        check(data_objs=[
            api.Data(ref="foo", value="1"),
            api.Data(ref="foo", value="2"),
            api.Data(ref="foo", value="3"),
        ],
              policy=None,
              expected=[('base1', 'foo'), ('foo', '1'), ('foo', '2'),
                        ('foo', '3'), ('base2', 'bar')])

        # Replace explicitly
        check(data_objs=[
            api.Data(ref="foo", value="1"),
            api.Data(ref="foo", value="2"),
            api.Data(ref="foo", value="3"),
        ],
              policy=api.container.REPLACE,
              expected=[('base1', 'foo'), ('foo', '1'), ('foo', '2'),
                        ('foo', '3'), ('base2', 'bar')])

        # Append
        check(data_objs=[
            api.Data(ref="foo", value="1"),
            api.Data(ref="foo", value="2"),
            api.Data(ref="foo", value="3"),
        ],
              policy=api.container.APPEND,
              expected=[('base1', 'foo'), ('foo', 'foobar'), ('foo', '1'),
                        ('foo', '2'), ('foo', '3'), ('base2', 'bar')])

        # Prepend
        check(data_objs=[
            api.Data(ref="foo", value="1"),
            api.Data(ref="foo", value="2"),
            api.Data(ref="foo", value="3"),
        ],
              policy=api.container.PREPEND,
              expected=[('base1', 'foo'), ('foo', '1'), ('foo', '2'),
                        ('foo', '3'), ('foo', 'foobar'), ('base2', 'bar')])