configurationengine/source/plugins/symbian/ConeCRMLPlugin/CRMLPlugin/tests/unittest_crml_writer.py
changeset 0 2e8eeb919028
child 3 e7e0ae78773e
equal deleted inserted replaced
-1:000000000000 0:2e8eeb919028
       
     1 #
       
     2 # Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3 # All rights reserved.
       
     4 # This component and the accompanying materials are made available
       
     5 # under the terms of "Eclipse Public License v1.0"
       
     6 # which accompanies this distribution, and is available
       
     7 # at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 #
       
     9 # Initial Contributors:
       
    10 # Nokia Corporation - initial contribution.
       
    11 #
       
    12 # Contributors:
       
    13 #
       
    14 # Description:
       
    15 #
       
    16 
       
    17 import sys, os, unittest, logging
       
    18 import __init__
       
    19 
       
    20 ROOT_PATH = os.path.dirname(os.path.abspath(__file__))
       
    21 
       
    22 from cone.public import exceptions, plugin, api, container
       
    23 
       
    24 from CRMLPlugin.crml_model import *
       
    25 from CRMLPlugin.crml_writer import CrmlTxtWriter
       
    26 
       
    27 log = logging.getLogger('unittest_crml_writer')
       
    28 
       
    29 FEATURES = {
       
    30 #   Ref                    Type         Value (+ optionally orig. value) 
       
    31     'Foo.Int'           : ('int',       5,      '5'),
       
    32     'Foo.Real'          : ('real',      5.5,    '5.5'),
       
    33     'Foo.String'        : ('string',    'Test'),
       
    34     'Foo.UnicodeString' : ('string',    u'100\u20ac'),
       
    35     'Foo.Bit1'          : ('boolean',   True,   'true'),
       
    36     'Foo.Bit2'          : ('boolean',   False,  'false'),
       
    37     'Foo.Bit3'          : ('boolean',   True,   '1'),
       
    38     'Foo.Bit4'          : ('boolean',   False,  '0'),
       
    39     'Foo.Bit5'          : ('boolean',   True,   '1'),
       
    40     'Foo.Bit6'          : ('boolean',   False,  '0'),
       
    41     'Foo.Seq.Int'       : ('int',       ['1', '2', '3']),
       
    42     'Foo.Seq.Real'      : ('real',      ['0.1', '0.2', '0.3']),
       
    43     'Foo.Seq.String'    : ('string',    ['Test1', 'Test2', 'Test3']),
       
    44 }
       
    45 
       
    46 class Mock(object):
       
    47     pass
       
    48 
       
    49 class MockFeature(object):
       
    50     def __init__(self, ref):
       
    51         self.ref = ref
       
    52     def get_value(self):
       
    53         return FEATURES[self.ref][1]
       
    54     def get_original_value(self):
       
    55         val = FEATURES[self.ref]
       
    56         if len(val) == 3:   return val[2]
       
    57         else:               return val[1]
       
    58     def get_type(self):
       
    59         return FEATURES[self.ref][0]
       
    60 
       
    61 class MockConfiguration(object):
       
    62     def get_default_view(self):
       
    63         dview = Mock()
       
    64         dview.get_feature = lambda ref: MockFeature(ref)
       
    65         return dview
       
    66 
       
    67 class TestCrmlTxtWriter(unittest.TestCase):
       
    68     def setUp(self):
       
    69         self.writer = CrmlTxtWriter(MockConfiguration(), log)
       
    70     
       
    71     def test_write_access(self):
       
    72         def check(acc, expected):
       
    73             actual = self.writer.get_access_line(acc)
       
    74             self.assertEquals(expected, actual)
       
    75         
       
    76         check(CrmlAccess(), '')
       
    77         check(CrmlAccess(cap_rd="AlwaysPass"), 'cap_rd=alwayspass')
       
    78         check(CrmlAccess(cap_wr="AlwaysPass"), 'cap_wr=alwayspass')
       
    79         check(CrmlAccess(cap_rd="ReadDeviceData", cap_wr="WriteDeviceData"),
       
    80               'cap_rd=ReadDeviceData cap_wr=WriteDeviceData')
       
    81         check(CrmlAccess(sid_rd="0x12345678", sid_wr="0x87654321"),
       
    82               'sid_rd=0x12345678 sid_wr=0x87654321')
       
    83         check(CrmlAccess(cap_rd="ReadDeviceData", cap_wr="WriteDeviceData", sid_rd="0x12345678", sid_wr="0x87654321"),
       
    84               'sid_rd=0x12345678 cap_rd=ReadDeviceData sid_wr=0x87654321 cap_wr=WriteDeviceData')
       
    85     
       
    86     def test_write_simple_key(self):
       
    87         def check(key, expected):
       
    88             key_line = self.writer.get_cenrep_entries(key)[0]
       
    89             actual = self.writer.get_cenrep_entry_line(key_line)
       
    90             self.assertEquals(expected, actual)
       
    91     
       
    92         check(CrmlSimpleKey(ref='Foo.Int', int='0x01020304'),
       
    93               '0x1020304 int 5 0')
       
    94         check(CrmlSimpleKey(ref='Foo.Int', int='0x01020304', backup=True),
       
    95               '0x1020304 int 5 16777216')
       
    96         check(CrmlSimpleKey(ref='Foo.Int', int='0x01020304', backup=True, access=CrmlAccess(cap_rd='AlwaysPass', cap_wr='AlwaysFail')),
       
    97               '0x1020304 int 5 16777216 cap_rd=alwayspass cap_wr=alwaysfail')
       
    98 
       
    99 
       
   100 class TestKeyRange(unittest.TestCase):
       
   101     
       
   102     def test_get_shift_count_with_small_range(self):
       
   103         self.assertEquals(CrmlTxtWriter.get_range_shift(0xff00), 8)
       
   104 
       
   105     def test_get_shift_count_with_medium_range(self):
       
   106         self.assertEquals(CrmlTxtWriter.get_range_shift(0xff000), 12)
       
   107 
       
   108     def test_get_shift_count_with_larger_range(self):
       
   109         self.assertEquals(CrmlTxtWriter.get_range_shift(0xff0000), 16)
       
   110 
       
   111     def test_get_shift_count_with_split_range(self):
       
   112         self.assertEquals(CrmlTxtWriter.get_range_shift(0xfc00), 10)
       
   113 
       
   114     def test_get_range_with_larger_range(self):
       
   115         self.assertEquals(CrmlTxtWriter.get_range(0xff0000), 0xffff)
       
   116         self.assertEquals(CrmlTxtWriter.get_range(0xff000), 0xfff)
       
   117         self.assertEquals(CrmlTxtWriter.get_range(0xff00), 0xff)
       
   118         self.assertEquals(CrmlTxtWriter.get_range(0xfc0000), 0x3ffff)
       
   119 
       
   120     def test_get_index_with_whole_range_00(self):
       
   121         self.assertEquals(CrmlTxtWriter.get_index(0x0,2, 0xff0000,0,0), 0x20000)
       
   122         self.assertEquals(CrmlTxtWriter.get_index(0x0,2, 0xff0000,0,1), 0x20001)
       
   123         self.assertEquals(CrmlTxtWriter.get_index(0x0,2, 0xff0000,0,2), 0x20002)
       
   124         self.assertEquals(CrmlTxtWriter.get_index(0x0,2, 0xff0000,0,3), 0x20003)
       
   125         self.assertEquals(CrmlTxtWriter.get_index(0x0,2, 0xff0000,0,4), 0x20004)
       
   126         self.assertEquals(CrmlTxtWriter.get_index(0x0,2, 0xff0000,0,5), 0x20005)
       
   127 
       
   128     def test_get_index_with_whole_range_10(self):
       
   129         self.assertEquals(CrmlTxtWriter.get_index(0x0,2, 0xff0000,1,0), 0x30000)
       
   130         self.assertEquals(CrmlTxtWriter.get_index(0x0,2, 0xff0000,1,1), 0x30001)
       
   131         self.assertEquals(CrmlTxtWriter.get_index(0x0,2, 0xff0000,1,2), 0x30002)
       
   132         self.assertEquals(CrmlTxtWriter.get_index(0x0,2, 0xff0000,1,3), 0x30003)
       
   133         self.assertEquals(CrmlTxtWriter.get_index(0x0,2, 0xff0000,1,4), 0x30004)
       
   134         self.assertEquals(CrmlTxtWriter.get_index(0x0,2, 0xff0000,1,5), 0x30005)
       
   135 
       
   136     def test_get_index_with_whole_range_f(self):
       
   137         self.assertEquals(CrmlTxtWriter.get_index(0x0,2, 0xff0000,16,0), 0x120000)
       
   138         self.assertEquals(CrmlTxtWriter.get_index(0x0,2, 0xff0000,16,1), 0x120001)
       
   139         self.assertEquals(CrmlTxtWriter.get_index(0x0,2, 0xff0000,16,2), 0x120002)
       
   140         self.assertEquals(CrmlTxtWriter.get_index(0x0,2, 0xff0000,16,3), 0x120003)
       
   141         self.assertEquals(CrmlTxtWriter.get_index(0x0,2, 0xff0000,16,4), 0x120004)
       
   142         
       
   143     def test_get_seqid_with_whole_range_00(self):
       
   144         self.assertEquals(CrmlTxtWriter.get_seqid(0x0,2, 0xff0000,0x20000), 0)
       
   145         self.assertEquals(CrmlTxtWriter.get_seqid(0x0,2, 0xff0000,0x20004), 0)
       
   146         self.assertEquals(CrmlTxtWriter.get_seqid(0x0,2, 0xff0000,0x30001), 1)
       
   147         self.assertEquals(CrmlTxtWriter.get_seqid(0x0,2, 0xff0000,0x120000), 16)
       
   148 
       
   149     def test_get_subseqid(self):
       
   150         self.assertEquals(CrmlTxtWriter.get_subseqid(0x0,0, 0xff0000,0x4), 4)
       
   151         self.assertEquals(CrmlTxtWriter.get_subseqid(0x0,2, 0xff0000,0x120004), 4)
       
   152         self.assertEquals(CrmlTxtWriter.get_subseqid(0x0,2, 0xff0000,0x120012), 18)
       
   153         self.assertEquals(CrmlTxtWriter.get_subseqid(0xcf000002,2, 0xff0000,0xcf000002), 0)
       
   154         self.assertEquals(CrmlTxtWriter.get_subseqid(0xcf000002,2, 0xff0000,0xcf000006), 4)
       
   155         self.assertEquals(CrmlTxtWriter.get_subseqid(0xcf000002,2, 0xff0000,0xcf00000f), 13)
       
   156         self.assertEquals(CrmlTxtWriter.get_subseqid(0xcf000002,2, 0xff0000,0xcf020002), 0)
       
   157 
       
   158     def test_get_index_with_example_range_f(self):
       
   159         self.assertEquals(CrmlTxtWriter.get_index(0xcf000002,2, 0xff0000,0,0), 0xcf020002)
       
   160         self.assertEquals(CrmlTxtWriter.get_index(0xcf000002,2, 0xff0000,0,1), 0xcf020003)
       
   161         self.assertEquals(CrmlTxtWriter.get_index(0xcf000002,2, 0xff0000,0,2), 0xcf020004)
       
   162         self.assertEquals(CrmlTxtWriter.get_index(0xcf000002,2, 0xff0000,0,3), 0xcf020005)
       
   163         self.assertEquals(CrmlTxtWriter.get_index(0xcf000002,2, 0xff0000,0,4), 0xcf020006)
       
   164         self.assertEquals(CrmlTxtWriter.get_index(0xcf000002,2, 0xff0000,0,5), 0xcf020007)
       
   165         self.assertEquals(CrmlTxtWriter.get_index(0xcf000002,2, 0xff0000,1,0), 0xcf030002)
       
   166         self.assertEquals(CrmlTxtWriter.get_index(0xcf000002,2, 0xff0000,1,3), 0xcf030005)
       
   167         self.assertEquals(CrmlTxtWriter.get_index(0xcf000002,2, 0xff0000,1,5), 0xcf030007)
       
   168         self.assertEquals(CrmlTxtWriter.get_index(0xcf000002,2, 0xff0000,16,0), 0xcf120002)
       
   169         self.assertEquals(CrmlTxtWriter.get_index(0xcf000002,2, 0xff0000,16,3), 0xcf120005)
       
   170         self.assertEquals(CrmlTxtWriter.get_index(0xcf000002,2, 0xff0000,16,5), 0xcf120007)
       
   171