Exemple #1
0
    def test_eq_neq(self):
        cell1 = Cell()
        cell1.formula = '=formula'
        cell2 = Cell()
        cell2.formula = '=formula'
        self.assertTrue(cell1 == cell2)
        self.assertFalse(cell1 != cell2)

        cell1.value = 10
        self.assertFalse(cell1 == cell2)
        self.assertTrue(cell1 != cell2)
        cell2.value = 10
        self.assertTrue(cell1 == cell2)
        self.assertFalse(cell1 != cell2)

        cell1.formatted_value = 'formatted'
        self.assertFalse(cell1 == cell2)
        self.assertTrue(cell1 != cell2)
        cell2.formatted_value = 'formatted'
        self.assertTrue(cell1 == cell2)
        self.assertFalse(cell1 != cell2)

        cell1.error = 'this error'
        self.assertFalse(cell1 == cell2)
        self.assertTrue(cell1 != cell2)
        cell2.error = 'this error'
        self.assertTrue(cell1 == cell2)
        self.assertFalse(cell1 != cell2)

        self.assertFalse(cell1 == 'hello')
        self.assertTrue(cell1 != 'hello')
    def test_eq_neq(self):
        cell1 = Cell()
        cell1.formula = '=formula'
        cell2 = Cell()
        cell2.formula = '=formula'
        self.assertTrue(cell1 == cell2)
        self.assertFalse(cell1 != cell2)

        cell1.value = 10
        self.assertFalse(cell1 == cell2)
        self.assertTrue(cell1 != cell2)
        cell2.value = 10
        self.assertTrue(cell1 == cell2)
        self.assertFalse(cell1 != cell2)

        cell1.formatted_value = 'formatted'
        self.assertFalse(cell1 == cell2)
        self.assertTrue(cell1 != cell2)
        cell2.formatted_value = 'formatted'
        self.assertTrue(cell1 == cell2)
        self.assertFalse(cell1 != cell2)

        cell1.error = 'this error'
        self.assertFalse(cell1 == cell2)
        self.assertTrue(cell1 != cell2)
        cell2.error = 'this error'
        self.assertTrue(cell1 == cell2)
        self.assertFalse(cell1 != cell2)

        self.assertFalse(cell1 == 'hello')
        self.assertTrue(cell1 != 'hello')
    def test_recalc_cell_should_clear_cell_error_and_not_add_to_console_text_on_eval_succeeding(self):
        cell = Cell()
        cell.formula = '=123'
        cell.error = 'old error, just hanging around...'
        worksheet = Worksheet()
        location = (1, 11)
        worksheet[location] = cell

        node = Mock()
        node.parents = []
        graph = {location: node }

        context = { 'worksheet': { location: cell, } }

        recalculate_cell(location, Mock(), graph, context)

        self.assertEqual(
            worksheet[location].error,
            None
        )
        self.assertEqual(
            worksheet[location].value,
            123
        )
        self.assertEqual(
            worksheet._console_text, ''
        )
    def test_recalc_cell_catches_cell_errors_and_adds_them_to_console(self):
        cell = Cell()
        cell.formula = "=123"
        cell.python_formula = '_raise(Exception("OMGWTFBBQ"))'
        cell.error = 'old error, just hanging around...'
        worksheet = Worksheet()
        location = (1, 11)
        worksheet[location] = cell

        # Mocked out to avoid explosion -- tested in another unit test.
        node = Mock()
        node.parents = []
        graph = {location: node }

        context = { 'worksheet': worksheet, "_raise": _raise }
        worksheet.add_console_text = Mock()

        recalculate_cell(location, Mock(), graph, context)

        self.assertEqual(
            worksheet[location].error,
            'Exception: OMGWTFBBQ'
        )

        expected_error_text = "Exception: OMGWTFBBQ\n    Formula '%s' in A11\n" % (
                cell.formula)

        self.assertCalledOnce(worksheet.add_console_text, expected_error_text)

        self.assertEquals(worksheet[location].value, undefined)
