Fix unittests for funcparser refactor
This commit is contained in:
parent
a3a57314a1
commit
7891987e05
6 changed files with 68 additions and 312 deletions
|
|
@ -338,225 +338,19 @@ class TestProtLib(EvenniaTest):
|
|||
self.assertEqual(match, [self.prot])
|
||||
|
||||
|
||||
@override_settings(PROT_FUNC_MODULES=["evennia.prototypes.protfuncs"], CLIENT_DEFAULT_WIDTH=20)
|
||||
class TestProtFuncs(EvenniaTest):
|
||||
def setUp(self):
|
||||
super(TestProtFuncs, self).setUp()
|
||||
self.prot = {
|
||||
"prototype_key": "test_prototype",
|
||||
"prototype_desc": "testing prot",
|
||||
"key": "ExampleObj",
|
||||
}
|
||||
|
||||
@mock.patch("evennia.prototypes.protfuncs.base_random", new=mock.MagicMock(return_value=0.5))
|
||||
@mock.patch("evennia.prototypes.protfuncs.base_randint", new=mock.MagicMock(return_value=5))
|
||||
def test_protfuncs(self):
|
||||
self.assertEqual(protlib.protfunc_parser("$random()"), 0.5)
|
||||
self.assertEqual(protlib.protfunc_parser("$randint(1, 10)"), 5)
|
||||
self.assertEqual(protlib.protfunc_parser("$left_justify( foo )"), "foo ")
|
||||
self.assertEqual(protlib.protfunc_parser("$right_justify( foo )"), " foo")
|
||||
self.assertEqual(protlib.protfunc_parser("$center_justify(foo )"), " foo ")
|
||||
self.assertEqual(
|
||||
protlib.protfunc_parser("$full_justify(foo bar moo too)"), "foo bar moo too"
|
||||
)
|
||||
self.assertEqual(
|
||||
protlib.protfunc_parser("$right_justify( foo )", testing=True),
|
||||
("unexpected indent (<unknown>, line 1)", " foo"),
|
||||
)
|
||||
|
||||
@override_settings(PROT_FUNC_MODULES=["evennia.prototypes.protfuncs"])
|
||||
def test_protkey_protfunc(self):
|
||||
test_prot = {"key1": "value1", "key2": 2}
|
||||
|
||||
self.assertEqual(
|
||||
protlib.protfunc_parser("$protkey(key1)", testing=True, prototype=test_prot),
|
||||
(None, "value1"),
|
||||
"value1",
|
||||
)
|
||||
self.assertEqual(
|
||||
protlib.protfunc_parser("$protkey(key2)", testing=True, prototype=test_prot), (None, 2)
|
||||
)
|
||||
|
||||
self.assertEqual(protlib.protfunc_parser("$add(1, 2)"), 3)
|
||||
self.assertEqual(protlib.protfunc_parser("$add(10, 25)"), 35)
|
||||
self.assertEqual(
|
||||
protlib.protfunc_parser("$add([1,2,3], [4,5,6])"), [1, 2, 3, 4, 5, 6])
|
||||
self.assertEqual(
|
||||
protlib.protfunc_parser("$add('[1,2,3]', '[4,5,6]')"), "[1,2,3][4,5,6]")
|
||||
self.assertEqual(protlib.protfunc_parser("$add(foo, bar)"), "foobar")
|
||||
self.assertEqual(protlib.protfunc_parser("$add(foo,' bar')"), "foo bar")
|
||||
|
||||
self.assertEqual(protlib.protfunc_parser("$sub(5, 2)"), 3)
|
||||
self.assertRaises(TypeError, protlib.protfunc_parser, "$sub(5, test)")
|
||||
|
||||
self.assertEqual(protlib.protfunc_parser("$mult(5, 2)"), 10)
|
||||
self.assertEqual(protlib.protfunc_parser("$mult( 5 , 10)"), 50)
|
||||
self.assertEqual(protlib.protfunc_parser("$mult('foo',3)"), "foofoofoo")
|
||||
self.assertEqual(protlib.protfunc_parser("$mult(foo,3)"), "foofoofoo")
|
||||
self.assertRaises(TypeError, protlib.protfunc_parser, "$mult(foo, foo)")
|
||||
|
||||
self.assertEqual(protlib.protfunc_parser("$toint(5.3)"), 5)
|
||||
|
||||
self.assertEqual(protlib.protfunc_parser("$div(5, 2)"), 2.5)
|
||||
self.assertEqual(protlib.protfunc_parser("$toint($div(5, 2))"), 2)
|
||||
self.assertEqual(protlib.protfunc_parser("$sub($add(5, 3), $add(10, 2))"), -4)
|
||||
|
||||
self.assertEqual(protlib.protfunc_parser("$eval('2')"), "2")
|
||||
|
||||
self.assertEqual(
|
||||
protlib.protfunc_parser("$eval(['test', 1, '2', 3.5, \"foo\"])"),
|
||||
["test", 1, "2", 3.5, "foo"],
|
||||
)
|
||||
self.assertEqual(
|
||||
protlib.protfunc_parser("$eval({'test': '1', 2:3, 3: $toint(3.5)})"),
|
||||
{"test": "1", 2: 3, 3: 3},
|
||||
)
|
||||
|
||||
# no object search
|
||||
odbref = self.obj1.dbref
|
||||
|
||||
with mock.patch(
|
||||
"evennia.prototypes.protfuncs._obj_search", wraps=protofuncs._obj_search
|
||||
) as mocked__obj_search:
|
||||
self.assertEqual(
|
||||
protlib.protfunc_parser("obj({})".format(odbref), session=self.session),
|
||||
"obj({})".format(odbref),
|
||||
)
|
||||
mocked__obj_search.assert_not_called()
|
||||
|
||||
with mock.patch(
|
||||
"evennia.prototypes.protfuncs._obj_search", wraps=protofuncs._obj_search
|
||||
) as mocked__obj_search:
|
||||
self.assertEqual(
|
||||
protlib.protfunc_parser("dbref({})".format(odbref), session=self.session),
|
||||
"dbref({})".format(odbref),
|
||||
)
|
||||
mocked__obj_search.assert_not_called()
|
||||
|
||||
with mock.patch(
|
||||
"evennia.prototypes.protfuncs._obj_search", wraps=protofuncs._obj_search
|
||||
) as mocked__obj_search:
|
||||
self.assertEqual(
|
||||
protlib.protfunc_parser("stone(#12345)", session=self.session), "stone(#12345)"
|
||||
)
|
||||
mocked__obj_search.assert_not_called()
|
||||
|
||||
with mock.patch(
|
||||
"evennia.prototypes.protfuncs._obj_search", wraps=protofuncs._obj_search
|
||||
) as mocked__obj_search:
|
||||
self.assertEqual(protlib.protfunc_parser(odbref, session=self.session), odbref)
|
||||
mocked__obj_search.assert_not_called()
|
||||
|
||||
with mock.patch(
|
||||
"evennia.prototypes.protfuncs._obj_search", wraps=protofuncs._obj_search
|
||||
) as mocked__obj_search:
|
||||
self.assertEqual(protlib.protfunc_parser("#12345", session=self.session), "#12345")
|
||||
mocked__obj_search.assert_not_called()
|
||||
|
||||
with mock.patch(
|
||||
"evennia.prototypes.protfuncs._obj_search", wraps=protofuncs._obj_search
|
||||
) as mocked__obj_search:
|
||||
self.assertEqual(
|
||||
protlib.protfunc_parser("nothing({})".format(odbref), session=self.session),
|
||||
"nothing({})".format(odbref),
|
||||
)
|
||||
mocked__obj_search.assert_not_called()
|
||||
|
||||
with mock.patch(
|
||||
"evennia.prototypes.protfuncs._obj_search", wraps=protofuncs._obj_search
|
||||
) as mocked__obj_search:
|
||||
self.assertEqual(protlib.protfunc_parser("(#12345)", session=self.session), "(#12345)")
|
||||
mocked__obj_search.assert_not_called()
|
||||
|
||||
with mock.patch(
|
||||
"evennia.prototypes.protfuncs._obj_search", wraps=protofuncs._obj_search
|
||||
) as mocked__obj_search:
|
||||
self.assertEqual(
|
||||
protlib.protfunc_parser("obj(Char)", session=self.session), "obj(Char)"
|
||||
)
|
||||
mocked__obj_search.assert_not_called()
|
||||
|
||||
with mock.patch(
|
||||
"evennia.prototypes.protfuncs._obj_search", wraps=protofuncs._obj_search
|
||||
) as mocked__obj_search:
|
||||
self.assertEqual(
|
||||
protlib.protfunc_parser("objlist({})".format(odbref), session=self.session),
|
||||
"objlist({})".format(odbref),
|
||||
)
|
||||
mocked__obj_search.assert_not_called()
|
||||
|
||||
with mock.patch(
|
||||
"evennia.prototypes.protfuncs._obj_search", wraps=protofuncs._obj_search
|
||||
) as mocked__obj_search:
|
||||
self.assertEqual(
|
||||
protlib.protfunc_parser("dbref(Char)", session=self.session), "dbref(Char)"
|
||||
)
|
||||
mocked__obj_search.assert_not_called()
|
||||
|
||||
# obj search happens
|
||||
|
||||
with mock.patch(
|
||||
"evennia.prototypes.protfuncs._obj_search", wraps=protofuncs._obj_search
|
||||
) as mocked__obj_search:
|
||||
self.assertEqual(
|
||||
protlib.protfunc_parser("$objlist({})".format(odbref), session=self.session),
|
||||
[odbref],
|
||||
)
|
||||
mocked__obj_search.assert_called_once()
|
||||
assert (odbref,) == mocked__obj_search.call_args[0]
|
||||
|
||||
with mock.patch(
|
||||
"evennia.prototypes.protfuncs._obj_search", wraps=protofuncs._obj_search
|
||||
) as mocked__obj_search:
|
||||
self.assertEqual(
|
||||
protlib.protfunc_parser("$obj({})".format(odbref), session=self.session), odbref
|
||||
)
|
||||
mocked__obj_search.assert_called_once()
|
||||
assert (odbref,) == mocked__obj_search.call_args[0]
|
||||
|
||||
with mock.patch(
|
||||
"evennia.prototypes.protfuncs._obj_search", wraps=protofuncs._obj_search
|
||||
) as mocked__obj_search:
|
||||
self.assertEqual(
|
||||
protlib.protfunc_parser("$dbref({})".format(odbref), session=self.session), odbref
|
||||
)
|
||||
mocked__obj_search.assert_called_once()
|
||||
assert (odbref,) == mocked__obj_search.call_args[0]
|
||||
|
||||
cdbref = self.char1.dbref
|
||||
|
||||
with mock.patch(
|
||||
"evennia.prototypes.protfuncs._obj_search", wraps=protofuncs._obj_search
|
||||
) as mocked__obj_search:
|
||||
self.assertEqual(protlib.protfunc_parser("$obj(Char)", session=self.session), cdbref)
|
||||
mocked__obj_search.assert_called_once()
|
||||
assert ("Char",) == mocked__obj_search.call_args[0]
|
||||
|
||||
# bad invocation
|
||||
|
||||
# with mock.patch(
|
||||
# "evennia.prototypes.protfuncs._obj_search", wraps=protofuncs._obj_search
|
||||
# ) as mocked__obj_search:
|
||||
# self.assertEqual(
|
||||
# protlib.protfunc_parser("$badfunc(#112345)", session=self.session), "<UNKNOWN>"
|
||||
# )
|
||||
# mocked__obj_search.assert_not_called()
|
||||
|
||||
with mock.patch(
|
||||
"evennia.prototypes.protfuncs._obj_search", wraps=protofuncs._obj_search
|
||||
) as mocked__obj_search:
|
||||
self.assertRaises(ValueError, protlib.protfunc_parser, "$dbref(Char)")
|
||||
mocked__obj_search.assert_not_called()
|
||||
|
||||
self.assertEqual(
|
||||
protlib.value_to_obj(protlib.protfunc_parser(cdbref, session=self.session)), self.char1
|
||||
)
|
||||
self.assertEqual(
|
||||
protlib.value_to_obj_or_any(protlib.protfunc_parser(cdbref, session=self.session)),
|
||||
self.char1,
|
||||
)
|
||||
self.assertEqual(
|
||||
protlib.value_to_obj_or_any(
|
||||
protlib.protfunc_parser("[1,2,3,'{}',5]".format(cdbref), session=self.session)
|
||||
),
|
||||
[1, 2, 3, self.char1, 5],
|
||||
protlib.protfunc_parser("$protkey(key2)", testing=True, prototype=test_prot),
|
||||
2
|
||||
)
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue