           ['bar', 'baz']
         ]
 
+        table.clearUndoStack()
+
         row = table.getRow(0)
         row.height = 100
 
         table.undo()
 
-        expect(table.undoStack.length).toEqual(3)
+        expect(table.undoStack.length).toEqual(0)
         expect(table.redoStack.length).toEqual(1)
 
         expect(row.height).toEqual(undefined)
 
         table.redo()
 
-        expect(table.undoStack.length).toEqual(4)
+        expect(table.undoStack.length).toEqual(1)
         expect(table.redoStack.length).toEqual(0)
 
         expect(row.height).toEqual(100)

          ['bar', 'baz']
        ]

        row = table.getRow(0)

        row.key = 'hello'

        table.undo()

        expect(table.undoStack.length).toEqual(3)
        expect(table.redoStack.length).toEqual(1)

        expect(row.key).toEqual('foo')

        table.redo()

        expect(table.undoStack.length).toEqual(4)
        expect(table.redoStack.length).toEqual(0)

        expect(row.key).toEqual('hello')


        table.redo()

        expect(table.undoStack.length).toEqual(1)
        expect(table.redoStack.length).toEqual(0)
        expect(table.getRowsCount()).toEqual(0)

      it 'rolls back a change in a column', ->
        table.clearUndoStack()

        column.name = 'foo'

        table.undo()

        expect(column.name).toEqual('value')

        expect(table.undoStack.length).toEqual(0)
        expect(table.redoStack.length).toEqual(1)

        table.redo()

        expect(column.name).toEqual('foo')

        expect(table.undoStack.length).toEqual(1)
        expect(table.redoStack.length).toEqual(0)

      it 'rolls back a change in a row data', ->
