def test_overlap_operation(self):
     rang = RangeViewModel()
     rang.set_operation(Operation.OVERLAP)
     rang.set_value_1('[1,5]')
     rang.set_value_2('[2,3]')
     rang.make_operation()
     self.assertEqual(rang.get_result_string(), 'No')
 def test_equals_operation(self):
     rang = RangeViewModel()
     rang.set_operation(Operation.EQUALS)
     rang.set_value_1('[1,5]')
     rang.set_value_2('[1,5)')
     rang.make_operation()
     self.assertEqual(rang.get_result_string(), 'No')
 def test_make_contains_operation_with_range(self):
     rang = RangeViewModel()
     rang.set_value_1('[1,5]')
     rang.set_value_2('[1,3]')
     rang.make_operation()
     self.assertEqual(rang.get_result_string(), 'Yes')
 def test_set_invalid_value_to_value_2(self):
     rang = RangeViewModel()
     with self.assertRaises(TypeError):
         rang.set_value_2('abc')
 def test_set_list_with_spaces_to_value_2(self):
     rang = RangeViewModel()
     rang.set_value_2('1 3')
     self.assertEqual(rang.get_value_2_string(), '1, 3')
 def test_set_range_to_value_2(self):
     rang = RangeViewModel()
     rang.set_value_2('[1,3]')
     self.assertEqual(rang.get_value_2_string(), '[1,3]')
class TestViewModelFakeLogging(unittest.TestCase):
    def setUp(self):
        self.view_model = RangeViewModel(FakeLogger())

    def test_logging_init(self):
        self.assertEqual('RangeViewModel started',
                         self.view_model.logger.get_last_message())

    def test_logging_set_first_value(self):
        self.view_model.set_value_1('[1,5)')
        self.assertEqual('Set value 1: [1,5)',
                         self.view_model.logger.get_last_message())

    def test_logging_set_first_value_error(self):
        try:
            self.view_model.set_value_1('[1,5')
        except ValueError:
            self.assertEqual('Set value 1 exc: Input error: wrong format',
                             self.view_model.logger.get_last_message())

    def test_logging_set_second_value(self):
        self.view_model.set_value_2('[1,5)')
        self.assertEqual('Set value 2: [1,5)',
                         self.view_model.logger.get_last_message())

    def test_logging_set_second_value_error(self):
        try:
            self.view_model.set_value_2('[eee5)')
        except ValueError:
            self.assertEqual('Set value 2 exc: Input error: wrong format',
                             self.view_model.logger.get_last_message())

    def test_logging_test_operation(self):
        self.view_model.set_operation(Operation.OVERLAP)
        self.assertEqual('Set operation OVERLAP',
                         self.view_model.logger.get_last_message())

    def test_logging_set_result(self):
        self.view_model.set_value_1('(1,5)')
        self.view_model.set_operation(Operation.END_POINTS)
        self.view_model.make_operation()
        self.assertEqual('Set result [2, 4]',
                         self.view_model.logger.get_log_messages()[-2])

    def test_logging_calc_started(self):
        self.view_model.set_value_1('(1,5)')
        self.view_model.set_operation(Operation.END_POINTS)
        self.view_model.make_operation()
        self.assertEqual('Make operation started.',
                         self.view_model.logger.get_log_messages()[-3])

    def test_logging_calc_ended(self):
        self.view_model.set_value_1('(1,5)')
        self.view_model.set_operation(Operation.END_POINTS)
        self.view_model.make_operation()
        self.assertEqual('Make operation ended.',
                         self.view_model.logger.get_log_messages()[-1])

    def test_logging_result_cleared(self):
        self.view_model.clear_result()
        self.assertEqual('Result cleared',
                         self.view_model.logger.get_last_message())

    def test_logging_exception(self):
        self.view_model.set_value_1('(1,5)')
        self.view_model.set_operation(Operation.OVERLAP)
        try:
            self.view_model.make_operation()
        except Exception:
            self.assertEqual(
                'Calc exception: Wrong type of obj. Expected: Range',
                self.view_model.logger.get_last_message())