cmlenz@1: # -*- coding: utf-8 -*- cmlenz@1: # cmlenz@1: # Copyright (C) 2006 Christopher Lenz cmlenz@1: # All rights reserved. cmlenz@1: # cmlenz@1: # This software is licensed as described in the file COPYING, which cmlenz@1: # you should have received as part of this distribution. The terms cmlenz@27: # are also available at http://markup.cmlenz.net/wiki/License. cmlenz@1: # cmlenz@1: # This software consists of voluntary contributions made by many cmlenz@1: # individuals. For the exact contribution history, see the revision cmlenz@27: # history and logs, available at http://markup.cmlenz.net/log/. cmlenz@1: cmlenz@1: import doctest cmlenz@1: import unittest cmlenz@1: cmlenz@26: from markup.input import XML cmlenz@26: from markup.path import Path cmlenz@26: cmlenz@26: cmlenz@26: class PathTestCase(unittest.TestCase): cmlenz@26: cmlenz@26: def test_1step(self): cmlenz@26: xml = XML('') cmlenz@26: self.assertEqual('', Path('root').select(xml).render()) cmlenz@26: self.assertEqual('', Path('//root').select(xml).render()) cmlenz@26: cmlenz@26: def test_1step_wildcard(self): cmlenz@26: xml = XML('') cmlenz@26: self.assertEqual('', Path('*').select(xml).render()) cmlenz@26: self.assertEqual('', Path('//*').select(xml).render()) cmlenz@26: cmlenz@26: def test_1step_attribute(self): cmlenz@26: path = Path('@foo') cmlenz@26: self.assertEqual('', path.select(XML('')).render()) cmlenz@26: self.assertEqual('bar', path.select(XML('')).render()) cmlenz@26: cmlenz@26: def test_1step_attribute(self): cmlenz@26: path = Path('@foo') cmlenz@26: self.assertEqual('', path.select(XML('')).render()) cmlenz@26: self.assertEqual('bar', path.select(XML('')).render()) cmlenz@26: cmlenz@26: def test_2step(self): cmlenz@26: xml = XML('') cmlenz@26: self.assertEqual('', Path('root/*').select(xml).render()) cmlenz@26: self.assertEqual('', Path('root/bar').select(xml).render()) cmlenz@26: self.assertEqual('', Path('root/baz').select(xml).render()) cmlenz@26: cmlenz@26: def test_2step_complex(self): cmlenz@26: xml = XML('') cmlenz@26: self.assertEqual('', Path('foo/bar').select(xml).render()) cmlenz@26: self.assertEqual('', Path('foo/*').select(xml).render()) cmlenz@26: self.assertEqual('', Path('root/bar').select(xml).render()) cmlenz@26: cmlenz@26: xml = XML('') cmlenz@26: self.assertEqual('', Path('root/bar').select(xml).render()) cmlenz@26: cmlenz@26: def test_2step_text(self): cmlenz@26: xml = XML('Foo') cmlenz@26: self.assertEqual('Foo', Path('item/text()').select(xml).render()) cmlenz@26: xml = XML('FooBar') cmlenz@26: self.assertEqual('FooBar', Path('item/text()').select(xml).render()) cmlenz@26: cmlenz@26: def test_3step(self): cmlenz@26: xml = XML('') cmlenz@26: self.assertEqual('', Path('root/foo/*').select(xml).render()) cmlenz@26: cmlenz@26: def test_3step_complex(self): cmlenz@26: xml = XML('') cmlenz@26: self.assertEqual('', Path('root/*/bar').select(xml).render()) cmlenz@26: xml = XML('') cmlenz@26: self.assertEqual('', cmlenz@26: Path('root//bar').select(xml).render()) cmlenz@26: cmlenz@26: def test_predicate_attr(self): cmlenz@26: xml = XML('') cmlenz@26: self.assertEqual('', cmlenz@26: Path('root/item[@important]').select(xml).render()) cmlenz@26: self.assertEqual('', cmlenz@26: Path('root/item[@important="very"]').select(xml).render()) cmlenz@26: cmlenz@26: xml = XML('') cmlenz@26: self.assertEqual('', cmlenz@26: Path('root/item[@important="very"]').select(xml).render()) cmlenz@26: self.assertEqual('', cmlenz@26: Path('root/item[@important!="very"]').select(xml).render()) cmlenz@1: cmlenz@1: cmlenz@1: def suite(): cmlenz@1: suite = unittest.TestSuite() cmlenz@26: suite.addTest(doctest.DocTestSuite(Path.__module__)) cmlenz@26: suite.addTest(unittest.makeSuite(PathTestCase, 'test')) cmlenz@1: return suite cmlenz@1: cmlenz@1: if __name__ == '__main__': cmlenz@1: unittest.main(defaultTest='suite')