configurationengine/source/cone/public/tests/unittest_views.py
author m2lahtel
Tue, 10 Aug 2010 14:29:28 +0300
changeset 3 e7e0ae78773e
parent 0 2e8eeb919028
permissions -rw-r--r--
ConE 1.2.11 release
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     1
#
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     2
# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     3
# All rights reserved.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     4
# This component and the accompanying materials are made available
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     5
# under the terms of "Eclipse Public License v1.0"
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     6
# which accompanies this distribution, and is available
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     7
# at the URL "http://www.eclipse.org/legal/epl-v10.html".
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     8
#
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     9
# Initial Contributors:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    10
# Nokia Corporation - initial contribution.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    11
#
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    12
# Contributors:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    13
#
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    14
# Description: 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    15
#
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    16
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    17
"""
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    18
Test the configuration
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    19
"""
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    20
import unittest
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    21
import string
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    22
import sys,os
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    23
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    24
ROOT_PATH = os.path.dirname(os.path.abspath(__file__))
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    25
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    26
from cone.public import api,exceptions,utils
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    27
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    28
class TestViews(unittest.TestCase):    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    29
    def setUp(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    30
        pass
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    31
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    32
    def test_create_view(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    33
        view = api.View("view1")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    34
        self.assertTrue(view)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    35
        self.assertTrue(view.ref, "view1")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    36
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    37
    def test_create_view_with_configuration(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    38
        config = api.Configuration("")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    39
        view = config.create_view("view1")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    40
        self.assertTrue(view)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    41
        self.assertTrue(view.ref, "view1")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    42
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    43
    def test_view_add(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    44
        view = api.View("view1")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    45
        view._add(api.Group("Test"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    46
        self.assertEquals(view._list(),['Test'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    47
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    48
#    def test_view_add_child_incorrect_class(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    49
#        view = api.View("view1")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    50
#        try:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    51
#            view._add(api.Feature("Test"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    52
#            self.fail("Adding incorrect class succeeds!")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    53
#        except exceptions.IncorrectClassError,e:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    54
#            pass
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    55
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    56
#    def test_group_add_child_incorrect_class(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    57
#        group = api.Group("Group")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    58
#        try:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    59
#            group._add(api.Feature("Test"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    60
#            self.fail("Adding incorrect class succeeds!")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    61
#        except exceptions.IncorrectClassError,e:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    62
#            pass
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    63
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    64
#    def test_feature_add_child_incorrect_class(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    65
#        feature = api.Feature("Feature")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    66
#        try:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    67
#            feature._add(api.Group("Test"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    68
#            self.fail("Adding incorrect class succeeds! This succeeds because of Base class support in model.")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    69
#        except exceptions.IncorrectClassError,e:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    70
#            pass
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    71
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    72
    def test_feature_add(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    73
        feature = api.Feature("Feature")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    74
        feature._add(api.Feature("Test"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    75
        self.assertEquals(feature._list(),['Test'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    76
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    77
    def test_view_create_groups_and_features_and_list_all(self):
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    78
        view = api.View("view1")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    79
        view._add(api.Group("group1"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    80
        view._add(api.Group("group2"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    81
        view._add(api._FeatureProxy("feature1"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    82
        view.group1._add(api.Group("group21"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    83
        view.group1.group21._add(api._FeatureProxy("feature211"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    84
        view.group1.group21._add(api._FeatureProxy("feature212"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    85
        view.feature1._add(api._FeatureProxy("feature11"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    86
        self.assertEquals(sorted(view._list_traverse()),
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    87
                          sorted(['group1', 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    88
                                           'group2', 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    89
                                           'feature1', 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    90
                                           'group1.group21', 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    91
                                           'group1.group21.feature211', 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    92
                                           'group1.group21.feature212', 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    93
                                           'feature1.feature11']))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    94
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    95
    def test_view_create_groups_and_features_and_list_features(self):
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    96
        view = api.View("view1")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    97
        view._add(api.Group("group1"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    98
        view._add(api.Group("group2"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    99
        view._add(api._FeatureProxy("feature1"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   100
        view.group1._add(api.Group("group21"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   101
        view.group1.group21._add(api._FeatureProxy("feature211"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   102
        view.group1.group21._add(api._FeatureProxy("feature212"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   103
        view.feature1._add(api._FeatureProxy("feature11"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   104
        self.assertEquals(sorted(view.list_all_features()),
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   105
                          sorted(['feature1', 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   106
                                          'group1.group21.feature211', 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   107
                                          'group1.group21.feature212', 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   108
                                          'feature1.feature11']))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   109
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   110
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   111
    def test_view_add_features_with_view_add_feature(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   112
        view = api.View("view1")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   113
        view.add_feature(api.Feature("feature1"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   114
        view.add_feature(api.Feature("feature2"), "com.nokia.s60")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   115
        view.com.nokia.s60.feature2.add_feature(api.Feature("feature21"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   116
        self.assertEquals(sorted(view.list_all_features()),
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   117
                          sorted(['feature1', 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   118
                                          'com.nokia.s60.feature2', 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   119
                                          'com.nokia.s60.feature2.feature21', 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   120
                                          ]))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   121
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   122
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   123
    def test_view_add_features_and_get_matching_features(self):
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   124
        view = api.View("view1")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   125
        view.add_feature(api.Feature("feature1"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   126
        view.add_feature(api.Feature("feature2"), "com.nokia.s60")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   127
        view.com.nokia.s60.feature2.add_feature(api.Feature("feature21"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   128
        self.assertEquals(view.get_feature("com.nokia.s60.feature2"), view.com.nokia.s60.feature2)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   129
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   130
    def test_view_get_matching_features(self):
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   131
        view = api.View("view1")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   132
        view.add_feature(api.Feature("feature1",type='boolean'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   133
        view.add_feature(api.Feature("feature2"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   134
        view.add_feature(api.Feature("feature11", type='boolean'),"feature1")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   135
        view.add_feature(api.Feature("feature12"),"feature1")
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   136
        self.assertEquals(view.get_matching_features("feature2"), [view.feature2])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   137
        self.assertEquals(view.get_matching_features("feature2.*"), [])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   138
        self.assertEquals(view.get_matching_features("feature1.*"), [view.feature1.feature11, view.feature1.feature12])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   139
        self.assertEquals(view.get_matching_features("feature1.*", name='feature11'), [view.feature1.feature11])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   140
        self.assertEquals(view.get_matching_features("**", filters=[lambda x: x.get_type()=='boolean']), 
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   141
                          [view.feature1,
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   142
                           view.feature1.feature11])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   143
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   144
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   145
    def test_view_get_matching_features_with_list(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   146
        view = api.View("view1")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   147
        view.add_feature(api.Feature("feature1",type='boolean'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   148
        view.add_feature(api.Feature("feature2"))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   149
        view.add_feature(api.Feature("feature11", type='boolean'),"feature1")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   150
        view.add_feature(api.Feature("feature12"),"feature1")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   151
        self.assertEquals(view.get_features(["feature2", "feature1"]), [view.feature2, view.feature1])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   152
        self.assertEquals(view.get_features(["feature2", "feature1.*"]), [view.feature2, 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   153
                                                                          view.feature1.feature11,
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   154
                                                                          view.feature1.feature12])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   155
        self.assertEquals(view.get_features([""]), [])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   156
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   157
    def test_view_add_features_and_remove_features(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   158
        view = api.View("view1")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   159
        view.add_feature(api.Feature("feature1"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   160
        view.add_feature(api.Feature("feature2"), "com.nokia.s60")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   161
        view.com.nokia.s60.feature2.add_feature(api.Feature("feature21"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   162
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   163
        self.assertEquals(view.list_all_features(),['feature1', 'com.nokia.s60.feature2', 'com.nokia.s60.feature2.feature21'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   164
        self.assertEquals(view.get_group("com.nokia.s60").list_features(),['feature2'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   165
        for fearef in view.list_features():
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   166
            view.remove_feature(fearef)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   167
        self.assertEquals(view.list_all_features(),['com.nokia.s60.feature2', 'com.nokia.s60.feature2.feature21'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   168
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   169
    def test_view_create_groups_remove_groups(self):
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   170
        view = api.View("view1")
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   171
        view.create_group("Group one")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   172
        view.create_group("Group two")
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   173
        view.add_feature(api.Feature("feature2"),"Group one")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   174
        self.assertEquals(view.list_groups(),['Group one',  'Group two'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   175
        view.remove_group("Group two")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   176
        self.assertEquals(view.list_groups(),['Group one'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   177
        view.get_group('Group one').add_feature(api.Feature("testing"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   178
        self.assertEquals(view.get_group('Group one').list_features(),['feature2','testing'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   179
        self.assertEquals(view.list_all_features(),['Group one.feature2', 'Group one.testing'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   180
        view.remove_group("Group one")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   181
        self.assertEquals(view.list_groups(),[])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   182
        self.assertEquals(view.list_features(),[])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   183
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   184
    def test_create_featurelink(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   185
        self.assertEquals(api.FeatureLink.get_featurelink_ref("fealink"), "link_fealink")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   186
        fealink = api.FeatureLink("fealink")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   187
        self.assertEquals(fealink.ref, "link_fealink")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   188
        self.assertEquals(fealink.link, "fealink")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   189
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   190
    def test_view_create_featurelink(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   191
        view = api.View("view1")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   192
        fl = view.create_featurelink("Testing.foobar")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   193
        self.assertTrue(isinstance(fl, api.FeatureLink))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   194
        self.assertEquals(view.get_featurelink("Testing.foobar"), fl)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   195
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   196
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   197
    def test_view_create_group_with_name(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   198
        view = api.View("view1")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   199
        view.create_group("Group one", name="Testing group")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   200
        self.assertEquals(view.get_group("Group one").name, "Testing group")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   201
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   202
    def test_view_add_featurelink(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   203
        view = api.View("view1")
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   204
        view.create_group("Group one")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   205
        view.create_group("Group two")
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   206
        view.add_feature(api.Feature("feature2"),"Group one")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   207
        self.assertEquals(view.list_groups(),['Group one',  'Group two'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   208
        view.remove_group("Group two")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   209
        #view.add(api.FeatureGroup('foo.*'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   210
        self.assertEquals(view.list_groups(),['Group one'])
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   211
        view.get_group('Group one').create_featurelink("testing", name='testing 1')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   212
        self.assertEquals(view.get_group('Group one').get_featurelink('testing').get_name(), 'testing 1')
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   213
        g1 = view.get_group('Group one')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   214
        self.assertEquals(g1.list_features(),['feature2'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   215
        self.assertEquals(view.list_all_features(),['Group one.feature2'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   216
        view.remove_group("Group one")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   217
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   218
        self.assertEquals(view.list_groups(),[])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   219
        self.assertEquals(view.list_features(),[])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   220
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   221
    def test_feature_link_get_overrides(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   222
        fl = api.FeatureLink("testing")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   223
        self.assertEquals(fl.get_attributes(), {})
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   224
        self.assertEquals(fl.get_attributes(), {})
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   225
        fl.override_attributes.append('desc')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   226
        fl.override_attributes.append('name')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   227
        fl.name = None
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   228
        fl.desc = "test"
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   229
        self.assertEquals(fl.get_attributes(), {'desc': 'test'})
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   230
        fl.desc = "bar"
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   231
        self.assertEquals(fl.get_attributes(), {'desc': 'bar'})
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   232
        fl.desc = ""
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   233
        fl.minLength = 2
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   234
        fl.override_attributes.append('minLength')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   235
        self.assertEquals(fl.get_attributes(), { 'minLength' : 2, 'desc': ''})
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   236
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   237
    def test_add_view_to_configuration_and_populate(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   238
        config = api.Configuration("foo")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   239
        config.add_feature(api.Feature("testing"))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   240
        view = api.View("view1")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   241
        view.create_group("Group one")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   242
        fl = api.FeatureLink("testing")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   243
        view.get_group('Group one').add(fl)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   244
        config.add_view(view)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   245
        view.populate()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   246
        self.assertEquals(view.get_group('Group one').list_features(),['proxy_testing'])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   247
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   248
    def test_view_add_featurelink_with_description_override(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   249
        api.FeatureLink.override_attributes.append('dict')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   250
        config = api.Configuration("foo")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   251
        fea = api.Feature("testing")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   252
        fea.desc = "feature desc"
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   253
        config.add_feature(fea)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   254
        view = api.View("view1")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   255
        view.create_group("Group one")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   256
        fl = api.FeatureLink("testing")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   257
        fl.desc = "view desc"
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   258
        view.get_group('Group one').add(fl)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   259
        config.add_view(view)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   260
        view.populate()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   261
        self.assertEquals(view.get_group('Group one').list_features(),['proxy_testing'])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   262
        self.assertEquals(view.get_group('Group one').get_feature('proxy_testing').desc, "view desc")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   263
    
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   264
    def compareview(self,view1,view2):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   265
        self.assertEquals(view1.ref, view2.ref)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   266
        self.assertEquals(view1.container, view2.container)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   267
        self.assertEquals(view1.name, view2.name)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   268
        self.assertEquals(view1.support_data, view2.support_data)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   269
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   270
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   271
    def test_clone_view_with_featurelink(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   272
        view1 = api.View("view1")
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   273
        view1.create_group("Group one")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   274
        view1.create_group("Group two")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   275
        view1.get_group('Group one').create_featurelink("testing/foo")
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   276
        fea2 = api.Feature("feature2")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   277
        view1.add_feature(fea2,"Group one")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   278
        view1.add_feature(api.Feature("feature3"),"Group one")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   279
        self.assertEquals(view1.list_groups(),['Group one',  'Group two'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   280
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   281
        view2 = view1._clone(recursion=True)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   282
        self.compareview(view1,view2)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   283
        self.assertEquals(view2.list_groups(),['Group one',  'Group two'])
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   284
        self.assertEquals(view2.get_group('Group one')._list(),['link_testing_foo', 'feature2', 'feature3'])
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   285
        #self.assertEquals(view2.get_group('Group one').feature2._obj, fea2)
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   286
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   287
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   288
    def test_populate_group_with_same_name_features(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   289
        config = api.Configuration("foo")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   290
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   291
        feature = api.Feature("Feature1", name="Some feature")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   292
        feature.add_feature(api.Feature("Setting1", name="Setting 1"))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   293
        feature.add_feature(api.Feature("Setting2", name="Setting 2"))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   294
        config.add_feature(feature)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   295
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   296
        feature = api.Feature("Feature2", name="Some feature")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   297
        feature.add_feature(api.Feature("Setting1", name="Setting 1"))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   298
        feature.add_feature(api.Feature("Setting2", name="Setting 2"))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   299
        config.add_feature(feature)
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   300
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   301
        
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   302
        view = api.View('testview')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   303
        config.add_view(view)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   304
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   305
        # Test using explicit links for all settings
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   306
        view.create_group('testgroup')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   307
        group = view.get_group('testgroup')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   308
        group.create_featurelink('Feature1.Setting1')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   309
        group.create_featurelink('Feature1.Setting2')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   310
        group.create_featurelink('Feature2.Setting1')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   311
        group.create_featurelink('Feature2.Setting2')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   312
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   313
        group.populate()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   314
        self.assertEquals(sorted(group.list_features()),
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   315
                          ['proxy_Feature1_Setting1',
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   316
                           'proxy_Feature1_Setting2',
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   317
                           'proxy_Feature2_Setting1',
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   318
                           'proxy_Feature2_Setting2'])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   319
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   320
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   321
        # Test using wildcards
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   322
        view.create_group('testgroup2')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   323
        group = view.get_group('testgroup2')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   324
        group.create_featurelink('Feature1.*')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   325
        group.create_featurelink('Feature2.*')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   326
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   327
        group.populate()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   328
        self.assertEquals(sorted(group.list_features()),
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   329
                          ['proxy_Feature1_Setting1',
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   330
                           'proxy_Feature1_Setting2',
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   331
                           'proxy_Feature2_Setting1',
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   332
                           'proxy_Feature2_Setting2'])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   333
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   334
    def test_readonly_attribute(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   335
        p = api.Project(api.Storage.open(os.path.join(ROOT_PATH,'testdata', 'view_tests')))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   336
        root = p.get_configuration('view_tests-cpf.confml')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   337
        views = root.get_view(root.list_views()[0])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   338
        seqs = views.get_group('Sequences')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   339
        japan_car_name = seqs.get_feature('proxy_japan-car-fea_CarSequence_CarName')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   340
        self.assertTrue(japan_car_name.readOnly)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   341
    
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   342
if __name__ == '__main__':
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   343
      unittest.main()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   344