예제 #1
0
    def test_get_verb_details(self):
        e = test.Anything(
            get_context=lambda: None,
            # save                = lambda x: None,
            # is_unique_name        = lambda n: False,
            # get_details            = lambda *a, **kw: self.assertEqual((a,kw), ''),
            get_parents=lambda i, r: [],
            get_verb_list=lambda i: [],
            get_property_list=lambda i: [],
            get_verb_names=lambda i: ['test'],
            add_verb_name=lambda i, n: self.assertEqual(n, 'test'),
            instantiate=lambda *a, **kw: o if a[0] == 'object' else v,
        )
        o = interface.Object(e)
        o.set_id(1024)
        v = interface.Verb(o)
        v.set_names(['test'])

        details = v.get_details()
        self.assertEqual(
            details,
            dict(
                __str__='Verb test {#0 on #1024 ()}',
                id=0,
                kind='verb',
                code='',
                exec_type='verb',
                names=['test'],
                owner='None',
                origin='#1024 ()',
            ))
예제 #2
0
    def test_basic(self):
        e = test.Anything(
            is_allowed=lambda *a: True,
            get_context=lambda: o,
            save=lambda s: True,
            is_wizard=lambda *a: False,
        )
        o = interface.Object(e)
        v = interface.Verb(o)

        v.set_code('test code')
        self.assertEqual(v.get_code(), 'test code')
        self.assertEqual(v.code, 'test code')

        v.set_ability(True)
        self.assertEqual(v.ability, True)
        self.assertEqual(v.is_ability(), True)

        v.set_ability(False)
        self.assertEqual(v.ability, False)
        self.assertEqual(v.is_ability(), False)

        v.set_method(True)
        self.assertEqual(v.method, True)
        self.assertEqual(v.is_method(), True)

        v.set_method(False)
        self.assertEqual(v.method, False)
        self.assertEqual(v.is_method(), False)
예제 #3
0
    def test_names(self):
        e = test.Anything(get_verb_names=lambda *a, **kw: (a, kw), )
        o = interface.Object(e)
        v = interface.Verb(o)
        v.set_id(2048)

        self.assertEqual(v.get_names(), ((2048, ), {}))
예제 #4
0
    def test_id(self):
        e = test.Anything()
        o = interface.Object(e)
        v = interface.Verb(o)
        v.set_id(1024)

        self.assertEqual(v.get_id(), 1024)
        self.assertRaises(RuntimeError, v.set_id, 2048)
예제 #5
0
 def test_verb(self):
     e = test.Anything(
         get_verb=lambda *a, **kw: v,
         get_context=lambda: o,
         is_allowed=lambda *a: True,
     )
     o = interface.Object(e)
     v = interface.Verb(o)
     self.assertEqual(getattr(o, 'look'), v)
     self.assertEqual(o.get_verb('look', recurse=False), v)
예제 #6
0
    def test_remove_name(self):
        e = test.Anything(
            get_context=lambda: None,
            get_verb_names=lambda i: [],
            remove_verb_name=lambda *a: self.assertEqual(a, (2048, 'test')))
        o = interface.Object(e)
        o.set_id(1024)
        v = interface.Verb(o)
        v.set_id(2048)

        v.remove_name('test')
예제 #7
0
    def test_check(self):
        e = test.Anything(
            is_allowed=lambda *a: False,
            get_context=lambda: ctx,
            is_wizard=lambda *a: False,
        )
        ctx = interface.Object(e)

        o = interface.Object(e)
        v = interface.Verb(o)

        self.assertRaises(errors.PermissionError, v.check, 'move', o)
예제 #8
0
    def test_add_name(self):
        e = test.Anything(
            add_verb_name=lambda *a, **kw: (a, kw),
            is_allowed=lambda *a: True,
            get_context=lambda: o,
            is_wizard=lambda *a: False,
        )
        o = interface.Object(e)
        v = interface.Verb(o)
        v.set_id(2048)

        self.assertEqual(v.add_name('look'), ((2048, 'look'), {}))
예제 #9
0
    def test_origin(self):
        e = test.Anything(
            instantiate=lambda *a, **kw: (a, kw),
            is_allowed=lambda *a: True,
            get_context=lambda: o,
            is_wizard=lambda *a: False,
        )
        o = interface.Object(e)
        o.set_id(1024)
        v = interface.Verb(o)

        self.assertEqual(v.get_origin(), (('object', ), {'id': 1024}))
