configurationengine/source/plugins/symbian/ConeHCRPlugin/hcrplugin/tests/unittest_hcrml_reader.py
author terytkon
Thu, 11 Mar 2010 17:04:37 +0200
changeset 0 2e8eeb919028
child 3 e7e0ae78773e
permissions -rw-r--r--
Adding EPL version of configurationengine.
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 os, shutil
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    19
import sys
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    20
import __init__
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    21
import re
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    22
import logging
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    23
import xml.parsers.expat
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    24
import codecs
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    25
from hcrplugin.hcr_exceptions import *
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    26
from hcrplugin.hcrrepository import HcrRecord, HcrRepository
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    27
from hcrplugin.hcrml_parser import *
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    28
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    29
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    30
from testautomation.utils import hex_to_bindata
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    31
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    32
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    33
from cone.public import api, exceptions
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    34
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    35
try:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    36
    from cElementTree import ElementTree
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    37
except ImportError:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    38
    try:    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    39
        from elementtree import ElementTree
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    40
    except ImportError:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    41
        try:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    42
            from xml.etree import cElementTree as ElementTree
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    43
        except ImportError:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    44
            from xml.etree import ElementTree
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    45
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    46
from cone.public import exceptions,plugin,utils,api
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    47
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    48
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    49
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    50
ROOT_PATH = os.path.dirname(os.path.abspath(__file__))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    51
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    52
NAMESPACE = 'http://www.symbianfoundation.org/xml/hcrml/1'
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    53
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    54
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    55
class DummyConfiguration(object):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    56
    RESOURCES = {
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    57
        'layer1/dummy.hcrml'    : '<hcr xmlns="%s"><category name="Cat0" uid="0"/></hcr>' % NAMESPACE,
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    58
        'layer1/dummy1.hcrml'   : '<hcr xmlns="%s"><category name="Cat1" uid="1"/></hcr>' % NAMESPACE,
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    59
        'layer2/dummy2.hcrml'   : '<hcr xmlns="%s"><category name="Cat2" uid="2"/></hcr>' % NAMESPACE,
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    60
        'layer2/dummy3.hcrml'   : '<hcr xmlns="%s"><category name="Cat3" uid="3"/></hcr>' % NAMESPACE,
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    61
        'layer3/dummy.gcfml'    : '',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    62
        'layer3/dummy.crml'     : '',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    63
        'layer4/dummy.ruleml'   : '',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    64
        'layer4/hcr_dat.hcrml'  : '<hcr xmlns="%s"><output file="some/test/hcr.dat" type="hcr"><include ref="*.hcrml"/></output></hcr>' % NAMESPACE,
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    65
    }
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    66
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    67
    def list_resources(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    68
        return sorted(self.RESOURCES.keys())
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    69
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    70
    def get_resource(self, res_ref):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    71
        class DummyResource(object):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    72
            def __init__(self, data):   self.data = data
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    73
            def read(self):             return self.data
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    74
            def close(self):            pass
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    75
        return DummyResource(self.RESOURCES[res_ref])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    76
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    77
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    78
class TestHCRHeader(unittest.TestCase):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    79
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    80
    def setUp(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    81
        self.reader = HcrmlReader(None, None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    82
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    83
    def test_read_hcrml_output(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    84
        xml = '<hcr xmlns="%s"><output file="some/test/file.h" type="header"/></hcr>' % NAMESPACE
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    85
        self.reader.doc = ElementTree.fromstring(xml)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    86
        output = self.reader.read_hcrml_output()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    87
        self.assertEquals(output.type, 'header')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    88
        self.assertEquals(output.file, 'some/test/file.h')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    89
        self.assertEquals(output.version, None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    90
        self.assertEquals(output.read_only, None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    91
        self.assertEquals(output.categories, [])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    92
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    93
    def _run_test_read_invalid_hcrml_output(self, xml, expected_exception):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    94
        try:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    95
            self.reader.doc = ElementTree.fromstring(xml)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    96
            self.reader.read_hcrml_output()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    97
            self.fail("Expected exception not raised!")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    98
        except expected_exception:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    99
            pass
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   100
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   101
    def test_read_invalid_hcrml_output(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   102
        xml = '<hcr xmlns="%s"><output file="some/test/file.h"/></hcr>' % NAMESPACE
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   103
        self._run_test_read_invalid_hcrml_output(xml, NoTypeDefinedInOutPutTagError)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   104
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   105
        xml = '<hcr xmlns="%s"><output file="some/test/file.h" type="foobar"/></hcr>' % NAMESPACE
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   106
        self._run_test_read_invalid_hcrml_output(xml, InvalidTypeDefinedInOutPutTagError)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   107
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   108
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   109
    def test_read_hcrml_output_with_include(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   110
        config = DummyConfiguration()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   111
        resource_ref =  'layer4/hcr_dat.hcrml'
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   112
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   113
        self.reader = HcrmlReader(resource_ref, config)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   114
        self.reader.doc = ElementTree.fromstring(config.get_resource(resource_ref).read())
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   115
        output = self.reader.read_hcrml_output()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   116
        self.assertEquals(output.type, 'hcr')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   117
        self.assertEquals(output.file, 'some/test/hcr.dat')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   118
        self.assertEquals(
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   119
            sorted([cat.category_uid for cat in output.categories]),
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   120
            sorted([0, 1, 2, 3]))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   121
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   122
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   123
    def test_read_hcrml_output_with_overlapping_includes(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   124
        config = DummyConfiguration()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   125
        resource_ref =  'layer4/hcr_dat.hcrml'
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   126
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   127
        XML = """<hcr xmlns="%s">
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   128
            <output file="hcr.dat" type="hcr">
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   129
                <include ref="dummy.hcrml"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   130
                <include ref="dummy2.hcrml"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   131
                <include ref="layer1/*.hcrml"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   132
            </output>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   133
        </hcr>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   134
        """% NAMESPACE
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   135
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   136
        self.reader = HcrmlReader(resource_ref, config)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   137
        self.reader.doc = ElementTree.fromstring(XML)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   138
        output = self.reader.read_hcrml_output()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   139
        self.assertEquals(output.type, 'hcr')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   140
        self.assertEquals(output.file, 'hcr.dat')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   141
        self.assertEquals(
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   142
            sorted([cat.category_uid for cat in output.categories]),
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   143
            sorted([0, 1, 2]))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   144
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   145
    def test_read_hcrml_category(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   146
        xml = '<category name="KCatGPIO" uid="0x10001234"/>'
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   147
        etree = ElementTree.fromstring(xml)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   148
        category = self.reader.read_hrcml_category(etree)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   149
        self.assertEquals(category.name, 'KCatGPIO')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   150
        self.assertEquals(category.category_uid, 0x10001234)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   151
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   152
    def _run_test_read_invalid_hcrml_category(self, xml, expected_exception):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   153
        try:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   154
            etree = ElementTree.fromstring(xml)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   155
            setting = self.reader.read_hrcml_category(etree)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   156
            self.fail("Expected exception not raised!")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   157
        except expected_exception:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   158
            pass
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   159
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   160
    def test_read_invalid_hcrml_category(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   161
        xml = '<category name="KCatGPIO"/>'
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   162
        self._run_test_read_invalid_hcrml_category(xml, NoCategoryUIDInHcrmlFileError)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   163
        xml = '<category uid="0x10001234"/>'
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   164
        self._run_test_read_invalid_hcrml_category(xml, NoCategoryNameInHcrmlFileError)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   165
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   166
    def test_read_hcrml_setting(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   167
        xml = '<setting ref="hcrexample.DebounceInterval" name="KElmGPIO_DebounceInterval" type="int32" id="0"/>'
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   168
        etree = ElementTree.fromstring(xml)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   169
        setting = self.reader.read_hcrml_setting(etree)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   170
        self.assertEquals(setting.ref, 'hcrexample.DebounceInterval')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   171
        self.assertEquals(setting.name, 'KElmGPIO_DebounceInterval')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   172
        self.assertEquals(setting.type, 'int32')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   173
        self.assertEquals(setting.id, 0)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   174
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   175
    def _run_test_read_invalid_hcrml_setting(self, xml, expected_exception):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   176
        try:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   177
            etree = ElementTree.fromstring(xml)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   178
            setting = self.reader.read_hcrml_setting(etree)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   179
            self.fail("Expected exception not raised!")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   180
        except expected_exception:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   181
            pass
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   182
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   183
    def test_read_invalid_hcrml_setting(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   184
        xml = '<setting name="xyz" type="int32" id="0"/>'
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   185
        self._run_test_read_invalid_hcrml_setting(xml, NoRefInHcrmlFileError)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   186
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   187
        xml = '<setting ref="x.y" name="xyz" id="0"/>'
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   188
        self._run_test_read_invalid_hcrml_setting(xml, NoTypeAttributeInSettingHcrmlFileError)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   189
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   190
        xml = '<setting ref="x.y" type="int32" id="0"/>'
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   191
        self._run_test_read_invalid_hcrml_setting(xml, NoNameAttributeInSettingHcrmlFileError)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   192
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   193
        xml = '<setting ref="x.y" name="xyz" type="int32"/>'
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   194
        self._run_test_read_invalid_hcrml_setting(xml, NoIdAttributeInSettingHcrmlFileError)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   195
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   196
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   197
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   198
    def test_read_hcrml_flag(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   199
        xml = '<flags Uninitialised="0" Modifiable="0" Persistent="0"/>'
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   200
        etree = ElementTree.fromstring(xml)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   201
        flag = self.reader.read_hrcml_flags(etree)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   202
        self.assertEquals(flag.Uninitialised, '0')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   203
        self.assertEquals(flag.Modifiable, '0')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   204
        self.assertEquals(flag.Persistent, '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_filter_file_list_by_include_ref(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   207
        lst = [
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   208
            'layer1/dummy.hcrml',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   209
            'dummy.hcrml',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   210
            'layer1/dummy1.hcrml',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   211
            'layer2/dummy2.hcrml',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   212
            'layer2/dummy3.hcrml',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   213
            'layer3/test_dummy.hcrml',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   214
            'layer3/dummy.gcfml',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   215
            'layer3/dummy.crml',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   216
            'layer4/hcr_dat.hcrml',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   217
        ]
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   218
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   219
        filt = self.reader.filter_file_list_by_include_ref
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   220
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   221
        self.assertEquals(sorted(filt(lst, '*.hcrml')), sorted([
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   222
            'dummy.hcrml',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   223
            'layer1/dummy.hcrml',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   224
            'layer1/dummy1.hcrml',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   225
            'layer2/dummy2.hcrml',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   226
            'layer2/dummy3.hcrml',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   227
            'layer3/test_dummy.hcrml',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   228
            'layer4/hcr_dat.hcrml',]))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   229
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   230
        self.assertEquals(sorted(filt(lst, 'dummy.hcrml')), sorted([
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   231
            'dummy.hcrml',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   232
            'layer1/dummy.hcrml',]))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   233
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   234
        self.assertEquals(sorted(filt(lst, 'dummy*.hcrml')), sorted([
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   235
            'dummy.hcrml',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   236
            'layer1/dummy.hcrml',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   237
            'layer1/dummy1.hcrml',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   238
            'layer2/dummy2.hcrml',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   239
            'layer2/dummy3.hcrml',]))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   240
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   241
        self.assertEquals(sorted(filt(lst, 'layer1/*')), sorted([
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   242
            'layer1/dummy.hcrml',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   243
            'layer1/dummy1.hcrml',]))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   244
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   245
        self.assertEquals(sorted(filt(lst, 'layer4/*')), sorted([
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   246
            'layer4/hcr_dat.hcrml']))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   247
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   248
        self.assertEquals(sorted(filt(lst, 'hcr_dat.hcrml')), sorted([
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   249
            'layer4/hcr_dat.hcrml']))