blob: 9ada53bea5ef0e8fbdd6074f9765d8349e93ee49 [file] [log] [blame]
#!/usr/bin/python
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
# Test ATOM data conversion functions
import unittest
from elemutil import *
from atomutil import *
itemEntry = \
"<?xml version=\'1.0\' encoding=\'UTF-8\'?>\n" \
"<entry xmlns=\"http://www.w3.org/2005/Atom\">" \
"<title type=\"text\">item</title>" \
"<id>cart-53d67a61-aa5e-4e5e-8401-39edeba8b83b</id>" \
"<content type=\"application/xml\">" \
"<item>" \
"<name>Apple</name><price>$2.99</price>" \
"</item>" \
"</content>" \
"<link href=\"cart-53d67a61-aa5e-4e5e-8401-39edeba8b83b\" />" \
"</entry>\n"
textEntry = \
"<?xml version=\'1.0\' encoding=\'UTF-8\'?>\n" \
"<entry xmlns=\"http://www.w3.org/2005/Atom\">" \
"<title type=\"text\">item</title>" \
"<id>cart-53d67a61-aa5e-4e5e-8401-39edeba8b83b</id>" \
"<content type=\"text\">" \
"Apple" \
"</content>" \
"<link href=\"cart-53d67a61-aa5e-4e5e-8401-39edeba8b83b\" />" \
"</entry>\n"
incompleteEntry = \
"<entry xmlns=\"http://www.w3.org/2005/Atom\">" \
"<title>item</title><content type=\"text/xml\">" \
"<Item xmlns=\"http://services/\">" \
"<name xmlns=\"\">Orange</name>" \
"<price xmlns=\"\">3.55</price>" \
"</Item>" \
"</content>" \
"</entry>"
completedEntry = \
"<?xml version=\'1.0\' encoding=\'UTF-8\'?>\n" \
"<entry xmlns=\"http://www.w3.org/2005/Atom\">" \
"<title type=\"text\">item</title>" \
"<id />" \
"<content type=\"application/xml\">" \
"<Item xmlns=\"http://services/\">" \
"<name xmlns=\"\">Orange</name>" \
"<price xmlns=\"\">3.55</price>" \
"</Item>" \
"</content><link href=\"\" />" \
"</entry>\n"
def testEntry():
i = (element, "'item", (element, "'name", "Apple"), (element, "'price", "$2.99"))
a = ((element, "'entry", (element, "'title", "item"), (element, "'id", "cart-53d67a61-aa5e-4e5e-8401-39edeba8b83b"), (element, "'content", i)),)
s = writeATOMEntry(a);
assert car(s) == itemEntry
a2 = readATOMEntry((itemEntry,))
s2 = writeATOMEntry(a2)
assert car(s2) == itemEntry
a3 = readATOMEntry((textEntry,))
s3 = writeATOMEntry(a3)
assert car(s3) == textEntry
a4 = readATOMEntry((incompleteEntry,))
s4 = writeATOMEntry(a4)
assert car(s4) == completedEntry
return True
emptyFeed = \
"<?xml version=\'1.0\' encoding=\'UTF-8\'?>\n" \
"<feed xmlns=\"http://www.w3.org/2005/Atom\">" \
"<title type=\"text\">Feed</title>" \
"<id>1234</id>" \
"</feed>\n"
itemFeed = \
"<?xml version=\'1.0\' encoding=\'UTF-8\'?>\n" \
"<feed xmlns=\"http://www.w3.org/2005/Atom\">" \
"<title type=\"text\">Feed</title>" \
"<id>1234</id>" \
"<entry xmlns=\"http://www.w3.org/2005/Atom\">" \
"<title type=\"text\">item</title>" \
"<id>cart-53d67a61-aa5e-4e5e-8401-39edeba8b83b</id>" \
"<content type=\"application/xml\">" \
"<item>" \
"<name>Apple</name><price>$2.99</price>" \
"</item>" \
"</content>" \
"<link href=\"cart-53d67a61-aa5e-4e5e-8401-39edeba8b83b\" />" \
"</entry>" \
"<entry xmlns=\"http://www.w3.org/2005/Atom\">" \
"<title type=\"text\">item</title>" \
"<id>cart-53d67a61-aa5e-4e5e-8401-39edeba8b83c</id>" \
"<content type=\"application/xml\">" \
"<item>" \
"<name>Orange</name><price>$3.55</price>" \
"</item>" \
"</content>" \
"<link href=\"cart-53d67a61-aa5e-4e5e-8401-39edeba8b83c\" />" \
"</entry>" \
"</feed>\n"
def testFeed():
a = ((element, "'feed", (element, "'title", "Feed"), (element, "'id", "1234")),)
s = writeATOMFeed(a)
assert car(s) == emptyFeed
a2 = readATOMFeed((emptyFeed,))
s2 = writeATOMFeed(a2)
assert car(s2) == emptyFeed
i3 = ((element, "'entry", (element, "'title", "item"), (element, "'id", "cart-53d67a61-aa5e-4e5e-8401-39edeba8b83b"),
(element, "'content", (element, "'item", (element, "'name", "Apple"), (element, "'price", "$2.99")))),
(element, "'entry", (element, "'title", "item"), (element, "'id", "cart-53d67a61-aa5e-4e5e-8401-39edeba8b83c"),
(element, "'content", (element, "'item", (element, "'name", "Orange"), (element, "'price", "$3.55")))))
a3 = (append((element, "'feed", (element, "'title", "Feed"), (element, "'id", "1234")), i3),)
s3 = writeATOMFeed(a3)
assert car(s3) == itemFeed
a4 = readATOMFeed((itemFeed,));
s4 = writeATOMFeed(a4);
assert car(s4) == itemFeed
a5 = elementsToValues(readATOMFeed((itemFeed,)));
s5 = writeATOMFeed(valuesToElements(a5));
assert car(s5) == itemFeed
return True
if __name__ == "__main__":
print "Testing..."
testEntry()
testFeed()
print "OK"