OverviewFilesCommitsIssuesDocsReleasesPeers

opencog-atomspace / tests / cython / atomspace / test_nameserver.py

43 lines · python ref:
import unittest

from opencog.atomspace import (types, decl_type, type_decl_context, AtomSpace,
        get_type_name)
from opencog.atomspace import add_node, add_link, set_thread_atomspace
from opencog.atomspace import *

# Types must be declared once per module
with type_decl_context(__name__):
    decl_type(types.Node, 'SomeNode')
    decl_type(types.Link, 'SomeLink')

def SomeNode(name):
    return add_node(types.SomeNode, name)

def SomeLink(*args):
    return add_link(types.SomeLink, args)

class NameserverTest(unittest.TestCase):

    def setUp(self):
        self.atomspace = AtomSpace()
        set_thread_atomspace(self.atomspace)

    def _get_atoms_by_type(self, type):
        type_name = get_type_name(type)
        return Meet(VariableList(
            TypedVariable(Variable("X"), TypeNode(type_name))),
            And(Variable("X"))).execute()

    def test_decl_node(self):
        node = SomeNode("test")
        res = self._get_atoms_by_type(types.SomeNode)
        self.assertEqual(res.to_list(), [ node ])

    def test_decl_link(self):
        link = SomeLink(SomeNode("a"), SomeNode("b"))
        res = self._get_atoms_by_type(types.SomeLink)
        self.assertEqual(res.to_list(), [ link ])

if __name__ == '__main__':
    unittest.main()