configurationengine/source/plugins/symbian/ConeCRMLPlugin/CRMLPlugin/tests/unittest_crml_reader.py
author m2lahtel
Tue, 10 Aug 2010 14:29:28 +0300
changeset 3 e7e0ae78773e
parent 0 2e8eeb919028
permissions -rw-r--r--
ConE 1.2.11 release
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
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    17
import os, unittest
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    18
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    19
ROOT_PATH = os.path.dirname(os.path.abspath(__file__))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    20
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    21
from cone.public import exceptions, plugin, api, container, utils
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    22
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    23
from CRMLPlugin.crml_model import *
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    24
from CRMLPlugin.crml_reader import CrmlReader
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    25
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    26
class TestCrmlReader(unittest.TestCase):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    27
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    28
    NAMESPACE = CrmlReader.NAMESPACE
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    29
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    30
    def setUp(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    31
        self.reader = CrmlReader()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    32
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    33
    def assert_read_access_equals(self, data, expected):
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    34
        etree = utils.etree.fromstring(data)
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    35
        access = self.reader.read_access(etree)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    36
        self.assertEquals(expected, access)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    37
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    38
    def test_read_access(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    39
        data = """<?xml version="1.0"?><test/>"""
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    40
        self.assert_read_access_equals(data, CrmlAccess())
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    41
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    42
        data = """<?xml version="1.0"?>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    43
                <test xmlns='%s'>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    44
                    <access type='R' capabilities="AlwaysPass" sid="0x12345678"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    45
                    <access type='W' capabilities="WriteDeviceData" sid="0x87654321"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    46
                </test>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    47
                """ % self.NAMESPACE
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    48
        self.assert_read_access_equals(data,
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    49
            CrmlAccess(cap_rd='AlwaysPass', cap_wr='WriteDeviceData', sid_rd='0x12345678', sid_wr='0x87654321'))
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    50
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    51
    def test_get_refs(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    52
        data = """<?xml version="1.0"?>
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    53
                <repository xmlns='%s'>
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    54
                    <access type='R' capabilities="AlwaysPass" sid="0x12345678"/>
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    55
                    <access type='W' capabilities="WriteDeviceData" sid="0x87654321"/>
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    56
                    <key ref="Feature1/IntSetting" name="Int setting" int="0x00000001" type="int" readOnly="false" backup="true">
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    57
                        <access type="R" capabilities="AlwaysPass"/>
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    58
                    </key>
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    59
                </repository>
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    60
                """ % self.NAMESPACE
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    61
        etree = utils.etree.fromstring(data)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    62
        repo = self.reader.read_repository(etree)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    63
        self.assertEquals(repo.get_refs(), ['Feature1.IntSetting'])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    64
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    65
        data = """<?xml version="1.0"?>
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    66
                <repository xmlns='%s'>
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    67
                    <access type='R' capabilities="AlwaysPass" sid="0x12345678"/>
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    68
                    <access type='W' capabilities="WriteDeviceData" sid="0x87654321"/>
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    69
                </repository>
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    70
                """ % self.NAMESPACE
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    71
        etree = utils.etree.fromstring(data)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    72
        repo = self.reader.read_repository(etree)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    73
        self.assertEquals(repo.get_refs(), [])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    74
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    75
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    76
        
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    77
    def test_read_duplicate_access(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    78
        data = """<?xml version="1.0"?>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    79
                <test xmlns='%s'>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    80
                    <access type='R' capabilities="ReadDeviceData" sid="0x12345678"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    81
                    <access type='W' capabilities="WriteDeviceData" sid="0x87654321"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    82
                    <access type='R' capabilities="TCB" sid="0x11223344"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    83
                    <access type='W' capabilities="DRM" sid="0x44332211"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    84
                </test>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    85
                """ % self.NAMESPACE
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    86
        self.assert_read_access_equals(data,
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    87
            CrmlAccess(cap_rd='ReadDeviceData', cap_wr='WriteDeviceData', sid_rd='0x12345678', sid_wr='0x87654321'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    88
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    89
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    90
    def read_key_from_xml(self, data):
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    91
        etree = utils.etree.fromstring(data)
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    92
        return self.reader.read_key(etree)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    93
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    94
    def assert_read_key_equals(self, data, expected):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    95
        self.assertEquals(expected, self.read_key_from_xml(data))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    96
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    97
    def test_read_key(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    98
        data = """<?xml version="1.0"?>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    99
                <key xmlns='%s' ref="Foo/Bar" name="Foobar setting" int="0x01020304" type="real" readOnly="true" backup="true">
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   100
                    <access type='R' capabilities="AlwaysPass" sid="0x12345678"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   101
                    <access type='W' capabilities="WriteDeviceData" sid="0x87654321"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   102
                </key>""" % self.NAMESPACE
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   103
        self.assert_read_key_equals(data,
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   104
            CrmlSimpleKey(ref='Foo.Bar', name='Foobar setting', int='0x01020304', type='real', read_only=True, backup=True,
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   105
                          access=CrmlAccess(cap_rd='AlwaysPass', cap_wr='WriteDeviceData', sid_rd='0x12345678', sid_wr='0x87654321')))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   106
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   107
    def test_read_invalid_key(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   108
        # Required attribute 'ref' missing
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   109
        data = '<key xmlns="%s" name="Foobar setting" int="0x01020304" type="real"/>' % self.NAMESPACE
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   110
        self.assertRaises(exceptions.ParseError, self.read_key_from_xml, data)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   111
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   112
    def assert_read_bitmask_key_equals(self, data, expected):
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   113
        etree = utils.etree.fromstring(data)
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   114
        key = self.reader.read_bitmask_key(etree)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   115
        self.assertEquals(expected, key)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   116
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   117
    def test_read_bitmask_key(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   118
        data = """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   119
        <key xmlns='%s' name="Bitmask" type="binary" int="0x00000001" readOnly="true" backup="true">
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   120
            <access type="R" capabilities="ReadDeviceData"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   121
            <bit ref="BitmaskTest/Bit0">1</bit>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   122
            <bit ref="BitmaskTest/Bit3">4</bit>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   123
            <bit ref="BitmaskTest/Bit5" value='false'>6</bit>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   124
        </key>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   125
        """ % self.NAMESPACE
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   126
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   127
        self.assert_read_bitmask_key_equals(data,
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   128
            CrmlBitmaskKey(name      = 'Bitmask',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   129
                           type      = 'binary',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   130
                           int       = '0x00000001',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   131
                           read_only = True,
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   132
                           backup    = True,
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   133
                           access    = CrmlAccess(cap_rd='ReadDeviceData'),
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   134
                           bits      = [CrmlBit(ref='BitmaskTest.Bit0', index=1),
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   135
                                        CrmlBit(ref='BitmaskTest.Bit3', index=4),
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   136
                                        CrmlBit(ref='BitmaskTest.Bit5', index=6, invert=True)]))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   137
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   138
    def assert_read_key_range_equals(self, data, expected):
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   139
        etree = utils.etree.fromstring(data)
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   140
        key = self.reader.read_key_range(etree)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   141
        self.assertEquals(expected, key)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   142
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   143
    def test_read_key_range(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   144
        data = """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   145
            <keyRange xmlns='%s' firstInt="0x00004000" lastInt="0x00004FFF" readOnly="true" backup="false">
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   146
                <access type="R" capabilities="TCB"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   147
            </keyRange>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   148
            """ % self.NAMESPACE
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   149
        self.assert_read_key_range_equals(data,
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   150
            CrmlKeyRange(first_int='0x00004000', last_int='0x00004FFF', read_only=True, backup=False,
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   151
                         access=CrmlAccess(cap_rd='TCB')))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   152
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   153
        data = """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   154
            <keyRange xmlns='%s' ref="KeyRangeTest/SequenceSetting" backup="true" name="Sequence setting"
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   155
                firstInt="0x1001" lastInt="0x1fff" indexBits="0x0ff0" firstIndex="1" countInt="0x1000">
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   156
                <access type="R" capabilities="AlwaysPass"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   157
                <access type="W" capabilities="WriteDeviceData"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   158
                <key ref="StringSubSetting" name="String" int="0x0001" type="string8"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   159
                <key ref="IntSubSetting" name="Int" int="0x0002" type="int"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   160
                <key ref="IntSubSetting2" name="Int2" int="0x0003"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   161
            </keyRange>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   162
            """ % self.NAMESPACE
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   163
        self.assert_read_key_range_equals(data,
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   164
            CrmlKeyRange(first_int='0x1001', last_int='0x1fff', index_bits=0x0ff0,
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   165
                         count_int='0x1000', first_index=1,
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   166
                         ref='KeyRangeTest.SequenceSetting',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   167
                         name='Sequence setting', backup=True, read_only=False,
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   168
                         access=CrmlAccess(cap_rd='AlwaysPass', cap_wr='WriteDeviceData'),
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   169
                         subkeys=[CrmlKeyRangeSubKey(ref='StringSubSetting', name='String', int='0x0001', type='string8'),
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   170
                                  CrmlKeyRangeSubKey(ref='IntSubSetting', name='Int', int='0x0002', type='int'),
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   171
                                  CrmlKeyRangeSubKey(ref='IntSubSetting2', name='Int2', int='0x0003', type='int')]))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   172
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   173
    def assert_read_repo_equals(self, data, expected):
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   174
        etree = utils.etree.fromstring(data)
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   175
        key = self.reader.read_repository(etree)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   176
        self.assertEquals(expected, key)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   177
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   178
    def test_read_empty_repository(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   179
        data = """<?xml version="1.0"?>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   180
            <repository xmlns="%s" uidName="EmptyRepo" uidValue="0x000000E1"
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   181
                owner="0xABCDDCBA" backup="true" rfs="true" initialisationFileVersion="2">
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   182
            </repository>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   183
            """ % self.NAMESPACE
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   184
        self.assert_read_repo_equals(data,
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   185
            CrmlRepository(uid_name  = 'EmptyRepo',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   186
                           uid_value = '0x000000E1',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   187
                           owner     = '0xABCDDCBA',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   188
                           backup    = True,
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   189
                           rfs       = True,
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   190
                           version   = '2'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   191
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   192
    def test_read_simple_repository(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   193
        data = """<?xml version="1.0"?>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   194
            <repository xmlns="%s" uidName="SimpleRepo" uidValue="0x000000E2"
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   195
                owner="0xF00DBEEF" backup="true" rfs="true">
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   196
                <key ref="Foo/Key1" name="Fookey 1" int="0x00000001" type="int" readOnly="true" backup="true"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   197
                <key ref="Foo/Key2" name="Fookey 2" int="0x00000002" type="real" readOnly="false" backup="true"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   198
                <key ref="Foo/Key3" name="Fookey 3" int="0x00000003" type="string" readOnly="true" backup="false"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   199
            </repository>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   200
            """ % self.NAMESPACE
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   201
        self.assert_read_repo_equals(data,
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   202
            CrmlRepository(
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   203
                uid_name  = 'SimpleRepo',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   204
                uid_value = '0x000000E2',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   205
                owner     = '0xF00DBEEF',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   206
                backup    = True,
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   207
                rfs       = True,
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   208
                version   = '1',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   209
                keys      = [CrmlSimpleKey(ref='Foo.Key1', name='Fookey 1', int='0x00000001', type='int', read_only=True, backup=True, access=CrmlAccess(cap_wr='AlwaysFail')),
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   210
                             CrmlSimpleKey(ref='Foo.Key2', name='Fookey 2', int='0x00000002', type='real', read_only=False, backup=True),
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   211
                             CrmlSimpleKey(ref='Foo.Key3', name='Fookey 3', int='0x00000003', type='string', read_only=True, backup=False, access=CrmlAccess(cap_wr='AlwaysFail')),]))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   212
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   213
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   214
if __name__ == "__main__":
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   215
    unittest.main()