def test_multiplication(self): self.assertTrue(state.is_done(plugins.calculator.cmd_calc("1 * 1"))) self.assertEqual(plugins.calculator.cmd_calc("1 * 1").value, "1") self.assertTrue(state.is_done(plugins.calculator.cmd_calc("-1 * 1"))) self.assertEqual(plugins.calculator.cmd_calc("-1 * 1").value, "-1") self.assertTrue(state.is_done(plugins.calculator.cmd_calc("0.1 * 0.1"))) self.assertEqual(plugins.calculator.cmd_calc("0.1 * 0.1").value, "0.01")
def test_addition(self): self.assertTrue(state.is_done(plugins.calculator.cmd_calc("1 + 1"))) self.assertEqual(plugins.calculator.cmd_calc("1 + 1").value, "2") self.assertTrue(state.is_done(plugins.calculator.cmd_calc("-1 + 1"))) self.assertEqual(plugins.calculator.cmd_calc("-1 + 1").value, "0") self.assertTrue(state.is_done(plugins.calculator.cmd_calc("0.5 + 0.5"))) self.assertEqual(plugins.calculator.cmd_calc("0.5 + 0.5").value, "1.0")
def test_subtraction(self): self.assertTrue(state.is_done(plugins.calculator.cmd_calc("1 - 1"))) self.assertEqual(plugins.calculator.cmd_calc("1 - 1").value, "0") self.assertTrue(state.is_done(plugins.calculator.cmd_calc("-1 - 1"))) self.assertEqual(plugins.calculator.cmd_calc("-1 - 1").value, "-2") self.assertTrue(state.is_done(plugins.calculator.cmd_calc("0.6 - 0.5"))) self.assertEqual(plugins.calculator.cmd_calc("0.6 - 0.5").value, "0.1")
def parse(self, msg): """ Parse a message, return relevant output. @param msg: unparsed message @type msg: str @return: message to print or None (if there's no output to print) @rtype: str|None """ # split message into first word + rest of line try: command, args = msg.split(None, 1) except ValueError: command, args = msg, "" if command in self.COMMANDS: stat = self.COMMANDS[command](args) if state.is_done(stat): return stat.value elif state.is_next(stat): print(stat.value) return None else: return None for func in self.FILTERS: stat = func(msg) if state.is_done(stat): return stat.value elif state.is_replace(stat): msg = stat.value return msg
def parse(self, msg): """ Parse a message, return relevant output. @param msg: unparsed message @type msg: str @return: message to print or None (if there's no output to print) @rtype: str|None """ # split msg into command & arguments try: command, args = msg.split(None, 1) except ValueError: # split failed command, args = msg.rstrip(), "" # try execute command if command in self.COMMANDS: rval = self.COMMANDS[command](args) if state.is_done(rval): return rval.value # run text HOOKS for f in self.FILTERS: rval = f(msg) if state.is_done(rval): return rval.value if state.is_replace(rval): msg = rval.value return msg
def parse(self, msg): """ Parses given input. @param msg: input message to parse @type msg: str @return: return message processed with associated commands and filters @rtype: str """ try: cmd, args = msg.split(" ", 1) except ValueError: cmd, args = msg.rstrip(), "" if cmd in self.COMMANDS: ret = self.COMMANDS[cmd](args) if state.is_done(ret): return ret.value elif state.is_next(ret): pass else: raise Exception("Illegal state of command.") for filter in self.FILTERS: ret = filter(msg) if state.is_done(ret): return ret.value if state.is_replace(ret): msg = ret.value return msg
def test_division(self): self.assertTrue(state.is_done(plugins.calculator.cmd_calc("1 / 1"))) self.assertEqual(plugins.calculator.cmd_calc("1 / 1").value, "1") self.assertTrue(state.is_done(plugins.calculator.cmd_calc("1 / 2"))) self.assertEqual(plugins.calculator.cmd_calc("1 / 2").value, "0") self.assertTrue(state.is_done(plugins.calculator.cmd_calc("1.0 / 2"))) self.assertEqual(plugins.calculator.cmd_calc("1.0 / 2").value, "0.5")
def test_custom(self): plugins.wordcount.WORDCOUNT = 5 self.assertEqual(plugins.wordcount.WORDCOUNT, 5) self.assertTrue(state.is_done(plugins.wordcount.cmd_word_count())) self.assertEqual( plugins.wordcount.cmd_word_count(None).value, "Actual word count is " + str(plugins.wordcount.WORDCOUNT) + " words.", )
def test_single_negative_number_float(self): self.assertTrue(state.is_done(plugins.calculator.cmd_calc("-1.0"))) self.assertEqual(plugins.calculator.cmd_calc("-1.0").value, "-1.0")
def test_not_state(self): self.assertFalse(state.is_done(object()))
def test_not_done(self): self.assertFalse(state.is_done(state.replace(None))) self.assertFalse(state.is_done(state.next(None)))
def test_single_negative_number(self): self.assertTrue(state.is_done(calculator.cmd_calc("-1"))) self.assertEqual(calculator.cmd_calc("-1").value, "-1")
def test_single_positive_number(self): self.assertTrue(state.is_done(plugins.calculator.cmd_calc("1"))) self.assertEquals(plugins.calculator.cmd_calc("1").value, "1")
def test_default(self): self.assertTrue(state.is_done(plugins.karma.cmd_karma("foo"))) self.assertEqual(plugins.karma.cmd_karma("foo").value, "'foo' has no karma.") plugins.karma.KARMA = {"foo": 5} self.assertTrue(state.is_done(plugins.karma.cmd_karma("foo"))) self.assertEqual(plugins.karma.cmd_karma("foo").value, "'foo' has 5 points of karma.")
def test_default(self): self.assertTrue(state.is_done(plugins.wordcount.cmd_word_count())) self.assertEqual(plugins.wordcount.cmd_word_count(None).value, 'Actual word count is ' + str(plugins.wordcount.WORDCOUNT) + ' words.')
def test_done(self): self.assertTrue(state.is_done(state.done(None)))
def test_correct_parenthesis(self): self.assertTrue(state.is_done(plugins.calculator.cmd_calc("2 * (1 + 2)"))) self.assertEqual(plugins.calculator.cmd_calc("2 * (1 + 2)").value, "6")
def test_single_positive_number_float(self): self.assertTrue(state.is_done(calculator.cmd_calc("1.0"))) self.assertEquals(calculator.cmd_calc("1.0").value, "1.0")