Example #1
0
        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);
        }
Example #2
0
        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));
        }
Example #3
0
        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);
        }
Example #4
0
        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());
                }
            }
        }