cpython_test.py 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  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.trp = [
  18. triple.Triple(self.s1, self.p1, self.o1),
  19. triple.Triple(self.s2, self.p2, self.o2),
  20. ]
  21. self.t3 = triple.Triple(self.s3, self.p3, self.o3)
  22. self.t4 = triple.Triple(self.s1, self.p1, self.o1)
  23. def test_iriref(self):
  24. uri = IRIRef("urn:s:1")
  25. self.assertTrue(isinstance(uri, term.Term))
  26. self.assertEqual(uri.data, 'urn:s:1')
  27. self.assertEqual(uri._type, term.TERM_IRIREF)
  28. self.assertFalse(hasattr(uri, 'datatype'))
  29. self.assertFalse(hasattr(uri, 'lang'))
  30. def test_literal(self):
  31. lit = Literal('Hello')
  32. self.assertTrue(isinstance(lit, term.Term))
  33. self.assertEqual(lit.data, 'Hello')
  34. self.assertEqual(lit._type, term.TERM_LITERAL)
  35. self.assertEqual(
  36. lit.datatype.data, 'http://www.w3.org/2001/XMLSchema#string')
  37. self.assertTrue(lit.lang is None)
  38. def test_lt_literal(self):
  39. lt_lit = Literal('Hola', lang='es-ES')
  40. self.assertTrue(isinstance(lt_lit, term.Term))
  41. self.assertEqual(lt_lit.data, 'Hola')
  42. self.assertEqual(lt_lit._type, term.TERM_LT_LITERAL)
  43. self.assertEqual(
  44. lt_lit.datatype.data, 'http://www.w3.org/2001/XMLSchema#string'
  45. )
  46. self.assertEqual(lt_lit.lang, 'es-ES')
  47. def test_bnode(self):
  48. bn = BNode('1234')
  49. self.assertTrue(isinstance(bn, term.Term))
  50. self.assertEqual(bn.data, '1234')
  51. self.assertEqual(bn._type, term.TERM_BNODE)
  52. self.assertFalse(hasattr(bn, 'datatype'))
  53. self.assertFalse(hasattr(bn, 'lang'))
  54. def test_graph(self):
  55. gr = graph.Graph(graph.STORE_HTABLE)
  56. gr.uri = term.Term(term.TERM_IRIREF, 'urn:c:1')
  57. self.assertEqual(gr.uri, 'urn:c:1')
  58. def test_graph_ops(self):
  59. gr = graph.Graph(graph.STORE_HTABLE)
  60. print('Adding triples.')
  61. gr.add(self.trp)
  62. self.assertEqual(len(gr), 2)
  63. self.assertTrue(self.trp[0] in gr)
  64. self.assertTrue(self.trp[1] in gr)
  65. self.assertFalse(self.t3 in gr)
  66. self.assertTrue(self.t4 in gr)
  67. gr.remove(self.s1, None, None)
  68. self.assertFalse(self.trp[0] in gr)
  69. self.assertTrue(self.trp[1] in gr)
  70. print('Encoded NT:')
  71. for line in gr.to_rdf('nt'):
  72. print(line)
  73. def test_deserialize(self):
  74. print('From file.')
  75. with open(path.join(TEST_DIR, 'assets', 'test.nt'), 'rb') as fh:
  76. gr2 = graph.Graph.from_rdf(fh, 'nt')
  77. self.assertTrue(self.trp[0] in gr2)
  78. self.assertTrue(self.trp[1] in gr2)
  79. if __name__ == '__main__':
  80. env_init()
  81. unittest.main()