""" Part of the bsie test suite. A copy of the license is provided with the project. Author: Matthias Baumgartner, 2022 """ # imports import unittest # bsie imports from bsie.utils import bsfs, ns # objects to test from bsie.utils.node import Node ## code ## class TestNode(unittest.TestCase): def test_equality(self): uri = bsfs.URI('http://example.com/me/entity#1234') node = Node(ns.bsfs.Entity, uri) # basic equivalence self.assertEqual(node, Node(ns.bsfs.Entity, bsfs.URI('http://example.com/me/entity#1234'))) self.assertEqual(hash(node), hash(Node(ns.bsfs.Entity, bsfs.URI('http://example.com/me/entity#1234')))) # equality respects uri self.assertNotEqual(node, Node(ns.bsfs.Entity, bsfs.URI('http://example.com/me/entity#4321'))) self.assertNotEqual(hash(node), hash(Node(ns.bsfs.Entity, bsfs.URI('http://example.com/me/entity#4321')))) # equality respects node_type self.assertNotEqual(node, Node(ns.bsfs.Foo, uri)) self.assertNotEqual(hash(node), hash(Node(ns.bsfs.Foo, uri))) # not equal to other types self.assertNotEqual(node, 1234) self.assertNotEqual(hash(node), hash(1234)) self.assertNotEqual(node, uri) self.assertNotEqual(hash(node), hash(uri)) self.assertNotEqual(node, ns.bsfs.Entity) self.assertNotEqual(hash(node), hash(ns.bsfs.Entity)) class Foo(): pass self.assertNotEqual(node, Foo()) self.assertNotEqual(hash(node), hash(Foo())) def test_str(self): uri = bsfs.URI('http://example.com/me/entity#1234') # basic string conversion node = Node(ns.bsfs.Entity, uri) self.assertEqual(str(node), 'Node(http://bsfs.ai/schema/Entity, http://example.com/me/entity#1234)') self.assertEqual(repr(node), 'Node(http://bsfs.ai/schema/Entity, http://example.com/me/entity#1234)') # string conversion respects node_type node = Node(ns.bsfs.Foo, uri) self.assertEqual(str(node), 'Node(http://bsfs.ai/schema/Foo, http://example.com/me/entity#1234)') self.assertEqual(repr(node), 'Node(http://bsfs.ai/schema/Foo, http://example.com/me/entity#1234)') # string conversion respects uri node = Node(ns.bsfs.Entity, bsfs.URI('http://example.com/me/entity#4321')) self.assertEqual(str(node), 'Node(http://bsfs.ai/schema/Entity, http://example.com/me/entity#4321)') self.assertEqual(repr(node), 'Node(http://bsfs.ai/schema/Entity, http://example.com/me/entity#4321)') ## main ## if __name__ == '__main__': unittest.main() ## EOF ##