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('- Foo
- Bar
')
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')