199 <outputLocation>myProduct</outputLocation> |
189 <outputLocation>myProduct</outputLocation> |
200 </imakerapi> |
190 </imakerapi> |
201 </data> |
191 </data> |
202 <confml:view id="imakerimage" name="Image creation"> |
192 <confml:view id="imakerimage" name="Image creation"> |
203 <confml:desc>Image creation related settings</confml:desc> |
193 <confml:desc>Image creation related settings</confml:desc> |
204 <confml:group name="Imageproperties"> |
194 <confml:group name="Imageproperties / test"> |
205 <confml:desc>Sample Description</confml:desc> |
195 <confml:desc>Sample Description</confml:desc> |
206 <confml:setting ref="imakerapi/*"/> |
196 <confml:setting ref="imakerapi/imagetype"/> |
|
197 <confml:setting ref="imakerapi/rofs3version"/> |
|
198 <confml:setting ref="imakerapi/productname"/> |
|
199 <confml:setting ref="imakerapi/outputLocation"/> |
207 <confml:setting ref="imaker/*"/> |
200 <confml:setting ref="imaker/*"/> |
208 </confml:group> |
201 </confml:group> |
209 </confml:view> |
202 </confml:view> |
210 </confml:configuration> |
203 </confml:configuration> |
|
204 ''' |
|
205 |
|
206 overrideview = \ |
|
207 '''<?xml version="1.0" encoding="UTF-8"?> |
|
208 <configuration xmlns="http://www.s60.com/xml/confml/2" schemaLocation="http://www.s60.com/xml/confml/1 http://www.s60.com/xml/confml/1#//confml2"> |
|
209 <feature ref="imakerapi" name="iMaker API"> |
|
210 <setting ref="imagetype" name="IMAGE_TYPE" type="selection"> |
|
211 <option name="rnd" value="0"/> |
|
212 <option name="subcon" value="1"/> |
|
213 <option name="prd" value="2"/> |
|
214 </setting> |
|
215 <setting ref="productname" name="PRODUCT_NAME" type="string"/> |
|
216 <setting ref="outputLocation" name="OUTPUT_LOCATION" type="string"/> |
|
217 </feature> |
|
218 <data> |
|
219 <imakerapi> |
|
220 <imagetype>0</imagetype> |
|
221 <productname>myProduct</productname> |
|
222 <outputLocation>myProduct</outputLocation> |
|
223 </imakerapi> |
|
224 </data> |
|
225 <view id="imakerimage" name="Image creation"> |
|
226 <desc>Image creation related settings</desc> |
|
227 <group name="Imageproperties"> |
|
228 <desc>Sample Description</desc> |
|
229 <setting ref="imakerapi/imagetype"> |
|
230 <option name="prd_renamed" value="2"/> |
|
231 </setting> |
|
232 <setting ref="imakerapi/productname" name="New Product Name"> |
|
233 <desc>test desc override</desc> |
|
234 <minLength value="2" /> |
|
235 </setting> |
|
236 <setting ref="imakerapi/outputLocation" minOccurs="2"/> |
|
237 </group> |
|
238 </view> |
|
239 </configuration> |
|
240 ''' |
|
241 |
|
242 |
|
243 option_overrideview = \ |
|
244 '''<?xml version="1.0" encoding="UTF-8"?> |
|
245 <configuration xmlns="http://www.s60.com/xml/confml/2" schemaLocation="http://www.s60.com/xml/confml/1 http://www.s60.com/xml/confml/1#//confml2"> |
|
246 <feature ref="imakerapi" name="iMaker API"> |
|
247 <setting ref="imagetype" name="IMAGE_TYPE" type="selection"> |
|
248 <option name="rnd" value="0"/> |
|
249 <option name="subcon" value="1"/> |
|
250 <option name="prd" value="2"/> |
|
251 </setting> |
|
252 <setting ref="productname" name="PRODUCT_NAME" type="string"/> |
|
253 <setting ref="outputLocation" name="OUTPUT_LOCATION" type="string"/> |
|
254 </feature> |
|
255 <data> |
|
256 <imakerapi> |
|
257 <imagetype>0</imagetype> |
|
258 <productname>myProduct</productname> |
|
259 <outputLocation>myProduct</outputLocation> |
|
260 </imakerapi> |
|
261 </data> |
|
262 <view id="imakerimage" name="Image creation"> |
|
263 <desc>Image creation related settings</desc> |
|
264 <group name="Imageproperties"> |
|
265 <desc>Sample Description</desc> |
|
266 <setting ref="imakerapi/imagetype"> |
|
267 <option name="prd2" value="2"/> |
|
268 <option name="newoption" value="5"/> |
|
269 </setting> |
|
270 <setting ref="imakerapi/productname" name="New Product Name"> |
|
271 <desc>test desc override</desc> |
|
272 <minLength value="2" /> |
|
273 </setting> |
|
274 <setting ref="imakerapi/outputLocation" minOccurs="2"/> |
|
275 </group> |
|
276 </view> |
|
277 </configuration> |
|
278 ''' |
|
279 |
|
280 properties_overrideview = \ |
|
281 '''<?xml version="1.0" encoding="UTF-8"?> |
|
282 <configuration xmlns="http://www.s60.com/xml/confml/2" schemaLocation="http://www.s60.com/xml/confml/1 http://www.s60.com/xml/confml/1#//confml2"> |
|
283 <feature ref="imakerapi" name="iMaker API"> |
|
284 <setting ref="imagetype" name="IMAGE_TYPE" type="selection"> |
|
285 <option name="rnd" value="0"/> |
|
286 <option name="subcon" value="1"/> |
|
287 <option name="prd" value="2"/> |
|
288 <property name="mime" value="image/svgt image/bmp"/> |
|
289 |
|
290 </setting> |
|
291 <setting ref="productname" name="PRODUCT_NAME" type="string"/> |
|
292 <setting ref="outputLocation" name="OUTPUT_LOCATION" type="string"/> |
|
293 </feature> |
|
294 <data> |
|
295 <imakerapi> |
|
296 <imagetype>0</imagetype> |
|
297 <productname>myProduct</productname> |
|
298 <outputLocation>myProduct</outputLocation> |
|
299 </imakerapi> |
|
300 </data> |
|
301 <view id="imakerimage" name="Image creation"> |
|
302 <desc>Image creation related settings</desc> |
|
303 <group name="Imageproperties"> |
|
304 <desc>Sample Description</desc> |
|
305 <setting ref="imakerapi/imagetype"> |
|
306 <property name="mime" value="image/svgt image/jpg"/> |
|
307 <property name="mime2" value="image/svgt image/bmp"/> |
|
308 </setting> |
|
309 <setting ref="imakerapi/productname" name="New Product Name"> |
|
310 <desc>test desc override</desc> |
|
311 <minLength value="2" /> |
|
312 </setting> |
|
313 <setting ref="imakerapi/outputLocation" minOccurs="2"/> |
|
314 </group> |
|
315 </view> |
|
316 </configuration> |
|
317 ''' |
|
318 |
|
319 selectionsetting = \ |
|
320 '''<?xml version="1.0" encoding="UTF-8"?> |
|
321 <configuration xmlns="http://www.s60.com/xml/confml/2" name="Test features for testing name-ID mappings"><feature ref="CTD_APs" name="GPRS Access Points" ><desc>GPRS connection method (CM) definitions</desc> |
|
322 <setting ref="AP" |
|
323 name="GPRS" |
|
324 type="sequence" |
|
325 minOccurs="0" |
|
326 maxOccurs="99" |
|
327 displayName="ConnectionName" |
|
328 mapValue="DestinationNetwork" |
|
329 mapKey="GPRS_AP_Name"> |
|
330 <setting ref="GPRS_AP_Name" name="GPRS Access Point Name" type="string"> |
|
331 <desc>The access point name for this GPRS connection</desc> |
|
332 </setting> |
|
333 <setting ref="ConnectionName" name="Connection Name" type="string"> |
|
334 <desc>The access point name that is visible to the user.</desc> |
|
335 </setting> |
|
336 <setting ref="DestinationNetwork" name="Destination Network" type="selection"> |
|
337 <desc>Select destination network for access point</desc> |
|
338 <option name="Internet" value="1"/> |
|
339 <option name="MMS" value="2"/> |
|
340 <option name="Wap Services" value="3"/> |
|
341 </setting> |
|
342 <setting ref="NetworkType" name="Network type" type="selection"> |
|
343 <desc>Addressing that the network uses.</desc> |
|
344 <option name="IPv4" value="IPv4"/> |
|
345 <option name="IPv6" value="IPv6"/> |
|
346 </setting> |
|
347 </setting> |
|
348 </feature> |
|
349 <feature ref="TestApplication" name="Test internet application"> |
|
350 <setting ref="ConfirmFromUser" name="Confirm internet access" type="boolean"> |
|
351 <desc>Confirm the internet access from user?</desc> |
|
352 </setting> |
|
353 <setting ref="DefaultAP" name="Default access point" type="selection"> |
|
354 <option map="CTD_APs/AP"></option> |
|
355 </setting> |
|
356 </feature> |
|
357 <data> |
|
358 <CTD_APs> |
|
359 <AP template="true"> |
|
360 <DestinationNetwork>Internet</DestinationNetwork> |
|
361 <NetworkType>IPv4</NetworkType> |
|
362 </AP> |
|
363 <AP> |
|
364 <GPRS_AP_Name>Operator 1</GPRS_AP_Name> |
|
365 <ConnectionName>Operator Internet</ConnectionName> |
|
366 <DestinationNetwork>Internet</DestinationNetwork> |
|
367 <NetworkType>IPv4</NetworkType> |
|
368 </AP> |
|
369 <AP> |
|
370 <GPRS_AP_Name>Test</GPRS_AP_Name> |
|
371 <ConnectionName>Test Connection</ConnectionName> |
|
372 <DestinationNetwork>Internet</DestinationNetwork> |
|
373 <NetworkType>IPv4</NetworkType> |
|
374 </AP> |
|
375 </CTD_APs> |
|
376 <TestApplication> |
|
377 <ConfirmFromUser>true</ConfirmFromUser> |
|
378 <DefaultAP map="CTD_APs/AP[@key='Operator 1']"></DefaultAP> |
|
379 </TestApplication> |
|
380 </data> |
|
381 </configuration> |
|
382 ''' |
|
383 |
|
384 multiselection = \ |
|
385 '''<?xml version="1.0" encoding="UTF-8"?> |
|
386 <configuration xmlns="http://www.s60.com/xml/confml/2" name="Test features for testing name-ID mappings"> |
|
387 <feature ref="aFeature"> |
|
388 <setting type="sequence" ref="exampleSequence" mapKey="id" mapValue="someName"> |
|
389 <setting type="int" ref="id"/> |
|
390 <setting type="string" ref="someName"/> |
|
391 <setting type="string" ref="someData"/> |
|
392 </setting> |
|
393 <setting ref="selectionSetting" name="Selection Setting" type="selection"> |
|
394 <option map="aFeature/exampleSequence"/> |
|
395 </setting> |
|
396 <setting ref="multiselectionSetting" name="Multi-selection Setting" type="multiSelection"> |
|
397 <option name="default selection" value=""/> |
|
398 <option map="aFeature/exampleSequence"/> |
|
399 </setting> |
|
400 <setting ref="multiselectionSettingOverride" name="Multi-selection Setting with options override" type="multiSelection"> |
|
401 <option map="aFeature/exampleSequence" displayName="someName" mapValue="someData"/> |
|
402 </setting> |
|
403 </feature> |
|
404 <data> |
|
405 <aFeature> |
|
406 <exampleSequence> |
|
407 <id>12</id> |
|
408 <someName>foo</someName> |
|
409 <someData>Real data is here!</someData> |
|
410 </exampleSequence> |
|
411 <exampleSequence> |
|
412 <id>34</id> |
|
413 <someName>bar</someName> |
|
414 <someData>I am not FOO!</someData> |
|
415 </exampleSequence> |
|
416 <selectionSetting map="aFeature/exampleSequence[@key='12']"/> |
|
417 <multiselectionSetting>0</multiselectionSetting> |
|
418 <multiselectionSetting map="aFeature/exampleSequence[@key='12']"/> |
|
419 <multiselectionSetting map="aFeature/exampleSequence[@key='34']"/> |
|
420 <multiselectionSettingOverride map="aFeature/exampleSequence[@key='12']"/> |
|
421 <multiselectionSettingOverride map="aFeature/exampleSequence[@key='34']"/> |
|
422 </aFeature> |
|
423 </data> |
|
424 </configuration> |
211 ''' |
425 ''' |
212 |
426 |
213 class TestModuleGetters(unittest.TestCase): |
427 class TestModuleGetters(unittest.TestCase): |
214 def test_get_reader_for_configuration(self): |
428 def test_get_reader_for_configuration(self): |
215 confread = persistentconfml.get_reader_for_elem("configuration") |
429 confread = persistentconfml.get_reader_for_elem("configuration") |
324 self.assertEquals(dview.get_feature('feature1.child1').get_value('rfs'), 'true') |
544 self.assertEquals(dview.get_feature('feature1.child1').get_value('rfs'), 'true') |
325 self.assertEquals(dview.get_feature('feature1.child2').get_value('rfs'), 'false') |
545 self.assertEquals(dview.get_feature('feature1.child2').get_value('rfs'), 'false') |
326 |
546 |
327 dumped = persistentconfml.dumps(conf) |
547 dumped = persistentconfml.dumps(conf) |
328 conf2 = persistentconfml.loads(dumped) |
548 conf2 = persistentconfml.loads(dumped) |
|
549 self.assertEquals(conf2.id, "foo_conf") |
329 dview = conf2.get_default_view() |
550 dview = conf2.get_default_view() |
|
551 self.assertEquals(dview.get_feature('feature1').id, "feature1_id") |
|
552 self.assertEquals(dview.get_feature('feature1.child1').id, None) |
330 self.assertEquals(dview.get_feature('feature1.child1').get_value(), None) |
553 self.assertEquals(dview.get_feature('feature1.child1').get_value(), None) |
331 self.assertEquals(dview.get_feature('feature1.child1').get_value('rfs'), 'true') |
554 self.assertEquals(dview.get_feature('feature1.child1').get_value('rfs'), 'true') |
332 self.assertEquals(dview.get_feature('feature1.child2').get_value('rfs'), 'false') |
555 self.assertEquals(dview.get_feature('feature1.child2').get_value('rfs'), 'false') |
|
556 |
|
557 def test_create_confml_features_and_dump_and_load(self): |
|
558 conf = model.ConfmlConfiguration("foo/foo.confml", id="foo_conf") |
|
559 fea = conf.create_feature('feature1', id="feature1_id") |
|
560 fea.add_feature(model.ConfmlBooleanSetting("boolset", id="bool", name="testname", desc="desriptions")) |
|
561 fea.add_feature(model.ConfmlIntSetting("intset", id="int")) |
|
562 fea.add_feature(model.ConfmlStringSetting("stringset", id="string")) |
|
563 fea.add_feature(model.ConfmlSelectionSetting("selset", id="sel")) |
|
564 fea.add_feature(model.ConfmlSequenceSetting("seqset", id="seq")) |
|
565 fea.add_feature(model.ConfmlFileSetting("fileset", id="file", desc="testdesc")) |
|
566 |
|
567 dumped = persistentconfml.dumps(conf) |
|
568 conf2 = persistentconfml.loads(dumped) |
|
569 self.assertEquals(conf2.id, "foo_conf") |
|
570 dview = conf2.get_default_view() |
|
571 self.assertEquals(dview.get_feature('feature1').id, "feature1_id") |
|
572 self.assertEquals(dview.get_feature('feature1.boolset').id, "bool") |
|
573 self.assertEquals(dview.get_feature('feature1.boolset').desc, "desriptions") |
|
574 self.assertEquals(dview.get_feature('feature1.intset').id, "int") |
|
575 self.assertEquals(dview.get_feature('feature1.stringset').id, "string") |
|
576 self.assertEquals(dview.get_feature('feature1.selset').id, "sel") |
|
577 self.assertEquals(dview.get_feature('feature1.seqset').id, "seq") |
|
578 self.assertEquals(dview.get_feature('feature1.fileset').id, "file") |
|
579 self.assertEquals(dview.get_feature('feature1.fileset').desc, "testdesc") |
|
580 |
|
581 def test_create_confml_view_and_dump_and_load(self): |
|
582 conf = model.ConfmlConfiguration("foo/view.confml", id="view_conf") |
|
583 view = conf.create_view('view1') |
|
584 group1 = view.create_group("group one", id="g1") |
|
585 group2 = view.create_group("group two", id="g2") |
|
586 group2.create_featurelink("test/foo", id="fea1", name="Jee", desc="testdesc", readOnly="true") |
|
587 |
|
588 dumped = persistentconfml.dumps(conf) |
|
589 conf2 = persistentconfml.loads(dumped) |
|
590 self.assertEquals(conf2.id, "view_conf") |
|
591 v1 = conf2.get_view('view1') |
|
592 self.assertEquals(v1.name, "view1") |
|
593 self.assertEquals(v1.id, None) |
|
594 self.assertEquals(v1.list_groups(), ['group one', 'group two']) |
|
595 self.assertEquals(v1.get_group('group one').id, "g1") |
|
596 self.assertEquals(v1.get_group('group two').id, "g2") |
|
597 self.assertEquals(v1.get_group('group two').get_featurelink("test/foo").id, "fea1") |
|
598 self.assertEquals(v1.get_group('group two').get_featurelink("test/foo").name, "Jee") |
|
599 self.assertEquals(v1.get_group('group two').get_featurelink("test/foo").desc, "testdesc") |
|
600 self.assertEquals(v1.get_group('group two').get_featurelink("test/foo").readOnly, True) |
333 |
601 |
334 def test_load_actualconfml_test_rfs_settings(self): |
602 def test_load_actualconfml_test_rfs_settings(self): |
335 reader = persistentconfml.get_reader_for_elem("configuration") |
603 reader = persistentconfml.get_reader_for_elem("configuration") |
336 obj = reader.loads(ElementTree.fromstring(actualconfml)) |
604 obj = reader.loads(ElementTree.fromstring(actualconfml)) |
337 self.assertEquals(obj.get_feature('KCRUidApEngineLV.KApEngineLVFlags').rfs,True) |
605 self.assertEquals(obj.get_feature('KCRUidApEngineLV.KApEngineLVFlags').rfs,True) |
362 reader = persistentconfml.get_reader_for_elem("configuration") |
630 reader = persistentconfml.get_reader_for_elem("configuration") |
363 etree = ElementTree.fromstring(conffile.read()) |
631 etree = ElementTree.fromstring(conffile.read()) |
364 obj = reader.loads(etree) |
632 obj = reader.loads(etree) |
365 dview = obj.get_default_view() |
633 dview = obj.get_default_view() |
366 dnsfea = dview.get_feature('DNs.DN') |
634 dnsfea = dview.get_feature('DNs.DN') |
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']) |
635 self.assertEquals(dnsfea.list_features(),['Name', 'DNId', 'Metadata', 'Protection', 'Hidden', 'HiddenAgent', 'Highlighted', 'Icon', 'EmbeddedDN', 'IAP', 'IAP2', 'IAP3', 'IAP4', 'IAP5', 'IAP6', 'IAP7', 'IAP8', 'IAP9', 'IAP10']) |
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]) |
636 self.assertEquals(dnsfea.get_template(), [None, None, 'User Defined', '0', 'No', 'No', 'No', '11', None, None, None, None, None, None, None, None, None, None, None]) |
369 self.assertEquals(dnsfea.get_value(), |
637 self.assertEquals(dnsfea.get_value(), |
370 [['Internet', '1', 'Internet', '2', 'No', 'No', 'Yes', '0', None, None, None, None, None, None, None, None, None, None, None], |
638 [['Internet', '1', 'Internet', '2', 'No', 'No', 'Yes', '0', None, None, None, None, None, None, None, None, None, None, None], |
371 ['MMS', '2', 'MMS', '2', 'No', 'Yes', 'No', '2', None, None, None, None, None, None, None, None, None, None, None], |
639 ['MMS', '2', 'MMS', '2', 'No', 'Yes', 'No', '2', None, None, None, None, None, None, None, None, None, None, None], |
372 ['Operator', '3', 'Operator', '2', 'No', 'No', 'No', '4', None, None, None, None, None, None, None, None, None, None, None] |
640 ['Operator', '3', 'Operator', '2', 'No', 'No', 'No', '4', None, None, None, None, None, None, None, None, None, None, None] |
373 ]) |
641 ]) |
387 fs = filestorage.FileStorage(testdata) |
655 fs = filestorage.FileStorage(testdata) |
388 p = api.Project(fs) |
656 p = api.Project(fs) |
389 config = p.get_configuration('multiselection.confml') |
657 config = p.get_configuration('multiselection.confml') |
390 dview = config.get_default_view() |
658 dview = config.get_default_view() |
391 multisel1 = dview.get_feature('MultiSelections.MultiSel1') |
659 multisel1 = dview.get_feature('MultiSelections.MultiSel1') |
392 self.assertEquals(multisel1.value,["first selection","second selection"]) |
660 self.assertEquals(multisel1.value,("first selection","second selection")) |
393 self.assertEquals(multisel1.get_data_cast(multisel1.get_value()),["first selection","second selection"]) |
661 self.assertEquals(multisel1.get_value(),("first selection","second selection")) |
394 self.assertEquals(multisel1.get_value(),["first selection","second selection"]) |
|
395 self.assertEquals(multisel1.get_data().get_value(),'"first selection" "second selection"') |
662 self.assertEquals(multisel1.get_data().get_value(),'"first selection" "second selection"') |
396 |
663 |
397 |
664 |
398 def test_load_content_multiselection_empty_confml_from_file(self): |
665 def test_load_content_multiselection_empty_confml_from_file(self): |
399 fs = filestorage.FileStorage(testdata) |
666 fs = filestorage.FileStorage(testdata) |
400 p = api.Project(fs) |
667 p = api.Project(fs) |
401 config = p.get_configuration('multiselection.confml') |
668 config = p.get_configuration('multiselection.confml') |
402 dview = config.get_default_view() |
669 dview = config.get_default_view() |
403 multisel1 = dview.get_feature('uda_selection.selectedfiles') |
670 multisel1 = dview.get_feature('uda_selection.selectedfiles') |
404 self.assertEquals(multisel1.get_value(),None) |
671 self.assertEquals(multisel1.get_value(), ()) |
405 self.assertEquals(multisel1.get_data().get_value(),None) |
672 self.assertEquals(multisel1.get_data().get_value(),None) |
406 |
673 |
407 |
674 |
408 |
675 |
409 def test_add_sequence_data_to_separate_confml(self): |
676 def test_add_sequence_data_to_separate_confml(self): |
410 prj = api.Project(api.Storage.open(os.path.join(ROOT_PATH,'data'),"w")) |
677 prj = api.Project(api.Storage.open(os.path.join(ROOT_PATH,'temp'),"w")) |
411 config = prj.create_configuration('test2.confml') |
678 config = prj.create_configuration('test2.confml') |
412 seqconfig = config.create_configuration('sequence.confml') |
679 seqconfig = config.create_configuration('sequence.confml') |
413 config.create_configuration('testdata.confml') |
680 config.create_configuration('testdata.confml') |
414 seqconfig.add_feature(api.FeatureSequence('feature1')) |
681 seqconfig.add_feature(api.FeatureSequence('feature1')) |
415 seqconfig.add_feature(api.Feature('child1'),'feature1') |
682 seqconfig.add_feature(api.Feature('child1', name="child1"),'feature1') |
416 seqconfig.add_feature(api.Feature('child2'),'feature1') |
683 seqconfig.add_feature(api.Feature('child2', name="child2"),'feature1') |
417 seqconfig.add_feature(api.Feature('child3'),'feature1') |
684 seqconfig.add_feature(api.Feature('child3', name="child3"),'feature1') |
418 dview = config.get_default_view() |
685 dview = config.get_default_view() |
419 self.assertEquals(dview.get_feature('feature1').get_type(),'sequence') |
686 self.assertEquals(dview.get_feature('feature1').get_type(),'sequence') |
420 dview.get_feature('feature1').set_template(['c1','c2','c3']) |
687 dview.get_feature('feature1').set_template(['c1','c2','c3']) |
421 dview.get_feature('feature1').add_sequence(['row 1','43','56']) |
688 dview.get_feature('feature1').add_sequence(['row 1','43','56']) |
422 dview.get_feature('feature1').add_sequence(['row 2','43','56']) |
689 dview.get_feature('feature1').add_sequence(['row 2','43','56']) |
438 self.assertEquals(dview.get_feature('feature1').get_data()[0].get_data().find_parent(type=api.Configuration), config.get_configuration('testdata2.confml')._obj) |
705 self.assertEquals(dview.get_feature('feature1').get_data()[0].get_data().find_parent(type=api.Configuration), config.get_configuration('testdata2.confml')._obj) |
439 prj.remove_configuration('test2.confml') |
706 prj.remove_configuration('test2.confml') |
440 |
707 |
441 |
708 |
442 def test_add_sequence_data_to_separate_confml_with_append_policy(self): |
709 def test_add_sequence_data_to_separate_confml_with_append_policy(self): |
443 prj = api.Project(api.Storage.open(os.path.join(ROOT_PATH,'data'),"w")) |
710 prj = api.Project(api.Storage.open(os.path.join(ROOT_PATH,'temp'),"w")) |
444 config = prj.create_configuration('test1.confml') |
711 config = prj.create_configuration('test1.confml') |
445 seqconfig = config.create_configuration('sequence.confml') |
712 seqconfig = config.create_configuration('sequence.confml') |
446 config.create_configuration('testdata.confml') |
713 config.create_configuration('testdata.confml') |
447 seqconfig.add_feature(api.FeatureSequence('feature1')) |
714 seqconfig.add_feature(api.FeatureSequence('feature1')) |
448 seqconfig.add_feature(api.Feature('child1'),'feature1') |
715 seqconfig.add_feature(api.Feature('child1', name="child1"),'feature1') |
449 seqconfig.add_feature(api.Feature('child2'),'feature1') |
716 seqconfig.add_feature(api.Feature('child2', name="child2"),'feature1') |
450 seqconfig.add_feature(api.Feature('child3'),'feature1') |
717 seqconfig.add_feature(api.Feature('child3', name="child3"),'feature1') |
451 dview = config.get_default_view() |
718 dview = config.get_default_view() |
452 self.assertEquals(dview.get_feature('feature1').get_type(),'sequence') |
719 self.assertEquals(dview.get_feature('feature1').get_type(),'sequence') |
453 dview.get_feature('feature1').set_template(['c1','c2','c3']) |
720 dview.get_feature('feature1').set_template(['c1','c2','c3']) |
454 dview.get_feature('feature1').add_sequence(['row 1','43','56']) |
721 dview.get_feature('feature1').add_sequence(['row 1','43','56']) |
455 dview.get_feature('feature1').add_sequence(['row 2','43','56']) |
722 dview.get_feature('feature1').add_sequence(['row 2','43','56']) |
473 |
740 |
474 def test_load_view(self): |
741 def test_load_view(self): |
475 reader = persistentconfml.get_reader_for_elem("configuration") |
742 reader = persistentconfml.get_reader_for_elem("configuration") |
476 etree = ElementTree.fromstring(simpleview) |
743 etree = ElementTree.fromstring(simpleview) |
477 obj = reader.loads(etree) |
744 obj = reader.loads(etree) |
478 self.assertEquals(obj.get_name(), 'unknown') |
745 self.assertEquals(obj.get_name(), None) |
479 self.assertEquals(obj.list_views(), ['Image creation']) |
746 self.assertEquals(obj.list_views(), ['Image creation']) |
480 self.assertEquals(obj.get_view('Image creation').get_name(),'Image creation') |
747 self.assertEquals(obj.get_view('Image creation').get_name(),'Image creation') |
481 self.assertEquals(obj.get_view('Image creation').desc,'Image creation related settings') |
748 self.assertEquals(obj.get_view('Image creation').desc,'Image creation related settings') |
482 self.assertEquals(obj.get_view('Image creation').list_features(),[]) |
749 self.assertEquals(obj.get_view('Image creation').list_features(),[]) |
483 self.assertEquals(obj.get_view('Image creation').list_groups(),['Imageproperties']) |
750 self.assertEquals(obj.get_view('Image creation').list_groups(),['Imageproperties _ test']) |
484 self.assertEquals(obj.get_view('Image creation').list_all_features(),['Imageproperties.imagetype', |
751 self.assertEquals(obj.get_view('Image creation').list_all_features(),['Imageproperties _ test.proxy_imakerapi_imagetype', |
485 'Imageproperties.rofs3version', |
752 'Imageproperties _ test.proxy_imakerapi_rofs3version', |
486 'Imageproperties.productname', |
753 'Imageproperties _ test.proxy_imakerapi_productname', |
487 'Imageproperties.outputLocation', |
754 'Imageproperties _ test.proxy_imakerapi_outputLocation', |
488 'Imageproperties.imagetarget']) |
755 'Imageproperties _ test.proxy_imaker_imagetarget']) |
489 self.assertEquals(obj.get_view('Image creation').get_feature('Imageproperties.imagetype').get_value(), '0') |
756 self.assertEquals(obj.get_view('Image creation').get_feature('Imageproperties _ test.proxy_imakerapi_imagetype').get_value(), '0') |
490 self.assertEquals(obj.get_view('Image creation').get_feature('Imageproperties.rofs3version').get_value(), 'V .50.2009.04.0113 RND') |
757 self.assertEquals(obj.get_view('Image creation').get_feature('Imageproperties _ test.proxy_imakerapi_rofs3version').get_value(), 'V .50.2009.04.0113 RND') |
491 self.assertEquals(obj.get_view('Image creation').get_feature('Imageproperties.productname').get_value(), 'myProduct') |
758 self.assertEquals(obj.get_view('Image creation').get_feature('Imageproperties _ test.proxy_imakerapi_productname').get_value(), 'myProduct') |
492 self.assertEquals(obj.get_view('Image creation').get_feature('Imageproperties.outputLocation').get_value(), 'myProduct') |
759 self.assertEquals(obj.get_view('Image creation').get_feature('Imageproperties _ test.proxy_imakerapi_outputLocation').get_value(), 'myProduct') |
493 self.assertEquals(obj.get_view('Image creation').get_feature('Imageproperties.imagetarget').get_value(), '2') |
760 self.assertEquals(obj.get_view('Image creation').get_feature('Imageproperties _ test.proxy_imaker_imagetarget').get_value(), '2') |
494 |
761 |
|
762 def test_load_view_with_overrides(self): |
|
763 reader = persistentconfml.get_reader_for_elem("configuration") |
|
764 etree = ElementTree.fromstring(overrideview) |
|
765 obj = reader.loads(etree) |
|
766 self.assertEquals(obj.get_name(), None) |
|
767 self.assertEquals(obj.list_views(), ['Image creation']) |
|
768 view = obj.get_view('Image creation') |
|
769 self.assertEquals(view.get_name(),'Image creation') |
|
770 self.assertEquals(view.list_all_features(),['Imageproperties.proxy_imakerapi_imagetype', |
|
771 'Imageproperties.proxy_imakerapi_productname', |
|
772 'Imageproperties.proxy_imakerapi_outputLocation' |
|
773 ]) |
|
774 |
|
775 self.assertEquals(view.get_feature('Imageproperties.proxy_imakerapi_productname').name, "New Product Name") |
|
776 self.assertEquals(view.get_feature('Imageproperties.proxy_imakerapi_productname').desc, "test desc override") |
|
777 self.assertEquals(view.get_feature('Imageproperties.proxy_imakerapi_outputLocation').minOccurs, 2) |
|
778 self.assertEquals(view.get_feature('Imageproperties.proxy_imakerapi_productname').minLength, 2) |
|
779 |
|
780 def test_load_view_with_option_overrides(self): |
|
781 reader = persistentconfml.get_reader_for_elem("configuration") |
|
782 etree = ElementTree.fromstring(option_overrideview) |
|
783 obj = reader.loads(etree) |
|
784 self.assertEquals(obj.get_name(), None) |
|
785 self.assertEquals(obj.list_views(), ['Image creation']) |
|
786 view = obj.get_view('Image creation') |
|
787 self.assertEquals(view.get_name(),'Image creation') |
|
788 self.assertEquals(view.list_all_features(),['Imageproperties.proxy_imakerapi_imagetype', |
|
789 'Imageproperties.proxy_imakerapi_productname', |
|
790 'Imageproperties.proxy_imakerapi_outputLocation' |
|
791 ]) |
|
792 self.assertEquals(view.get_feature('Imageproperties.proxy_imakerapi_imagetype').get_option('value_2').get_name(), 'prd2') |
|
793 self.assertEquals(view.get_feature('Imageproperties.proxy_imakerapi_imagetype').options['2'].get_name(), 'prd2') |
|
794 self.assertEquals(view.get_feature('Imageproperties.proxy_imakerapi_imagetype').list_options(), ['value_0', 'value_1', 'value_2', 'value_2', 'value_5']) |
|
795 self.assertEquals(view.get_feature('Imageproperties.proxy_imakerapi_imagetype').get_option('value_5').get_value(), '5') |
|
796 self.assertEquals(view.get_feature('Imageproperties.proxy_imakerapi_outputLocation').minOccurs, 2) |
|
797 self.assertEquals(view.get_feature('Imageproperties.proxy_imakerapi_productname').minLength, 2) |
|
798 |
|
799 def test_load_view_with_properties_overrides(self): |
|
800 reader = persistentconfml.get_reader_for_elem("configuration") |
|
801 etree = ElementTree.fromstring(properties_overrideview) |
|
802 obj = reader.loads(etree) |
|
803 view = obj.get_view('Image creation') |
|
804 |
|
805 self.assertEquals(view.get_feature('Imageproperties.proxy_imakerapi_imagetype').get_property('mime').get_name(), 'mime') |
|
806 self.assertEquals(view.get_feature('Imageproperties.proxy_imakerapi_imagetype').get_property('mime').get_value(), 'image/svgt image/jpg') |
|
807 self.assertEquals(view.get_feature('Imageproperties.proxy_imakerapi_imagetype').get_property('mime2').name, 'mime2') |
|
808 self.assertEquals(view.get_feature('Imageproperties.proxy_imakerapi_imagetype').get_property('mime2').value, 'image/svgt image/bmp') |
|
809 self.assertEquals(view.get_feature('Imageproperties.proxy_imakerapi_imagetype').properties['mime'].get_name(), 'mime') |
|
810 self.assertEquals(view.get_feature('Imageproperties.proxy_imakerapi_imagetype').properties['mime'].get_value(), 'image/svgt image/jpg') |
|
811 self.assertEquals(view.get_feature('Imageproperties.proxy_imakerapi_imagetype').properties['mime2'].name, 'mime2') |
|
812 self.assertEquals(view.get_feature('Imageproperties.proxy_imakerapi_imagetype').properties['mime2'].value, 'image/svgt image/bmp') |
|
813 |
495 def test_load_cvc_view(self): |
814 def test_load_cvc_view(self): |
496 prj = api.Project(api.Storage.open(os.path.join(ROOT_PATH,'data'))) |
815 prj = api.Project(api.Storage.open(os.path.join(ROOT_PATH,'data'))) |
497 config = prj.get_configuration('cvc_root.confml') |
816 config = prj.get_configuration('cvc_root.confml') |
498 dview = config.get_default_view() |
817 dview = config.get_default_view() |
499 self.assertEquals(config.list_views(),['cvc_view_confml.Custom modeled ConfMLs for customization foo']) |
818 self.assertEquals(config.list_views(),['cvc_view_confml.Custom modeled ConfMLs for customization foo']) |
520 reader = persistentconfml.get_reader_for_elem("configuration") |
839 reader = persistentconfml.get_reader_for_elem("configuration") |
521 etree = ElementTree.fromstring(conffile.read()) |
840 etree = ElementTree.fromstring(conffile.read()) |
522 obj = reader.loads(etree) |
841 obj = reader.loads(etree) |
523 fea = obj.get_feature('CVC_StartupAnimationSequence.CVC_StartupAnimationTone') |
842 fea = obj.get_feature('CVC_StartupAnimationSequence.CVC_StartupAnimationTone') |
524 self.assertEquals(fea.list_properties(),['maxSize']) |
843 self.assertEquals(fea.list_properties(),['maxSize']) |
525 self.assertEquals(fea.properties['maxSize'].value,'100') |
844 self.assertEquals(fea.property_maxSize.value,'100') |
526 |
845 |
527 conffile = open(os.path.join(ROOT_PATH,"data/CVC_Preinstalled.confml")) |
846 conffile = open(os.path.join(ROOT_PATH,"data/CVC_Preinstalled.confml")) |
528 reader = persistentconfml.get_reader_for_elem("configuration") |
847 reader = persistentconfml.get_reader_for_elem("configuration") |
529 etree = ElementTree.fromstring(conffile.read()) |
848 etree = ElementTree.fromstring(conffile.read()) |
530 obj = reader.loads(etree) |
849 obj = reader.loads(etree) |
531 fea = obj.get_feature('CVC_PreinstalledContent.CVC_PreInstalledMMSs.CVC_PreInstalledMMS') |
850 fea = obj.get_feature('CVC_PreinstalledContent.CVC_PreInstalledMMSs.CVC_PreInstalledMMS') |
532 self.assertEquals(fea.list_properties(),['maxFileSize']) |
851 self.assertEquals(fea.list_properties(),['maxFileSize']) |
533 self.assertEquals(fea.properties['maxFileSize'].value,'35') |
852 self.assertEquals(fea.property_maxFileSize.value,'35') |
534 |
853 |
535 def test_load_voicemailbox_confml_from_file(self): |
854 def test_load_voicemailbox_confml_from_file(self): |
536 conffile = open(os.path.join(ROOT_PATH,"data/voicemailbox.confml")) |
855 conffile = open(os.path.join(ROOT_PATH,"data/voicemailbox.confml")) |
537 reader = persistentconfml.get_reader_for_elem("configuration") |
856 reader = persistentconfml.get_reader_for_elem("configuration") |
538 etree = ElementTree.fromstring(conffile.read()) |
857 etree = ElementTree.fromstring(conffile.read()) |
546 conffile = open(os.path.join(ROOT_PATH,"data/facets.confml")) |
865 conffile = open(os.path.join(ROOT_PATH,"data/facets.confml")) |
547 reader = persistentconfml.get_reader_for_elem("configuration") |
866 reader = persistentconfml.get_reader_for_elem("configuration") |
548 etree = ElementTree.fromstring(conffile.read()) |
867 etree = ElementTree.fromstring(conffile.read()) |
549 obj = reader.loads(etree) |
868 obj = reader.loads(etree) |
550 setting = obj.get_feature('Facets.MessageSize') |
869 setting = obj.get_feature('Facets.MessageSize') |
551 self.assertEquals(setting.minInclusive,'0') |
870 self.assertEquals(setting.minInclusive,0) |
552 self.assertEquals(setting.maxInclusive,'10') |
871 self.assertEquals(setting.maxInclusive,10) |
553 setting = obj.get_feature('Facets.MessageSize2') |
872 setting = obj.get_feature('Facets.MessageSize2') |
554 self.assertEquals(setting.minExclusive,'-1') |
873 self.assertEquals(setting.minExclusive,-1) |
555 self.assertEquals(setting.maxExclusive,'11') |
874 self.assertEquals(setting.maxExclusive,11) |
556 setting = obj.get_feature('Facets.StringPattern') |
875 setting = obj.get_feature('Facets.StringPattern') |
557 self.assertEquals(setting.pattern,"[a-zA-Z]{5,10}") |
876 self.assertEquals(setting.pattern,"[a-zA-Z]{5,10}") |
558 setting = obj.get_feature('Facets.TotalDigits') |
877 setting = obj.get_feature('Facets.TotalDigits') |
559 self.assertEquals(setting.totalDigits,'3') |
878 self.assertEquals(setting.totalDigits,3) |
560 dview = obj.get_default_view() |
879 dview = obj.get_default_view() |
561 intfea = dview.get_feature('Facets.MessageSize') |
880 intfea = dview.get_feature('Facets.MessageSize') |
562 self.assertEquals(intfea.type,'int') |
881 self.assertEquals(intfea.type,'int') |
563 self.assertEquals(intfea.value,9) |
882 self.assertEquals(intfea.value,9) |
564 |
883 |
565 class TestConfigurationWriter(unittest.TestCase): |
884 def test_load_sequence_setting_test_confml_from_file(self): |
|
885 conffile = open(os.path.join(ROOT_PATH,"testdata/read_write/sequence_setting_test.confml")) |
|
886 reader = persistentconfml.get_reader_for_elem("configuration") |
|
887 etree = ElementTree.fromstring(conffile.read()) |
|
888 obj = reader.loads(etree) |
|
889 dview = obj.get_default_view() |
|
890 fea = dview.get_feature('SequenceSettingTest.SequenceSetting') |
|
891 self.assertEquals(fea.get_template(), |
|
892 [['seq/default_folder', None], |
|
893 '1.0', |
|
894 ['seq/default_file.txt', None], |
|
895 '1', |
|
896 'template', |
|
897 'false', |
|
898 '0', |
|
899 '"opt 0"', |
|
900 '2009-02-02', |
|
901 '07:30:15', |
|
902 '2009-02-02-07:00:00', |
|
903 'P5Y4M3DT12H25M15S']) |
|
904 |
|
905 def test_load_selection_with_name_id_mapping(self): |
|
906 reader = persistentconfml.get_reader_for_elem("configuration") |
|
907 obj = reader.loads(ElementTree.fromstring(selectionsetting)) |
|
908 self.assertEquals(obj._list(),['CTD_APs', |
|
909 'TestApplication', |
|
910 'data']) |
|
911 self.assertEquals(obj.get_data('TestApplication.DefaultAP').get_map(), "CTD_APs/AP[@key='Operator 1']") |
|
912 |
|
913 # |
|
914 class TestConfigurationWriter(unittest.TestCase): |
|
915 def tearDown(self): |
|
916 if os.path.exists(os.path.join(ROOT_PATH,'temp/configwriter')): |
|
917 shutil.rmtree(os.path.join(ROOT_PATH,'temp/configwriter')) |
|
918 |
566 def test_dump_simple_configuration(self): |
919 def test_dump_simple_configuration(self): |
567 config = api.Configuration("test.confml") |
920 config = api.Configuration("test.confml") |
568 writer = persistentconfml.get_writer_for_class("Configuration") |
921 writer = persistentconfml.get_writer_for_class("Configuration") |
569 etree = writer.dumps(config) |
922 etree = writer.dumps(config) |
570 self.assertEquals(etree.get('name'), 'test_confml') |
923 self.assertEquals(etree.get('name'), 'test_confml') |
775 set1.create_option('post', '3') |
1115 set1.create_option('post', '3') |
776 config.add_feature(set1, 'testfea2') |
1116 config.add_feature(set1, 'testfea2') |
777 config.add_feature(api.Feature('testfea4')) |
1117 config.add_feature(api.Feature('testfea4')) |
778 config.add_feature(api.Feature('testfea5')) |
1118 config.add_feature(api.Feature('testfea5')) |
779 config.add_feature(api.Feature('testfea6')) |
1119 config.add_feature(api.Feature('testfea6')) |
780 set1.value = ["pre","post"] |
1120 set1.value = ["pre","post"] |
781 self.assertEquals(set1.get_data().get_value(), '"pre" "post"') |
1121 self.assertEquals(set1.get_datas()[0].get_value(), 'pre') |
|
1122 self.assertEquals(set1.get_datas()[1].get_value(), 'post') |
782 writer = persistentconfml.get_writer_for_class("Configuration") |
1123 writer = persistentconfml.get_writer_for_class("Configuration") |
783 elem = writer.dumps(config) |
1124 elem = writer.dumps(config) |
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>') |
1125 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 ref="testfea1"><setting ref="testfea11" /></feature><feature ref="testfea2"><setting ref="testfea21" type="multiSelection"><option name="pre" value="1" /><option name="normal" value="2" /><option name="post" value="3" /></setting></feature><feature ref="testfea4" /><feature ref="testfea5" /><feature ref="testfea6" /><data><testfea2><testfea21>pre</testfea21><testfea21>post</testfea21></testfea2></data></configuration>') |
785 etree = ElementTree.fromstring(ElementTree.tostring(elem)) |
1126 etree = ElementTree.fromstring(ElementTree.tostring(elem)) |
786 fea1 = etree.find('{http://www.s60.com/xml/confml/2}feature') |
1127 fea1 = etree.find('{http://www.s60.com/xml/confml/2}feature') |
787 self.assertEquals(fea1.get('ref'),'testfea1') |
1128 self.assertEquals(fea1.get('ref'),'testfea1') |
788 self.assertEquals(fea1.find('{http://www.s60.com/xml/confml/2}setting').get('ref'),'testfea11') |
1129 self.assertEquals(fea1.find('{http://www.s60.com/xml/confml/2}setting').get('ref'),'testfea11') |
789 config2 = persistentconfml.get_reader_for_elem('configuration').loads(etree) |
1130 config2 = persistentconfml.get_reader_for_elem('configuration').loads(etree) |
790 self.assertEquals(config2.testfea2.list_features(),['testfea21']) |
1131 self.assertEquals(config2.testfea2.list_features(),['testfea21']) |
791 self.assertEquals(config2.testfea2.testfea21.get_type(),'multiSelection') |
1132 self.assertEquals(config2.testfea2.testfea21.get_type(),'multiSelection') |
792 self.assertEquals(config2.testfea2.testfea21.get_value(), ['pre', 'post']) |
1133 self.assertEquals(config2.testfea2.testfea21.get_value(), ('pre', 'post')) |
793 |
1134 |
794 def test_configuration_with_view(self): |
1135 def test_configuration_with_view(self): |
795 config = api.Configuration("view.confml") |
1136 config = model.ConfmlConfiguration("view.confml") |
796 config.add_view('testing') |
1137 config.create_view('testing') |
797 view = config.get_view('testing') |
1138 view = config.get_view('testing') |
798 view.add_group('group1') |
1139 view.create_group('group1') |
799 view.add_group('group2') |
1140 view.create_group('group2') |
800 view.add_group('group3') |
1141 view.create_group('group3') |
801 view.group1.add(api.FeatureLink('test.foo')) |
1142 fl = model.ConfmlFeatureLink('test.foo') |
802 view.group2.add(api.FeatureLink('foo.*')) |
1143 fl.desc = "test desc" |
|
1144 view.group1.add(fl) |
|
1145 view.group2.create_featurelink('foo.*') |
803 writer = persistentconfml.get_writer_for_class("Configuration") |
1146 writer = persistentconfml.get_writer_for_class("Configuration") |
804 elem = writer.dumps(config) |
1147 elem = writer.dumps(config) |
805 etree = ElementTree.fromstring(ElementTree.tostring(elem)) |
1148 etree = ElementTree.fromstring(ElementTree.tostring(elem)) |
806 view = etree.find('{http://www.s60.com/xml/confml/2}view') |
1149 view = etree.find('{http://www.s60.com/xml/confml/2}view') |
807 groups = etree.getiterator('{http://www.s60.com/xml/confml/2}group') |
1150 groups = etree.getiterator('{http://www.s60.com/xml/confml/2}group') |
811 self.assertEquals(listgroups[1].get('name'), 'group2') |
1154 self.assertEquals(listgroups[1].get('name'), 'group2') |
812 self.assertEquals(listgroups[2].get('name'), 'group3') |
1155 self.assertEquals(listgroups[2].get('name'), 'group3') |
813 settings = [elem for elem in etree.getiterator('{http://www.s60.com/xml/confml/2}setting')] |
1156 settings = [elem for elem in etree.getiterator('{http://www.s60.com/xml/confml/2}setting')] |
814 self.assertEquals(settings[0].get('ref'), 'test/foo') |
1157 self.assertEquals(settings[0].get('ref'), 'test/foo') |
815 self.assertEquals(settings[1].get('ref'), 'foo/*') |
1158 self.assertEquals(settings[1].get('ref'), 'foo/*') |
816 |
1159 |
817 def test_load_dump_reload_configuration_with_view(self): |
1160 def test_load_dump_reload_configuration_with_view_and_overrides(self): |
818 reader = persistentconfml.get_reader_for_elem("configuration") |
1161 reader = persistentconfml.get_reader_for_elem("configuration") |
819 etree = ElementTree.fromstring(simpleview) |
1162 etree = ElementTree.fromstring(overrideview) |
820 obj = reader.loads(etree) |
1163 obj = reader.loads(etree) |
821 # Getting the view populates it and check that the writing still works |
1164 # Getting the view populates it and check that the writing still works |
822 self.assertEquals(obj.get_view('Image creation').get_name(),'Image creation') |
1165 view = obj.get_view('Image creation') |
823 self.assertEquals(obj.get_view('Image creation').id,'imakerimage') |
1166 self.assertEquals(view.get_name(),'Image creation') |
824 self.assertEquals(obj.get_view('Image creation').list_groups(), ['Imageproperties']) |
1167 self.assertEquals(view.id,'imakerimage') |
|
1168 self.assertEquals(view.list_groups(), ['Imageproperties']) |
|
1169 viewfea = view.get_feature('Imageproperties.proxy_imakerapi_productname') |
|
1170 self.assertEquals(viewfea.name, "New Product Name") |
825 writer = persistentconfml.get_writer_for_class("Configuration") |
1171 writer = persistentconfml.get_writer_for_class("Configuration") |
826 elem = writer.dumps(obj) |
1172 elem = writer.dumps(obj) |
827 # Reload the configuration with view after dumping it to ensure data stays the same |
1173 # Reload the configuration with view after dumping it to ensure data stays the same |
828 elemstr = ElementTree.tostring(elem) |
1174 elemstr = ElementTree.tostring(elem) |
829 etree = ElementTree.fromstring(elemstr) |
1175 etree = ElementTree.fromstring(elemstr) |
830 obj = reader.loads(etree) |
1176 obj = reader.loads(etree) |
831 self.assertEquals(obj.get_view('Image creation').get_name(),'Image creation') |
1177 view = obj.get_view('Image creation') |
832 self.failUnlessEqual(obj.get_view('Image creation').id,'imakerimage', 'Known bug (#564)') |
1178 self.assertEquals(view.get_name(),'Image creation') |
833 self.assertEquals(obj.get_view('Image creation').id,'imakerimage') |
1179 self.failUnlessEqual(view.id,'imakerimage') |
|
1180 self.assertEquals(view.id,'imakerimage') |
|
1181 # Check that the override parameters are also saved / loaded |
|
1182 self.assertEquals(view.get_feature('Imageproperties.proxy_imakerapi_productname').name, 'New Product Name') |
|
1183 self.assertEquals(view.get_feature('Imageproperties.proxy_imakerapi_productname').has_attribute('name'), True) |
|
1184 self.assertEquals(view.get_feature('Imageproperties.proxy_imakerapi_productname').desc, "test desc override") |
|
1185 |
|
1186 self.assertEquals(view.get_feature('Imageproperties.proxy_imakerapi_imagetype').get_option('value_2').get_name(), 'prd_renamed') |
|
1187 self.assertEquals(view.get_feature('Imageproperties.proxy_imakerapi_imagetype').list_options(), ['value_0', 'value_1', 'value_2', 'value_2']) |
|
1188 self.assertEquals(view.get_feature('Imageproperties.proxy_imakerapi_outputLocation').minOccurs, 2) |
|
1189 fea = view.get_feature('Imageproperties.proxy_imakerapi_outputLocation') |
|
1190 self.assertEquals(fea.has_attribute('name'), False) |
|
1191 |
|
1192 self.assertEquals(view.get_feature('Imageproperties.proxy_imakerapi_productname').minLength, 2) |
|
1193 # check that the original attributes are still valid |
|
1194 self.assertEquals(view.get_feature('Imageproperties.proxy_imakerapi_productname')._obj.name, "PRODUCT_NAME") |
|
1195 self.assertEquals(view.get_feature('Imageproperties.proxy_imakerapi_productname')._obj.desc, None) |
834 |
1196 |
835 def test_load_configuration_and_create_copy_and_dump(self): |
1197 def test_load_configuration_and_create_copy_and_dump(self): |
836 conffile = open(os.path.join(ROOT_PATH,"data/commsdatcreator.confml")) |
1198 conffile = open(os.path.join(ROOT_PATH,"data/commsdatcreator.confml")) |
837 #reader = persistentconfml.get_reader_for_elem("configuration") |
1199 #reader = persistentconfml.get_reader_for_elem("configuration") |
838 #etree = ElementTree.fromstring(conffile.read()) |
1200 #etree = ElementTree.fromstring(conffile.read()) |
839 obj = persistentconfml.loads(conffile.read()) |
1201 obj = persistentconfml.loads(conffile.read()) |
840 copyconfig = api.Configuration('data/copy_commsdatcreator.confml') |
1202 copyconfig = api.Configuration('temp/copy_commsdatcreator.confml') |
841 |
1203 |
842 for child in obj._objects(): |
1204 for child in obj._objects(): |
843 copyconfig._add(child) |
1205 copyconfig._add(child) |
844 output = persistentconfml.dumps(copyconfig) |
1206 output = persistentconfml.dumps(copyconfig) |
845 ofile = open(os.path.join(ROOT_PATH,'data/copy_commsdatcreator.confml'),"wb") |
1207 if not os.path.exists(os.path.join(ROOT_PATH,'temp')): |
|
1208 os.mkdir(os.path.join(ROOT_PATH,'temp')) |
|
1209 ofile = open(os.path.join(ROOT_PATH,'temp/copy_commsdatcreator.confml'),"wb") |
846 ofile.write(output) |
1210 ofile.write(output) |
847 ofile.close() |
1211 ofile.close() |
848 newconfig = persistentconfml.loads(output) |
1212 newconfig = persistentconfml.loads(output) |
849 orgview = obj.get_default_view() |
1213 orgview = obj.get_default_view() |
850 newview = newconfig.get_default_view() |
1214 newview = newconfig.get_default_view() |
881 testconf = prj.get_configuration('test.confml') |
1245 testconf = prj.get_configuration('test.confml') |
882 self.assertEquals(testconf.meta, None) |
1246 self.assertEquals(testconf.meta, None) |
883 prj.close() |
1247 prj.close() |
884 shutil.rmtree('dump') |
1248 shutil.rmtree('dump') |
885 |
1249 |
|
1250 def test_write_selection_with_nameid_mapping(self): |
|
1251 reader = persistentconfml.get_reader_for_elem("configuration") |
|
1252 obj = reader.loads(ElementTree.fromstring(selectionsetting)) |
|
1253 |
|
1254 self.assertEquals(obj.get_data('TestApplication.DefaultAP').get_map(), "CTD_APs/AP[@key='Operator 1']") |
|
1255 self.assertEquals(obj.get_data('TestApplication.DefaultAP').get_fearef(), "TestApplication.DefaultAP") |
|
1256 |
|
1257 writer = persistentconfml.get_writer_for_class("Configuration") |
|
1258 elem = writer.dumps(obj) |
|
1259 etree = ElementTree.fromstring(ElementTree.tostring(elem)) |
|
1260 |
|
1261 self.assertEquals( |
|
1262 etree.find('{http://www.s60.com/xml/confml/2}data') |
|
1263 .find('{http://www.s60.com/xml/confml/2}TestApplication') |
|
1264 .find('{http://www.s60.com/xml/confml/2}DefaultAP') |
|
1265 .get('map'), |
|
1266 "CTD_APs/AP[@key='Operator 1']") |
|
1267 |
|
1268 def test_write_multiselection_with_name_id_mapping(self): |
|
1269 reader = persistentconfml.get_reader_for_elem("configuration") |
|
1270 obj = reader.loads(ElementTree.fromstring(multiselection)) |
|
1271 |
|
1272 self.assertEquals(obj.get_data('aFeature.selectionSetting').get_map(), "aFeature/exampleSequence[@key='12']") |
|
1273 self.assertEquals(obj.get_data('aFeature.multiselectionSetting')[0].get_value(), '0') |
|
1274 self.assertEquals(obj.get_data('aFeature.multiselectionSetting')[1].get_map(), "aFeature/exampleSequence[@key='12']") |
|
1275 self.assertEquals(obj.get_data('aFeature.multiselectionSetting')[2].get_map(), "aFeature/exampleSequence[@key='34']") |
|
1276 self.assertEquals(obj.get_data('aFeature.multiselectionSettingOverride')[0].get_map(), "aFeature/exampleSequence[@key='12']") |
|
1277 self.assertEquals(obj.get_data('aFeature.multiselectionSettingOverride')[1].get_map(), "aFeature/exampleSequence[@key='34']") |
|
1278 |
|
1279 writer = persistentconfml.get_writer_for_class("Configuration") |
|
1280 elem = writer.dumps(obj) |
|
1281 etree = ElementTree.fromstring(ElementTree.tostring(elem)) |
|
1282 |
|
1283 self.assertEquals( |
|
1284 etree.find('{http://www.s60.com/xml/confml/2}data') |
|
1285 .find('{http://www.s60.com/xml/confml/2}aFeature') |
|
1286 .find('{http://www.s60.com/xml/confml/2}selectionSetting') |
|
1287 .get('map'), "aFeature/exampleSequence[@key='12']") |
|
1288 self.assertEquals( |
|
1289 etree.find('{http://www.s60.com/xml/confml/2}data') |
|
1290 .find('{http://www.s60.com/xml/confml/2}aFeature') |
|
1291 .find('{http://www.s60.com/xml/confml/2}multiselectionSetting') |
|
1292 .text, "0") |
|
1293 |
|
1294 mss = [] |
|
1295 for data_elem in etree.getiterator('{http://www.s60.com/xml/confml/2}data'): |
|
1296 for mss_elem in data_elem.getiterator('{http://www.s60.com/xml/confml/2}multiselectionSetting'): |
|
1297 mss.append(mss_elem.get('map')) |
|
1298 |
|
1299 self.assertEquals(mss, [None, "aFeature/exampleSequence[@key='12']", "aFeature/exampleSequence[@key='34']"]) |
|
1300 |
|
1301 msso = [] |
|
1302 for data_elem in etree.getiterator('{http://www.s60.com/xml/confml/2}data'): |
|
1303 for msso_elem in data_elem.getiterator('{http://www.s60.com/xml/confml/2}multiselectionSettingOverride'): |
|
1304 msso.append(msso_elem.get('map')) |
|
1305 |
|
1306 self.assertEquals(msso, ["aFeature/exampleSequence[@key='12']", "aFeature/exampleSequence[@key='34']"]) |
|
1307 |
|
1308 |
886 class TestMeta(unittest.TestCase): |
1309 class TestMeta(unittest.TestCase): |
887 def test_get_reader_for_meta(self): |
1310 def test_get_reader_for_meta(self): |
888 reader = persistentconfml.get_reader_for_elem("meta") |
1311 reader = persistentconfml.get_reader_for_elem("meta") |
889 self.assertTrue(isinstance(reader, persistentconfml.MetaReader)) |
1312 self.assertTrue(isinstance(reader, persistentconfml.MetaReader)) |
890 |
1313 |
1128 conffile = open(os.path.join(ROOT_PATH,"data/accessoryserver.confml")) |
1553 conffile = open(os.path.join(ROOT_PATH,"data/accessoryserver.confml")) |
1129 reader = persistentconfml.get_reader_for_elem("configuration") |
1554 reader = persistentconfml.get_reader_for_elem("configuration") |
1130 etree = ElementTree.fromstring(conffile.read()) |
1555 etree = ElementTree.fromstring(conffile.read()) |
1131 obj = reader.loads(etree) |
1556 obj = reader.loads(etree) |
1132 self.assertEquals(obj.meta.get('type'), 'featurelist') |
1557 self.assertEquals(obj.meta.get('type'), 'featurelist') |
|
1558 |
|
1559 class TestWriteSequenceTemplates(BaseTestCase): |
|
1560 EXPECTED_DIR = os.path.join(ROOT_PATH, 'testdata/seq_template/expected') |
|
1561 TEMP_DIR = os.path.join(ROOT_PATH, 'temp/') |
|
1562 |
|
1563 def _add_simple_sequence(self, config): |
|
1564 """ |
|
1565 Add a feature with a simple sequence setting into the given |
|
1566 configuration. |
|
1567 @return: The added sequence setting object. |
|
1568 """ |
|
1569 fea = api.Feature('TestFeature', name='Test feature') |
|
1570 seq_fea = model.ConfmlSequenceSetting('SequenceSetting', name='Sequence setting') |
|
1571 fea.add_feature(seq_fea) |
|
1572 config.add_feature(fea) |
|
1573 |
|
1574 seq_fea.add_feature(model.ConfmlStringSetting('String1', name="String 1")) |
|
1575 seq_fea.add_feature(model.ConfmlFileSetting('File', name="File setting")) |
|
1576 seq_fea.add_feature(model.ConfmlStringSetting('String2', name="String 2")) |
|
1577 |
|
1578 return seq_fea |
|
1579 |
|
1580 def _add_complex_sequence(self, config): |
|
1581 """ |
|
1582 Add a feature with a complex sequence setting into the given |
|
1583 configuration. |
|
1584 @return: The added sequence setting object. |
|
1585 """ |
|
1586 fea = api.Feature('TestFeature', name='Test feature') |
|
1587 seq_fea = model.ConfmlSequenceSetting('SequenceSetting', name='Sequence setting') |
|
1588 fea.add_feature(seq_fea) |
|
1589 config.add_feature(fea) |
|
1590 |
|
1591 seq_fea.add_feature(model.ConfmlFileSetting('File', name="File setting")) |
|
1592 seq_fea.add_feature(model.ConfmlFolderSetting('Folder', name="Folder setting")) |
|
1593 seq_fea.add_feature(model.ConfmlStringSetting('String', name="String setting")) |
|
1594 seq_fea.add_feature(model.ConfmlIntSetting('Int', name="Int setting")) |
|
1595 seq_fea.add_feature(model.ConfmlRealSetting('Real', name="Real setting")) |
|
1596 seq_fea.add_feature(model.ConfmlBooleanSetting('Boolean', name="Boolean setting")) |
|
1597 seq_fea.add_feature(model.ConfmlDateSetting('Date', name="Date setting")) |
|
1598 seq_fea.add_feature(model.ConfmlTimeSetting('Time', name="Time setting")) |
|
1599 seq_fea.add_feature(model.ConfmlDateTimeSetting('DateTime', name="Date-time setting")) |
|
1600 seq_fea.add_feature(model.ConfmlDurationSetting('Duration', name="Duration setting")) |
|
1601 |
|
1602 return seq_fea |
|
1603 |
|
1604 def test_write_simple_seq_no_template(self): |
|
1605 FILE_NAME = 'write_simple_seq_no_template.confml' |
|
1606 prj = api.Project(api.Storage.open(self.TEMP_DIR, "w")) |
|
1607 config = prj.create_configuration(FILE_NAME) |
|
1608 |
|
1609 seq = self._add_simple_sequence(config) |
|
1610 |
|
1611 seq.add_sequence(['row 1', ['lp1', 'tp1'], 'x']) |
|
1612 seq.add_sequence(['row 2', ['lp2', 'tp2'], 'y']) |
|
1613 |
|
1614 config.save() |
|
1615 prj.close() |
|
1616 |
|
1617 self.assert_file_contents_equal( |
|
1618 os.path.join(self.TEMP_DIR, FILE_NAME), |
|
1619 os.path.join(self.EXPECTED_DIR, 'simple_seq_no_template.confml')) |
|
1620 |
|
1621 def test_write_simple_seq(self): |
|
1622 FILE_NAME = 'write_simple_seq.confml' |
|
1623 prj = api.Project(api.Storage.open(self.TEMP_DIR, "w")) |
|
1624 config = prj.create_configuration(FILE_NAME) |
|
1625 config.name = 'foo' |
|
1626 |
|
1627 seq = self._add_simple_sequence(config) |
|
1628 |
|
1629 seq.set_template(['c1', ['lp', 'tp'], 'c2']) |
|
1630 seq.add_sequence(['row 1', ['lp1', 'tp1'], 'x']) |
|
1631 seq.add_sequence(['row 2', ['lp2', 'tp2'], 'y']) |
|
1632 |
|
1633 config.save() |
|
1634 prj.close() |
|
1635 |
|
1636 self.assert_file_contents_equal( |
|
1637 os.path.join(self.TEMP_DIR, FILE_NAME), |
|
1638 os.path.join(self.EXPECTED_DIR, 'simple_seq.confml')) |
|
1639 |
|
1640 def test_write_simple_seq_2(self): |
|
1641 FILE_NAME = 'write_simple_seq_2.confml' |
|
1642 prj = api.Project(api.Storage.open(self.TEMP_DIR, "w")) |
|
1643 config = prj.create_configuration(FILE_NAME) |
|
1644 config.name = 'foo' |
|
1645 |
|
1646 seq = self._add_simple_sequence(config) |
|
1647 |
|
1648 # It shouldn't matter if the template is reset in the middle |
|
1649 seq.set_template(['x1', ['lp', 'tp'], 'x2']) |
|
1650 seq.add_sequence(['row 1', ['lp1', 'tp1'], 'x']) |
|
1651 seq.set_template(['c1', ['lp', 'tp'], 'c2']) |
|
1652 seq.add_sequence(['row 2', ['lp2', 'tp2'], 'y']) |
|
1653 |
|
1654 config.save() |
|
1655 prj.close() |
|
1656 |
|
1657 self.assert_file_contents_equal( |
|
1658 os.path.join(self.TEMP_DIR, FILE_NAME), |
|
1659 os.path.join(self.EXPECTED_DIR, 'simple_seq.confml')) |
|
1660 |
|
1661 def test_write_simple_seq_3(self): |
|
1662 FILE_NAME = 'write_simple_seq_3.confml' |
|
1663 prj = api.Project(api.Storage.open(self.TEMP_DIR, "w")) |
|
1664 config = prj.create_configuration(FILE_NAME) |
|
1665 config.name = 'foo' |
|
1666 |
|
1667 seq = self._add_simple_sequence(config) |
|
1668 |
|
1669 # Add multiple templates into the data section to make |
|
1670 # sure that they are all replaced when set_template() is called |
|
1671 def create_template_data(): |
|
1672 template_data = api.Data(fqr='TestFeature.SequenceSetting', template=True) |
|
1673 template_data.add(api.Data(ref='String1', value='t1')) |
|
1674 data_a1 = api.Data(ref='File') |
|
1675 data_a1.add(api.Data(ref='localPath', value='lp')) |
|
1676 data_a1.add(api.Data(ref='targetPath', value='tp')) |
|
1677 template_data.add(data_a1) |
|
1678 template_data.add(api.Data(ref='String2', value='t2')) |
|
1679 return template_data |
|
1680 from cone.public import container |
|
1681 config.add_data(create_template_data(), policy=container.APPEND) |
|
1682 config.add_data(create_template_data(), policy=container.APPEND) |
|
1683 config.add_data(create_template_data(), policy=container.APPEND) |
|
1684 seq = config.get_default_view().get_feature('TestFeature.SequenceSetting') |
|
1685 self.assertEquals(seq.get_template(), ['t1', ['lp', 'tp'], 't2']) |
|
1686 |
|
1687 # Add some data and set the template |
|
1688 seq.add_sequence(['row 1', ['lp1', 'tp1'], 'x']) |
|
1689 seq.add_sequence(['row 2', ['lp2', 'tp2'], 'y']) |
|
1690 seq.set_template(['c1', ['lp', 'tp'], 'c2']) |
|
1691 |
|
1692 config.save() |
|
1693 prj.close() |
|
1694 |
|
1695 self.assert_file_contents_equal( |
|
1696 os.path.join(self.TEMP_DIR, FILE_NAME), |
|
1697 os.path.join(self.EXPECTED_DIR, 'simple_seq.confml')) |
|
1698 |
|
1699 def test_write_complex_seq(self): |
|
1700 FILE_NAME = 'write_complex_seq.confml' |
|
1701 prj = api.Project(api.Storage.open(self.TEMP_DIR, "w")) |
|
1702 config = prj.create_configuration(FILE_NAME) |
|
1703 |
|
1704 seq = self._add_complex_sequence(config) |
|
1705 |
|
1706 seq.set_template([['file lp', 'file tp'], ['folder lp', 'folder tp'], |
|
1707 'string', '0', '0.1', 'false', |
|
1708 '2010-02-10', '00:00:00', '2010-02-10-00:00:00', 'P5Y4M3DT12H25M15S']) |
|
1709 |
|
1710 seq.add_sequence([['file lp1', 'file tp1'], ['folder lp1', 'folder tp1'], |
|
1711 'string1', '1', '1.1', 'true', |
|
1712 '2009-02-01', '01:30:15', '2009-02-01-01:00:00', 'PT1S']) |
|
1713 seq.add_sequence([['file lp2', 'file tp2'], ['folder lp2', 'folder tp2'], |
|
1714 'string2', '2', '1.2', 'false', |
|
1715 '2009-02-02', '02:30:15', '2009-02-02-02:00:00', 'PT2S']) |
|
1716 |
|
1717 config.save() |
|
1718 prj.close() |
|
1719 |
|
1720 self.assert_file_contents_equal( |
|
1721 os.path.join(self.TEMP_DIR, FILE_NAME), |
|
1722 os.path.join(self.EXPECTED_DIR, 'complex_seq.confml')) |
|
1723 |
|
1724 def test_write_complex_seq_with_nones(self): |
|
1725 FILE_NAME = 'write_complex_seq_with_nones.confml' |
|
1726 prj = api.Project(api.Storage.open(self.TEMP_DIR, "w")) |
|
1727 config = prj.create_configuration(FILE_NAME) |
|
1728 |
|
1729 seq = self._add_complex_sequence(config) |
|
1730 |
|
1731 seq.set_template([['file lp', None], [None, 'folder tp'], |
|
1732 'string', None, 0.1, None, |
|
1733 '2010-02-10', None, '2010-02-10-00:00:00', None]) |
|
1734 |
|
1735 seq.add_sequence([['file lp1', None], [None, 'folder tp1'], |
|
1736 'string1', None, 1.1, None, |
|
1737 '2009-02-01', None, '2009-02-01-01:00:00', None]) |
|
1738 |
|
1739 config.save() |
|
1740 prj.close() |
|
1741 |
|
1742 self.assert_file_contents_equal( |
|
1743 os.path.join(self.TEMP_DIR, FILE_NAME), |
|
1744 os.path.join(self.EXPECTED_DIR, 'complex_seq_with_nones.confml')) |
1133 |
1745 |
1134 class TestReadWriteConfml(BaseTestCase): |
1746 class TestReadWriteConfml(BaseTestCase): |
1135 """ |
1747 """ |
1136 Test case for ensuring that reading in a ConfML file and then writing |
1748 Test case for ensuring that reading in a ConfML file and then writing |
1137 it out again results in logically the same data (XML-wise) as the |
1749 it out again results in logically the same data (XML-wise) as the |
1188 def _run_test_for_file(self, file_path): |
1800 def _run_test_for_file(self, file_path): |
1189 self._run_read_and_write_test( |
1801 self._run_read_and_write_test( |
1190 file_name = os.path.basename(file_path), |
1802 file_name = os.path.basename(file_path), |
1191 input_dir = os.path.dirname(file_path), |
1803 input_dir = os.path.dirname(file_path), |
1192 output_dir = os.path.normpath(os.path.join(ROOT_PATH, 'temp/read_write_results'))) |
1804 output_dir = os.path.normpath(os.path.join(ROOT_PATH, 'temp/read_write_results'))) |
|
1805 |
|
1806 def test_create_configuration_with_view_includes_to_storage(self): |
|
1807 prj = api.Project(api.Storage.open("temp/testprojectviews", "w")) |
|
1808 test = prj.create_configuration("testview.confml") |
|
1809 fea1 = test.create_feature("fea1") |
|
1810 set1 = fea1.create_feature('set1', type="int") |
|
1811 view = test.create_view("Testing") |
|
1812 test1 = prj.create_configuration("testview1.confml") |
|
1813 view1 = test1.create_view("subview1") |
|
1814 test2 = prj.create_configuration("testview2.confml") |
|
1815 view2 = test2.create_view("subview2") |
|
1816 group = view.create_group("group1") |
|
1817 group.create_featurelink("fea1/set1") |
|
1818 group2 = view2.create_group("group2") |
|
1819 group2.create_featurelink("fea1/set1") |
|
1820 view.add(api.ConfigurationProxy("testview1.confml")) |
|
1821 group.add(api.ConfigurationProxy("testview2.confml")) |
|
1822 prj.save() |
|
1823 prj.close() |
|
1824 |
|
1825 prj = api.Project(api.Storage.open("temp/testprojectviews", "w")) |
|
1826 test = prj.get_configuration("testview.confml") |
|
1827 self.assertEquals(test.list_views(), ['Testing', |
|
1828 'Testing.group1.testview2_confml.subview2', |
|
1829 'Testing.testview1_confml.subview1']) |
|
1830 |
|
1831 view = test.get_view('Testing') |
|
1832 |
|
1833 self.assertEquals(view.list_all_features(), ['group1.proxy_fea1_set1']) |
|
1834 |
|
1835 self.assertTrue(os.path.exists("temp/testprojectviews")) |
|
1836 shutil.rmtree("temp") |
1193 |
1837 |
1194 # Create a separate test method for each ConfML file in the read-write test data |
1838 # Create a separate test method for each ConfML file in the read-write test data |
1195 _READ_WRITE_TESTDATA_DIR = os.path.join(ROOT_PATH, 'testdata/read_write') |
1839 _READ_WRITE_TESTDATA_DIR = os.path.join(ROOT_PATH, 'testdata/read_write') |
1196 for filename in filter(lambda fn: fn.endswith('.confml'), os.listdir(_READ_WRITE_TESTDATA_DIR)): |
1840 for filename in filter(lambda fn: fn.endswith('.confml'), os.listdir(_READ_WRITE_TESTDATA_DIR)): |
1197 path = os.path.join(_READ_WRITE_TESTDATA_DIR, filename) |
1841 path = os.path.join(_READ_WRITE_TESTDATA_DIR, filename) |