Make sure we can roundtrip unicode characters via converting to utf-8
[htsworkflow.git] / htsworkflow / util / test / test_rdfhelp.py
1 import unittest
2 import types
3
4 from htsworkflow.util.rdfhelp import blankOrUri, toTypedNode, fromTypedNode
5 try:
6   import RDF
7   
8   class TestRDFHelp(unittest.TestCase):
9       def test_typed_node_boolean(self):
10           node = toTypedNode(True)
11           self.failUnlessEqual(node.literal_value['string'], u'1')
12           self.failUnlessEqual(str(node.literal_value['datatype']),
13                                'http://www.w3.org/2001/XMLSchema#boolean')
14   
15       def test_typed_node_string(self):
16           node = toTypedNode('hello')
17           self.failUnlessEqual(node.literal_value['string'], u'hello')
18           self.failUnless(node.literal_value['datatype'] is None)
19   
20       def test_blank_or_uri_blank(self):
21           node = blankOrUri()
22           self.failUnlessEqual(node.is_blank(), True)
23   
24       def test_blank_or_uri_url(self):
25           s = 'http://google.com'
26           node = blankOrUri(s)
27           self.failUnlessEqual(node.is_resource(), True)
28           self.failUnlessEqual(str(node.uri), s)
29   
30       def test_blank_or_uri_node(self):
31           s = RDF.Node(RDF.Uri('http://google.com'))
32           node = blankOrUri(s)
33           self.failUnlessEqual(node.is_resource(), True)
34           self.failUnlessEqual(node, s)
35
36       def test_unicode_node_roundtrip(self):
37         literal = u'\u5927'
38         roundtrip = fromTypedNode(toTypedNode(literal))
39         self.failUnlessEqual(roundtrip, literal)
40         self.failUnlessEqual(type(roundtrip), types.UnicodeType)
41           
42   def suite():
43       return unittest.makeSuite(testRdfHelp, 'test')
44 except ImportError, e:
45     print "Unable to test rdfhelp"
46     
47     def suite():
48         return None
49     
50 if __name__ == "__main__":
51     unittest.main(defaultTest='suite')