| //////////////////////////////////////////////////////////////////////////////// |
| // |
| // Licensed to the Apache Software Foundation (ASF) under one or more |
| // contributor license agreements. See the NOTICE file distributed with |
| // this work for additional information regarding copyright ownership. |
| // The ASF licenses this file to You under the Apache License, Version 2.0 |
| // (the "License"); you may not use this file except in compliance with |
| // the License. You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| // |
| //////////////////////////////////////////////////////////////////////////////// |
| package UnitTest.Fixtures |
| { |
| import flashx.textLayout.conversion.ConversionType; |
| import flashx.textLayout.conversion.ITextExporter; |
| import flashx.textLayout.conversion.ITextImporter; |
| import flashx.textLayout.conversion.TextConverter; |
| import flashx.textLayout.edit.EditManager; |
| import flashx.textLayout.operations.FlowOperation; |
| import flashx.undo.IUndoManager; |
| import flashx.undo.UndoManager; |
| |
| public class TestEditManager extends EditManager |
| { |
| private var textExporter:ITextExporter = TextConverter.getExporter(TextConverter.TEXT_LAYOUT_FORMAT); |
| public var errors:String; |
| |
| public function TestEditManager(undoManager:IUndoManager = null) |
| { |
| super (undoManager); |
| errors = ""; |
| } |
| private function addError(newError:String):void |
| { |
| errors = errors + "\r" + newError; |
| } |
| |
| override public function doOperation(operation:FlowOperation):void |
| { |
| var snapShotBefore:String = textExporter.export(operation.textFlow, ConversionType.STRING_TYPE) as String; |
| super.doOperation(operation); |
| flushPendingOperations(); |
| var snapShotAfter:String = textExporter.export(operation.textFlow, ConversionType.STRING_TYPE) as String; |
| |
| //undo operation |
| undo(); |
| flushPendingOperations(); |
| var snapShotCurrent:String = textExporter.export(operation.textFlow, ConversionType.STRING_TYPE) as String; |
| if (snapShotBefore != snapShotCurrent) |
| { |
| addError ("First Undo didn't work properly"); |
| } |
| |
| //redo operation |
| redo(); |
| flushPendingOperations(); |
| snapShotCurrent = textExporter.export(operation.textFlow, ConversionType.STRING_TYPE) as String; |
| if (snapShotAfter != snapShotCurrent) |
| { |
| addError ("First Redo didn't work properly"); |
| } |
| |
| //undo operation |
| undo(); |
| flushPendingOperations(); |
| snapShotCurrent = textExporter.export(operation.textFlow, ConversionType.STRING_TYPE) as String; |
| if (snapShotBefore != snapShotCurrent) |
| { |
| addError ("Second Undo didn't work properly"); |
| } |
| |
| //redo operation |
| redo(); |
| flushPendingOperations(); |
| snapShotCurrent = textExporter.export(operation.textFlow, ConversionType.STRING_TYPE) as String; |
| if (snapShotAfter != snapShotCurrent) |
| { |
| addError ("Second Redo didn't work properly"); |
| } |
| |
| //undo operation |
| undo(); |
| flushPendingOperations(); |
| snapShotCurrent = textExporter.export(operation.textFlow, ConversionType.STRING_TYPE) as String; |
| if (snapShotBefore != snapShotCurrent) |
| { |
| addError ("Third Undo didn't work properly"); |
| } |
| |
| //redo operation |
| redo(); |
| flushPendingOperations(); |
| snapShotCurrent = textExporter.export(operation.textFlow, ConversionType.STRING_TYPE) as String; |
| if (snapShotAfter != snapShotCurrent) |
| { |
| addError ("Third Redo didn't work properly"); |
| } |
| } |
| |
| public function UndoRedoEntireStack(testManager:UndoManager):int |
| { |
| var i:int = 0; |
| while (testManager.canUndo()) |
| { |
| testManager.undo(); |
| i++; |
| } |
| while (testManager.canRedo()) |
| { |
| testManager.redo(); |
| } |
| return i; |
| } |
| } |
| } |