public void TestSetCommandIfPart() { UndoRedoManager manager = new UndoRedoManager(); Guid userId = Guid.NewGuid(); Guid userId2 = Guid.NewGuid(); CmdAddRectangleRed cmdAddRectangleRed = new CmdAddRectangleRed(); CmdAddRectangleBlue cmdAddRectangleBlue = new CmdAddRectangleBlue(); CmdAddRectangleBlue cmdAddRectangleBlue2 = new CmdAddRectangleBlue(); cmdAddRectangleRed.username = userId; cmdAddRectangleBlue.username = userId; cmdAddRectangleBlue2.username = userId2; UndoRedoWrapper wrapperBlue = new UndoRedoWrapper(cmdAddRectangleBlue); UndoRedoWrapper wrapperBlue2 = new UndoRedoWrapper(cmdAddRectangleBlue); UndoRedoWrapper wrapperRed = new UndoRedoWrapper(cmdAddRectangleRed); manager.Commands[0] = wrapperBlue; manager.SetCommand(wrapperBlue); manager.Commands[1] = wrapperBlue2; manager.SetCommand(wrapperBlue2); manager.Commands[2] = wrapperRed; manager.Counter = 3; manager.SetCommand(wrapperRed); int position = manager.Counter - 1; Assert.AreEqual(manager.LastCommand[userId], position); }
public void TestConflictAll() { UndoRedoManager manager = new UndoRedoManager(); Guid userId = Guid.NewGuid(); Guid userId2 = Guid.NewGuid(); CmdAddRectangleRed cmdAddRectangleRed = new CmdAddRectangleRed(); CmdAddRectangleBlue cmdAddRectangleBlue = new CmdAddRectangleBlue(); CmdAddRectangleBlue cmdAddRectangleBlue2 = new CmdAddRectangleBlue(); cmdAddRectangleRed.username = userId; cmdAddRectangleBlue.username = userId; cmdAddRectangleBlue2.username = userId2; UndoRedoWrapper wrapperBlue = new UndoRedoWrapper(cmdAddRectangleBlue); UndoRedoWrapper wrapperBlue2 = new UndoRedoWrapper(cmdAddRectangleBlue2); UndoRedoWrapper wrapperRed = new UndoRedoWrapper(cmdAddRectangleRed); manager.Commands[0] = wrapperBlue; manager.SetCommand(wrapperBlue); manager.Commands[1] = wrapperRed; manager.SetCommand(wrapperBlue2); manager.Commands[2] = wrapperBlue2; Assert.IsFalse(manager.ConflictAll(2)); }
public void TestInverseCommand() { UndoRedoManager manager = new UndoRedoManager(); CmdAddRectangleRed cmdAddRectangleRed = new CmdAddRectangleRed(); UndoRedoWrapper wrapperRed = new UndoRedoWrapper(cmdAddRectangleRed); UndoRedoWrapper ret = manager.Inverse(wrapperRed); Assert.IsTrue(ret.IsInverse); }
public void TestSetCommandElsePart() { UndoRedoManager manager = new UndoRedoManager(); Guid userId = Guid.NewGuid(); Guid userId2 = Guid.NewGuid(); CmdAddRectangleRed cmdAddRectangleRed = new CmdAddRectangleRed(); CmdAddRectangleBlue cmdAddRectangleBlue = new CmdAddRectangleBlue(); cmdAddRectangleRed.username = userId2; cmdAddRectangleBlue.username = userId; manager.SetCommand(new UndoRedoWrapper(cmdAddRectangleBlue)); manager.SetCommand(new UndoRedoWrapper(cmdAddRectangleBlue)); manager.Counter = 2; UndoRedoWrapper command = new UndoRedoWrapper(cmdAddRectangleRed); manager.SetCommand(command); Assert.Contains(2, manager.LastCommand.Values); }
public void DoCollaborative() { int RequestCount = 0; byte[] BytesFrom = new byte[10025]; while (true) { try { RequestCount = RequestCount + 1; NetworkStream NetworkStream = ClientSocket.GetStream(); NetworkStream.Read(BytesFrom, 0, 10025); Console.WriteLine("Client - " + ClNo + " - has just done some action!"); BinaryFormatter Bf = new BinaryFormatter(); using (MemoryStream Ms = new MemoryStream(BytesFrom)) { object Obj = Bf.Deserialize(Ms); Model = (Command_Interface.ICommand)Obj; UndoRedoWrapper manager_helper = new UndoRedoWrapper(Model); int Position = 0; if (Model.IsLargeRepair) { BinaryFormatter Bf2 = new BinaryFormatter(); using (MemoryStream Data = new MemoryStream()) { Bf2.Serialize(Data, Program.Undo_Manager.Commands); Program.Broadcast(Data.ToArray(), ClNo, true); } continue; } else if (Model.IsUndo) { Position = Program.Undo_Manager.GetCommand(Model.Username); if (Program.Undo_Manager.ConflictAll(Position)) { Console.WriteLine("There was some error acquired!"); } else { ResultCommand = Program.Undo_Manager.Inverse(manager_helper); ResultCommand = Program.Undo_Manager.SaveCommand(Model, Model.IsUndo, Model.IsRedo); } } else { ResultCommand = Program.Undo_Manager.SaveCommand(Model, Model.IsUndo, Model.IsRedo); } using (MemoryStream data = new MemoryStream()) { Bf.Serialize(data, ResultCommand); Program.Broadcast(data.ToArray(), ClNo, true); } } } catch (Exception ex) { ClientSocket.Close(); Console.WriteLine(ex.ToString()); } } }