|
1 # |
|
2 # Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). |
|
3 # All rights reserved. |
|
4 # This component and the accompanying materials are made available |
|
5 # under the terms of "Eclipse Public License v1.0" |
|
6 # which accompanies this distribution, and is available |
|
7 # at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
8 # |
|
9 # Initial Contributors: |
|
10 # Nokia Corporation - initial contribution. |
|
11 # |
|
12 # Contributors: |
|
13 # |
|
14 # Description: |
|
15 # |
|
16 |
|
17 |
|
18 """ |
|
19 Test the CPF metadata file parsing routines |
|
20 """ |
|
21 import os, sys, unittest |
|
22 try: |
|
23 from cElementTree import ElementTree |
|
24 except ImportError: |
|
25 try: |
|
26 from elementtree import ElementTree |
|
27 except ImportError: |
|
28 try: |
|
29 from xml.etree import cElementTree as ElementTree |
|
30 except ImportError: |
|
31 from xml.etree import ElementTree |
|
32 |
|
33 import __init__ |
|
34 |
|
35 from cone.public import utils, exceptions, api |
|
36 from cone.storage import metadata, stringstorage |
|
37 ROOT_PATH = os.path.dirname(os.path.abspath(__file__)) |
|
38 emptytestdata = '<?xml version="1.0" encoding="ASCII"?>'\ |
|
39 '<metadata xmlns="http://www.nokia.com/xml/ns/confml-core/metadata-2.0"/>' |
|
40 |
|
41 |
|
42 testdata = \ |
|
43 '<metadata xmlns="http://www.nokia.com/xml/ns/confml-core/metadata-2.0">'\ |
|
44 ' <property name="cpf.name" value="test"/>'\ |
|
45 ' <property name="cpf.description" value="just testing"/>'\ |
|
46 ' <property name="cpf.viewId" value="Sample View"/>'\ |
|
47 ' <property name="cpf.rootFile" value="root.confml"/>'\ |
|
48 ' <property name="cpf.dataFile"/>'\ |
|
49 ' <property name="cpf.author"/>'\ |
|
50 ' <property name="cpf.version"/>'\ |
|
51 ' <property name="cpf.product"/>'\ |
|
52 ' <property name="cpf.customer"/>'\ |
|
53 ' <property name="cpf.platform"/>'\ |
|
54 ' <property name="cpf.release"/>'\ |
|
55 ' <property name="cpf.date"/>'\ |
|
56 ' <property name="cpf.owner"/>'\ |
|
57 '</metadata>'\ |
|
58 |
|
59 class TestMetadataReader(unittest.TestCase): |
|
60 def setUp(self): |
|
61 pass |
|
62 |
|
63 def test_create_meta_fromstring(self): |
|
64 m = metadata.MetadataReader().fromstring(testdata) |
|
65 self.assertTrue(m) |
|
66 |
|
67 def test_create_meta_fromstring(self): |
|
68 m = metadata.MetadataReader().fromstring(testdata) |
|
69 self.assertTrue(m.data.has_key('cpf.name')) |
|
70 self.assertTrue(m.data.has_key('cpf.description')) |
|
71 self.assertTrue(m.data.has_key('cpf.viewId')) |
|
72 self.assertTrue(m.data.has_key('cpf.rootFile')) |
|
73 self.assertEquals(m.data['cpf.name'], 'test') |
|
74 self.assertEquals(m.data['cpf.description'], 'just testing') |
|
75 self.assertEquals(m.data['cpf.viewId'], 'Sample View') |
|
76 self.assertEquals(m.data['cpf.rootFile'], 'root.confml') |
|
77 |
|
78 def test_str_to_meta_and_back(self): |
|
79 meta = metadata.MetadataReader().fromstring(testdata) |
|
80 str = metadata.MetadataWriter().tostring(meta,False) |
|
81 self.assertTrue(str.find('cpf.name')) |
|
82 |
|
83 def test_get_property(self): |
|
84 etree = ElementTree.fromstring('<property name="test" value="test"/>') |
|
85 (key,value) = metadata.MetadataReader().get_property(etree) |
|
86 self.assertEquals(key,'test') |
|
87 self.assertEquals(value,'test') |
|
88 |
|
89 def test_get_property_with_only_key(self): |
|
90 etree = ElementTree.fromstring('<property name="test"/>') |
|
91 (key,value) = metadata.MetadataReader().get_property(etree) |
|
92 self.assertEquals(key,'test') |
|
93 self.assertEquals(value,'') |
|
94 |
|
95 class TestMetadataWriter(unittest.TestCase): |
|
96 def setUp(self): |
|
97 pass |
|
98 |
|
99 def test_metadata_tostring(self): |
|
100 meta = metadata.Metadata() |
|
101 str = metadata.MetadataWriter().tostring(meta) |
|
102 self.assertTrue(str,emptytestdata) |
|
103 |
|
104 def test_metadata_with_values_tostring(self): |
|
105 meta = metadata.Metadata() |
|
106 meta.data['cpf.name'] = 'testing ss' |
|
107 meta.data['cpf.description'] = 'foo faa' |
|
108 str = metadata.MetadataWriter().tostring(meta) |
|
109 self.assertTrue(str,'<metadata xmlns="http://www.nokia.com/xml/ns/confml-core/metadata-2.0"><property name="cpf.name" value="testing ss" /><property name="cpf.description" value="foo faa" /></metadata>') |
|
110 |
|
111 def test_metadata_with_values_to_resource(self): |
|
112 meta = metadata.Metadata() |
|
113 meta.data['cpf.name'] = 'testing ss' |
|
114 meta.data['cpf.description'] = 'foo faa' |
|
115 storage = stringstorage.StringStorage("") |
|
116 res = storage.open_resource(".metadata","w") |
|
117 metadata.MetadataWriter().toresource(meta,res) |
|
118 self.assertTrue(res.getvalue(),'<metadata xmlns="http://www.nokia.com/xml/ns/confml-core/metadata-2.0"><property name="cpf.name" value="testing ss" /><property name="cpf.description" value="foo faa" /></metadata>') |
|
119 |
|
120 def test_metadata_from_meta_to_str_and_back(self): |
|
121 meta = metadata.Metadata() |
|
122 meta.data['cpf.name'] = 'testing ss' |
|
123 meta.data['cpf.description'] = 'foo faa' |
|
124 str = metadata.MetadataWriter().tostring(meta) |
|
125 meta2 = metadata.MetadataReader().fromstring(str) |
|
126 self.assertEqual(meta.data,meta2.data) |
|
127 |
|
128 def test_incorrect_class_fails(self): |
|
129 try: |
|
130 class dummy: |
|
131 pass |
|
132 str = metadata.MetadataWriter().tostring(dummy()) |
|
133 self.fail("Writing dummy class succeeds!") |
|
134 except exceptions.IncorrectClassError,e: |
|
135 pass |
|
136 |
|
137 |
|
138 def test_set_property(self): |
|
139 elem = ElementTree.Element('property') |
|
140 prop = metadata.MetadataWriter().set_property(elem,'test','foof') |
|
141 self.assertTrue(prop.get('name'),'test') |
|
142 self.assertTrue(prop.get('value'),'foof') |
|
143 |
|
144 def test_set_property_with_only_key(self): |
|
145 elem = ElementTree.Element('property') |
|
146 prop = metadata.MetadataWriter().set_property(elem,'test','') |
|
147 self.assertEquals(prop.get('name'),'test') |
|
148 self.assertEquals(prop.get('value'),None) |
|
149 |
|
150 |
|
151 if __name__ == '__main__': |
|
152 unittest.main() |
|
153 |