configurationengine/source/plugins/symbian/ConeCRMLPlugin/CRMLPlugin/tests/unittest_crml_reader.py
changeset 3 e7e0ae78773e
parent 0 2e8eeb919028
equal deleted inserted replaced
2:87cfa131b535 3:e7e0ae78773e
    12 # Contributors:
    12 # Contributors:
    13 #
    13 #
    14 # Description:
    14 # Description:
    15 #
    15 #
    16 
    16 
    17 import sys, os, unittest
    17 import os, unittest
    18 import __init__
       
    19 
    18 
    20 ROOT_PATH = os.path.dirname(os.path.abspath(__file__))
    19 ROOT_PATH = os.path.dirname(os.path.abspath(__file__))
    21 
    20 
    22 try:
    21 from cone.public import exceptions, plugin, api, container, utils
    23     from cElementTree import ElementTree
       
    24 except ImportError:
       
    25     try:    
       
    26         from elementtree import ElementTree
       
    27     except ImportError:
       
    28         try:
       
    29             from xml.etree import cElementTree as ElementTree
       
    30         except ImportError:
       
    31             from xml.etree import ElementTree
       
    32 
       
    33 from cone.public import exceptions, plugin, api, container
       
    34 
    22 
    35 from CRMLPlugin.crml_model import *
    23 from CRMLPlugin.crml_model import *
    36 from CRMLPlugin.crml_reader import CrmlReader
    24 from CRMLPlugin.crml_reader import CrmlReader
    37 
    25 
    38 class TestCrmlReader(unittest.TestCase):
    26 class TestCrmlReader(unittest.TestCase):
    41     
    29     
    42     def setUp(self):
    30     def setUp(self):
    43         self.reader = CrmlReader()
    31         self.reader = CrmlReader()
    44     
    32     
    45     def assert_read_access_equals(self, data, expected):
    33     def assert_read_access_equals(self, data, expected):
    46         etree = ElementTree.fromstring(data)
    34         etree = utils.etree.fromstring(data)
    47         access = self.reader.read_access(etree)
    35         access = self.reader.read_access(etree)
    48         self.assertEquals(expected, access)
    36         self.assertEquals(expected, access)
    49     
    37     
    50     def test_read_access(self):
    38     def test_read_access(self):
    51         data = """<?xml version="1.0"?><test/>"""
    39         data = """<?xml version="1.0"?><test/>"""
    57                     <access type='W' capabilities="WriteDeviceData" sid="0x87654321"/>
    45                     <access type='W' capabilities="WriteDeviceData" sid="0x87654321"/>
    58                 </test>
    46                 </test>
    59                 """ % self.NAMESPACE
    47                 """ % self.NAMESPACE
    60         self.assert_read_access_equals(data,
    48         self.assert_read_access_equals(data,
    61             CrmlAccess(cap_rd='AlwaysPass', cap_wr='WriteDeviceData', sid_rd='0x12345678', sid_wr='0x87654321'))
    49             CrmlAccess(cap_rd='AlwaysPass', cap_wr='WriteDeviceData', sid_rd='0x12345678', sid_wr='0x87654321'))
    62     
    50 
       
    51     def test_get_refs(self):
       
    52         data = """<?xml version="1.0"?>
       
    53                 <repository xmlns='%s'>
       
    54                     <access type='R' capabilities="AlwaysPass" sid="0x12345678"/>
       
    55                     <access type='W' capabilities="WriteDeviceData" sid="0x87654321"/>
       
    56                     <key ref="Feature1/IntSetting" name="Int setting" int="0x00000001" type="int" readOnly="false" backup="true">
       
    57                         <access type="R" capabilities="AlwaysPass"/>
       
    58                     </key>
       
    59                 </repository>
       
    60                 """ % self.NAMESPACE
       
    61         etree = utils.etree.fromstring(data)
       
    62         repo = self.reader.read_repository(etree)
       
    63         self.assertEquals(repo.get_refs(), ['Feature1.IntSetting'])
       
    64         
       
    65         data = """<?xml version="1.0"?>
       
    66                 <repository xmlns='%s'>
       
    67                     <access type='R' capabilities="AlwaysPass" sid="0x12345678"/>
       
    68                     <access type='W' capabilities="WriteDeviceData" sid="0x87654321"/>
       
    69                 </repository>
       
    70                 """ % self.NAMESPACE
       
    71         etree = utils.etree.fromstring(data)
       
    72         repo = self.reader.read_repository(etree)
       
    73         self.assertEquals(repo.get_refs(), [])
       
    74         
       
    75 
       
    76         
    63     def test_read_duplicate_access(self):
    77     def test_read_duplicate_access(self):
    64         data = """<?xml version="1.0"?>
    78         data = """<?xml version="1.0"?>
    65                 <test xmlns='%s'>
    79                 <test xmlns='%s'>
    66                     <access type='R' capabilities="ReadDeviceData" sid="0x12345678"/>
    80                     <access type='R' capabilities="ReadDeviceData" sid="0x12345678"/>
    67                     <access type='W' capabilities="WriteDeviceData" sid="0x87654321"/>
    81                     <access type='W' capabilities="WriteDeviceData" sid="0x87654321"/>
    72         self.assert_read_access_equals(data,
    86         self.assert_read_access_equals(data,
    73             CrmlAccess(cap_rd='ReadDeviceData', cap_wr='WriteDeviceData', sid_rd='0x12345678', sid_wr='0x87654321'))
    87             CrmlAccess(cap_rd='ReadDeviceData', cap_wr='WriteDeviceData', sid_rd='0x12345678', sid_wr='0x87654321'))
    74     
    88     
    75     
    89     
    76     def read_key_from_xml(self, data):
    90     def read_key_from_xml(self, data):
    77         etree = ElementTree.fromstring(data)
    91         etree = utils.etree.fromstring(data)
    78         return self.reader.read_key(etree)
    92         return self.reader.read_key(etree)
    79         
    93         
    80     def assert_read_key_equals(self, data, expected):
    94     def assert_read_key_equals(self, data, expected):
    81         self.assertEquals(expected, self.read_key_from_xml(data))
    95         self.assertEquals(expected, self.read_key_from_xml(data))
    82     
    96     
    94         # Required attribute 'ref' missing
   108         # Required attribute 'ref' missing
    95         data = '<key xmlns="%s" name="Foobar setting" int="0x01020304" type="real"/>' % self.NAMESPACE
   109         data = '<key xmlns="%s" name="Foobar setting" int="0x01020304" type="real"/>' % self.NAMESPACE
    96         self.assertRaises(exceptions.ParseError, self.read_key_from_xml, data)
   110         self.assertRaises(exceptions.ParseError, self.read_key_from_xml, data)
    97     
   111     
    98     def assert_read_bitmask_key_equals(self, data, expected):
   112     def assert_read_bitmask_key_equals(self, data, expected):
    99         etree = ElementTree.fromstring(data)
   113         etree = utils.etree.fromstring(data)
   100         key = self.reader.read_bitmask_key(etree)
   114         key = self.reader.read_bitmask_key(etree)
   101         self.assertEquals(expected, key)
   115         self.assertEquals(expected, key)
   102     
   116     
   103     def test_read_bitmask_key(self):
   117     def test_read_bitmask_key(self):
   104         data = """
   118         data = """
   120                            bits      = [CrmlBit(ref='BitmaskTest.Bit0', index=1),
   134                            bits      = [CrmlBit(ref='BitmaskTest.Bit0', index=1),
   121                                         CrmlBit(ref='BitmaskTest.Bit3', index=4),
   135                                         CrmlBit(ref='BitmaskTest.Bit3', index=4),
   122                                         CrmlBit(ref='BitmaskTest.Bit5', index=6, invert=True)]))
   136                                         CrmlBit(ref='BitmaskTest.Bit5', index=6, invert=True)]))
   123     
   137     
   124     def assert_read_key_range_equals(self, data, expected):
   138     def assert_read_key_range_equals(self, data, expected):
   125         etree = ElementTree.fromstring(data)
   139         etree = utils.etree.fromstring(data)
   126         key = self.reader.read_key_range(etree)
   140         key = self.reader.read_key_range(etree)
   127         self.assertEquals(expected, key)
   141         self.assertEquals(expected, key)
   128     
   142     
   129     def test_read_key_range(self):
   143     def test_read_key_range(self):
   130         data = """
   144         data = """
   155                          subkeys=[CrmlKeyRangeSubKey(ref='StringSubSetting', name='String', int='0x0001', type='string8'),
   169                          subkeys=[CrmlKeyRangeSubKey(ref='StringSubSetting', name='String', int='0x0001', type='string8'),
   156                                   CrmlKeyRangeSubKey(ref='IntSubSetting', name='Int', int='0x0002', type='int'),
   170                                   CrmlKeyRangeSubKey(ref='IntSubSetting', name='Int', int='0x0002', type='int'),
   157                                   CrmlKeyRangeSubKey(ref='IntSubSetting2', name='Int2', int='0x0003', type='int')]))
   171                                   CrmlKeyRangeSubKey(ref='IntSubSetting2', name='Int2', int='0x0003', type='int')]))
   158     
   172     
   159     def assert_read_repo_equals(self, data, expected):
   173     def assert_read_repo_equals(self, data, expected):
   160         etree = ElementTree.fromstring(data)
   174         etree = utils.etree.fromstring(data)
   161         key = self.reader.read_repository(etree)
   175         key = self.reader.read_repository(etree)
   162         self.assertEquals(expected, key)
   176         self.assertEquals(expected, key)
   163     
   177     
   164     def test_read_empty_repository(self):
   178     def test_read_empty_repository(self):
   165         data = """<?xml version="1.0"?>
   179         data = """<?xml version="1.0"?>