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()
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)
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)
def __init__(self): self.instr = '' self.answer = '' self.strcalc = StrCalculator() self.set_btn_disabled()