configurationengine/source/cone/confml/tests/unittest_persistentconfml.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
"""
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    18
Test the CPF root file parsing routines
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    19
"""
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    20
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    21
import unittest
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    22
import string
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    23
import sys
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    24
import os
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    25
import shutil
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    26
import __init__
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    27
try:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    28
    from cElementTree import ElementTree
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    29
except ImportError:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    30
    try:    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    31
        from elementtree import ElementTree
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    32
    except ImportError:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    33
        try:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    34
            from xml.etree import cElementTree as ElementTree
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    35
        except ImportError:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    36
            from xml.etree import ElementTree
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    37
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    38
from cone.public import api, exceptions, persistence
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    39
from cone.storage import filestorage
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    40
from cone.confml import persistentconfml, model
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    41
from testautomation.base_testcase import BaseTestCase
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    42
ROOT_PATH = os.path.dirname(os.path.abspath(__file__))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    43
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    44
testdata  = os.path.join(ROOT_PATH,'data')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    45
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    46
simplerootxml = \
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    47
'''<?xml version="1.0" encoding="UTF-8"?>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    48
<configuration xmlns="http://www.s60.com/xml/confml/1" xmlns:xi="http://www.w3.org/2001/xinclude" name="simple" version="1">
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    49
  <xi:include href="platform/s60/confml/test.confml#/"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    50
</configuration>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    51
'''
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    52
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    53
newincludexml = '''<?xml version="1.0" encoding="UTF-8"?>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    54
<configuration xmlns="http://www.s60.com/xml/confml/1" xmlns:xi="http://www.w3.org/2001/XInclude" name="simple" version="1">
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    55
  <xi:include href="platform/s60/confml/test.confml"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    56
</configuration>'''
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    57
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    58
complexrootxml = '''<?xml version="1.0" encoding="UTF-8"?>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    59
<configuration xmlns="http://www.s60.com/xml/confml/1" xmlns:xi="http://www.w3.org/2001/xinclude" name="simple" version="1">
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    60
  <xi:include href="platform/s60/confml/test.confml#/"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    61
  <xi:include href="platform/jallaa/confml/root.confml#/"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    62
  <xi:include href="configB/confml/configB.confml#/"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    63
  <xi:include href="ncp33/prod/confml/root.confml#/"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    64
</configuration>'''
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
morestuff='''<?xml version="1.0" encoding="UTF-8"?>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    68
<configuration xmlns="http://www.s60.com/xml/confml/1" xmlns:xi="http://www.w3.org/2001/xinclude" name="foobar" version="1">
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    69
  <meta xmlns:cv="http://www.nokia.com/xml/cpf-id/1">
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    70
    <cv:configuration-property name="coreplat_name" value="abc_123" />
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    71
    <cv:configuration-property name="product_name" value="qwerty" />
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    72
    <owner>Variant1 creator</owner>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    73
    <origin>somestorage:somelocation_123/and/path</origin>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    74
    <target>proto_b2</target>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    75
  </meta>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    76
  <desc>This is a configuration for Product1 Region1 Variant1 </desc>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    77
  <xi:include href="platform/s60/confml/root.confml"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    78
  <xi:include href="ncp11/confml/jallaa.confml"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    79
  <xi:include href="ncp11/prodX/confml/root.confml"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    80
  <xi:include href="regional/japan/confml/root.confml"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    81
</configuration>'''
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    82
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    83
actualconfml='''<?xml version="1.0" encoding="UTF-8"?>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    84
<configuration xmlns="http://www.s60.com/xml/confml/1" name="accesspoints">
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    85
  <feature ref="KCRUidApEngineLV" name="KCRUidApEngineLV">
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    86
    <desc></desc>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    87
    <setting ref="KApEngineLVFlags" name="KApEngineLVFlags"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    88
  </feature>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    89
  <feature ref="KCRUidApSettingsHandlerUiLV" name="KCRUidApSettingsHandlerUiLV">
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    90
    <desc></desc>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    91
    <setting ref="KApSettingsHandlerUiLVFlags" name="KApSettingsHandlerUiLVFlags"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    92
    <setting ref="KAIStatusPaneLayout" name="Status Pane Layout" type="selection">
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    93
      <desc>Status pane layout setting. 0 = normal, 1 = flat, 2 = hidden</desc>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    94
      <option name="normal" value="0"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    95
      <option name="flat" value="1"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    96
      <option name="hidden" value="2"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    97
    </setting>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    98
  </feature>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    99
  <feature name="Customer Menu" ref="CVC_OperatorMenu">
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   100
    <desc>Often referred to as the Operator Menu, the Customer Menu is an application that launches the browser as an embedded application with a predefined URL as parameter. The URL defines the xHTML Startup page that is shown when the Customer Menu application is launched, for example www.customername.com/index.html. The URL also defines the customer domain URL path, for example www.customername.com/. All user-browsed xHTML pages belonging to that path are automatically stored in the Customer Menu cache.The Customer Menu application can be configured as a shortcut just like any other application. In Main menu, the Customer Menu is placed by default to 11th position. When the Customer Menu is enabled, Help moves from position 11 to 12 and Apps moves from 12 to 13, which is not visible until the user scrolls the menu cursor.</desc>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   101
       <setting name="Customer Menu icon" ref="CVC_OperatorMenuIconFile" type="file">
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   102
            <desc>Customer menu icon that will be present in Application Grid. Size: 65 x 65 pixels. Format: SVGT (preferred) or BMP. Color depth: 24 bit</desc>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   103
        <localPath/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   104
        <targetPath readOnly="true"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   105
      </setting>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   106
  </feature>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   107
  <data>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   108
    <KCRUidApEngineLV>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   109
      <KApEngineLVFlags>0</KApEngineLVFlags>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   110
    </KCRUidApEngineLV>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   111
    <KCRUidApSettingsHandlerUiLV>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   112
      <KApSettingsHandlerUiLVFlags>0</KApSettingsHandlerUiLVFlags>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   113
      <KAIStatusPaneLayout>0</KAIStatusPaneLayout>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   114
    </KCRUidApSettingsHandlerUiLV>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   115
    <CVC_OperatorMenu>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   116
      <CVC_OperatorMenuIconFile>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   117
        <localPath>UI/Customer Menu/Cache</localPath>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   118
      </CVC_OperatorMenuIconFile>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   119
    </CVC_OperatorMenu>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   120
  </data>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   121
  <rfs>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   122
    <KCRUidApEngineLV>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   123
      <KApEngineLVFlags>true</KApEngineLVFlags>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   124
    </KCRUidApEngineLV>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   125
    <KCRUidApSettingsHandlerUiLV>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   126
      <KApSettingsHandlerUiLVFlags>false</KApSettingsHandlerUiLVFlags>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   127
    </KCRUidApSettingsHandlerUiLV>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   128
  </rfs>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   129
</configuration>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   130
'''
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   131
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   132
sequencesettings = \
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   133
'''<?xml version="1.0" encoding="utf-8"?><configuration xmlns="http://www.s60.com/xml/confml/1" name="BrowserBookmarks">
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   134
<feature name="BookmarkItems" ref="BookmarkItems">
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   135
  <setting name="BookmarkItem" ref="BookmarkItem" type="sequence">
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   136
    <setting name="Type Of Bookmark" ref="Type" type="selection">
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   137
      <desc>This defines the Type of the element created. To create a Folder item - select "Folder". To create a bookmark item - select "Item".</desc>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   138
      <option name="Folder" value="Folder"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   139
      <option name="Item" value="Item"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   140
    </setting>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   141
    <setting name="Name Of The New Entry" ref="Name" type="string">
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   142
      <desc>Text field containing name for the Folder or Bookmark.  Must be unique.</desc>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   143
    </setting>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   144
  </setting>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   145
</feature>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   146
<data>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   147
  <BookmarkItems>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   148
    <BookmarkItem template="true">
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   149
      <Type>Template</Type>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   150
      <Name>Download Applications</Name>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   151
    </BookmarkItem>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   152
    <BookmarkItem>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   153
      <Type>Folder1</Type>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   154
      <Name>Download Applications</Name>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   155
    </BookmarkItem>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   156
    <BookmarkItem>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   157
      <Type>Folder2</Type>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   158
      <Name>Download Images</Name>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   159
    </BookmarkItem>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   160
    <BookmarkItem>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   161
      <Type>Folder3</Type>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   162
    </BookmarkItem>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   163
  </BookmarkItems>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   164
</data>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   165
</configuration>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   166
'''
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   167
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   168
simpleview = \
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   169
'''<?xml version="1.0" encoding="UTF-8"?>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   170
<confml:configuration  xmlns:confml="http://www.s60.com/xml/confml/1" schemaLocation="http://www.s60.com/xml/confml/1 http://www.s60.com/xml/confml/1#//confml2">
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   171
  <feature ref="imaker" name="iMaker Image creation">
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   172
    <setting ref="imagetarget" name="IMAGE_TARGET" type="selection">
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   173
      <option name="core" value="0"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   174
      <option name="rofs2" value="1"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   175
      <option name="rofs3" value="2"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   176
      <option name="rofs4" value="3"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   177
      <option name="uda" value="4"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   178
      <option name="rofs3_uda" value="4"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   179
    </setting>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   180
  </feature>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   181
  <feature ref="imakerapi" name="iMaker API">
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   182
    <setting ref="imagetype" name="IMAGE_TYPE" type="selection">
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   183
      <option name="rnd" value="0"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   184
      <option name="subcon" value="1"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   185
      <option name="prd" value="2"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   186
    </setting>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   187
    <setting ref="rofs3version" name="ROFS3_VERSION" type="string"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   188
    <setting ref="productname" name="PRODUCT_NAME" type="string"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   189
    <setting ref="outputLocation" name="OUTPUT_LOCATION" type="string"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   190
  </feature>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   191
  <data>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   192
    <imaker>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   193
      <imagetarget>2</imagetarget>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   194
    </imaker>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   195
    <imakerapi>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   196
      <imagetype>0</imagetype>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   197
      <rofs3version>V .50.2009.04.0113 RND</rofs3version>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   198
      <productname>myProduct</productname>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   199
      <outputLocation>myProduct</outputLocation>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   200
    </imakerapi>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   201
  </data>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   202
  <confml:view id="imakerimage" name="Image creation">
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   203
    <confml:desc>Image creation related settings</confml:desc>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   204
    <confml:group name="Imageproperties">
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   205
      <confml:desc>Sample Description</confml:desc>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   206
      <confml:setting ref="imakerapi/*"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   207
      <confml:setting ref="imaker/*"/>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   208
    </confml:group>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   209
  </confml:view>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   210
</confml:configuration>
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   211
'''
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   212
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   213
class TestModuleGetters(unittest.TestCase):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   214
    def test_get_reader_for_configuration(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   215
        confread = persistentconfml.get_reader_for_elem("configuration")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   216
        self.assertTrue(isinstance(confread, persistentconfml.ConfigurationReader))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   217
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   218
    def test_get_writer_for_configuration(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   219
        confread = persistentconfml.get_writer_for_class("Configuration")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   220
        self.assertTrue(isinstance(confread, persistentconfml.ConfigurationWriter))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   221
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   222
    def test_get_elemname_from_string(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   223
        self.assertEquals(persistentconfml.get_elemname("{http://www.s60.com/xml/confml/1}configuration")[0],"http://www.s60.com/xml/confml/1")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   224
        self.assertEquals(persistentconfml.get_elemname("{http://www.s60.com/xml/confml/1}configuration")[1],"configuration")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   225
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   226
    def test_get_elemname_from_element_tree(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   227
        root = ElementTree.fromstring(simplerootxml)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   228
        for elem in root.getiterator():
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   229
            (namespace,elemname) = persistentconfml.get_elemname(elem.tag)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   230
        self.assertEquals(elemname,"include")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   231
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   232
    def test_loads(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   233
        config = persistentconfml.loads(simplerootxml)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   234
        self.assertEquals(config.get_name(),"simple")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   235
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   236
    def test_dumps(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   237
        config = api.Configuration("test.confml")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   238
        config.include_configuration('path/to/config.confml')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   239
        dump = persistentconfml.dumps(config)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   240
        elem = ElementTree.fromstring(dump)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   241
        self.assertEquals(elem.get('name'),"test_confml")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   242
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   243
class TestConfigurationParser(unittest.TestCase):    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   244
    def test_load_simple(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   245
        reader = persistentconfml.get_reader_for_elem("configuration")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   246
        obj = reader.loads(ElementTree.fromstring(simplerootxml))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   247
        self.assertEquals(obj.get_ref(),'simple')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   248
        self.assertEquals(obj._list(),['platform__s60__confml__test_confml'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   249
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   250
    def test_load_new_include_confml(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   251
        reader = persistentconfml.get_reader_for_elem("configuration")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   252
        obj = reader.loads(ElementTree.fromstring(newincludexml))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   253
        self.assertEquals(obj._list(),['platform__s60__confml__test_confml'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   254
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   255
    def test_load_complexrootxml(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   256
        reader = persistentconfml.get_reader_for_elem("configuration")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   257
        obj = reader.loads(ElementTree.fromstring(complexrootxml))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   258
        self.assertEquals(obj._list(),['platform__s60__confml__test_confml',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   259
                                        'platform__jallaa__confml__root_confml', 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   260
                                        'configB__confml__configB_confml', 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   261
                                        'ncp33__prod__confml__root_confml'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   262
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   263
    def test_load_morestuff(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   264
        reader = persistentconfml.get_reader_for_elem("configuration")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   265
        obj = reader.loads(ElementTree.fromstring(morestuff))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   266
        self.assertEquals(obj._list(),['_meta','_desc','platform__s60__confml__root_confml', 'ncp11__confml__jallaa_confml', 'ncp11__prodX__confml__root_confml', 'regional__japan__confml__root_confml'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   267
        met = obj.meta
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   268
        self.assertEquals(obj.meta[2].value,'Variant1 creator')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   269
        self.assertEquals(obj.meta[3].value,'somestorage:somelocation_123/and/path')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   270
        self.assertEquals(obj.meta[4].value,'proto_b2')        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   271
        self.assertEquals(obj.meta[0].tag,'configuration-property')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   272
        self.assertEquals(obj.meta[0].value, None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   273
        self.assertEquals(obj.meta[0].ns,'http://www.nokia.com/xml/cpf-id/1')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   274
        self.assertEquals(obj.meta[0].attrs,{"name": "coreplat_name", "value": "abc_123"})        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   275
        self.assertEquals(obj.desc,'This is a configuration for Product1 Region1 Variant1 ')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   276
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   277
    def test_load_morestuff_and_remove_included_configuration(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   278
        reader = persistentconfml.get_reader_for_elem("configuration")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   279
        obj = reader.loads(ElementTree.fromstring(morestuff))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   280
        self.assertEquals(obj.list_configurations(),['platform/s60/confml/root.confml', 'ncp11/confml/jallaa.confml', 'ncp11/prodX/confml/root.confml', 'regional/japan/confml/root.confml'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   281
        obj.remove_configuration('platform/s60/confml/root.confml')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   282
        self.assertEquals(obj.list_configurations(),['ncp11/confml/jallaa.confml', 'ncp11/prodX/confml/root.confml', 'regional/japan/confml/root.confml'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   283
        for configname in obj.list_configurations():
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   284
            obj.remove_configuration(configname)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   285
        self.assertEquals(obj.list_configurations(),[])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   286
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   287
    def test_load_actualconfml(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   288
        reader = persistentconfml.get_reader_for_elem("configuration")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   289
        obj = reader.loads(ElementTree.fromstring(actualconfml))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   290
        self.assertEquals(obj.list_features(),['KCRUidApEngineLV', 'KCRUidApSettingsHandlerUiLV','CVC_OperatorMenu'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   291
        self.assertEquals(obj.list_all_features(),['KCRUidApEngineLV', 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   292
                                                   'KCRUidApEngineLV.KApEngineLVFlags', 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   293
                                                   'KCRUidApSettingsHandlerUiLV', 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   294
                                                   'KCRUidApSettingsHandlerUiLV.KApSettingsHandlerUiLVFlags', 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   295
                                                   'KCRUidApSettingsHandlerUiLV.KAIStatusPaneLayout', 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   296
                                                   'CVC_OperatorMenu', 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   297
                                                   'CVC_OperatorMenu.CVC_OperatorMenuIconFile',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   298
                                                   'CVC_OperatorMenu.CVC_OperatorMenuIconFile.localPath', 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   299
                                                   'CVC_OperatorMenu.CVC_OperatorMenuIconFile.targetPath'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   300
        fea = obj.KCRUidApSettingsHandlerUiLV.KApSettingsHandlerUiLVFlags
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   301
        vset = fea.get_valueset()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   302
        self.assertTrue(fea.get_value() in vset)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   303
        self.assertTrue('0' in obj.KCRUidApSettingsHandlerUiLV.KAIStatusPaneLayout.get_valueset())
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   304
        self.assertTrue('1' in obj.KCRUidApSettingsHandlerUiLV.KAIStatusPaneLayout.get_valueset())
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   305
        for fearef in obj.list_all_features():
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   306
            fea = obj.get_feature(fearef)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   307
            if fea.get_type() == 'int':
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   308
                #print "Feature %s, %s: %s" % (fea.get_type(),fea.get_name(),fea.get_value()) 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   309
                self.assertEquals(fea.get_value(),0)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   310
        self.assertEquals(obj.get_feature('CVC_OperatorMenu.CVC_OperatorMenuIconFile.targetPath').get_value(),None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   311
        self.assertEquals(obj.get_feature('CVC_OperatorMenu.CVC_OperatorMenuIconFile.localPath').get_value(),'UI/Customer Menu/Cache')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   312
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   313
    def test_create_features_with_rfs_data_and_dump_and_load(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   314
        conf = api.Configuration("foo/foo.confml")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   315
        conf.add_feature(api.Feature('feature1'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   316
        conf.add_feature(api.Feature('child1'),'feature1')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   317
        conf.add_feature(api.Feature('child2'),'feature1')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   318
        conf.add_feature(api.Feature('child3'),'feature1')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   319
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   320
        conf.add_data(api.Data(fqr='feature1.child1',attr='rfs',value='true'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   321
        conf.add_data(api.Data(fqr='feature1.child2',attr='rfs',value='false'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   322
        dview = conf.get_default_view()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   323
        self.assertEquals(dview.get_feature('feature1.child1').get_value(), None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   324
        self.assertEquals(dview.get_feature('feature1.child1').get_value('rfs'), 'true')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   325
        self.assertEquals(dview.get_feature('feature1.child2').get_value('rfs'), 'false')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   326
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   327
        dumped = persistentconfml.dumps(conf)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   328
        conf2 = persistentconfml.loads(dumped)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   329
        dview = conf2.get_default_view()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   330
        self.assertEquals(dview.get_feature('feature1.child1').get_value(), None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   331
        self.assertEquals(dview.get_feature('feature1.child1').get_value('rfs'), 'true')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   332
        self.assertEquals(dview.get_feature('feature1.child2').get_value('rfs'), 'false')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   333
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   334
    def test_load_actualconfml_test_rfs_settings(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   335
        reader = persistentconfml.get_reader_for_elem("configuration")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   336
        obj = reader.loads(ElementTree.fromstring(actualconfml))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   337
        self.assertEquals(obj.get_feature('KCRUidApEngineLV.KApEngineLVFlags').rfs,True)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   338
        self.assertEquals(obj.get_feature('KCRUidApSettingsHandlerUiLV.KApSettingsHandlerUiLVFlags').rfs,False)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   339
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   340
    def test_load_sequence_confml(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   341
        reader = persistentconfml.get_reader_for_elem("configuration")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   342
        etree = ElementTree.fromstring(sequencesettings)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   343
        obj = reader.loads(etree)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   344
        dcont = obj.get_data('BookmarkItems')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   345
        dview = obj.get_default_view()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   346
        self.assertEquals(dview.get_feature('BookmarkItems.BookmarkItem').list_features(),['Type', 'Name'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   347
        self.assertEquals(dview.get_feature('BookmarkItems.BookmarkItem').list_all_features(),['Type', 'Name'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   348
        datatable = dview.get_feature('BookmarkItems.BookmarkItem').get_data()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   349
        self.assertEquals(len(datatable), 3)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   350
        self.assertEquals(datatable[0].list_features(), ['Type', 'Name'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   351
        self.assertEquals(datatable[0].get_feature('Name').get_value(), 'Download Applications')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   352
        self.assertEquals(datatable[0][0].get_value(), 'Folder1')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   353
        self.assertEquals(datatable[0][1].get_value(), 'Download Applications')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   354
        self.assertEquals(dview.get_feature('BookmarkItems.BookmarkItem').get_value(), 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   355
                          [
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   356
                          ['Folder1','Download Applications'],
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   357
                          ['Folder2','Download Images'],
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   358
                          ['Folder3',None]])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   359
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   360
    def test_load_commsdat_sequence_confml_from_file(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   361
        conffile = open(os.path.join(ROOT_PATH,"data/commsdatcreator.confml"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   362
        reader = persistentconfml.get_reader_for_elem("configuration")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   363
        etree = ElementTree.fromstring(conffile.read())
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   364
        obj = reader.loads(etree)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   365
        dview = obj.get_default_view()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   366
        dnsfea = dview.get_feature('DNs.DN')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   367
        self.assertEquals(dnsfea.list_features(),['Name', 'DNId', 'Metadata', 'Protection', 'Hidden', 'HiddenAgent', 'Highlighted', 'Icon', 'EmbeddedDN', 'IAP', 'IAP2', 'IAP3', 'IAP4', 'IAP5', 'IAP6', 'IAP7', 'IAP8', 'IAP9', 'IAP10'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   368
        self.assertEquals(dnsfea.get_template(),['User Defined', '0', 'No', 'No', 'No', '11', None, None, None, None, None, None, None, None, None, None, None, None, None])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   369
        self.assertEquals(dnsfea.get_value(),
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   370
        [['Internet', '1', 'Internet', '2', 'No', 'No', 'Yes', '0', None, None, None, None, None, None, None, None, None, None, None],
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   371
         ['MMS', '2', 'MMS', '2', 'No', 'Yes', 'No', '2', None, None, None, None, None, None, None, None, None, None, None], 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   372
         ['Operator', '3', 'Operator', '2', 'No', 'No', 'No', '4', None, None, None, None, None, None, None, None, None, None, None]
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   373
        ])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   374
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   375
    def test_load_content_sequence_confml_from_file(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   376
        conffile = open(os.path.join(ROOT_PATH,"data/CVC_Content.confml"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   377
        reader = persistentconfml.get_reader_for_elem("configuration")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   378
        etree = ElementTree.fromstring(conffile.read())
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   379
        obj = reader.loads(etree)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   380
        dview = obj.get_default_view()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   381
        content = dview.get_feature('ContentFiles.contentfile')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   382
        self.assertEquals(content.list_all_features(),['fileelem', 'fileelem.localPath', 'fileelem.targetPath'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   383
        self.assertEquals(content.value,[[['test/BookmarkImportSample.txt', None]]])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   384
        self.assertEquals(content.fileelem.localPath.value,['test/BookmarkImportSample.txt'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   385
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   386
    def test_load_content_multiselection_confml_from_file(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   387
        fs = filestorage.FileStorage(testdata)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   388
        p = api.Project(fs)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   389
        config = p.get_configuration('multiselection.confml')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   390
        dview = config.get_default_view()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   391
        multisel1 = dview.get_feature('MultiSelections.MultiSel1')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   392
        self.assertEquals(multisel1.value,["first selection","second selection"])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   393
        self.assertEquals(multisel1.get_data_cast(multisel1.get_value()),["first selection","second selection"])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   394
        self.assertEquals(multisel1.get_value(),["first selection","second selection"])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   395
        self.assertEquals(multisel1.get_data().get_value(),'"first selection" "second selection"')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   396
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   397
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   398
    def test_load_content_multiselection_empty_confml_from_file(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   399
        fs = filestorage.FileStorage(testdata)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   400
        p = api.Project(fs)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   401
        config = p.get_configuration('multiselection.confml')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   402
        dview = config.get_default_view()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   403
        multisel1 = dview.get_feature('uda_selection.selectedfiles')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   404
        self.assertEquals(multisel1.get_value(),None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   405
        self.assertEquals(multisel1.get_data().get_value(),None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   406
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   407
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   408
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   409
    def test_add_sequence_data_to_separate_confml(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   410
        prj = api.Project(api.Storage.open(os.path.join(ROOT_PATH,'data'),"w"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   411
        config = prj.create_configuration('test2.confml')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   412
        seqconfig = config.create_configuration('sequence.confml')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   413
        config.create_configuration('testdata.confml')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   414
        seqconfig.add_feature(api.FeatureSequence('feature1'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   415
        seqconfig.add_feature(api.Feature('child1'),'feature1')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   416
        seqconfig.add_feature(api.Feature('child2'),'feature1')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   417
        seqconfig.add_feature(api.Feature('child3'),'feature1')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   418
        dview = config.get_default_view()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   419
        self.assertEquals(dview.get_feature('feature1').get_type(),'sequence')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   420
        dview.get_feature('feature1').set_template(['c1','c2','c3'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   421
        dview.get_feature('feature1').add_sequence(['row 1','43','56'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   422
        dview.get_feature('feature1').add_sequence(['row 2','43','56'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   423
        config.create_configuration('testdata2.confml')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   424
        dview.get_feature('feature1').add_sequence(['row 3','43','56'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   425
        dview.get_feature('feature1').add_sequence(['row 4','43','56'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   426
        dview.get_feature('feature1').get_data()[1].set_value(['row 2 updated', 'foo', '56'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   427
        config.save()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   428
        prj.close()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   429
        prj = api.Project(api.Storage.open(os.path.join(ROOT_PATH,'data')))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   430
        config = prj.get_configuration('test2.confml')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   431
        dview = config.get_default_view()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   432
        self.assertEquals(dview.get_feature('feature1').get_template(),['c1','c2','c3'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   433
        self.assertEquals(dview.get_feature('feature1').get_value(),[['row 3', '43', '56'], 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   434
                                                                     ['row 4', '43', '56']])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   435
        self.assertEquals(dview.get_feature('feature1').get_data()[0]._index,0)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   436
        self.assertEquals(dview.get_feature('feature1').get_data()[0].get_value(),['row 3', '43', '56'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   437
        self.assertEquals(dview.get_feature('feature1').get_data()[1].get_value(),['row 4', '43', '56'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   438
        self.assertEquals(dview.get_feature('feature1').get_data()[0].get_data().find_parent(type=api.Configuration), config.get_configuration('testdata2.confml')._obj)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   439
        prj.remove_configuration('test2.confml')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   440
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   441
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   442
    def test_add_sequence_data_to_separate_confml_with_append_policy(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   443
        prj = api.Project(api.Storage.open(os.path.join(ROOT_PATH,'data'),"w"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   444
        config = prj.create_configuration('test1.confml')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   445
        seqconfig = config.create_configuration('sequence.confml')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   446
        config.create_configuration('testdata.confml')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   447
        seqconfig.add_feature(api.FeatureSequence('feature1'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   448
        seqconfig.add_feature(api.Feature('child1'),'feature1')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   449
        seqconfig.add_feature(api.Feature('child2'),'feature1')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   450
        seqconfig.add_feature(api.Feature('child3'),'feature1')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   451
        dview = config.get_default_view()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   452
        self.assertEquals(dview.get_feature('feature1').get_type(),'sequence')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   453
        dview.get_feature('feature1').set_template(['c1','c2','c3'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   454
        dview.get_feature('feature1').add_sequence(['row 1','43','56'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   455
        dview.get_feature('feature1').add_sequence(['row 2','43','56'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   456
        config.create_configuration('testdata2.confml')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   457
        dview.get_feature('feature1').add_sequence(['row 3','43','56'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   458
        dview.get_feature('feature1').add_sequence(['row 4','43','56'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   459
        dview.get_feature('feature1').get_data()[1].set_value(['row 2 updated', 'foo', '56'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   460
        config.save()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   461
        prj.close()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   462
        prj = api.Project(api.Storage.open(os.path.join(ROOT_PATH,'data')))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   463
        config = prj.get_configuration('test1.confml')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   464
        dview = config.get_default_view()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   465
        self.assertEquals(dview.get_feature('feature1').get_template(),['c1','c2','c3'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   466
        self.assertEquals(dview.get_feature('feature1').get_value(),[['row 3', '43', '56'], 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   467
                                                                     ['row 4', '43', '56']])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   468
        self.assertEquals(dview.get_feature('feature1').get_data()[0]._index,0)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   469
        self.assertEquals(dview.get_feature('feature1').get_data()[0].get_value(),['row 3', '43', '56'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   470
        self.assertEquals(dview.get_feature('feature1').get_data()[1].get_value(),['row 4', '43', '56'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   471
        self.assertEquals(dview.get_feature('feature1').get_data()[0].get_data().find_parent(type=api.Configuration), config.get_configuration('testdata2.confml')._obj)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   472
        prj.remove_configuration('test1.confml')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   473
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   474
    def test_load_view(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   475
        reader = persistentconfml.get_reader_for_elem("configuration")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   476
        etree = ElementTree.fromstring(simpleview)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   477
        obj = reader.loads(etree)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   478
        self.assertEquals(obj.get_name(), 'unknown')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   479
        self.assertEquals(obj.list_views(), ['Image creation'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   480
        self.assertEquals(obj.get_view('Image creation').get_name(),'Image creation')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   481
        self.assertEquals(obj.get_view('Image creation').desc,'Image creation related settings')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   482
        self.assertEquals(obj.get_view('Image creation').list_features(),[])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   483
        self.assertEquals(obj.get_view('Image creation').list_groups(),['Imageproperties'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   484
        self.assertEquals(obj.get_view('Image creation').list_all_features(),['Imageproperties.imagetype', 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   485
                                                                           'Imageproperties.rofs3version', 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   486
                                                                           'Imageproperties.productname', 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   487
                                                                           'Imageproperties.outputLocation', 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   488
                                                                           'Imageproperties.imagetarget'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   489
        self.assertEquals(obj.get_view('Image creation').get_feature('Imageproperties.imagetype').get_value(), '0') 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   490
        self.assertEquals(obj.get_view('Image creation').get_feature('Imageproperties.rofs3version').get_value(), 'V .50.2009.04.0113 RND') 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   491
        self.assertEquals(obj.get_view('Image creation').get_feature('Imageproperties.productname').get_value(), 'myProduct') 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   492
        self.assertEquals(obj.get_view('Image creation').get_feature('Imageproperties.outputLocation').get_value(), 'myProduct') 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   493
        self.assertEquals(obj.get_view('Image creation').get_feature('Imageproperties.imagetarget').get_value(), '2') 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   494
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   495
    def test_load_cvc_view(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   496
        prj = api.Project(api.Storage.open(os.path.join(ROOT_PATH,'data')))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   497
        config = prj.get_configuration('cvc_root.confml')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   498
        dview = config.get_default_view()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   499
        self.assertEquals(config.list_views(),['cvc_view_confml.Custom modeled ConfMLs for customization  foo'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   500
        view = config.get_view('cvc_view_confml.Custom modeled ConfMLs for customization  foo')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   501
        self.assertEquals(view.id, 'CVC')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   502
        self.assertEquals(view.list_groups(),['Applications', 'Connectivity', 'System', 'UI', 'Pre-Installed Content'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   503
        self.assertEquals(view.list_features(),[])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   504
        group = view.get_group('Connectivity')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   505
        self.assertEquals(group.icon, 'connectivity_48_nav.png')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   506
        self.assertEquals(len(view.list_all_features()),130)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   507
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   508
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   509
    def test_load_booleans_confml_from_file(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   510
        conffile = open(os.path.join(ROOT_PATH,"data/booleans.confml"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   511
        reader = persistentconfml.get_reader_for_elem("configuration")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   512
        etree = ElementTree.fromstring(conffile.read())
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   513
        obj = reader.loads(etree)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   514
        dview = obj.get_default_view()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   515
        boolfea = dview.get_feature('Booleans')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   516
        self.assertEquals(len(boolfea.list_features()),20)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   517
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   518
    def test_load_confml_with_properties(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   519
        conffile = open(os.path.join(ROOT_PATH,"data/CVC_StartupShutdownAnimations.confml"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   520
        reader = persistentconfml.get_reader_for_elem("configuration")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   521
        etree = ElementTree.fromstring(conffile.read())
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   522
        obj = reader.loads(etree)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   523
        fea = obj.get_feature('CVC_StartupAnimationSequence.CVC_StartupAnimationTone')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   524
        self.assertEquals(fea.list_properties(),['maxSize'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   525
        self.assertEquals(fea.properties['maxSize'].value,'100')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   526
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   527
        conffile = open(os.path.join(ROOT_PATH,"data/CVC_Preinstalled.confml"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   528
        reader = persistentconfml.get_reader_for_elem("configuration")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   529
        etree = ElementTree.fromstring(conffile.read())
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   530
        obj = reader.loads(etree)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   531
        fea = obj.get_feature('CVC_PreinstalledContent.CVC_PreInstalledMMSs.CVC_PreInstalledMMS')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   532
        self.assertEquals(fea.list_properties(),['maxFileSize'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   533
        self.assertEquals(fea.properties['maxFileSize'].value,'35')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   534
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   535
    def test_load_voicemailbox_confml_from_file(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   536
        conffile = open(os.path.join(ROOT_PATH,"data/voicemailbox.confml"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   537
        reader = persistentconfml.get_reader_for_elem("configuration")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   538
        etree = ElementTree.fromstring(conffile.read())
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   539
        obj = reader.loads(etree)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   540
        dview = obj.get_default_view()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   541
        stringfea = dview.get_feature('KCRUidVoiceMailbox.KVmbxNumberLinePrimary')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   542
        self.assertEquals(stringfea.type,'string')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   543
        self.assertEquals(stringfea.value,None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   544
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   545
    def test_load_facets(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   546
        conffile = open(os.path.join(ROOT_PATH,"data/facets.confml"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   547
        reader = persistentconfml.get_reader_for_elem("configuration")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   548
        etree = ElementTree.fromstring(conffile.read())
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   549
        obj = reader.loads(etree)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   550
        setting = obj.get_feature('Facets.MessageSize')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   551
        self.assertEquals(setting.minInclusive,'0')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   552
        self.assertEquals(setting.maxInclusive,'10')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   553
        setting = obj.get_feature('Facets.MessageSize2')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   554
        self.assertEquals(setting.minExclusive,'-1')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   555
        self.assertEquals(setting.maxExclusive,'11')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   556
        setting = obj.get_feature('Facets.StringPattern')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   557
        self.assertEquals(setting.pattern,"[a-zA-Z]{5,10}")        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   558
        setting = obj.get_feature('Facets.TotalDigits')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   559
        self.assertEquals(setting.totalDigits,'3')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   560
        dview = obj.get_default_view()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   561
        intfea = dview.get_feature('Facets.MessageSize')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   562
        self.assertEquals(intfea.type,'int')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   563
        self.assertEquals(intfea.value,9)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   564
             
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   565
class TestConfigurationWriter(unittest.TestCase):    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   566
    def test_dump_simple_configuration(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   567
        config = api.Configuration("test.confml")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   568
        writer = persistentconfml.get_writer_for_class("Configuration")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   569
        etree = writer.dumps(config)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   570
        self.assertEquals(etree.get('name'), 'test_confml')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   571
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   572
    def test_dump_configuration_with_include(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   573
        config = api.Configuration("test.confml")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   574
        config.include_configuration('path/to/config.confml')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   575
        writer = persistentconfml.get_writer_for_class("Configuration")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   576
        elem = writer.dumps(config)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   577
        etree = ElementTree.fromstring(ElementTree.tostring(elem))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   578
        self.assertEquals(etree.find('{http://www.w3.org/2001/XInclude}include').get('href'), 'path/to/config.confml')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   579
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   580
    def test_dump_configuration_with_feature_sequence(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   581
        config = api.Configuration("test.confml")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   582
        config.add_feature(api.Feature('test'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   583
        config.add_feature(api.FeatureSequence('sequentialfeature'),'test')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   584
        config.test.sequentialfeature.add_feature(model.ConfmlSetting('setting1'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   585
        config.test.sequentialfeature.add_feature(model.ConfmlSetting('setting2'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   586
        config.test.sequentialfeature.add_feature(model.ConfmlSetting('setting3'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   587
        writer = persistentconfml.get_writer_for_class("Configuration")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   588
        elem = writer.dumps(config)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   589
        etree = ElementTree.fromstring(ElementTree.tostring(elem))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   590
        self.assertEquals([elem for elem in etree.getiterator('{http://www.s60.com/xml/confml/2}setting')][0].get('ref'), 'sequentialfeature')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   591
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   592
    def test_dump_complex_configuration(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   593
        config = api.Configuration("test.confml")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   594
        config.include_configuration('path/to/config1.confml')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   595
        config.include_configuration('path/to/config2.confml')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   596
        config.include_configuration('path/to/config3.confml')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   597
        config.add( model.ConfmlMeta([model.ConfmlMetaProperty('test', '123'),\
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   598
                                      model.ConfmlMetaProperty('model', 'foo')]))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   599
        config.add( model.ConfmlDescription( 'Description text' ) )
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   600
        writer = persistentconfml.get_writer_for_class("Configuration")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   601
        elem = writer.dumps(config)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   602
        etree = ElementTree.fromstring(ElementTree.tostring(elem))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   603
        self.assertEquals([elem.get('href') for elem in etree.getiterator('{http://www.w3.org/2001/XInclude}include')], 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   604
                          ['path/to/config1.confml',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   605
                           'path/to/config2.confml',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   606
                           'path/to/config3.confml'
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   607
                           ])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   608
        meta = etree.find('{http://www.s60.com/xml/confml/2}meta')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   609
        self.assertEquals(meta.find('{http://www.s60.com/xml/confml/2}test').text,'123')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   610
        self.assertEquals(meta.find('{http://www.s60.com/xml/confml/2}model').text,'foo')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   611
        self.assertEquals(etree.find('{http://www.s60.com/xml/confml/2}desc').text,'Description text')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   612
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   613
    def test_dump_load_configuration(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   614
        writer = persistentconfml.get_writer_for_class("Configuration")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   615
        config = model.ConfmlConfiguration("test.confml")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   616
        config.include_configuration('path/to/config1.confml')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   617
        config.include_configuration('path/to/config2.confml')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   618
        config.include_configuration('path/to/config3.confml')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   619
        config.meta = model.ConfmlMeta([model.ConfmlMetaProperty('test', '123'),\
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   620
                                      model.ConfmlMetaProperty('model', 'foo'),\
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   621
                                      model.ConfmlMetaProperty('configuration-property', None, \
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   622
                                                               'http://www.nokia.com/xml/cpf-id/1', \
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   623
                                                               attrs ={"name":"123", "value": "234"})])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   624
        config.desc = 'Description text'
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   625
        etree= writer.dumps(config)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   626
        xmlstr = ElementTree.tostring(etree)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   627
        config2 = persistentconfml.get_reader_for_elem("configuration").loads(ElementTree.fromstring(xmlstr))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   628
        self.assertEquals(config2.get_ref(),config.ref)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   629
        self.assertEquals(config2._list(),config._list())
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   630
        self.assertEquals(config2.desc,'Description text')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   631
        elem = config2.meta.get_property_by_tag('test')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   632
        self.assertEquals(elem.tag, 'test')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   633
        self.assertEquals(elem.value, '123')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   634
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   635
        self.assertEquals(config2.meta[0].tag, 'test')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   636
        self.assertEquals(config2.meta[0].value, '123')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   637
        self.assertEquals(config2.meta[1].tag, 'model')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   638
        self.assertEquals(config2.meta[1].value, 'foo')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   639
        self.assertEquals(config2.meta[2].tag, 'configuration-property')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   640
        self.assertEquals(config2.meta[2].value, None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   641
        self.assertEquals(config2.meta[2].ns, 'http://www.nokia.com/xml/cpf-id/1')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   642
        self.assertEquals(config2.meta[2].attrs, {"name":"123", "value": "234"})
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   643
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   644
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   645
    def test_configuration_with_features_and_properties(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   646
        config = model.ConfmlConfiguration("test.confml")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   647
        config.add_feature(model.ConfmlSetting('testfea11'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   648
        config.testfea11.add_property(name='smaller',value='10')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   649
        config.testfea11.add_property(name='bigger',value='1', unit='B')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   650
        elem = persistentconfml.dumps(config)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   651
        config2 =  persistentconfml.loads(elem)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   652
        self.assertEquals(config2.testfea11.properties['smaller'].value,'10')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   653
        self.assertEquals(config2.testfea11.properties['bigger'].value,'1')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   654
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   655
    def test_configuration_with_features_and_minoccurs(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   656
        config = model.ConfmlConfiguration("test.confml")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   657
        config.add_feature(model.ConfmlSequenceSetting('testfea11'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   658
        config.testfea11.minOccurs = 1
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   659
        config.testfea11.maxOccurs = 10
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   660
        elem = persistentconfml.dumps(config)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   661
        config2 =  persistentconfml.loads(elem)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   662
        self.assertEquals(config2.testfea11.minOccurs,1)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   663
        self.assertEquals(config2.testfea11.maxOccurs,10)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   664
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   665
    def test_configuration_with_features_and_readonly(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   666
        config = model.ConfmlConfiguration("test.confml")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   667
        config.add_feature(model.ConfmlSequenceSetting('testfea11'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   668
        config.add_feature(model.ConfmlSetting('readme',readOnly=True))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   669
        config.add_feature(model.ConfmlSetting('writeme',readOnly=False))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   670
        elem = persistentconfml.dumps(config)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   671
        config2 =  persistentconfml.loads(elem)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   672
        self.assertEquals(config2.testfea11.readOnly,None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   673
        self.assertEquals(config2.readme.readOnly,True)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   674
        self.assertEquals(config2.writeme.readOnly,False)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   675
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   676
    def test_configuration_with_features_and_constraint(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   677
        config = model.ConfmlConfiguration("test.confml")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   678
        config.add_feature(model.ConfmlSequenceSetting('testfea11'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   679
        config.add_feature(model.ConfmlSetting('const',constraint=". &gt; '1'"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   680
        config.add_feature(model.ConfmlSetting('writeme',readOnly=False, constraint='foo bar'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   681
        elem = persistentconfml.dumps(config)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   682
        config2 =  persistentconfml.loads(elem)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   683
        self.assertEquals(config2.testfea11.constraint,None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   684
        self.assertEquals(config2.const.constraint,". &gt; '1'")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   685
        self.assertEquals(config2.writeme.readOnly,False)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   686
        self.assertEquals(config2.writeme.constraint,"foo bar")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   687
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   688
    def test_configuration_with_features_and_required_attr(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   689
        config = model.ConfmlConfiguration("test.confml")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   690
        config.add_feature(model.ConfmlSequenceSetting('testfea11'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   691
        config.add_feature(model.ConfmlSetting('requ',required=True))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   692
        config.add_feature(model.ConfmlSetting('writeme',required=False, readOnly=False))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   693
        elem = persistentconfml.dumps(config)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   694
        config2 =  persistentconfml.loads(elem)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   695
        self.assertEquals(config2.testfea11.required,None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   696
        self.assertEquals(config2.requ.required,True)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   697
        self.assertEquals(config2.writeme.readOnly,False)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   698
        self.assertEquals(config2.writeme.required,False)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   699
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   700
    def test_configuration_with_features_and_relevant_attr(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   701
        config = model.ConfmlConfiguration("test.confml")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   702
        config.add_feature(model.ConfmlSequenceSetting('testfea11'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   703
        config.add_feature(model.ConfmlSetting('requ',relevant='testfea11'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   704
        elem = persistentconfml.dumps(config)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   705
        config2 =  persistentconfml.loads(elem)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   706
        self.assertEquals(config2.testfea11.relevant,None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   707
        self.assertEquals(config2.requ.relevant,'testfea11')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   708
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   709
    def test_configuration_with_features_and_maxlength(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   710
        config = model.ConfmlConfiguration("test.confml")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   711
        config.add_feature(model.ConfmlSetting('testfea1', type='int'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   712
        config.add_feature(model.ConfmlSetting('testfea2', type='int'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   713
        config.add_feature(model.ConfmlSetting('testfea3', type='int',maxLength=100))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   714
        config.testfea1.maxLength = 10
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   715
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   716
        elem = persistentconfml.dumps(config)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   717
        config2 =  persistentconfml.loads(elem)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   718
        self.assertEquals(config2.testfea1.maxLength,10)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   719
        self.assertEquals(config2.testfea2.maxLength,None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   720
        self.assertEquals(config2.testfea3.maxLength,100)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   721
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   722
    def test_configuration_with_features_and_maxlength(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   723
        config = model.ConfmlConfiguration("test.confml")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   724
        config.add_feature(model.ConfmlSetting('testfea1', type='int'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   725
        config.add_feature(model.ConfmlSetting('testfea2', type='int'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   726
        config.add_feature(model.ConfmlSetting('testfea3', type='int',minLength=100))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   727
        config.testfea1.minLength = 10
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   728
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   729
        elem = persistentconfml.dumps(config)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   730
        config2 =  persistentconfml.loads(elem)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   731
        self.assertEquals(config2.testfea1.minLength,'10')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   732
        self.assertEquals(config2.testfea3.minLength,'100')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   733
        self.assertEquals(config2.testfea2.minLength,None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   734
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   735
    def test_configuration_with_features(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   736
        config = model.ConfmlConfiguration("test.confml")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   737
        config.add_feature(api.Feature('testfea1'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   738
        config.testfea1.add_feature(model.ConfmlSetting('testfea11'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   739
        config.add_feature(api.Feature('testfea2'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   740
        set1 = model.ConfmlSetting('testfea21', type='selection')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   741
        set1.create_option('pre', '1')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   742
        set1.create_option('normal', '2')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   743
        set1.create_option('post', '3')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   744
        config.add_feature(set1, 'testfea2')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   745
        config.add_feature(api.Feature('testfea4'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   746
        config.add_feature(api.Feature('testfea5'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   747
        config.add_feature(api.Feature('testfea6'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   748
        set1.set_value('pre')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   749
        config.testfea1.set_value('foo:bar')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   750
        config.testfea4.set_value('4')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   751
        writer = persistentconfml.get_writer_for_class("Configuration")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   752
        elem = writer.dumps(config)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   753
        #print ElementTree.tostring(elem)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   754
        etree = ElementTree.fromstring(ElementTree.tostring(elem))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   755
        fea1 = etree.find('{http://www.s60.com/xml/confml/2}feature')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   756
        self.assertEquals(fea1.get('ref'),'testfea1')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   757
        self.assertEquals(fea1.find('{http://www.s60.com/xml/confml/2}setting').get('ref'),'testfea11')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   758
        config2 =  persistentconfml.get_reader_for_elem('configuration').loads(etree)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   759
        self.assertEquals(config2.testfea1.list_features(),['testfea11'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   760
        self.assertEquals(config2.testfea2.list_features(),['testfea21'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   761
        self.assertEquals(config2.testfea2.testfea21.get_type(),'selection')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   762
        self.assertTrue('1' in config2.testfea2.testfea21.get_valueset())
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   763
        self.assertTrue('2' in config2.testfea2.testfea21.get_valueset())
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   764
        self.assertEquals(config2.testfea2.testfea21.options['3'].get_name(), 'post')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   765
        self.assertEquals(config2.testfea2.testfea21.get_value(), 'pre')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   766
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   767
    def test_write_configuration_with_multiselections(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   768
        config = model.ConfmlConfiguration("test.confml")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   769
        config.add_feature(api.Feature('testfea1'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   770
        config.testfea1.add_feature(model.ConfmlSetting('testfea11'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   771
        config.add_feature(api.Feature('testfea2'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   772
        set1 = model.ConfmlMultiSelectionSetting('testfea21')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   773
        set1.create_option('pre', '1')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   774
        set1.create_option('normal', '2')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   775
        set1.create_option('post', '3')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   776
        config.add_feature(set1, 'testfea2')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   777
        config.add_feature(api.Feature('testfea4'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   778
        config.add_feature(api.Feature('testfea5'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   779
        config.add_feature(api.Feature('testfea6'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   780
        set1.value = ["pre","post"]       
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   781
        self.assertEquals(set1.get_data().get_value(), '"pre" "post"')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   782
        writer = persistentconfml.get_writer_for_class("Configuration")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   783
        elem = writer.dumps(config)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   784
        self.assertEquals(ElementTree.tostring(elem), '<configuration name="test_confml" xmlns="http://www.s60.com/xml/confml/2" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xs="http://www.w3.org/2001/XMLSchema"><feature name="testfea1" ref="testfea1"><setting name="testfea11" ref="testfea11" /></feature><feature name="testfea2" ref="testfea2"><setting name="testfea21" ref="testfea21" type="multiSelection"><option name="pre" value="1" /><option name="normal" value="2" /><option name="post" value="3" /></setting></feature><feature name="testfea4" ref="testfea4" /><feature name="testfea5" ref="testfea5" /><feature name="testfea6" ref="testfea6" /><data><testfea2><testfea21>"pre" "post"</testfea21></testfea2></data></configuration>')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   785
        etree = ElementTree.fromstring(ElementTree.tostring(elem))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   786
        fea1 = etree.find('{http://www.s60.com/xml/confml/2}feature')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   787
        self.assertEquals(fea1.get('ref'),'testfea1')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   788
        self.assertEquals(fea1.find('{http://www.s60.com/xml/confml/2}setting').get('ref'),'testfea11')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   789
        config2 =  persistentconfml.get_reader_for_elem('configuration').loads(etree)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   790
        self.assertEquals(config2.testfea2.list_features(),['testfea21'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   791
        self.assertEquals(config2.testfea2.testfea21.get_type(),'multiSelection')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   792
        self.assertEquals(config2.testfea2.testfea21.get_value(), ['pre', 'post'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   793
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   794
    def test_configuration_with_view(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   795
        config = api.Configuration("view.confml")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   796
        config.add_view('testing')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   797
        view = config.get_view('testing')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   798
        view.add_group('group1')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   799
        view.add_group('group2')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   800
        view.add_group('group3')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   801
        view.group1.add(api.FeatureLink('test.foo'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   802
        view.group2.add(api.FeatureLink('foo.*'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   803
        writer = persistentconfml.get_writer_for_class("Configuration")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   804
        elem = writer.dumps(config)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   805
        etree = ElementTree.fromstring(ElementTree.tostring(elem))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   806
        view = etree.find('{http://www.s60.com/xml/confml/2}view')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   807
        groups = etree.getiterator('{http://www.s60.com/xml/confml/2}group')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   808
        listgroups = [elem for elem in groups]
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   809
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   810
        self.assertEquals(listgroups[0].get('name'), 'group1')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   811
        self.assertEquals(listgroups[1].get('name'), 'group2')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   812
        self.assertEquals(listgroups[2].get('name'), 'group3')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   813
        settings = [elem for elem in etree.getiterator('{http://www.s60.com/xml/confml/2}setting')]
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   814
        self.assertEquals(settings[0].get('ref'), 'test/foo')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   815
        self.assertEquals(settings[1].get('ref'), 'foo/*')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   816
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   817
    def test_load_dump_reload_configuration_with_view(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   818
        reader = persistentconfml.get_reader_for_elem("configuration")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   819
        etree = ElementTree.fromstring(simpleview)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   820
        obj = reader.loads(etree)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   821
        # Getting the view populates it and check that the writing still works
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   822
        self.assertEquals(obj.get_view('Image creation').get_name(),'Image creation')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   823
        self.assertEquals(obj.get_view('Image creation').id,'imakerimage')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   824
        self.assertEquals(obj.get_view('Image creation').list_groups(), ['Imageproperties'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   825
        writer = persistentconfml.get_writer_for_class("Configuration")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   826
        elem = writer.dumps(obj)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   827
        # Reload the configuration with view after dumping it to ensure data stays the same
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   828
        elemstr = ElementTree.tostring(elem)      
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   829
        etree = ElementTree.fromstring(elemstr)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   830
        obj = reader.loads(etree)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   831
        self.assertEquals(obj.get_view('Image creation').get_name(),'Image creation')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   832
        self.failUnlessEqual(obj.get_view('Image creation').id,'imakerimage', 'Known bug (#564)')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   833
        self.assertEquals(obj.get_view('Image creation').id,'imakerimage')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   834
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   835
    def test_load_configuration_and_create_copy_and_dump(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   836
        conffile = open(os.path.join(ROOT_PATH,"data/commsdatcreator.confml"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   837
        #reader = persistentconfml.get_reader_for_elem("configuration")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   838
        #etree = ElementTree.fromstring(conffile.read())
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   839
        obj = persistentconfml.loads(conffile.read())
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   840
        copyconfig = api.Configuration('data/copy_commsdatcreator.confml')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   841
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   842
        for child in obj._objects():
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   843
            copyconfig._add(child)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   844
        output = persistentconfml.dumps(copyconfig)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   845
        ofile = open(os.path.join(ROOT_PATH,'data/copy_commsdatcreator.confml'),"wb")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   846
        ofile.write(output)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   847
        ofile.close()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   848
        newconfig = persistentconfml.loads(output)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   849
        orgview = obj.get_default_view()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   850
        newview = newconfig.get_default_view()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   851
        for fea in orgview.list_all_features():
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   852
            orgval = orgview.get_feature(fea).get_value() 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   853
            newval = newview.get_feature(fea).get_value()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   854
            if not orgval == newval:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   855
                self.fail("Value of %s does not match. org = %s != new = %s" % (fea,orgval,newval))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   856
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   857
    def test_create_configuration_with_meta_and_dump(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   858
        prj = api.Project(api.Storage.open('dump','w'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   859
        testconf = prj.create_configuration('test.confml')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   860
        testconf.include_configuration('test/foo.confml')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   861
        testconf.save()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   862
        prj.close()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   863
        prj2 = api.Project(api.Storage.open('dump','a'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   864
        testconf = prj2.get_configuration('test.confml')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   865
        testconf.meta = model.ConfmlMeta()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   866
        testconf.meta.append(model.ConfmlMetaProperty('test', 'foo one two'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   867
        testconf.meta.append(model.ConfmlMetaProperty('owner', 'test erik'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   868
        testconf.save()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   869
        prj2.close()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   870
        prj = api.Project(api.Storage.open('dump','a'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   871
        testconf = prj.get_configuration('test.confml')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   872
        self.assertEquals(testconf.meta[0].tag, 'test')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   873
        self.assertEquals(testconf.meta[0].value,'foo one two')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   874
        self.assertEquals(testconf.meta[1].tag, 'owner')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   875
        self.assertEquals(testconf.meta[1].value,'test erik')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   876
        del testconf.meta[1]
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   877
        del testconf.meta
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   878
        testconf.save()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   879
        prj.close()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   880
        prj = api.Project(api.Storage.open('dump','a'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   881
        testconf = prj.get_configuration('test.confml')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   882
        self.assertEquals(testconf.meta, None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   883
        prj.close()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   884
        shutil.rmtree('dump')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   885
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   886
class TestMeta(unittest.TestCase):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   887
    def test_get_reader_for_meta(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   888
        reader = persistentconfml.get_reader_for_elem("meta")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   889
        self.assertTrue(isinstance(reader, persistentconfml.MetaReader))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   890
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   891
    def test_parse_meta_elem(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   892
        reader = persistentconfml.get_reader_for_elem("meta")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   893
        elem = ElementTree.Element('meta')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   894
        owner = ElementTree.Element('owner')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   895
        owner.text = 'Testing owner'
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   896
        origin = ElementTree.Element('origin')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   897
        origin.text = 'just origin'
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   898
        target = ElementTree.Element('target')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   899
        target.text = 'target hw'
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   900
        elem.append(owner)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   901
        elem.append(origin)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   902
        elem.append(target)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   903
        data = reader.loads(elem)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   904
        self.assertEquals(data[0].tag, 'owner')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   905
        self.assertEquals(data[0].value, 'Testing owner')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   906
        self.assertEquals(data[1].tag, 'origin')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   907
        self.assertEquals(data[1].value, 'just origin')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   908
        self.assertEquals(data[2].tag, 'target')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   909
        self.assertEquals(data[2].value, 'target hw')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   910
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   911
    def test_write_meta_elem(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   912
        writer = persistentconfml.get_writer_for_class("ConfmlMeta")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   913
        celem = model.ConfmlMeta([model.ConfmlMetaProperty('test', 123),\
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   914
                                 model.ConfmlMetaProperty('owner', "some ownername"),\
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   915
                                 model.ConfmlMetaProperty('target', "hw")])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   916
        etree = writer.dumps(celem)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   917
        self.assertEquals(etree.find('test').text,123)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   918
        self.assertEquals(etree.find('owner').text,'some ownername')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   919
        self.assertEquals(etree.find('target').text,'hw')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   920
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   921
#    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   922
class TestDesc(unittest.TestCase):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   923
    def test_get_reader_for_desc(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   924
        reader = persistentconfml.get_reader_for_elem("desc")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   925
        self.assertTrue(isinstance(reader, persistentconfml.DescReader))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   926
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   927
    def test_parse_desc_elem(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   928
        reader = persistentconfml.get_reader_for_elem("meta")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   929
        elem = ElementTree.Element('desc')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   930
        elem.text = 'Testing desc'
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   931
        data = reader.loads(elem)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   932
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   933
    def test_write_desc_elem(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   934
        writer = persistentconfml.get_writer_for_class("ConfmlDescription")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   935
        celem = model.ConfmlDescription('testing')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   936
        etree = writer.dumps(celem)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   937
        self.assertEquals(etree.text,'testing')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   938
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   939
class TestFeature(unittest.TestCase):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   940
    def test_get_reader_for_feature(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   941
        reader = persistentconfml.get_reader_for_elem("feature")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   942
        self.assertTrue(isinstance(reader, persistentconfml.FeatureReader))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   943
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   944
    def test_parse_feature_elem(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   945
        reader = persistentconfml.get_reader_for_elem("feature")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   946
        elem = ElementTree.Element('feature', 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   947
                                   {'ref' : 'hiifoo',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   948
                                    'name': 'Some other name'})
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   949
        fea = reader.loads(elem)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   950
        self.assertEquals(fea.get_ref(),'hiifoo')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   951
        self.assertEquals(fea.get_name(),'Some other name')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   952
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   953
    def test_write_feature_elem(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   954
        writer = persistentconfml.get_writer_for_class("Feature")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   955
        celem = api.Feature('testing')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   956
        etree = writer.dumps(celem)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   957
        self.assertEquals(etree.get('ref'),'testing')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   958
        self.assertEquals(etree.get('name'),'testing')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   959
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   960
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   961
class TestSetting(unittest.TestCase):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   962
    def test_get_reader_for_feature(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   963
        reader = persistentconfml.get_reader_for_elem("setting")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   964
        self.assertTrue(isinstance(reader, persistentconfml.ConfmlSettingReader))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   965
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   966
    def test_parse_elem(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   967
        reader = persistentconfml.get_reader_for_elem("setting")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   968
        elem = ElementTree.Element('setting', 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   969
                                   {'ref' : 'hiifoo',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   970
                                    'name': 'Some other name',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   971
                                    'type' :'int',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   972
                                    'readOnly': 'true'})
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   973
        fea = reader.loads(elem)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   974
        self.assertEquals(fea.get_ref(),'hiifoo')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   975
        self.assertEquals(fea.get_name(),'Some other name')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   976
        self.assertEquals(fea.get_type(),'int')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   977
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   978
    def test_write_setting_elem(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   979
        writer = persistentconfml.get_writer_for_class("ConfmlSetting")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   980
        celem = model.ConfmlSetting('testing')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   981
        etree = writer.dumps(celem)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   982
        self.assertEquals(etree.get('ref'),'testing')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   983
        self.assertEquals(etree.get('name'),'testing')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   984
        self.assertEquals(etree.get('type'),None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   985
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   986
    def test_write_setting_with_options(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   987
        writer = persistentconfml.get_writer_for_class("ConfmlSetting")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   988
        elem = model.ConfmlSetting('testing', type='selection')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   989
        elem.create_option('one','1')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   990
        elem.create_option('two','2')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   991
        elem.create_option('three','3')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   992
        elem.create_option('four','bar')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   993
        etree = writer.dumps(elem)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   994
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   995
        self.assertEquals(etree.get('ref'),'testing')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   996
        self.assertEquals(etree.get('name'),'testing')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   997
        self.assertEquals(etree.get('type'),'selection')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   998
        self.assertEquals(etree.find('option').get('name'),'one')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   999
        self.assertEquals(etree.find('option').get('value'),'1')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1000
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1001
    def test_write_setting_with_facets(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1002
        writer = persistentconfml.get_writer_for_class("ConfmlSetting")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1003
        setting = model.ConfmlIntSetting(name="Int Setting", ref='intSetting')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1004
        setting.minInclusive = 0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1005
        setting.maxInclusive = 10
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1006
        setting.minExclusive = 0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1007
        setting.maxExclusive = 10
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1008
        setting.totalDigits = 3
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1009
        setting.pattern = "\d*{3}"
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1010
        etree = writer.dumps(setting)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1011
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1012
        self.assertEquals(etree.find('xs:minInclusive').get('value'),'0')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1013
        self.assertEquals(etree.find('xs:maxInclusive').get('value'),'10')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1014
        self.assertEquals(etree.find('xs:minExclusive').get('value'),'0')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1015
        self.assertEquals(etree.find('xs:maxExclusive').get('value'),'10')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1016
        self.assertEquals(etree.find('xs:totalDigits').get('value'),'3')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1017
        self.assertEquals(etree.find('xs:pattern').get('value'),'\d*{3}')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1018
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1019
        conffile = open(os.path.join(ROOT_PATH,"data/facets.confml"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1020
        obj = persistentconfml.loads(conffile.read())
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1021
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1022
        new_path = os.path.join(ROOT_PATH,"temp/facets_dumped.confml")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1023
        dir = os.path.dirname(new_path)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1024
        if dir and not os.path.exists(dir):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1025
            os.makedirs(dir)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1026
        f = open(new_path,"wb")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1027
        try:        f.write(persistentconfml.dumps(obj))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1028
        finally:    f.close()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1029
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1030
    def test_read_setting_with_options(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1031
        reader = persistentconfml.get_reader_for_elem("setting")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1032
        elem = ElementTree.Element('setting', {'ref' : 'hii',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1033
                                               'name': 'hoo hii',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1034
                                               'type': 'selection'})
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1035
        elem.append(ElementTree.Element('option', {'name': 'test1', 'value': '123'}))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1036
        elem.append(ElementTree.Element('option', {'name': 'test2', 'value': '456'}))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1037
        elem.append(ElementTree.Element('option', {'name': 'test3', 'value': '789'}))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1038
        setobj = reader.loads(elem)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1039
        vset = setobj.get_valueset()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1040
        self.assertTrue('123' in vset)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1041
        self.assertTrue('456' in vset)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1042
        self.assertTrue('789' in vset)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1043
        self.assertEquals(setobj.options['123'].get_value(),'123')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1044
        self.assertEquals(setobj.options['456'].get_value(),'456')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1045
        self.assertEquals(setobj.options['789'].get_value(),'789')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1046
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1047
    def test_read_sequence_setting(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1048
        reader = persistentconfml.get_reader_for_elem("setting")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1049
        elem = ElementTree.Element('setting', {'ref' : 'hii',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1050
                                               'name': 'hoo hii',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1051
                                               'type': 'sequence'})
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1052
        elem.append(ElementTree.Element('setting', {'ref' : 'intsetting',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1053
                                               'name': 'intme',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1054
                                               'type': 'int'}))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1055
        elem.append(ElementTree.Element('setting', {'ref' : 'strsetting',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1056
                                               'name': 'strme',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1057
                                               'type': 'string'}))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1058
        setobj = reader.loads(elem)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1059
        self.assertEquals(setobj.list_features(), ['intsetting', 'strsetting'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1060
        self.assertEquals(setobj.intsetting.fqr, 'hii.intsetting')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1061
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1062
    def test_read_sequence_setting_with_mapping(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1063
        reader = persistentconfml.get_reader_for_elem("setting")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1064
        elem = ElementTree.Element('setting', {'ref' : 'hii',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1065
                                               'name': 'hoo hii',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1066
                                               'type': 'sequence',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1067
                                               'mapKey': 'intsetting',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1068
                                               'mapValue': 'strsetting'})
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1069
        elem.append(ElementTree.Element('setting', {'ref' : 'intsetting',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1070
                                               'name': 'intme',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1071
                                               'type': 'int'}))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1072
        elem.append(ElementTree.Element('setting', {'ref' : 'strsetting',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1073
                                               'name': 'strme',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1074
                                               'type': 'string'}))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1075
        setobj = reader.loads(elem)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1076
        self.assertEqual(setobj.get_map_key().name,"intme")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1077
        self.assertEqual(setobj.get_map_value().name,"strme")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1078
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1079
class TestSettingData(unittest.TestCase):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1080
    def test_get_reader_for_data(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1081
        reader = persistentconfml.get_reader_for_elem("data")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1082
        self.assertTrue(isinstance(reader, persistentconfml.DataReader))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1083
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1084
    def test_get_writer_for_data(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1085
        writer = persistentconfml.get_writer_for_class("Data")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1086
        self.assertTrue(isinstance(writer, persistentconfml.DataWriter))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1087
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1088
    def test_dump_data(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1089
        writer = persistentconfml.get_writer_for_class("Data")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1090
        dobj = api.Data(ref='foo', value=1)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1091
        elem = writer.dumps(dobj)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1092
        self.assertEquals(elem.text, 1)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1093
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1094
    def test_dump_data_with_subref(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1095
        writer = persistentconfml.get_writer_for_class("DataContainer")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1096
        base = api.DataContainer('foo')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1097
        base._add(api.Data(fqr='foo.bar', value='test'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1098
        elem = writer.dumps(base)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1099
        self.assertEquals(elem.find('bar').text, 'test')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1100
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1101
    def test_dump_data_with_long_ref(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1102
        writer = persistentconfml.get_writer_for_class("Data")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1103
        base = api.Data(ref='foo')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1104
        base._add(api.Data(ref='bar'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1105
        base._add_to_path('bar',api.Data(ref='test',  value='test'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1106
        elem = writer.dumps(base)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1107
        self.assertEquals(elem.find('bar').find('test').text, 'test')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1108
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1109
    def test_dump_data_with_hierarchy(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1110
        writer = persistentconfml.get_writer_for_class("Data")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1111
        base = api.DataContainer('foo')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1112
        base._add(api.Data(fqr='foo.bar', value='test'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1113
        elem = writer.dumps(base)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1114
        self.assertEquals(elem.find('bar').text, 'test')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1115
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1116
    def test_read_data_with_map(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1117
        reader = persistentconfml.get_reader_for_elem("data")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1118
        data = ElementTree.Element('data')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1119
        feature = ElementTree.Element('foo')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1120
        data.append(feature)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1121
        feature.append(ElementTree.Element('bar', {'map' : "foo/bar[@key='key 1']"}))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1122
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1123
        obj = reader.loads(data)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1124
        bar = obj._get('foo.bar')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1125
        self.assertEqual(bar.get_map(),"foo/bar[@key='key 1']")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1126
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1127
    def test_load_confml_with_meta(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1128
        conffile = open(os.path.join(ROOT_PATH,"data/accessoryserver.confml"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1129
        reader = persistentconfml.get_reader_for_elem("configuration")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1130
        etree = ElementTree.fromstring(conffile.read())
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1131
        obj = reader.loads(etree)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1132
        self.assertEquals(obj.meta.get('type'), 'featurelist')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1133
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1134
class TestReadWriteConfml(BaseTestCase):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1135
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1136
    Test case for ensuring that reading in a ConfML file and then writing
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1137
    it out again results in logically the same data (XML-wise) as the
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1138
    original data was.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1139
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1140
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1141
    def _normalize_xml_data(self, data):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1142
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1143
        Normalize XML data so that it can be compared using a binary
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1144
        comparison.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1145
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1146
        etree = ElementTree.fromstring(data)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1147
        persistence.indent(etree)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1148
        normalized_data = ElementTree.tostring(etree)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1149
        return normalized_data
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1150
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1151
    def _run_read_and_write_test(self, file_name, input_dir, output_dir):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1152
        file_path = os.path.join(input_dir, file_name)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1153
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1154
        f = open(file_path, "rb")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1155
        try:        original_data = f.read()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1156
        finally:    f.close()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1157
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1158
        original_data_normalized = self._normalize_xml_data(original_data)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1159
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1160
        model = persistentconfml.loads(original_data)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1161
        model_data = persistentconfml.dumps(model)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1162
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1163
        model_data_normalized = self._normalize_xml_data(model_data)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1164
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1165
        PATH_ORIGINAL = os.path.join(output_dir, 'original', file_name)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1166
        PATH_DUMPED   = os.path.join(output_dir, 'dumped', file_name)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1167
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1168
        if original_data_normalized != model_data_normalized:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1169
            def write(file_path, data):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1170
                file_dir = os.path.dirname(file_path)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1171
                if not os.path.exists(file_dir):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1172
                    os.makedirs(file_dir)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1173
                f = open(file_path, "wb")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1174
                try:        f.write(data)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1175
                finally:    f.close()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1176
            
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1177
            write(PATH_ORIGINAL, original_data_normalized)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1178
            write(PATH_DUMPED, model_data_normalized)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1179
            self.fail("Known bug (#506)")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1180
            self.fail("Read-write output for file '%s' is different, see the files in '%s'" % (file_name, output_dir))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1181
        else:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1182
            # Test was successful, remove any old files that might have been there,
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1183
            # so that the output directories only contain files for the tests that
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1184
            # failed
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1185
            self.remove_if_exists(PATH_ORIGINAL)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1186
            self.remove_if_exists(PATH_DUMPED)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1187
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1188
    def _run_test_for_file(self, file_path):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1189
        self._run_read_and_write_test(
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1190
            file_name  = os.path.basename(file_path),
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1191
            input_dir  = os.path.dirname(file_path),
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1192
            output_dir = os.path.normpath(os.path.join(ROOT_PATH, 'temp/read_write_results')))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1193
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1194
# Create a separate test method for each ConfML file in the read-write test data
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1195
_READ_WRITE_TESTDATA_DIR = os.path.join(ROOT_PATH, 'testdata/read_write')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1196
for filename in filter(lambda fn: fn.endswith('.confml'), os.listdir(_READ_WRITE_TESTDATA_DIR)):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1197
    path = os.path.join(_READ_WRITE_TESTDATA_DIR, filename)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1198
    test_method_name = 'test_read_write_file__%s' % filename.replace('.', '_')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1199
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1200
    # Use a separate function to create and set the lambda function on the
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1201
    # test class, because otherwise 'path' would be the last one value set to
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1202
    # it in the for loop
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1203
    def _register_test_method(path):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1204
        method = lambda self: self._run_test_for_file(path)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1205
        method.__name__ = test_method_name
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1206
        setattr(TestReadWriteConfml, test_method_name, method)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1207
    _register_test_method(path)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1208
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1209
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1210
if __name__ == '__main__':
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1211
    unittest.main()