+ it('handles a sample scenario', function() {
+ doc.root.contents()[0].test('1');
+ doc.root.contents()[0].test('2');
+ doc.root.contents()[0].test('3');
+ doc.root.contents()[0].test('4');
+ doc.root.contents()[0].test('5');
+
+ expect(doc.root.contents()[0].getAttr('x')).to.equal('5', 'after initial transformations');
+ doc.undo();
+ expect(doc.root.contents()[0].getAttr('x')).to.equal('4', 'undo 1.1');
+ doc.undo();
+ expect(doc.root.contents()[0].getAttr('x')).to.equal('3', 'undo 1.2');
+ doc.redo();
+ expect(doc.root.contents()[0].getAttr('x')).to.equal('4', 'redo 1.1');
+ doc.redo();
+ expect(doc.root.contents()[0].getAttr('x')).to.equal('5', 'redo 1.2');
+ doc.undo();
+ expect(doc.root.contents()[0].getAttr('x')).to.equal('4', 'undo 2.1');
+ doc.root.contents()[0].test('10');
+ expect(doc.root.contents()[0].getAttr('x')).to.equal('10', 'additional transformation');
+ expect(doc.redoStack.length).to.equal(0, 'transformation cleared redo stack');
+ doc.redo();
+ expect(doc.root.contents()[0].getAttr('x')).to.equal('10', 'empty redoStack so redo was noop');
+ doc.undo();
+ expect(doc.root.contents()[0].getAttr('x')).to.equal('4', 'undoing additional transformation');
+ doc.redo();
+ expect(doc.root.contents()[0].getAttr('x')).to.equal('10', 'redoing additional transformation');
+ });
+ });
+ });