cpython_test.py 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. import unittest
  2. from os import path
  3. from lsup_rdf import env_init, term, triple, graph
  4. from lsup_rdf.term import IRIRef, Literal, BNode
  5. TEST_DIR = path.realpath(path.dirname(__file__))
  6. class TestTerm(unittest.TestCase):
  7. def setUp(self):
  8. self.s1 = IRIRef("urn:s:1")
  9. self.p1 = IRIRef("urn:p:1")
  10. self.o1 = IRIRef("urn:o:1")
  11. self.s2 = IRIRef("urn:s:2")
  12. self.p2 = IRIRef("urn:p:2")
  13. self.o2 = IRIRef("urn:o:2")
  14. self.s3 = IRIRef("urn:s:3")
  15. self.p3 = IRIRef("urn:p:3")
  16. self.o3 = IRIRef("urn:o:3")
  17. self.t1 = triple.Triple(self.s1, self.p1, self.o1)
  18. self.t2 = triple.Triple(self.s2, self.p2, self.o2)
  19. self.t3 = triple.Triple(self.s3, self.p3, self.o3)
  20. self.t4 = triple.Triple(self.s1, self.p1, self.o1)
  21. self.t5 = triple.Triple(self.s1, self.p2, self.o1)
  22. def test_iriref(self):
  23. uri = IRIRef("urn:s:1")
  24. self.assertTrue(isinstance(uri, term.Term))
  25. self.assertEqual(uri.data, 'urn:s:1')
  26. self.assertEqual(uri._type, term.TERM_IRIREF)
  27. self.assertFalse(hasattr(uri, 'datatype'))
  28. self.assertFalse(hasattr(uri, 'lang'))
  29. def test_literal(self):
  30. lit = Literal('Hello')
  31. self.assertTrue(isinstance(lit, term.Term))
  32. self.assertEqual(lit.data, 'Hello')
  33. self.assertEqual(lit._type, term.TERM_LITERAL)
  34. self.assertEqual(
  35. lit.datatype.data, 'http://www.w3.org/2001/XMLSchema#string')
  36. self.assertTrue(lit.lang is None)
  37. def test_lt_literal(self):
  38. lt_lit = Literal('Hola', lang='es-ES')
  39. self.assertTrue(isinstance(lt_lit, term.Term))
  40. self.assertEqual(lt_lit.data, 'Hola')
  41. self.assertEqual(lt_lit._type, term.TERM_LT_LITERAL)
  42. self.assertEqual(
  43. lt_lit.datatype.data, 'http://www.w3.org/2001/XMLSchema#string'
  44. )
  45. self.assertEqual(lt_lit.lang, 'es-ES')
  46. def test_bnode(self):
  47. bn = BNode('1234')
  48. self.assertTrue(isinstance(bn, term.Term))
  49. self.assertEqual(bn.data, '1234')
  50. self.assertEqual(bn._type, term.TERM_BNODE)
  51. self.assertFalse(hasattr(bn, 'datatype'))
  52. self.assertFalse(hasattr(bn, 'lang'))
  53. def test_graph(self):
  54. gr = graph.Graph(graph.STORE_HTABLE)
  55. gr.uri = term.Term(term.TERM_IRIREF, 'urn:c:1')
  56. self.assertEqual(gr.uri, 'urn:c:1')
  57. def test_graph_ops(self):
  58. gr = graph.Graph(graph.STORE_HTABLE)
  59. print('Adding triples.')
  60. gr.add([self.t1, self.t2])
  61. self.assertEqual(len(gr), 2)
  62. self.assertTrue(self.t1 in gr)
  63. self.assertTrue(self.t2 in gr)
  64. self.assertFalse(self.t3 in gr)
  65. self.assertTrue(self.t4 in gr)
  66. gr.remove(self.s1, None, None)
  67. self.assertFalse(self.t1 in gr)
  68. self.assertTrue(self.t2 in gr)
  69. print('Encoded NT:')
  70. for line in gr.to_rdf('nt'):
  71. print(line)
  72. def test_copy(self):
  73. gr1 = graph.Graph(graph.STORE_HTABLE)
  74. gr1.add([self.t1, self.t2, self.t3, self.t5])
  75. gr2 = graph.Graph(graph.STORE_HTABLE)
  76. gr1.copy(gr2, self.s1, None, None)
  77. self.assertTrue(self.t1 in gr2)
  78. self.assertTrue(self.t2 not in gr2)
  79. self.assertTrue(self.t3 not in gr2)
  80. self.assertTrue(self.t4 in gr2)
  81. self.assertTrue(self.t5 in gr2)
  82. def test_deserialize(self):
  83. print('From file.')
  84. with open(path.join(TEST_DIR, 'assets', 'test.nt'), 'rb') as fh:
  85. gr2 = graph.Graph.from_rdf(fh, 'nt')
  86. self.assertTrue(self.t1 in gr2)
  87. self.assertTrue(self.t2 in gr2)
  88. if __name__ == '__main__':
  89. env_init()
  90. unittest.main()