Exemple #5
0
    def test_recalc_cell_catches_cell_errors_and_adds_them_to_console(self):
        cell = Cell()
        cell.formula = "=123"
        cell.python_formula = '_raise(Exception("OMGWTFBBQ"))'
        cell.error = 'old error, just hanging around...'
        worksheet = Worksheet()
        location = (1, 11)
        worksheet[location] = cell

        # Mocked out to avoid explosion -- tested in another unit test.
        node = Mock()
        node.parents = []
        graph = {location: node}

        context = {'worksheet': worksheet, "_raise": _raise}
        worksheet.add_console_text = Mock()

        recalculate_cell(location, Mock(), graph, context)

        self.assertEqual(worksheet[location].error, 'Exception: OMGWTFBBQ')

        expected_error_text = "Exception: OMGWTFBBQ\n    Formula '%s' in A11\n" % (
            cell.formula)

        self.assertCalledOnce(worksheet.add_console_text, expected_error_text)

        self.assertEquals(worksheet[location].value, undefined)
    def test_repr(self):
        cell = Cell()
        cell.formula = 'f'
        self.assertEquals(repr(cell), "<Cell formula=f value=<undefined> formatted_value=u''>")

        cell = Cell()
        cell.value = 'v'
        self.assertEquals(repr(cell), "<Cell formula=None value='v' formatted_value=u'v'>")

        cell = Cell()
        cell.value = 23
        self.assertEquals(repr(cell), "<Cell formula=None value=23 formatted_value=u'23'>")

        cell = Cell()
        cell.formula = 'f'
        cell.value = 'v'
        self.assertEquals(repr(cell), "<Cell formula=f value='v' formatted_value=u'v'>")

        cell = Cell()
        cell.formula = 'f'
        cell.value = 'v'
        cell.formatted_value = u'fv'
        self.assertEquals(repr(cell), "<Cell formula=f value='v' formatted_value=u'fv'>")

        cell = Cell()
        cell.formula = 'f'
        cell.value = 'v'
        cell.formatted_value = u'fv'
        cell.error = 'e'
        self.assertEquals(repr(cell), "<Cell formula=f value='v' formatted_value=u'fv' error='e'>")
    def test_load_constants_should_clear_errors_for_constants(self):
        cell = Cell()
        cell.formula = "a constant"
        cell.error = 'Ohno!'
        worksheet = Worksheet()
        worksheet.A1 = cell

        load_constants(worksheet)

        self.assertIsNone(cell.error)
Exemple #8
0
    def test_load_constants_should_clear_errors_for_constants(self):
        cell = Cell()
        cell.formula = "a constant"
        cell.error = 'Ohno!'
        worksheet = Worksheet()
        worksheet.A1 = cell

        load_constants(worksheet)

        self.assertIsNone(cell.error)
Exemple #9
0
    def test_clear_clears_stuff(self):
        cell = Cell()

        cell.value = 29
        cell.formula = 'e equals emcee squared'
        cell.python_formula = 'e equals emcee squared'
        cell.dependencies = [(1, 1), (2, 2)]
        cell.formatted_value = "wibble"
        cell.error = 'a spear'

        cell.clear()

        self.assertEquals(cell.value, undefined)
        self.assertEquals(cell.formula, None)
        self.assertEquals(cell.python_formula, None)
        self.assertEquals(Cell().dependencies, [])
        self.assertEquals(cell.formatted_value, u"")
        self.assertEquals(cell.error, None)
    def test_clear_clears_stuff(self):
        cell = Cell()

        cell.value = 29
        cell.formula = 'e equals emcee squared'
        cell.python_formula = 'e equals emcee squared'
        cell.dependencies = [(1, 1), (2, 2)]
        cell.formatted_value = "wibble"
        cell.error = 'a spear'

        cell.clear()

        self.assertEquals(cell.value, undefined)
        self.assertEquals(cell.formula, None)
        self.assertEquals(cell.python_formula, None)
        self.assertEquals(Cell().dependencies, [])
        self.assertEquals(cell.formatted_value, u"")
        self.assertEquals(cell.error, None)
Exemple #11
0
    def test_repr(self):
        cell = Cell()
        cell.formula = 'f'
        self.assertEquals(
            repr(cell),
            "<Cell formula=f value=<undefined> formatted_value=u''>")

        cell = Cell()
        cell.value = 'v'
        self.assertEquals(
            repr(cell), "<Cell formula=None value='v' formatted_value=u'v'>")

        cell = Cell()
        cell.value = 23
        self.assertEquals(
            repr(cell), "<Cell formula=None value=23 formatted_value=u'23'>")

        cell = Cell()
        cell.formula = 'f'
        cell.value = 'v'
        self.assertEquals(repr(cell),
                          "<Cell formula=f value='v' formatted_value=u'v'>")

        cell = Cell()
        cell.formula = 'f'
        cell.value = 'v'
        cell.formatted_value = u'fv'
        self.assertEquals(repr(cell),
                          "<Cell formula=f value='v' formatted_value=u'fv'>")

        cell = Cell()
        cell.formula = 'f'
        cell.value = 'v'
        cell.formatted_value = u'fv'
        cell.error = 'e'
        self.assertEquals(
            repr(cell),
            "<Cell formula=f value='v' formatted_value=u'fv' error='e'>")
Exemple #12
0
    def test_recalc_cell_should_clear_cell_error_and_not_add_to_console_text_on_eval_succeeding(
            self):
        cell = Cell()
        cell.formula = '=123'
        cell.error = 'old error, just hanging around...'
        worksheet = Worksheet()
        location = (1, 11)
        worksheet[location] = cell

        node = Mock()
        node.parents = []
        graph = {location: node}

        context = {
            'worksheet': {
                location: cell,
            }
        }

        recalculate_cell(location, Mock(), graph, context)

        self.assertEqual(worksheet[location].error, None)
        self.assertEqual(worksheet[location].value, 123)
        self.assertEqual(worksheet._console_text, '')