Ejemplo n.º 1
0
 def __init__(self,
              logger=RealLogger(
                  os.path.join('..', '..', 'tmp',
                               'string_calculator.log'))):
     self.logger = logger
     self.logger.log('Hello')
     self.instr = ''
     self.answer = ''
     self.button_convert_state = 'disabled'
     self.strcalc = StrCalculator()
Ejemplo n.º 2
0
class StrCalculatorViewModel:
    def __init__(self,
                 logger=RealLogger(
                     os.path.join('..', '..', 'tmp',
                                  'string_calculator.log'))):
        self.logger = logger
        self.logger.log('Hello')
        self.instr = ''
        self.answer = ''
        self.button_convert_state = 'disabled'
        self.strcalc = StrCalculator()

    def get_button_convert_state(self):
        return self.button_convert_state

    def set_btn_enabled(self):
        self.logger.log('Button status: normal')
        self.button_convert_state = 'normal'

    def set_btn_disabled(self):
        self.logger.log('Button status: disabled')
        self.button_convert_state = 'disabled'

    def validate_text(self):
        parser = StrCalculatorParser()
        try:
            parser.parse(self.instr)
        except:
            self.logger.log('Invalid input')
            self.set_btn_disabled()
        else:
            self.logger.log('Correct input')
            self.set_btn_enabled()

    def set_instr(self, instr):
        self.logger.log('Set inst: {}'.format(instr))
        self.instr = instr
        self.validate_text()

    def get_instr(self):
        return self.instr

    def set_answer(self, answer_str):
        self.answer = self.strcalc.add(self.instr)
        self.logger.log('Answer: {}'.format(self.answer))

    def get_answer(self):
        return self.answer

    def click_button(self):
        self.logger.log('Button clicked')
        self.set_answer(self.instr)
Ejemplo n.º 3
0
class StrCalculatorViewModel:
    def __init__(self):
        self.instr = ''
        self.answer = ''
        self.strcalc = StrCalculator()
        self.set_btn_disabled()

    def get_button_convert_state(self):
        return self.button_convert_state

    def set_btn_enabled(self):
        self.button_convert_state = 'normal'

    def set_btn_disabled(self):
        self.button_convert_state = 'disabled'

    def validate_text(self):
        parser = StrCalculatorParser()
        try:
            parser.parse(self.instr)
        except:
            self.set_btn_disabled()
        else:
            self.set_btn_enabled()

    def set_instr(self, instr):
        self.instr = instr
        self.validate_text()

    def get_instr(self):
        return self.instr

    def set_answer(self, answer_str):
        self.answer = self.strcalc.add(self.instr)

    def get_answer(self):
        return self.answer

    def click_button(self):
        self.set_answer(self.instr)
 def test_can_create_calculator(self):
     strcalc = StrCalculator()
     self.assertTrue(isinstance(strcalc, StrCalculator))
 def test_check_negative_numbers_exception(self):
     strcalc = StrCalculator()
     msg = 'negatives not allowed: -1, -2'
     with self.assertRaisesRegex(ValueError, msg):
         strcalc.add("-1,-2")
 def test_can_use_custom_delimiter_hard(self):
     strcalc = StrCalculator()
     result = strcalc.add(";\n1;2;3;4;5;6;7")
     self.assertEqual(result, 28)
 def test_can_use_custom_delimiter(self):
     strcalc = StrCalculator()
     result = strcalc.add(";\n1;2")
     self.assertEqual(result, 3)
 def test_can_use_newline_delimiter_mix(self):
     strcalc = StrCalculator()
     result = strcalc.add("1\n2,3,4\n5,6\n7")
     self.assertEqual(result, 28)
 def test_can_use_newline_delimiter(self):
     strcalc = StrCalculator()
     result = strcalc.add("1\n2,3")
     self.assertEqual(result, 6)
 def test_can_add_unknown_amount_strings(self):
     strcalc = StrCalculator()
     result = strcalc.add("2,3,1,0,5,6,0,1,2")
     self.assertEqual(result, 20)
 def test_add_strings_1_2(self):
     strcalc = StrCalculator()
     result = strcalc.add("1,2")
     self.assertEqual(result, 3)
 def test_add_string_1(self):
     strcalc = StrCalculator()
     result = strcalc.add("1")
     self.assertEqual(result, 1)
 def test_add_empty_string_is_0(self):
     strcalc = StrCalculator()
     result = strcalc.add("")
     self.assertEqual(result, 0)
Ejemplo n.º 14
0
 def __init__(self):
     self.instr = ''
     self.answer = ''
     self.strcalc = StrCalculator()
     self.set_btn_disabled()