configurationengine/source/cone/confml/tests/unittest_model.py
author m2lahtel
Thu, 21 Oct 2010 16:36:53 +0300
changeset 5 d2c80f5cab53
parent 3 e7e0ae78773e
permissions -rw-r--r--
Updated to version 1.2.14
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     1
#
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     2
# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     3
# All rights reserved.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     4
# This component and the accompanying materials are made available
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     5
# under the terms of "Eclipse Public License v1.0"
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     6
# which accompanies this distribution, and is available
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     7
# at the URL "http://www.eclipse.org/legal/epl-v10.html".
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     8
#
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     9
# Initial Contributors:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    10
# Nokia Corporation - initial contribution.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    11
#
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    12
# Contributors:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    13
#
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    14
# Description: 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    15
#
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    16
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    17
import unittest
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    18
import sys
5
d2c80f5cab53 Updated to version 1.2.14
m2lahtel
parents: 3
diff changeset
    19
from cone.public import api, exceptions, container
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    20
from cone.confml import model
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    21
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    22
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    23
class TestConfmlMeta(unittest.TestCase):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    24
    def test_create_meta(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    25
        metaelem = model.ConfmlMeta()
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    26
        self.assertEquals(str(metaelem),"ConfmlMeta object\n")
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    27
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    28
    def test_create_with_data(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    29
        prop1 = model.ConfmlMetaProperty("foo", 123)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    30
        prop2 = model.ConfmlMetaProperty("bar", 312)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    31
        prop3 = model.ConfmlMetaProperty("test", 'testing string')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    32
        prop4 = model.ConfmlMetaProperty("testName", 'testing string2', \
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    33
                                         "http://www.nokia.com/xml/cpf-id/1", \
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    34
                                         attrs={"name":"name1", "value": "value1"})            
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    35
        metaelem = model.ConfmlMeta([prop1, prop2, prop3, prop4])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    36
        self.assertEquals(metaelem[0].tag, "foo")
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    37
        self.assertEquals(metaelem[0].attrs, {})
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    38
        self.assertEquals(metaelem[0].value, 123)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    39
        self.assertEquals(metaelem[1].tag, "bar")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    40
        self.assertEquals(metaelem[1].value, 312)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    41
        self.assertEquals(metaelem[2].tag, "test")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    42
        self.assertEquals(metaelem[2].value, "testing string")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    43
        self.assertEquals(metaelem[3].tag, "testName")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    44
        self.assertEquals(metaelem[3].value, "testing string2")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    45
        self.assertEquals(metaelem[3].ns, "http://www.nokia.com/xml/cpf-id/1")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    46
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    47
    def test_add_data(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    48
        metaelem = model.ConfmlMeta()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    49
        metaelem.append(model.ConfmlMetaProperty('test', 123, "abc", attrs = {"foo":"bar", "abc":1}))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    50
        self.assertEquals(metaelem[0].tag, 'test')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    51
        self.assertEquals(metaelem[0].value, 123)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    52
        self.assertEquals(metaelem[0].ns, "abc")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    53
        self.assertEquals(metaelem[0].attrs, {"foo":"bar", "abc":1})
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    54
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    55
    def test_update_data(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    56
        metaelem = model.ConfmlMeta()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    57
        metaelem.append(model.ConfmlMetaProperty('test', 123, "abc", attrs = {"foo":"bar", "abc":1}))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    58
        metaelem.set_property_by_tag('foo', 3)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    59
        metaelem.set_property_by_tag('bar', None, 'http://me.com', {'name':'me', 'value':1})
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    60
        self.assertEquals(metaelem[0].tag, 'test')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    61
        self.assertEquals(metaelem[0].value, 123)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    62
        self.assertEquals(metaelem[0].ns, "abc")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    63
        self.assertEquals(metaelem[0].attrs, {"foo":"bar", "abc":1})
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    64
        self.assertEquals(metaelem[1].tag, 'foo')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    65
        self.assertEquals(metaelem[1].value, 3)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    66
        self.assertEquals(metaelem[2].tag, "bar")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    67
        self.assertEquals(metaelem[2].attrs, {'name':'me', 'value':1})
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    68
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    69
        metaelem1 = model.ConfmlMeta()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    70
        metaelem.set_property_by_tag('foo', 2)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    71
        metaelem.set_property_by_tag('bar', None, 'http://me.com', {'name':'me', 'value':2})
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    72
        metaelem.update(metaelem1)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    73
        self.assertEquals(len(metaelem), 3)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    74
        self.assertEquals(metaelem[0].tag, 'test')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    75
        self.assertEquals(metaelem[0].value, 123)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    76
        self.assertEquals(metaelem[0].ns, "abc")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    77
        self.assertEquals(metaelem[0].attrs, {"foo":"bar", "abc":1})
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    78
        self.assertEquals(metaelem[1].tag, 'foo')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    79
        self.assertEquals(metaelem[1].value, 2)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    80
        self.assertEquals(metaelem[2].tag, "bar")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    81
        self.assertEquals(metaelem[2].attrs, {'name':'me', 'value':2})
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    82
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    83
        
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    84
    def test_find_data(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    85
        metaelem = model.ConfmlMeta()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    86
        metaelem.append(model.ConfmlMetaProperty('test', 123, "abc",\
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    87
                                                  attrs = {"foo":"bar", "abc":1}))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    88
        metaelem.append(model.ConfmlMetaProperty('abc', "efg", None,\
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    89
                                                  attrs = {"foo2":"bar2", "abc2":2}))
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    90
        metaelem.append(model.ConfmlMetaProperty('test', None, "demons",\
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    91
                                                  attrs = {"name":"bar1", "value":"foo1"}))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    92
        metaelem.append(model.ConfmlMetaProperty('test', None, "demons",\
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    93
                                                  attrs = {"name":"bar2", "value":"foo2"}))
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    94
        self.assertEquals(metaelem.find_by_tag("test"), 0)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    95
        self.assertEquals(metaelem.get_property_by_tag("test").tag, 'test')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    96
        self.assertEquals(metaelem.get_property_by_tag("test").value, 123)
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    97
        self.assertEquals(metaelem.get_property_by_tag("test", {'name' : 'bar1'}).tag, 'test')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    98
        self.assertEquals(metaelem.get_property_by_tag("test", {'name' : 'bar1'}).attrs['value'], 'foo1')
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    99
        self.assertEquals(metaelem.get("test"), 123)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   100
        self.assertEquals(metaelem.get("test", 'ddd'), 123)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   101
        # test get_value with not found elem
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   102
        self.assertEquals(metaelem.get("notthere"), None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   103
        self.assertEquals(metaelem.get("notthere", 'fooman'), 'fooman')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   104
        self.assertEquals(metaelem.find_by_attribute("foo2", "bar2"), 1)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   105
        self.assertEquals(metaelem.find_by_attribute("qwerty", ""), -1)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   106
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   107
    def test_clone_meta(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   108
        prop1 = model.ConfmlMetaProperty("foo", 123)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   109
        prop2 = model.ConfmlMetaProperty("bar", 312)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   110
        prop3 = model.ConfmlMetaProperty("test", 'testing string')        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   111
        metaelem1 = model.ConfmlMeta([prop1, prop2, prop3])        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   112
        metaelem2 = metaelem1.clone()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   113
        self.assertEquals(metaelem1, metaelem2)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   114
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   115
    def test_meta_set_property_by_tag(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   116
        meta = model.ConfmlMeta()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   117
        meta.set_property_by_tag('test', 'fooval')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   118
        self.assertEquals(meta.get('test'), 'fooval')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   119
        self.assertEquals(meta.get_property_by_tag('test').attrs, {})
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   120
        meta.set_property_by_tag('test', 'newval')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   121
        self.assertEquals(meta.get_property_by_tag('test').attrs, {})
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   122
        self.assertEquals(meta.get('test'), 'newval')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   123
        meta.add('test', 'twoval')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   124
        self.assertEquals(meta.get_property_by_tag('test').attrs, {})
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   125
        self.assertEquals(meta.get('test'), 'newval')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   126
        meta.set_property_by_tag('test', 'trheval')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   127
        self.assertEquals(meta.get('test'), 'trheval')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   128
        
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   129
class TestConfmlDescription(unittest.TestCase):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   130
    def test_create_desc(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   131
        descelem1 = model.ConfmlDescription("testing")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   132
        descelem2 = model.ConfmlDescription()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   133
        descelem3 = model.ConfmlDescription()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   134
        descelem3.text = "changed"
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   135
        self.assertEquals(descelem1.text, "testing")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   136
        self.assertEquals(descelem2.text, "")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   137
        self.assertEquals(descelem3.text, "changed")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   138
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   139
    def test_clone_desc(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   140
        descelem1 = model.ConfmlDescription("testing")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   141
        descelem2 = descelem1._clone()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   142
        self.assertEquals(descelem1.text, descelem2.text)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   143
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   144
class TestConfmlGroup(unittest.TestCase):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   145
    def test_create_group(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   146
        group1 = model.ConfmlGroup("foo")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   147
        self.assertEquals(group1.ref, "foo")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   148
        self.assertEquals(group1.icon, None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   149
        self.assertEquals(group1.desc, None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   150
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   151
    def test_group_access_icon(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   152
        group1 = model.ConfmlGroup("foo", icon='first/icon.bmp')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   153
        self.assertEquals(group1.icon, "first/icon.bmp")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   154
        group1.icon = 'foo/bar.jpg'
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   155
        self.assertEquals(group1.icon, "foo/bar.jpg")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   156
        del group1.icon
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   157
        self.assertEquals(group1.icon, None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   158
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   159
    def test_group_access_description(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   160
        group1 = model.ConfmlGroup("foo", desc='Testing description. for this something!')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   161
        self.assertEquals(group1.desc, "Testing description. for this something!")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   162
        group1.desc = 'Something else'
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   163
        self.assertEquals(group1.desc, "Something else")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   164
        del group1.desc
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   165
        self.assertEquals(group1.icon, None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   166
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   167
    def test_clone_group(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   168
        group1 = model.ConfmlGroup("foo")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   169
        group2 = group1._clone()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   170
        self.assertEquals(group1.ref, group2.ref)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   171
        self.assertEquals(group1.desc, group2.desc)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   172
        self.assertEquals(group1.icon, group2.icon)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   173
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   174
        group1 = model.ConfmlGroup("foo", desc='testing desc', icon='link.bmp')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   175
        group2 = group1._clone(recursion=True)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   176
        self.assertEquals(group1.ref, group2.ref)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   177
        self.assertEquals(group1.desc, group2.desc)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   178
        self.assertEquals(group1.icon, group2.icon)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   179
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   180
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   181
class TestConfmlSetting(unittest.TestCase):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   182
    def test_create_setting(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   183
        elem = model.ConfmlSetting('test')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   184
        self.assertTrue(elem)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   185
        self.assertEquals(elem.desc, None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   186
        self.assertEquals(elem.readOnly, None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   187
        self.assertEquals(elem.constraint, None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   188
        self.assertEquals(elem.required, None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   189
        self.assertEquals(elem.relevant, None)
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   190
        self.assertEquals(elem.id, None)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   191
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   192
    def test_setting_id(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   193
        elem = model.ConfmlSetting('foo', id="test id")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   194
        self.assertEquals(elem.id,'test id')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   195
        elem.id = "new id"
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   196
        self.assertEquals(elem.id,'new id')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   197
        del elem.id
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   198
        self.assertEquals(elem.id,None)
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   199
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   200
    def test_getters(self):
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   201
        elem = model.ConfmlSetting('foo', name="foo")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   202
        self.assertEquals(elem.get_ref(),'foo')
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   203
        self.assertEquals(elem.get_type(),None)
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   204
        self.assertEquals(elem.get_name(),'foo')
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   205
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   206
    def test_set_type(self):
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   207
        elem = model.ConfmlSetting('foo', name="bar")
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   208
        elem.type = 'string'
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   209
        self.assertEquals(elem.ref,'foo')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   210
        self.assertEquals(elem.type,'string')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   211
        self.assertEquals(elem.name, "bar")
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   212
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   213
    def test_setting_with_options(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   214
        elem = model.ConfmlSetting('foo',type='selection')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   215
        elem.create_option('foo','1')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   216
        elem.create_option('bar','bar')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   217
        elem.create_option('hou','sut')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   218
        self.assertTrue('1' in elem.get_valueset()) 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   219
        self.assertEquals(elem.options['1'].name, 'foo')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   220
        self.assertEquals(elem.options['1'].value, '1')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   221
        self.assertEquals(elem.options['bar'].name, 'bar')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   222
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   223
    def test_create_options(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   224
        elem = model.ConfmlSetting('foo',type='property', name='foo')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   225
        self.assertEquals(elem.name, 'foo')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   226
        self.assertEquals(elem.type, 'property')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   227
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   228
    def test_setting_create_with_nonetype(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   229
        elem = model.ConfmlSetting('foo',type=None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   230
        self.assertEqual(elem.type,None) 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   231
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   232
    def test_setting_with_properties(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   233
        elem = model.ConfmlSetting('foo')
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   234
        elem.create_property(name='foo',value='bar/foo')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   235
        elem.create_property(name='bar',value='only/bar')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   236
        elem.create_property(name='testing',value='1', unit='mB')
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   237
        self.assertEquals(elem.list_properties(), ['foo','bar','testing'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   238
        self.assertEquals(elem.get_property('foo').value, 'bar/foo')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   239
        elem.remove_property('foo')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   240
        try:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   241
            elem.remove_property('bss')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   242
            self.fail('removing invalid succeeds')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   243
        except exceptions.NotFound:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   244
            pass
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   245
        self.assertEquals(elem.list_properties(), ['bar','testing'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   246
        for property_name in elem.list_properties():
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   247
            elem.remove_property(property_name)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   248
        self.assertEquals(elem.list_properties(), [])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   249
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   250
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   251
    def test_setting_with_properties_property(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   252
        elem = model.ConfmlSetting('foo')
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   253
        elem.create_property(name='foo',value='bar/foo')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   254
        elem.create_property(name='bar',value='only/bar')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   255
        elem.create_property(name='testing',value='1', unit='mB')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   256
        self.assertEquals(elem.property_foo.value,'bar/foo')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   257
        self.assertEquals(elem.property_bar.value,'only/bar')
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   258
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   259
    def test_setting_with_readOnly_value(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   260
        elem = model.ConfmlSetting('foo', readOnly=True)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   261
        self.assertEquals(elem.readOnly,True)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   262
        elem.readOnly = False
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   263
        self.assertEquals(elem.readOnly,False)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   264
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   265
    def test_setting_with_constaint(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   266
        elem = model.ConfmlSetting('foo', constraint=". > '1'")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   267
        self.assertEquals(elem.constraint,". > '1'")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   268
        elem.constraint = 'foobar'
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   269
        self.assertEquals(elem.constraint,"foobar")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   270
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   271
    def test_setting_with_required_value(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   272
        elem = model.ConfmlSetting('foo', required=False)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   273
        self.assertEquals(elem.required,False)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   274
        elem = model.ConfmlSetting('foo', required=True)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   275
        self.assertEquals(elem.required,True)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   276
        elem.required = False
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   277
        self.assertEquals(elem.required,False)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   278
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   279
    def test_setting_with_relevant_value(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   280
        elem = model.ConfmlSetting('foo', relevant='ffoo oss')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   281
        self.assertEquals(elem.relevant,'ffoo oss')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   282
        elem.relevant = ''
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   283
        self.assertEquals(elem.relevant,'')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   284
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   285
    def test_setting_with_max_length(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   286
        elem = model.ConfmlSetting('foo', maxLength=10)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   287
        self.assertEquals(elem.maxLength,10)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   288
        elem.maxLength = 20
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   289
        self.assertEquals(elem.maxLength,20)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   290
        self.assertTrue(elem._has(model.ConfmlMaxLength.refname))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   291
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   292
    def test_setting_with_min_length(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   293
        elem = model.ConfmlSetting('foo', minLength=10)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   294
        self.assertEquals(elem.minLength,10)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   295
        elem.minLength = 20
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   296
        self.assertEquals(elem.minLength,20)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   297
        self.assertTrue(elem._has(model.ConfmlMinLength.refname))
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   298
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   299
    def test_setting_with_length(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   300
        elem = model.ConfmlSetting('foo', length=10)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   301
        self.assertEquals(elem.length,10)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   302
        elem.length = 20
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   303
        self.assertEquals(elem.length,20)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   304
        self.assertTrue(elem._has(model.ConfmlLength.refname))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   305
        self.assertEquals(elem._get(model.ConfmlLength.refname).value, 20)
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   306
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   307
    def test_setting_rfs_casting(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   308
        elem = model.ConfmlSetting('foo', minLength=10)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   309
        self.assertEquals(elem.get_rfs_cast('true'),True)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   310
        self.assertEquals(elem.get_rfs_cast('false'),False)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   311
        self.assertEquals(elem.set_rfs_cast(True),'true')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   312
        self.assertEquals(elem.set_rfs_cast(False),'false')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   313
        self.assertEquals(elem.set_rfs_cast(1),'true')
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   314
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   315
    def test_get_rfs_with_no_value(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   316
        conf = api.Configuration("test.confml")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   317
        conf.add_feature(model.ConfmlSetting("foo"))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   318
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   319
        # Test that initially the RFS value is None
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   320
        fea = conf.get_default_view().get_feature('foo')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   321
        self.assertEquals(fea.get_value(attr='rfs'), None)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   322
        self.assertEquals(fea.get_original_value(attr='rfs'), None)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   323
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   324
    def test_get_rfs_true(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   325
        conf = api.Configuration("test.confml")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   326
        conf.add_feature(model.ConfmlSetting("foo"))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   327
        conf.add_data(api.Data(ref='foo', attr='rfs', value='true'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   328
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   329
        fea = conf.get_default_view().get_feature('foo')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   330
        self.assertEquals(fea.get_value(attr='rfs'), True)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   331
        self.assertEquals(fea.get_original_value(attr='rfs'), 'true')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   332
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   333
    def test_get_rfs_false(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   334
        conf = api.Configuration("test.confml")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   335
        conf.add_feature(model.ConfmlSetting("foo"))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   336
        conf.add_data(api.Data(ref='foo', attr='rfs', value='false'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   337
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   338
        fea = conf.get_default_view().get_feature('foo')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   339
        self.assertEquals(fea.get_value(attr='rfs'), False)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   340
        self.assertEquals(fea.get_original_value(attr='rfs'), 'false')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   341
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   342
    def test_set_rfs(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   343
        conf = api.Configuration("test.confml")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   344
        conf.add_feature(model.ConfmlSetting("foo"))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   345
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   346
        def check_data_elements(expected):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   347
            actual = []
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   348
            for d in conf._traverse(type=api.Data):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   349
                actual.append((d.fqr, d.attr, d.value))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   350
            self.assertEquals(actual, expected)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   351
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   352
        fea = conf.get_default_view().get_feature('foo')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   353
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   354
        fea.set_value(True, attr='rfs')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   355
        self.assertEquals(fea.get_value(attr='rfs'), True)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   356
        self.assertEquals(fea.get_original_value(attr='rfs'), 'true')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   357
        check_data_elements([('foo', 'rfs', 'true')])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   358
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   359
        fea.set_value(False, attr='rfs')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   360
        self.assertEquals(fea.get_value(attr='rfs'), False)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   361
        self.assertEquals(fea.get_original_value(attr='rfs'), 'false')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   362
        check_data_elements([('foo', 'rfs', 'false')])
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   363
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   364
class TestConfmlSelectionSetting(unittest.TestCase):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   365
    def test_create_selection_setting(self):
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   366
        elem = model.ConfmlSelectionSetting('foo', desc="Test desc", name="Foo fea")
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   367
        self.assertTrue(elem)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   368
        self.assertEquals(elem.type, 'selection')
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   369
        self.assertEquals(elem.name, 'Foo fea')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   370
        self.assertEquals(elem.desc, "Test desc")
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   371
        self.assertEquals(elem.readOnly, None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   372
        self.assertEquals(elem.constraint, None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   373
        self.assertEquals(elem.required, None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   374
        self.assertEquals(elem.relevant, None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   375
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   376
    def test_selection_valueset(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   377
        elem = model.ConfmlSelectionSetting('foo')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   378
        self.assertEquals(elem.type, 'selection')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   379
        elem.create_option('foo', '1')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   380
        elem.create_option('bar', '2')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   381
        elem.create_option('baz', '3')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   382
        self.assertEquals(elem.get_valueset(), api.ValueSet(['1', '2', '3']))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   383
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   384
class TestConfmlMultiSelectionSetting(unittest.TestCase):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   385
    def test_create_multiselection_setting(self):
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   386
        elem = model.ConfmlMultiSelectionSetting('mset1', name="Setting 1", desc="de")
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   387
        self.assertTrue(elem)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   388
        self.assertEquals(elem.type, 'multiSelection')
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   389
        self.assertEquals(elem.name, "Setting 1")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   390
        self.assertEquals(elem.desc, "de")
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   391
        self.assertEquals(elem.readOnly, None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   392
        self.assertEquals(elem.constraint, None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   393
        self.assertEquals(elem.required, None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   394
        self.assertEquals(elem.relevant, None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   395
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   396
    def test_multiselection_valueset(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   397
        elem = model.ConfmlMultiSelectionSetting('foo')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   398
        self.assertEquals(elem.type, 'multiSelection')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   399
        elem.create_option('foo', '1')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   400
        elem.create_option('bar', '2')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   401
        elem.create_option('baz', '3')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   402
        self.assertEquals(elem.get_valueset(), api.ValueSet(['1', '2', '3']))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   403
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   404
    def test_setting_value_to_multiselection(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   405
        conf = model.ConfmlConfiguration('test.confml')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   406
        elem = model.ConfmlMultiSelectionSetting('mset2', type='multiSelection')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   407
        conf.add_feature(elem)
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   408
        elem.value = ["sel1", "sel2"]
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   409
        self.assertEquals(elem.type, 'multiSelection')
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   410
        self.assertEquals(elem.get_value(), ("sel1", "sel2"))
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   411
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   412
    def test_setting_value_to_multiselection2(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   413
        conf = model.ConfmlConfiguration('test.confml')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   414
        elem = model.ConfmlMultiSelectionSetting('mset3', type='multiSelection')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   415
        conf.add_feature(elem)
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   416
        elem.value = ["sel1", "sel2 with some spaces"]
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   417
        self.assertEquals(elem.type, 'multiSelection')
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   418
        self.assertEquals(elem.get_value(), ("sel1", "sel2 with some spaces"))
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   419
        elem.value = ["sel1", "sel2 with some spaces"]
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   420
        self.assertEquals(elem.get_value(), ("sel1", "sel2 with some spaces"))
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   421
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   422
    def test_setting_not_list_value_to_multiselection(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   423
        conf = model.ConfmlConfiguration('test.confml')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   424
        elem = model.ConfmlMultiSelectionSetting('mset4', type='multiSelection')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   425
        conf.add_feature(elem)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   426
        self.assertRaises(ValueError, elem.set_value, "not list")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   427
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   428
    def test_setting_list_value_to_multiselection(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   429
        conf = model.ConfmlConfiguration('test.confml')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   430
        elem = model.ConfmlMultiSelectionSetting('mset5', type='multiSelection')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   431
        conf.add_feature(elem)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   432
        elem.set_value(["li1", "li2"])
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   433
        self.assertEquals(elem.get_value(), ("li1", "li2"))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   434
        self.assertEquals(elem.get_datas()[0].get_value(), 'li1')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   435
        self.assertEquals(elem.get_datas()[1].get_value(), 'li2')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   436
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   437
    def test_get_value_from_old_style_data(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   438
        def check(data_value, expected):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   439
            config = api.Configuration('foo.confml')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   440
            fea = model.ConfmlMultiSelectionSetting('multisel', type='multiSelection')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   441
            config.add_feature(fea)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   442
            config.add_data(api.Data(ref='multisel', value=data_value))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   443
            
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   444
            dview = config.get_default_view()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   445
            foofea = dview.get_feature('multisel')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   446
            self.assertEquals(foofea.value, expected)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   447
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   448
        check('x', ('x',))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   449
        check('"x"', ('x',))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   450
        check('"x" "y"', ('x', 'y'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   451
        check('"x" "y" "" "z"', ('x', 'y', '', 'z'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   452
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   453
    def test_get_value_with_new_style_data(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   454
        def check(data_object_values, expected_value, empty_option=False):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   455
            config = api.Configuration('foo.confml')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   456
            fea = model.ConfmlMultiSelectionSetting('multisel', type='multiSelection')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   457
            if empty_option:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   458
                fea.add_option(api.Option('Empty option', ''))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   459
            config.add_feature(fea)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   460
            for dv in data_object_values:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   461
                config.add_data(api.Data(ref='multisel', value=dv), policy=api.container.APPEND)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   462
            
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   463
            dview = config.get_default_view()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   464
            foofea = dview.get_feature('multisel')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   465
            self.assertEquals(foofea.value, expected_value)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   466
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   467
        check([], ())
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   468
        check(['x'], ('x',))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   469
        check(['x', 'y'], ('x', 'y'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   470
        check(['y', 'x', 'y',], ('y', 'x'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   471
        check(['"foo"', '"bar"'], ('"foo"', '"bar"'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   472
        check(['foo bar'], ('foo bar',))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   473
        check(['foo bar', 'foo baz'], ('foo bar', 'foo baz'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   474
        check(['foo "bar"'], ('foo "bar"',))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   475
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   476
        # Element with no data is interpreted as meaning the option ''
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   477
        # if it is allowed, otherwise it is ignored
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   478
        check([None], (), empty_option=False)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   479
        check([None], ('',), empty_option=True)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   480
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   481
    def test_get_value_from_data_with_empty_attribute(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   482
        config = api.Configuration('foo.confml')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   483
        fea = model.ConfmlMultiSelectionSetting('multisel', type='multiSelection')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   484
        config.add_feature(fea)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   485
        config.add_data(api.Data(ref='multisel', empty=True))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   486
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   487
        dview = config.get_default_view()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   488
        foofea = dview.get_feature('multisel')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   489
        self.assertEquals(foofea.value, ())
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   490
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   491
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   492
    def test_set_value(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   493
        def check(value, expected_data_object_values):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   494
            config = api.Configuration('foo.confml')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   495
            fea = model.ConfmlMultiSelectionSetting('multisel', type='multiSelection')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   496
            config.add_feature(fea)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   497
            
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   498
            dview = config.get_default_view()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   499
            foofea = dview.get_feature('multisel')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   500
            self.assertEquals(foofea.value, ())
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   501
            
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   502
            foofea.value = value
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   503
            # Check that the value is visible directly after setting
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   504
            # (the 'or' is because setting to None actually set the value
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   505
            # to an empty tuple)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   506
            self.assertEquals(foofea.value, value or ())
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   507
            
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   508
            # Check that the data elements have been set as expected
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   509
            actual = []
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   510
            for d in config._traverse(type=api.Data):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   511
                actual.append((d.fqr, d.value, d.empty))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   512
            expected = []
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   513
            for val, empty in expected_data_object_values:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   514
                expected.append(('multisel', val, empty))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   515
            self.assertEquals(actual, expected)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   516
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   517
        # Setting empty should create a single data object with empty=True
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   518
        check((), [(None, True)])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   519
        check([], [(None, True)])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   520
        check(None, [(None, True)])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   521
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   522
        check(('x',), [('x', False)])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   523
        check(('x', 'y'), [('x', False), ('y', False)])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   524
        check(('"foo"', '"bar"'), [('"foo"', False), ('"bar"', False)])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   525
        check(('foo bar',), [('foo bar', False)])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   526
        check(('foo bar', 'foo baz'), [('foo bar', False), ('foo baz', False)])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   527
        check(('foo "bar"',), [('foo "bar"', False)])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   528
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   529
    def test_old_style_data_pattern(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   530
        def check(value, expected):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   531
            m = model.ConfmlMultiSelectionSetting.OLD_STYLE_DATA_PATTERN.match(value)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   532
            self.assertEquals(m is not None, expected)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   533
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   534
        check('', False)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   535
        check('""', True)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   536
        check('foo', False)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   537
        check('foo bar', False)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   538
        check('"foo bar"', True)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   539
        check('"foo bar " " foo baz" "  yeah  " ""', True)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   540
        check('"foo"', True)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   541
        check('"foo" "bar"', True)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   542
        check('"foo" "bar" "baz"', True)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   543
        check('"a" "b" "c" "d" "e" "f" "g" "h"', True)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   544
        check('a b c d e f g h', False)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   545
        check('"a b c d e f g h"', True)
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   546
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   547
class TestConfmlIntSetting(unittest.TestCase):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   548
    def test_create_setting(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   549
        elem = model.ConfmlIntSetting('test')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   550
        self.assertTrue(elem)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   551
        self.assertEquals(elem.type, 'int')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   552
        self.assertEquals(elem.desc, None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   553
        self.assertEquals(elem.readOnly, None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   554
        self.assertEquals(elem.constraint, None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   555
        self.assertEquals(elem.required, None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   556
        self.assertEquals(elem.relevant, None)
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   557
        self.assertEquals(elem.get_valueset().fromvalue, 0)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   558
        self.assertEquals(elem.get_valueset().tovalue, sys.maxint)
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   559
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   560
    def test_setting_value_to_int(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   561
        conf = model.ConfmlConfiguration('test.confml')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   562
        elem = model.ConfmlIntSetting('foo', type='int')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   563
        conf.add_feature(elem)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   564
        elem.value = 1
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   565
        self.assertEquals(elem.value,1)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   566
        self.assertEquals(elem.get_original_value(),'1')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   567
        self.assertEquals(elem.get_data().get_value(),'1')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   568
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   569
    def test_setting_value_with_incompatible_values(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   570
        conf = model.ConfmlConfiguration('test.confml')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   571
        elem = model.ConfmlIntSetting('foo')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   572
        conf.add_feature(elem)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   573
        try:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   574
            elem.value = 'hh'
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   575
            self.fail('setting string to int succeeds')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   576
        except ValueError:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   577
            pass
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   578
        elem.value = '1234'
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   579
        self.assertEquals(elem.value, 1234)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   580
        elem.value = 0xA
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   581
        self.assertEquals(elem.value, 10)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   582
        del elem.value
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   583
        self.assertEquals(elem.value, None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   584
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   585
    def test_setting_value_to_int_with_aritmethic_operations(self):
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   586
        conf = model.ConfmlConfiguration('test.confml')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   587
        elem1 = model.ConfmlIntSetting('foo')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   588
        elem2 = model.ConfmlIntSetting('bar')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   589
        conf.add_feature(elem1)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   590
        conf.add_feature(elem2)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   591
        elem1.value = 1
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   592
        elem2.value = 2
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   593
        test = elem1.value + elem2.value
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   594
        self.assertEquals(test,3)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   595
        elem1.value = elem1.value + elem2.value + 5
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   596
        self.assertEquals(elem1.value,8)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   597
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   598
class TestConfmlHexBinarySetting(unittest.TestCase):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   599
    def test_hexbinary_default_value_set(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   600
        setting = model.ConfmlHexBinarySetting('test')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   601
        vset = setting.get_valueset()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   602
        self.assertTrue('' in vset)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   603
        self.assertTrue('0123456789ABCDEF' in vset)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   604
        self.assertTrue('00112233445566778899AABBCCDDEEFF' in vset)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   605
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   606
        self.assertFalse('foobar' in vset)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   607
        self.assertFalse('1' in vset)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   608
        self.assertFalse('F' in vset)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   609
        self.assertFalse('1G' in vset)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   610
        self.assertFalse('0123456789abcdef' in vset)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   611
        self.assertFalse('00112233445566778899aabbccddeeff' in vset)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   612
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   613
        self.assertTrue('foobar' not in vset)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   614
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   615
    def test_hexbinary_get_value_none(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   616
        conf = model.ConfmlConfiguration('test.confml')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   617
        setting = model.ConfmlHexBinarySetting('foo')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   618
        conf.add_feature(setting)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   619
        self.assertEquals(setting.value, None)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   620
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   621
    def test_hexbinary_get_value_empty(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   622
        conf = model.ConfmlConfiguration('test.confml')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   623
        setting = model.ConfmlHexBinarySetting('foo')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   624
        conf.add_feature(setting)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   625
        conf.add_data(api.Data(ref='foo', value=None))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   626
        self.assertEquals(setting.value, '')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   627
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   628
    def test_hexbinary_get_value(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   629
        conf = model.ConfmlConfiguration('test.confml')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   630
        setting = model.ConfmlHexBinarySetting('foo')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   631
        conf.add_feature(setting)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   632
        conf.add_data(api.Data(ref='foo', value='0123456789ABCDEF'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   633
        self.assertEquals(setting.value, '\x01\x23\x45\x67\x89\xab\xcd\xef')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   634
        self.assertEquals(setting.get_original_value(), '0123456789ABCDEF')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   635
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   636
    def test_hexbinary_set_value(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   637
        conf = model.ConfmlConfiguration('test.confml')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   638
        setting = model.ConfmlHexBinarySetting('foo')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   639
        conf.add_feature(setting)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   640
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   641
        setting.value = '\x01\xab'
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   642
        self.assertEquals(setting.value, '\x01\xab')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   643
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   644
        data_list = conf.get_all_datas()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   645
        self.assertEquals(len(data_list), 1)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   646
        d = data_list[0]
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   647
        self.assertEquals(d.attr, 'data')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   648
        self.assertEquals(d.fqr, 'foo')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   649
        self.assertEquals(d.value, '01AB')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   650
        self.assertEquals(d.empty, False)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   651
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   652
    def test_hexbinary_get_data_cast(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   653
        setting = model.ConfmlHexBinarySetting('foo')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   654
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   655
        self.assertEquals(setting.get_data_cast(''), '')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   656
        self.assertEquals(setting.get_data_cast(None), '')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   657
        self.assertEquals(setting.get_data_cast('0123456789ABCDEF'), '\x01\x23\x45\x67\x89\xab\xcd\xef')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   658
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   659
        self.assertRaises(ValueError, setting.get_data_cast, 'X')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   660
        self.assertRaises(ValueError, setting.get_data_cast, '1')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   661
        self.assertRaises(ValueError, setting.get_data_cast, 'XX')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   662
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   663
    def test_hexbinary_set_data_cast(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   664
        setting = model.ConfmlHexBinarySetting('foo')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   665
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   666
        self.assertEquals(setting.set_data_cast(''), '')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   667
        self.assertEquals(setting.set_data_cast('\x01'), '01')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   668
        self.assertEquals(setting.set_data_cast('x'), '78')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   669
        self.assertEquals(setting.set_data_cast('\x01\x23\x45\x67\x89\xab\xcd\xef'), '0123456789ABCDEF')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   670
        
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   671
class TestConfmlBooleanSetting(unittest.TestCase):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   672
    def test_create_setting(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   673
        elem = model.ConfmlBooleanSetting('test')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   674
        self.assertTrue(elem)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   675
        self.assertEquals(elem.type, 'boolean')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   676
        self.assertEquals(elem.desc, None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   677
        self.assertEquals(elem.readOnly, None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   678
        self.assertEquals(elem.constraint, None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   679
        self.assertEquals(elem.required, None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   680
        self.assertEquals(elem.relevant, None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   681
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   682
    def test_setting_value_to_int(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   683
        conf = model.ConfmlConfiguration('test.confml')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   684
        elem = model.ConfmlBooleanSetting('foo', type='int')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   685
        self.assertEquals(elem.type, 'boolean')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   686
        conf.add_feature(elem)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   687
        elem.value = 1
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   688
        # Set elem rfs value
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   689
        elem.set_value(True, 'rfs')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   690
        self.assertEquals(elem.get_value('rfs'),True)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   691
        self.assertEquals(elem.get_original_value('rfs'),'true')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   692
        self.assertEquals(elem.value,1)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   693
        self.assertEquals(elem.get_original_value(),'true')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   694
        self.assertEquals(elem.get_data().get_value(),'true')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   695
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   696
    def test_setting_value_with_incompatible_values(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   697
        conf = model.ConfmlConfiguration('test.confml')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   698
        elem = model.ConfmlBooleanSetting('foo')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   699
        conf.add_feature(elem)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   700
        elem.value = '1234'
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   701
        self.assertEquals(elem.value, True)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   702
        elem.value = 0xA
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   703
        self.assertEquals(elem.value, True)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   704
        elem.value = False
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   705
        self.assertEquals(elem.value, False)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   706
        elem.value = ''
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   707
        self.assertEquals(elem.value, False)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   708
        del elem.value
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   709
        self.assertEquals(elem.value, None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   710
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   711
    def test_setting_value_with_supported_values(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   712
        conf = model.ConfmlConfiguration('test.confml')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   713
        elem = model.ConfmlBooleanSetting('foo')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   714
        conf.add_feature(elem)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   715
        elem.value = '1'
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   716
        self.assertEquals(elem.value, True)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   717
        elem.value = 'true'
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   718
        self.assertEquals(elem.value, True)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   719
        elem.value = True
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   720
        self.assertEquals(elem.value, True)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   721
        elem.value = '0'
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   722
        self.assertEquals(elem.value, False)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   723
        elem.value = 'false'
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   724
        self.assertEquals(elem.value, False)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   725
        elem.value = False
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   726
        self.assertEquals(elem.value, False)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   727
        del elem.value
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   728
        self.assertEquals(elem.value, None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   729
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   730
class TestConfmlSequenceSetting(unittest.TestCase):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   731
    def test_create_setting(self):
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   732
        elem = model.ConfmlSequenceSetting('test', name="testing fea", desc="Test desc")
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   733
        self.assertTrue(elem)
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   734
        self.assertEquals(elem.name, "testing fea")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   735
        self.assertEquals(elem.desc, "Test desc")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   736
        subfea = elem.create_feature("subfea")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   737
        self.assertEquals(subfea.is_sequence(), True)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   738
        subfea.is_sequence = lambda : False
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   739
        self.assertEquals(subfea.is_sequence(), False)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   740
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   741
    def test_create_sequence_setting_with_mapping(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   742
        elem = model.ConfmlSequenceSetting('test', name="testing fea", desc="Test desc", mapKey="setting", mapValue="setval")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   743
        self.assertTrue(elem)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   744
        self.assertEquals(elem.name, "testing fea")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   745
        self.assertEquals(elem.desc, "Test desc")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   746
        self.assertEquals(elem.mapKey, "setting")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   747
        self.assertEquals(elem.mapValue, "setval")
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   748
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   749
    def test_setting_with_properties_property(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   750
        elem = model.ConfmlSequenceSetting('foo')
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   751
        elem.create_property(name='foo',value='bar/foo')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   752
        elem.create_property(name='bar',value='only/bar')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   753
        elem.create_property(name='testing',value='1', unit='mB')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   754
        self.assertEquals(elem.property_foo.value,'bar/foo')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   755
        self.assertEquals(elem.property_bar.value,'only/bar')
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   756
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   757
    def test_setting_with_min_occurs(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   758
        elem = model.ConfmlSequenceSetting('foo', minOccurs=1)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   759
        self.assertEquals(elem.minOccurs,1)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   760
        elem.minOccurs = 2
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   761
        self.assertEquals(elem.minOccurs,2)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   762
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   763
    def test_setting_with_max_occurs(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   764
        elem = model.ConfmlSequenceSetting('foo', maxOccurs=10)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   765
        self.assertEquals(elem.maxOccurs,10)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   766
        elem.maxOccurs = 20
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   767
        self.assertEquals(elem.maxOccurs,20)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   768
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   769
    def test_create_feature_seq_with_values(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   770
        import logging
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   771
        logger = logging.getLogger('cone')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   772
        logger.setLevel(logging.DEBUG)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   773
        ch = logging.StreamHandler()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   774
        ch.setLevel(logging.DEBUG)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   775
        logger.addHandler(ch)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   776
        
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   777
        config = api.Configuration('foo.confml')
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   778
        fea= model.ConfmlSequenceSetting("foo", displayName='TestDisplayName')
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   779
        fea.add_feature(model.ConfmlIntSetting('child1'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   780
        fea.add_feature(model.ConfmlBooleanSetting('child2'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   781
        fea.add_feature(model.ConfmlSetting('child3'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   782
        config.add_feature(fea)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   783
        dview = config.get_default_view()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   784
        foofea = dview.get_feature('foo')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   785
        # Test adding a data row with array
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   786
        foofea.set_value([[1,True,'foo'],
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   787
                         [2,False,'bar'],
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   788
                         [3,True,'sumthin']
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   789
                         ])
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   790
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   791
        self.assertEquals(foofea.displayName, 'TestDisplayName')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   792
        self.assertEquals(foofea.data[0][0].get_original_value(), '1')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   793
        self.assertEquals(foofea.data[0].get_original_value(), ['1', 'true', 'foo'])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   794
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   795
        self.assertEquals(foofea.value, [[1,True,'foo'],
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   796
                                        [2,False,'bar'],
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   797
                                        [3,True,'sumthin']
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   798
                                        ])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   799
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   800
        self.assertEquals(foofea.get_original_value(), [['1','true','foo'],
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   801
                                                        ['2','false','bar'],
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   802
                                                        ['3','true','sumthin']
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   803
                                                        ])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   804
        self.assertEquals(foofea.data[0].get_original_value(), ['1','true','foo'])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   805
        self.assertEquals(foofea.data[1].get_original_value(), ['2','false','bar'])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   806
        self.assertEquals(foofea.data[2].get_original_value(), ['3', 'true', 'sumthin'])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   807
        self.assertEquals(foofea.child1.get_original_value(), ['1', '2', '3'])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   808
        self.assertEquals(foofea.child2.get_original_value(), ['true', 'false', 'true'])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   809
        self.assertEquals(foofea.child3.get_original_value(), ['foo', 'bar', 'sumthin'])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   810
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   811
        foofea.value = [[1,True,'foo'],
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   812
                        [2,False,'bar']
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   813
                        ]
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   814
        
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   815
        self.assertEquals(foofea.data[0].value,[1,True,'foo'])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   816
        self.assertEquals(foofea.data[1].value,[2,False,'bar'])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   817
        self.assertEquals(foofea.data[1][1].value,False)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   818
        self.assertEquals(foofea.get_value(), [[1,True,'foo'],
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   819
                                               [2,False,'bar']
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   820
                                               ])
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   821
        self.assertEquals(foofea.child1.value,[1,2])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   822
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   823
    def test_sequence_with_mapped_data(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   824
        config = api.Configuration('foo.confml')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   825
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   826
        fea = model.ConfmlSequenceSetting("SourceSequence", mapKey='KeySubSetting', mapValue="ValueSubSetting")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   827
        fea.add_feature(model.ConfmlIntSetting("KeySubSetting"))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   828
        fea.add_feature(model.ConfmlStringSetting("ValueSubSetting"))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   829
        config.add_feature(fea)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   830
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   831
        fea = model.ConfmlSelectionSetting('TargetSetting')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   832
        config.add_feature(fea)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   833
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   834
        data = api.Data(ref='SourceSequence')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   835
        data.add(api.Data(ref='KeySubSetting', value='1'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   836
        data.add(api.Data(ref='ValueSubSetting', value='Value 1'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   837
        config.add_data(data)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   838
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   839
        data = api.Data(ref='TargetSetting', map="SourceSequence[@key='1']")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   840
        config.add_data(data)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   841
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   842
        fea = config.get_default_view().get_feature('TargetSetting')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   843
        self.assertEquals(fea.get_value(), 'Value 1')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   844
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   845
    def test_sequence_with_mapped_data_in_sequence(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   846
        config = api.Configuration('foo.confml')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   847
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   848
        fea = model.ConfmlSequenceSetting("SourceSequence", mapKey='KeySubSetting', mapValue="ValueSubSetting")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   849
        fea.add_feature(model.ConfmlIntSetting("KeySubSetting"))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   850
        fea.add_feature(model.ConfmlStringSetting("ValueSubSetting"))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   851
        config.add_feature(fea)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   852
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   853
        fea = model.ConfmlSequenceSetting('TargetSequence')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   854
        fea.add_feature(model.ConfmlSelectionSetting("Setting"))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   855
        config.add_feature(fea)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   856
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   857
        data = api.Data(ref='SourceSequence')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   858
        data.add(api.Data(ref='KeySubSetting', value='1'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   859
        data.add(api.Data(ref='ValueSubSetting', value='Value 1'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   860
        config.add_data(data)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   861
       
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   862
        data = api.Data(ref='TargetSequence')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   863
        data.add(api.Data(ref='Setting', map="SourceSequence[@key='1']"))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   864
        config.add_data(data)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   865
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   866
        fea = config.get_default_view().get_feature('TargetSequence')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   867
        self.assertEquals(fea.get_value(), [['Value 1']])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   868
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   869
    def test_sequence_with_multiselection_set_value(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   870
        config = api.Configuration('foo.confml')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   871
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   872
        fea = model.ConfmlSequenceSetting("fooseq")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   873
        fea.add_feature(model.ConfmlMultiSelectionSetting("msel"))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   874
        config.add_feature(fea)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   875
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   876
        dview = config.get_default_view()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   877
        fea = dview.get_feature(fea.fqr)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   878
        self.assertEquals(fea.value, [])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   879
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   880
        def check_data_elements(expected_data_object_values):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   881
            actual = []
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   882
            for d in config._traverse(type=api.Data):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   883
                actual.append((d.fqr, d.value, d.empty))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   884
            expected = []
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   885
            for fqr, val, empty in expected_data_object_values:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   886
                expected.append((fqr, val, empty))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   887
            self.assertEquals(actual, expected)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   888
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   889
        fea.value = []
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   890
        self.assertEquals(fea.value, [])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   891
        check_data_elements(
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   892
            [('fooseq', None, False),])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   893
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   894
        fea.value = [[()]]
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   895
        self.assertEquals(fea.value, [[()]])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   896
        check_data_elements(
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   897
            [('fooseq', None, False),
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   898
             ('fooseq.msel', None, True),])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   899
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   900
        fea.value = [[('x',)]]
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   901
        self.assertEquals(fea.value, [[('x',)]])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   902
        check_data_elements(
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   903
            [('fooseq', None, False),
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   904
             ('fooseq.msel', 'x', False),])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   905
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   906
        fea.value = [[('x',)], [('y',)]]
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   907
        self.assertEquals(fea.value, [[('x',)], [('y',)]])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   908
        check_data_elements(
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   909
            [('fooseq', None, False),
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   910
             ('fooseq.msel', 'x', False),
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   911
             ('fooseq', None, False),
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   912
             ('fooseq.msel', 'y', False),])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   913
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   914
        fea.value = [[('x', 'y')],
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   915
                     [('a', 'b', 'c')],
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   916
                     [()],
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   917
                     [('d', 'e', 'f')]]
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   918
        self.assertEquals(fea.value, [[('x', 'y')],
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   919
                                      [('a', 'b', 'c')],
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   920
                                      [()],
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   921
                                      [('d', 'e', 'f')]])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   922
        check_data_elements(
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   923
            [('fooseq', None, False),
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   924
             ('fooseq.msel', 'x', False),
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   925
             ('fooseq.msel', 'y', False),
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   926
             ('fooseq', None, False),
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   927
             ('fooseq.msel', 'a', False),
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   928
             ('fooseq.msel', 'b', False),
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   929
             ('fooseq.msel', 'c', False),
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   930
             ('fooseq', None, False),
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   931
             ('fooseq.msel', None, True),
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   932
             ('fooseq', None, False),
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   933
             ('fooseq.msel', 'd', False),
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   934
             ('fooseq.msel', 'e', False),
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   935
             ('fooseq.msel', 'f', False),])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   936
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   937
    def test_sequence_with_multiselection_get_value(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   938
        config = api.Configuration('foo.confml')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   939
        fea = model.ConfmlSequenceSetting("fooseq")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   940
        fea.add_feature(model.ConfmlMultiSelectionSetting("msel"))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   941
        config.add_feature(fea)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   942
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   943
        seqdata1 = api.Data(ref='fooseq')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   944
        seqdata1._add([api.Data(ref='msel', value='x'),
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   945
                       api.Data(ref='msel', value='y')])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   946
        seqdata2 = api.Data(ref='fooseq')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   947
        seqdata2._add([api.Data(ref='msel', empty=True)])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   948
        seqdata3 = api.Data(ref='fooseq')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   949
        seqdata3._add([api.Data(ref='msel', value='a'),
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   950
                       api.Data(ref='msel', value='b'),
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   951
                       api.Data(ref='msel', value='c')])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   952
        config.add_data([seqdata1, seqdata2, seqdata3])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   953
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   954
        dview = config.get_default_view()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   955
        fea = dview.get_feature(fea.fqr)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   956
        self.assertEquals(fea.value, [[('x', 'y')], [()], [('a', 'b', 'c')]])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   957
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   958
    def test_simple_name_id_mapping(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   959
        config = api.Configuration('foo.confml')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   960
        seq = model.ConfmlSequenceSetting('seq', mapKey='strsub', mapValue='strsub')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   961
        seq.add_feature(model.ConfmlStringSetting('strsub'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   962
        seq.add_feature(model.ConfmlIntSetting('intsub'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   963
        seq.add_feature(model.ConfmlRealSetting('realsub'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   964
        seq.add_feature(model.ConfmlBooleanSetting('boolsub'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   965
        config.add_feature(seq)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   966
        config.add_feature(api.Feature('target'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   967
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   968
        config.add_data(api.Data(fqr='seq.strsub', value='foo'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   969
        config.add_data(api.Data(fqr='seq.intsub', value='123'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   970
        config.add_data(api.Data(fqr='seq.realsub', value='1.5'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   971
        config.add_data(api.Data(fqr='seq.boolsub', value='true'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   972
        config.add_data(api.Data(fqr='target', map="seq[@key='foo']"))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   973
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   974
        fea = config.get_default_view().get_feature('target')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   975
        self.assertEquals(fea.value, 'foo')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   976
        self.assertEquals(fea.get_original_value(), 'foo')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   977
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   978
        seq.mapValue = 'intsub'
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   979
        self.assertEquals(fea.value, 123)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   980
        self.assertEquals(fea.get_original_value(), '123')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   981
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   982
        seq.mapValue = 'realsub'
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   983
        self.assertEquals(fea.value, 1.5)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   984
        self.assertEquals(fea.get_original_value(), '1.5')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   985
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   986
        seq.mapValue = 'boolsub'
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   987
        self.assertEquals(fea.value, True)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   988
        self.assertEquals(fea.get_original_value(), 'true')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   989
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   990
    def test_simple_name_id_mapping_with_multiselection(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   991
        config = api.Configuration('foo.confml')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   992
        seq = model.ConfmlSequenceSetting('seq', mapKey='strsub', mapValue='intsub')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   993
        seq.add_feature(model.ConfmlStringSetting('strsub'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   994
        seq.add_feature(model.ConfmlIntSetting('intsub'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   995
        config.add_feature(seq)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   996
        config.add_feature(model.ConfmlMultiSelectionSetting('target'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   997
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   998
        d = api.Data(fqr='seq')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   999
        d.add(api.Data(ref='strsub', value='foo'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1000
        d.add(api.Data(ref='intsub', value='123'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1001
        config.add_data(d, api.container.APPEND)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1002
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1003
        d = api.Data(fqr='seq')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1004
        d.add(api.Data(ref='strsub', value='bar'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1005
        d.add(api.Data(ref='intsub', value='321'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1006
        config.add_data(d, api.container.APPEND)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1007
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1008
        d = api.Data(fqr='seq')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1009
        d.add(api.Data(ref='strsub', value='baz'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1010
        d.add(api.Data(ref='intsub', value='456'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1011
        config.add_data(d, api.container.APPEND)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1012
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1013
        config.add_data([api.Data(fqr='target', map="seq[@key='bar']"),
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1014
                         api.Data(ref='target', map="seq[@key='baz']"),
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1015
                         api.Data(ref='target', map="seq[@key='foo']")])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1016
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1017
        fea = config.get_default_view().get_feature('target')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1018
        self.assertEquals(fea.value, (321, 456, 123))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1019
        self.assertEquals(fea.get_original_value(), ('321', '456', '123'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1020
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1021
    def test_simple_name_id_mapping_with_file_and_folder_setting(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1022
        def _run_test(subsetting_class):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1023
            config = api.Configuration('foo.confml')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1024
            seq = model.ConfmlSequenceSetting('seq')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1025
            seq.add_feature(subsetting_class('filefoldersub'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1026
            config.add_feature(seq)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1027
            config.add_feature(model.ConfmlSelectionSetting('target'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1028
            
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1029
            def _add_seq_data(local_path, target_path):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1030
                d = api.Data(fqr='seq')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1031
                subd = api.Data(ref='filefoldersub')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1032
                subd.add(api.Data(ref='localPath', value=local_path))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1033
                subd.add(api.Data(ref='targetPath', value=target_path))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1034
                d.add(subd)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1035
                config.add_data(d, api.container.APPEND)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1036
            _add_seq_data('local/path/1', 'target/path/1')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1037
            _add_seq_data('local/path/2', 'target/path/2')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1038
            _add_seq_data('local/path/3', 'target/path/3')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1039
            target_data = api.Data(fqr='target')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1040
            config.add_data(target_data)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1041
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1042
            fea = config.get_default_view().get_feature('target')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1043
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1044
            seq.mapKey = 'filefoldersub'
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1045
            seq.mapValue = 'filefoldersub'
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1046
            target_data.map = "seq[@key='local/path/1']"
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1047
            self.assertEquals(fea.value, 'local/path/1')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1048
            
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1049
            seq.mapKey = 'filefoldersub/localPath'
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1050
            seq.mapValue = 'filefoldersub/localPath'
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1051
            target_data.map = "seq[@key='local/path/1']"
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1052
            self.assertEquals(fea.value, 'local/path/1')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1053
            
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1054
            seq.mapKey = 'filefoldersub/targetPath'
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1055
            seq.mapValue = 'filefoldersub/targetPath'
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1056
            target_data.map = "seq[@key='target/path/2']"
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1057
            self.assertEquals(fea.value, 'target/path/2')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1058
            
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1059
            seq.mapKey = 'filefoldersub/localPath'
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1060
            seq.mapValue = 'filefoldersub/targetPath'
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1061
            target_data.map = "seq[@key='local/path/3']"
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1062
            self.assertEquals(fea.value, 'target/path/3')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1063
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1064
        _run_test(subsetting_class=model.ConfmlFileSetting)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1065
        _run_test(subsetting_class=model.ConfmlFolderSetting)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1066
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1067
    def test_simple_name_id_mapping_override_map_value_in_option(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1068
        config = api.Configuration('foo.confml')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1069
        fea = model.ConfmlFeature('fea')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1070
        config.add_feature(fea)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1071
        seq = model.ConfmlSequenceSetting('seq', mapKey='strsub', mapValue='strsub')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1072
        seq.add_feature(model.ConfmlStringSetting('strsub'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1073
        seq.add_feature(model.ConfmlIntSetting('intsub'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1074
        fea.add_feature(seq)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1075
        target = api.Feature('target')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1076
        target.add_option(api.Option(None, None, map='fea/seq', map_value='intsub'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1077
        fea.add_feature(target)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1078
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1079
        config.add_data(api.Data(fqr='fea.seq.strsub', value='foo'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1080
        config.add_data(api.Data(fqr='fea.seq.intsub', value='123'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1081
        config.add_data(api.Data(fqr='fea.target', map="fea/seq[@key='foo']"))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1082
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1083
        fea = config.get_default_view().get_feature('fea.target')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1084
        self.assertEquals(fea.value, 123)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1085
        self.assertEquals(fea.get_original_value(), '123')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1086
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1087
    def _assert_raises(self, exception_class, func, *args, **kwargs):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1088
        try:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1089
            func(*args, **kwargs)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1090
            self.fail("No exception raised")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1091
        except exception_class, e:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1092
            return e
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1093
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1094
    def test_name_id_mapping_errors(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1095
        config = api.Configuration('foo.confml')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1096
        seq = model.ConfmlSequenceSetting('seq')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1097
        seq.add_feature(model.ConfmlStringSetting('strsub'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1098
        seq.add_feature(model.ConfmlIntSetting('intsub'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1099
        config.add_feature(seq)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1100
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1101
        config.add_feature(model.ConfmlIntSetting('foosetting'), 'foofea')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1102
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1103
        target = api.Feature('target')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1104
        target_option = api.Option(None, None, map='seq')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1105
        target.add_option(target_option)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1106
        config.add_feature(target)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1107
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1108
        config.add_data(api.Data(fqr='seq.strsub', value='foo'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1109
        config.add_data(api.Data(fqr='seq.intsub', value='123'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1110
        target_data = api.Data(fqr='target', map="seq[@key='123']")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1111
        config.add_data(target_data)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1112
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1113
        fea = config.get_default_view().get_feature('target')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1114
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1115
        e = self._assert_raises(exceptions.NameIdMappingError, fea.get_value)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1116
        self.assertEquals(str(e), "Source sequence 'seq' must have both mapKey and mapValue specified")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1117
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1118
        seq.mapKey = 'strsub'
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1119
        e = self._assert_raises(exceptions.NameIdMappingError, fea.get_value)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1120
        self.assertEquals(str(e), "Source sequence 'seq' must have both mapKey and mapValue specified")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1121
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1122
        seq.mapKey = None
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1123
        seq.mapValue = 'strsub'
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1124
        e = self._assert_raises(exceptions.NameIdMappingError, fea.get_value)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1125
        self.assertEquals(str(e), "Source sequence 'seq' must have both mapKey and mapValue specified")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1126
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1127
        seq.mapKey = 'intsub'
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1128
        seq.mapValue = 'strsub'
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1129
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1130
        target_data.map = "foobar"
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1131
        e = self._assert_raises(exceptions.NameIdMappingError, fea.get_value)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1132
        self.assertEquals(str(e), "Malformed mapping expression: foobar")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1133
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1134
        target_data.map = "foo/bar[key='321']"
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1135
        e = self._assert_raises(exceptions.NameIdMappingError, fea.get_value)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1136
        self.assertEquals(str(e), "Malformed mapping expression: foo/bar[key='321']")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1137
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1138
        target_data.map = "foo/bar[@key='321'"
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1139
        e = self._assert_raises(exceptions.NameIdMappingError, fea.get_value)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1140
        self.assertEquals(str(e), "Malformed mapping expression: foo/bar[@key='321'")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1141
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1142
        target_data.map = "foo/nonexistent[@key='321']"
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1143
        e = self._assert_raises(exceptions.NameIdMappingError, fea.get_value)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1144
        self.assertEquals(str(e), "Mapping source sequence 'foo.nonexistent' does not exist")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1145
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1146
        target_data.map = "foofea/foosetting[@key='321']"
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1147
        e = self._assert_raises(exceptions.NameIdMappingError, fea.get_value)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1148
        self.assertEquals(str(e), "Mapping source setting 'foofea.foosetting' is not a sequence setting")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1149
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1150
        target_data.map = "seq[@key='321']"
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1151
        e = self._assert_raises(exceptions.NameIdMappingError, fea.get_value)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1152
        self.assertEquals(str(e), "No item-setting in source sequence 'seq' matches key '321'")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1153
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1154
        seq.mapKey = 'foo'
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1155
        target_data.map = "seq[@key='321']"
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1156
        e = self._assert_raises(exceptions.NameIdMappingError, fea.get_value)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1157
        self.assertEquals(str(e), "Invalid mapKey in source sequence 'seq': no sub-setting with ref 'foo'")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1158
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1159
        seq.mapKey = 'intsub'
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1160
        seq.mapValue = 'foo'
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1161
        target_data.map = "seq[@key='321']"
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1162
        e = self._assert_raises(exceptions.NameIdMappingError, fea.get_value)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1163
        self.assertEquals(str(e), "Invalid mapValue in source sequence 'seq': no sub-setting with ref 'foo'")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1164
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1165
        seq.mapValue = 'strsub'
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1166
        target_data.map = "seq[@key='123']"
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1167
        target_option.map_value = 'foobar'
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1168
        e = self._assert_raises(exceptions.NameIdMappingError, fea.get_value)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1169
        self.assertEquals(str(e), "Invalid mapValue override in option: sub-setting 'foobar' does not exist under source sequence 'seq'")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1170
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1171
        # Test successful mapping for good measure
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1172
        seq.mapKey = 'intsub'
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1173
        seq.mapValue = 'strsub'
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1174
        target_data.map = "seq[@key='123']"
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1175
        target_option.map_value = 'intsub'
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1176
        self.assertEquals(fea.get_value(), 123)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1177
        self.assertEquals(fea.get_original_value(), '123')
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1178
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1179
class TestConfmlFile(unittest.TestCase):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1180
    def test_create_localpath_elem(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1181
        elem = model.ConfmlLocalPath()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1182
        self.assertTrue(elem)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1183
        self.assertEquals(elem.get_ref(),'localPath')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1184
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1185
    def test_create_targetpath_elem(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1186
        elem = model.ConfmlTargetPath()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1187
        self.assertTrue(elem)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1188
        self.assertEquals(elem.get_ref(),'targetPath')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1189
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1190
    def test_create_file_elem(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1191
        elem = model.ConfmlFileSetting('test')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1192
        self.assertTrue(elem)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1193
        self.assertEquals(elem.get_ref(),'test')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1194
        self.assertEquals(elem.list_features(), ['localPath','targetPath'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1195
        self.assertEquals(elem.get_feature('localPath').fqr, 'test.localPath')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1196
        self.assertEquals(elem.get_feature('targetPath').fqr, 'test.targetPath')
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1197
        self.assertEquals(elem.get_feature('localPath').name, 'localPath')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1198
        self.assertEquals(elem.get_feature('targetPath').name, 'targetPath')
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1199
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1200
    def test_create_file_elem_and_set_value(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1201
        config = api.Configuration('test.confml')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1202
        elem = model.ConfmlFileSetting('test', localpath='test.txt')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1203
        config.add_feature(elem)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1204
        dview = config.get_default_view()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1205
        self.assertEquals(dview.list_all_features(),['test','test.localPath','test.targetPath'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1206
        dview.get_feature('test.localPath').set_value('foo/test.txt')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1207
        dview.get_feature('test.targetPath').set_value('Z:\\test\test.txt')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1208
        dview.get_feature('test.localPath').set_value('now/test.txt')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1209
        self.assertEquals(dview.get_feature('test.localPath').get_value(),'now/test.txt')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1210
        self.assertEquals(len(dview.get_feature('test.localPath').get_datas()),1)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1211
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1212
    def test_clone_file_elem(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1213
        elem1 = model.ConfmlFileSetting('test')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1214
        elem2 = elem1._clone(recursion=True)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1215
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1216
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1217
    def test_create_file_elem_to_a_sequence(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1218
        config = model.ConfmlConfiguration('foo.confml')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1219
        seq = model.ConfmlSequenceSetting('foo')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1220
        elem = model.ConfmlFileSetting('test')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1221
        seq.add_feature(elem)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1222
        config.add_feature(seq)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1223
        seq.value = [[['local file', 'targetfile']],
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1224
                     [['local file2', 'targetfile2']]]
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1225
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1226
        self.assertEquals(seq.test.localPath.get_value(), ['local file',
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1227
                                                           'local file2'])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1228
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1229
    def test_create_folder_elem_to_a_sequence(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1230
        config = model.ConfmlConfiguration('foo.confml')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1231
        seq = model.ConfmlSequenceSetting('foo')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1232
        elem = model.ConfmlFolderSetting('test')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1233
        seq.add_feature(elem)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1234
        config.add_feature(seq)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1235
        seq.value = [[['local file', 'targetfile']],
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1236
                     [['local file2', 'targetfile2']]]
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1237
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1238
        self.assertEquals(seq.test.localPath.get_value(), ['local file',
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1239
                                                           'local file2'])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1240
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1241
        
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1242
class TestConfmlIcon(unittest.TestCase):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1243
    def test_create_icon(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1244
        icon = model.ConfmlIcon("test/foo/bar.jpg")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1245
        self.assertEquals(icon.href, "test/foo/bar.jpg")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1246
        icon.href = 'new/icon.jpg'
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1247
        self.assertEquals(icon.href, "new/icon.jpg")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1248
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1249
    def test_clone_icon(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1250
        icon1 = model.ConfmlIcon("test/foo/bar.jpg")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1251
        icon2 = icon1._clone()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1252
        self.assertEquals(icon1.href, icon2.href)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1253
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1254
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1255
class TestLengths(unittest.TestCase):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1256
    def test_create_maxLength(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1257
        max = model.ConfmlMaxLength('100')
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1258
        self.assertEquals(max.value, 100)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1259
        max.value = 10
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1260
        self.assertEquals(max.value, 10)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1261
        max.value = '1000'
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1262
        self.assertEquals(max.value, 1000)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1263
        
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1264
    def test_create_minLength(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1265
        min = model.ConfmlMinLength('100')
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1266
        self.assertEquals(min.value, 100)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1267
        min.value = 10
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1268
        self.assertEquals(min.value, 10)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1269
        min.value = '1000'
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1270
        self.assertEquals(min.value, 1000)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1271
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1272
    def test_create_length(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1273
        len = model.ConfmlLength('100')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1274
        self.assertEquals(len.value, 100)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1275
        len.value = 10
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1276
        self.assertEquals(len.value, 10)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1277
        len.value = '1000'
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1278
        self.assertEquals(len.value, 1000)
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1279
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1280
class TestConfmlFacets(unittest.TestCase):
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1281
    def test_numeric_base_classs(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1282
        numeric = model.ConfmlNumericValue()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1283
        numeric.value = 3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1284
        self.assertEquals(numeric.value, 3)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1285
        numeric.value = 0.3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1286
        self.assertEquals(numeric.value, 0.3)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1287
        numeric.value = '22'
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1288
        self.assertEquals(numeric.value, 22)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1289
        numeric.value = '0.1'
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1290
        self.assertEquals(numeric.value, 0.1)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1291
        try:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1292
            numeric.value = 'foo'
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1293
            self.fail("setting string to float property succeeded!")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1294
        except ValueError:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1295
            pass
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1296
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1297
    def test_create_inclusive(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1298
        min = model.ConfmlMinInclusive('-10')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1299
        max = model.ConfmlMaxInclusive('10')
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1300
        self.assertEquals(min.value, -10)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1301
        self.assertEquals(max.value, 10)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1302
        min.value = 10
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1303
        self.assertEquals(min.value, 10)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1304
        min.value = '1000'
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1305
        self.assertEquals(min.value, 1000)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1306
        max.value = 10
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1307
        self.assertEquals(max.value, 10)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1308
        max.value = '1000'
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1309
        self.assertEquals(max.value, 1000)
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1310
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1311
    def test_create_exclusive(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1312
        min = model.ConfmlMinExclusive('0')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1313
        max = model.ConfmlMaxExclusive("9")
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1314
        self.assertEquals(min.value, 0)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1315
        self.assertEquals(max.value, 9)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1316
        max.value = 10
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1317
        self.assertEquals(max.value, 10)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1318
        max.value = '1000'
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1319
        self.assertEquals(max.value, 1000)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1320
        min.value = 10
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1321
        self.assertEquals(min.value, 10)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1322
        min.value = '1000'
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1323
        self.assertEquals(min.value, 1000)
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1324
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1325
    def test_create_pattern(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1326
        pattern = model.ConfmlPattern("[a-zA-Z]")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1327
        self.assertEquals(pattern.value, "[a-zA-Z]")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1328
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1329
    def test_create_totalDigits(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1330
        digits = model.ConfmlTotalDigits("3")
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1331
        self.assertEquals(digits.value, 3)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1332
        digits.value = 10
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1333
        self.assertEquals(digits.value, 10)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1334
        digits.value = '1000'
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1335
        self.assertEquals(digits.value, 1000)
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1336
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1337
class TestConfmlConfiguration(unittest.TestCase):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1338
    def test_create_configuration(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1339
        config = model.ConfmlConfiguration("test/foo/bar.jpg")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1340
        self.assertEquals(config.meta, None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1341
        self.assertEquals(config.desc, None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1342
        self.assertEquals(config.name, 'test__foo__bar_jpg')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1343
        self.assertEquals(config.ref, 'test__foo__bar_jpg')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1344
        self.assertEquals(config.path, 'test/foo/bar.jpg')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1345
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1346
    def test_create_configuration_and_features(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1347
        conf = model.ConfmlConfiguration("simple.confml")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1348
        fea = conf.create_feature("test")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1349
        self.assertTrue(isinstance(fea, model.ConfmlFeature))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1350
        self.assertEquals(conf.get_feature('test'), fea)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1351
        fea = conf.create_feature("test1", name="test name")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1352
        self.assertEquals(conf.get_feature('test1').name, 'test name')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1353
        subfea = fea.create_feature("subfea", name="subfea name")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1354
        self.assertTrue(isinstance(subfea, model.ConfmlSetting))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1355
        self.assertEquals(conf.list_all_features(), ['test','test1','test1.subfea'])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1356
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1357
    def test_configuration_get_default_view(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1358
        config = model.ConfmlConfiguration("test/foo/bar.jpg")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1359
        config.add_feature(model.ConfmlFeature("test"))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1360
        view = config.create_view("testview")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1361
        group = view.create_group("group1")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1362
        group.create_featurelink("test")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1363
        self.assertEquals(config.list_all_features(), ['test'])
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1364
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1365
    def test_configuration_access_desc(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1366
        config = model.ConfmlConfiguration("test/foo/bar.jpg", desc="testing description")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1367
        self.assertEquals(config.desc, "testing description")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1368
        config.desc = 'new desc'
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1369
        self.assertEquals(config.desc, "new desc")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1370
        del config.desc
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1371
        self.assertEquals(config.desc, None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1372
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1373
    def test_use_create_configuration(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1374
        config = model.ConfmlConfiguration("test/foo/bar.jpg")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1375
        subconfig = config.create_configuration("sub/jee.confml")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1376
        self.assertEquals(subconfig.get_full_path(),'test/foo/sub/jee.confml')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1377
        self.assertTrue(isinstance(subconfig,model.ConfmlConfiguration))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1378
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1379
class TestConfmlView(unittest.TestCase):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1380
    def test_create_view(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1381
        view = model.ConfmlView("test", id="test")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1382
        self.assertTrue(view)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1383
        self.assertEquals(view.get_ref(),'test')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1384
        self.assertEquals(view.id,"test")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1385
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1386
    def test_create_view_with_create_view(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1387
        config = model.ConfmlConfiguration("test")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1388
        view = config.create_view("test")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1389
        group = view.create_group("group1")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1390
        fl = group.create_featurelink("intset1")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1391
        self.assertTrue(isinstance(view, model.ConfmlView))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1392
        self.assertTrue(isinstance(group, model.ConfmlGroup))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1393
        self.assertTrue(isinstance(fl, model.ConfmlFeatureLink))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1394
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1395
    def test_create_confml_featurelink(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1396
        fealink = model.ConfmlFeatureLink("test")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1397
        self.assertTrue(fealink)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1398
        self.assertEquals(fealink.get_ref(),'link_test')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1399
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1400
    def test_create_confml_featurelink_with_overrides(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1401
        fealink = model.ConfmlFeatureLink("test")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1402
        fealink.desc = "test desc"
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1403
        self.assertEquals(fealink.desc,'test desc')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1404
        self.assertEquals(fealink._has('_desc'),True)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1405
        self.assertEquals(fealink.get_attributes(),{'properties': {},'options': {}, 'desc' : 'test desc'})
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1406
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1407
    def test_create_confml_featurelink_with_option_overrides(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1408
        fealink = model.ConfmlFeatureLink("test")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1409
        fealink.add(api.Option('opt2', '2'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1410
        self.assertEquals(fealink.options['2'].name,'opt2')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1411
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1412
    def test_create_view_with_groups(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1413
        view = model.ConfmlView("test")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1414
        view.create_group("group1")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1415
        view.create_group("group2")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1416
        self.assertEquals(view.list_groups(),['group1','group2'])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1417
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1418
    def test_create_configuration_with_featurelinks(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1419
        config = model.ConfmlConfiguration("test")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1420
        config.add_feature(model.ConfmlFeature("fea1", name="Feature 1"))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1421
        intset1 = model.ConfmlIntSetting("intset1", name="Setting 1")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1422
        intset1.desc = "int setting desc"
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1423
        config.add_feature(intset1, "fea1")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1424
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1425
        view = config.create_view("test")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1426
        group = view.create_group("group1")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1427
        fl = group.create_featurelink("intset1")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1428
        self.assertTrue(isinstance(fl, model.ConfmlFeatureLink))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1429
        self.assertTrue(len(config.get_default_view().get_features('**')), 2)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1430
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1431
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1432
    def test_create_configuration_with_view_and_featurelink_overrides(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1433
        config = model.ConfmlConfiguration("test")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1434
        config.add_feature(model.ConfmlFeature("fea1", name="Feature 1"))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1435
        intset1 = model.ConfmlIntSetting("intset1", name="Setting 1")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1436
        intset1.desc = "int setting desc"
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1437
        config.add_feature(intset1, "fea1")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1438
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1439
        view = config.create_view("test")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1440
        view.create_group("group1")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1441
        fl = model.ConfmlFeatureLink("fea1.intset1", name="override name")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1442
        fl.desc = "override desc"
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1443
        fl.minLength = 2
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1444
        fl.maxLength = 10
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1445
        fl.minOccurs = 2
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1446
        fl.maxOccurs = 10
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1447
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1448
        fl.pattern = '^.*@.*$'
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1449
        fl.totalDigits = 10
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1450
        fl.minInclusive = 0
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1451
        fl.maxInclusive = 10
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1452
        fl.minExclusive = 0
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1453
        fl.maxExclusive = 10
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1454
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1455
        fl.add(api.Option('opt1', '1'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1456
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1457
        view.get_group('group1').add(fl)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1458
        view.populate()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1459
        self.assertEquals(view.list_all_features(),['group1.proxy_fea1_intset1'])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1460
        self.assertEquals(view.get_feature('group1.proxy_fea1_intset1').desc, "override desc")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1461
        self.assertEquals(view.get_feature('group1.proxy_fea1_intset1').name, "override name")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1462
        self.assertEquals(view.get_feature('group1.proxy_fea1_intset1').minLength, 2)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1463
        self.assertEquals(view.get_feature('group1.proxy_fea1_intset1').maxLength, 10)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1464
        self.assertEquals(view.get_feature('group1.proxy_fea1_intset1').minOccurs, 2)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1465
        self.assertEquals(view.get_feature('group1.proxy_fea1_intset1').maxOccurs, 10)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1466
        self.assertEquals(view.get_feature('group1.proxy_fea1_intset1').pattern, '^.*@.*$')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1467
        self.assertEquals(view.get_feature('group1.proxy_fea1_intset1').totalDigits, 10)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1468
        self.assertEquals(view.get_feature('group1.proxy_fea1_intset1').minInclusive, 0)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1469
        self.assertEquals(view.get_feature('group1.proxy_fea1_intset1').maxInclusive, 10)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1470
        self.assertEquals(view.get_feature('group1.proxy_fea1_intset1').minExclusive, 0)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1471
        self.assertEquals(view.get_feature('group1.proxy_fea1_intset1').maxExclusive, 10)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1472
        self.assertEquals(view.get_feature('group1.proxy_fea1_intset1').options['1'].name,'opt1')
5
d2c80f5cab53 Updated to version 1.2.14
m2lahtel
parents: 3
diff changeset
  1473
d2c80f5cab53 Updated to version 1.2.14
m2lahtel
parents: 3
diff changeset
  1474
class TestConfmlExtensions(unittest.TestCase):
d2c80f5cab53 Updated to version 1.2.14
m2lahtel
parents: 3
diff changeset
  1475
    def test_create_extensions(self):
d2c80f5cab53 Updated to version 1.2.14
m2lahtel
parents: 3
diff changeset
  1476
        extensionselem = model.ConfmlExtensions()
d2c80f5cab53 Updated to version 1.2.14
m2lahtel
parents: 3
diff changeset
  1477
        self.assertEquals(str(extensionselem),"ConfmlExtensions({'ref': '_extensions'})")
d2c80f5cab53 Updated to version 1.2.14
m2lahtel
parents: 3
diff changeset
  1478
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1479
if __name__ == '__main__':
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1480
    unittest.main()