예제 #10
0
    def test_add_verb(self):
        x = test.Anything(get_id=lambda: -1, )
        e = test.Anything(
            instantiate=lambda *a, **kw: v,
            get_context=lambda: o,
            ctx=x,
            is_allowed=lambda *a: True,
            is_wizard=lambda *a: False,
        )
        o = interface.Object(e)
        v = interface.Verb(o)

        self.assertEqual(o.add_verb('look'), v)
예제 #11
0
    def test_origin(self):
        e = test.Anything(
            instantiate=lambda *a, **kw: origin,
            get_context=lambda: None,
        )

        origin = interface.Object(e)
        p = interface.Property(origin)

        self.assertEqual(p.get_origin(), origin)
        self.assertEqual(p.origin, origin)

        v = interface.Verb(origin)
        self.assertEqual(v.get_origin(), origin)
        self.assertEqual(v.origin, origin)
예제 #12
0
파일: exchange.py 프로젝트: wzzbzz/antioch
    def _mkverb(self, record):
        """
        Instantiate a interface.Verb
        """
        origin = self.instantiate('object', id=record['origin_id'])
        v = interface.Verb(origin)

        v._code = record.get('code', '')
        v._filename = record.get('filename', '')
        v._owner_id = record.get('owner_id', None)
        v._ability = record.get('ability', False)
        v._method = record.get('method', False)
        v._origin_id = record['origin_id']

        if ('name' in record):
            self.save(v)
            v.add_name(record['name'])

        return v
예제 #13
0
    def test_performable_by(self):
        e = test.Anything(get_context=lambda: None,
                          is_allowed=lambda a, p, s: True,
                          has_parent=lambda c, p: False,
                          save=lambda i: None,
                          instantiate=lambda *a, **kw: o
                          if a[0] == 'object' else v)
        o = interface.Object(e)
        o.set_id(1024)

        v = interface.Verb(o)
        v.set_id(2048)

        self.assertEqual(v.performable_by(o), False)

        v.method = True
        self.assertEqual(v.performable_by(o), False)

        v.method = False
        v.ability = True
        self.assertEqual(v.performable_by(o), True)
예제 #14
0
    def test_owner(self):
        e = test.Anything(
            instantiate=lambda *a, **kw: owner,
            get_context=lambda: None,
            save=lambda s: True,
        )

        owner = interface.Object(e)
        owner_mock = test.Anything(get_id=lambda: 1024, )
        subject = interface.Object(e)
        subject2 = interface.Property(subject)
        subject3 = interface.Verb(subject)

        subject.set_owner(owner_mock)
        self.assertEqual(subject.get_owner(), owner)
        self.assertEqual(subject.owner, owner)

        subject2.set_owner(owner_mock)
        self.assertEqual(subject2.get_owner(), owner)
        self.assertEqual(subject2.owner, owner)

        subject3.set_owner(owner_mock)
        self.assertEqual(subject3.get_owner(), owner)
        self.assertEqual(subject3.owner, owner)
예제 #15
0
파일: default.py 프로젝트: wzzbzz/antioch
#
# See LICENSE for details
"""
Default database bootstrap.
"""

from antioch.core import interface, bootstrap
from antioch.util import sql

for name in interface.default_permissions:
    exchange.connection.runOperation(sql.build_insert('permission', name=name))

exchange.load_permissions()

system = exchange.instantiate('object', name='System Object')
set_default_permissions_verb = interface.Verb(system)
set_default_permissions_verb._method = True
set_default_permissions_verb._code = bootstrap.get_source(
    'system_set_default_permissions.py')
exchange.save(set_default_permissions_verb)
set_default_permissions_verb.add_name('set_default_permissions')

set_default_permissions_verb(set_default_permissions_verb)
set_default_permissions_verb(system)

wizard = exchange.instantiate('object', name='Wizard', unique_name=True)
wizard.set_owner(wizard)
system.set_owner(wizard)
set_default_permissions_verb.set_owner(wizard)

bag_of_holding = exchange.instantiate('object', name='bag of holding')