Source code for evennia.contrib.base_systems.unixcommand.tests
"""
Test of the Unixcommand.
"""
from evennia.commands.default.tests import BaseEvenniaCommandTest
from .unixcommand import UnixCommand
[docs]class CmdDummy(UnixCommand):
"""A dummy UnixCommand."""
key = "dummy"
[docs] def init_parser(self):
"""Fill out options."""
self.parser.add_argument("nb1", type=int, help="the first number")
self.parser.add_argument("nb2", type=int, help="the second number")
self.parser.add_argument("-v", "--verbose", action="store_true")
[docs] def func(self):
nb1 = self.opts.nb1
nb2 = self.opts.nb2
result = nb1 * nb2
verbose = self.opts.verbose
if verbose:
self.msg("{} times {} is {}".format(nb1, nb2, result))
else:
self.msg("{} * {} = {}".format(nb1, nb2, result))
[docs]class TestUnixCommand(BaseEvenniaCommandTest):
[docs] def test_success(self):
"""See the command parsing succeed."""
self.call(CmdDummy(), "5 10", "5 * 10 = 50")
self.call(CmdDummy(), "5 10 -v", "5 times 10 is 50")
[docs] def test_failure(self):
"""If not provided with the right info, should fail."""
ret = self.call(CmdDummy(), "5")
lines = ret.splitlines()
self.assertTrue(any(lin.startswith("usage:") for lin in lines))
self.assertTrue(any(lin.startswith("dummy: error:") for lin in lines))
# If we specify an incorrect number as parameter
ret = self.call(CmdDummy(), "five ten")
lines = ret.splitlines()
self.assertTrue(any(lin.startswith("usage:") for lin in lines))
self.assertTrue(any(lin.startswith("dummy: error:") for lin in lines))