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))