Ejemplo n.º 1
0
        public static void TestConfigureAndModified()
        {
            IEnumerable <IParameter> someCorrupt = new IParameter[]
            {
                new DummyParameter(false),
                new DummyParameter(true),
            };
            IConversationNodeData data = new DummyConversationNodeData(someCorrupt, Id <NodeTemp> .Parse("745fa8ce-174e-4af7-82b7-17e939e9a475"));
            Func <ConversationNode <DummyUI>, DummyUI> nodeUI      = n => new DummyUI(n, false);
            Func <ConversationNode <DummyUI>, DummyUI> corruptedUI = n => new DummyUI(n, true);
            ConversationNode <DummyUI> node = new ConversationNode <DummyUI>(data, nodeUI, corruptedUI);

            int modifications = 0;
            int undos         = 0;
            int redos         = 0;
            int expectedRedos = 0; //To ensure Modified is triggered AFTER the modification
            int expectedUndos = 0; //To ensure Modified is triggered AFTER the modification

            node.Modified += () => { modifications++; Assert.That(redos, Is.EqualTo(expectedRedos)); Assert.That(undos, Is.EqualTo(expectedUndos)); };
            Action          redo      = () => { redos++; };
            Action          undo      = () => { undos++; };
            ConfigureResult configure = node.Configure(n => new SimpleUndoPair()
            {
                Redo = redo, Undo = undo
            });

            Assert.That(undos, Is.EqualTo(0));
            Assert.That(redos, Is.EqualTo(0));
            Assert.That(modifications, Is.EqualTo(0));

            expectedRedos = 1;
            configure.Do(a => a.Redo(), b => Assert.Fail("Unexpected Cancelled configuration"));

            Assert.That(undos, Is.EqualTo(0));
            Assert.That(redos, Is.EqualTo(1));
            Assert.That(modifications, Is.EqualTo(1));

            expectedUndos = 1;
            configure.Do(a => a.Undo(), b => Assert.Fail("Unexpected Cancelled configuration"));

            Assert.That(undos, Is.EqualTo(1));
            Assert.That(redos, Is.EqualTo(1));
            Assert.That(modifications, Is.EqualTo(2));

            ConfigureResult cancelConfigure = node.Configure(n => ConfigureResultNotOk.Cancel);

            cancelConfigure.Do(a => Assert.Fail("Expected configure result to be Cancel"), b => Assert.That(b, Is.EqualTo(ConfigureResultNotOk.Cancel)));

            ConfigureResult notApplicableConfigure = node.Configure(n => ConfigureResultNotOk.NotApplicable);

            notApplicableConfigure.Do(a => Assert.Fail("Expected configure result to be Cancel"), b => Assert.That(b, Is.EqualTo(ConfigureResultNotOk.NotApplicable)));
        }
Ejemplo n.º 2
0
 public static void TestInitialState()
 {
     IEnumerable <IParameter> noParameters = new IParameter[]
     {
     };
     IEnumerable <IParameter> notCorrupt = new IParameter[]
     {
         new DummyParameter(false),
         new DummyParameter(false),
     };
     IEnumerable <IParameter> someCorrupt = new IParameter[]
     {
         new DummyParameter(false),
         new DummyParameter(true),
     };
     IEnumerable <IParameter> allCorrupt = new IParameter[]
     {
         new DummyParameter(true),
         new DummyParameter(true),
     };
     Func <ConversationNode <DummyUI>, DummyUI> nodeUI      = n => new DummyUI(n, false);
     Func <ConversationNode <DummyUI>, DummyUI> corruptedUI = n => new DummyUI(n, true);
     {
         IConversationNodeData      data = new DummyConversationNodeData(noParameters, Id <NodeTemp> .Parse("558d4788-7b8c-4fc2-a822-f8ea90a2c84e"));
         ConversationNode <DummyUI> node = new ConversationNode <DummyUI>(data, nodeUI, corruptedUI);
         Assert.That(node.Data, Is.EqualTo(data));
         Assert.That(node.Renderer.Corrupt, Is.False);
     }
     {
         IConversationNodeData      data = new DummyConversationNodeData(notCorrupt, Id <NodeTemp> .Parse("558d4788-7b8c-4fc2-a822-f8ea90a2c84e"));
         ConversationNode <DummyUI> node = new ConversationNode <DummyUI>(data, nodeUI, corruptedUI);
         Assert.That(node.Data, Is.EqualTo(data));
         Assert.That(node.Renderer.Corrupt, Is.False);
     }
     {
         IConversationNodeData      data = new DummyConversationNodeData(someCorrupt, Id <NodeTemp> .Parse("558d4788-7b8c-4fc2-a822-f8ea90a2c84e"));
         ConversationNode <DummyUI> node = new ConversationNode <DummyUI>(data, nodeUI, corruptedUI);
         Assert.That(node.Data, Is.EqualTo(data));
         Assert.That(node.Renderer.Corrupt, Is.True);
     }
     {
         IConversationNodeData      data = new DummyConversationNodeData(allCorrupt, Id <NodeTemp> .Parse("558d4788-7b8c-4fc2-a822-f8ea90a2c84e"));
         ConversationNode <DummyUI> node = new ConversationNode <DummyUI>(data, nodeUI, corruptedUI);
         Assert.That(node.Data, Is.EqualTo(data));
         Assert.That(node.Renderer.Corrupt, Is.True);
     }
 }
Ejemplo n.º 3
0
        public static void TestSetRenderer()
        {
            IEnumerable <IParameter> noCorrupt = new IParameter[]
            {
                new DummyParameter(false),
            };
            IConversationNodeData data = new DummyConversationNodeData(noCorrupt, Id <NodeTemp> .Parse("558d4788-7b8c-4fc2-a822-f8ea90a2c84e"));
            Func <ConversationNode <DummyUI>, DummyUI> nodeUI      = n => new DummyUI(n, false);
            Func <ConversationNode <DummyUI>, DummyUI> corruptedUI = n => new DummyUI(n, true);

            ConversationNode <DummyUI> node = new ConversationNode <DummyUI>(data, nodeUI, corruptedUI);

            var originalRenderer = node.Renderer;
            var newRenderer      = new DummyUI(node, false);

            int changing = 0;
            int changed  = 0;

            node.RendererChanging += () =>
            {
                changing++;
                Assert.That(changing, Is.EqualTo(1));
                Assert.That(changed, Is.EqualTo(0));
                Assert.That(node.Renderer, Is.EqualTo(originalRenderer));
            };

            node.RendererChanged += () =>
            {
                changed++;
                Assert.That(changing, Is.EqualTo(1));
                Assert.That(changed, Is.EqualTo(1));
                Assert.That(node.Renderer, Is.EqualTo(newRenderer));
            };

            node.SetRenderer(n => newRenderer);

            Assert.That(changed, Is.EqualTo(1));
            Assert.That(changing, Is.EqualTo(1));
        }
Ejemplo n.º 4
0
        private static ConversationNode MakeNode()
        {
            var data = new DummyConversationNodeData("test", Id <NodeTemp> .Parse("d3aa34e9-35e5-4aa5-bd7d-d9b98ab5a54e"), "description", Id <NodeTypeTemp> .Parse("1edf950a-088a-432f-aee9-b67cf9b7f3c0"), Enumerable.Empty <IParameter>());

            return(new ConversationNode(data, d => MakeNodeUI(d, (a, b) => null), d => null));
        }
Ejemplo n.º 5
0
        public static void TestGetNodeRemoveActions()
        {
            IEnumerable <IParameter> someCorrupt = new IParameter[]
            {
                new DummyParameter(false),
                new DummyParameter(true),
            };
            IConversationNodeData data1 = new DummyConversationNodeData(someCorrupt, Id <NodeTemp> .Parse("558d4788-7b8c-4fc2-a822-f8ea90a2c84e"));
            IConversationNodeData data2 = new DummyConversationNodeData(someCorrupt, Id <NodeTemp> .Parse("af594e64-e788-4873-9d01-0e13ba430c14"));
            IConversationNodeData data3 = new DummyConversationNodeData(someCorrupt, Id <NodeTemp> .Parse("d3bbcc20-f8c5-4e40-8ad4-bee06b6f28a7"));
            Func <ConversationNode <DummyUI>, DummyUI> nodeUI      = n => new DummyUI(n, false);
            Func <ConversationNode <DummyUI>, DummyUI> corruptedUI = n => new DummyUI(n, true);
            ConversationNode <DummyUI> node1 = new ConversationNode <DummyUI>(data1, nodeUI, corruptedUI);
            ConversationNode <DummyUI> node2 = new ConversationNode <DummyUI>(data2, nodeUI, corruptedUI);
            ConversationNode <DummyUI> node3 = new ConversationNode <DummyUI>(data3, nodeUI, corruptedUI);
            var nodes = new[] { node1, node2, node3 };

            for (int i = 0; i < 3; i++)
            {
                for (int j = 0; j < 3; j++)
                {
                    for (int a = i + 1; a < 3; a++)
                    {
                        for (int b = 0; b < 3; b++)
                        {
                            nodes[i].Data.Connectors.ElementAt(j).ConnectTo(nodes[a].Data.Connectors.ElementAt(b), false);
                        }
                    }
                }
            }

            List <Output> allConnectors = new List <Output>();
            {
                for (int i = 0; i < 3; i++)
                {
                    for (int j = 0; j < 3; j++)
                    {
                        allConnectors.Add(nodes[i].Data.Connectors.ElementAt(j));
                    }
                }
            }

            Action CheckAllConnected = () =>
            {
                for (int i = 0; i < 3; i++)
                {
                    for (int j = 0; j < 3; j++)
                    {
                        Assert.That(nodes[i].Data.Connectors.ElementAt(j).Connections, Is.EquivalentTo(allConnectors.Where(x => x.Parent != nodes[i].Data)));
                    }
                }
            };

            CheckAllConnected();

            var actions = node1.GetNodeRemoveActions();

            //TODO: Test that localizations are removed/readded correctly

            CheckAllConnected();

            actions.Redo();
            for (int i = 1; i < 3; i++)
            {
                for (int j = 0; j < 3; j++)
                {
                    Assert.That(nodes[i].Data.Connectors.ElementAt(j).Connections, Is.EquivalentTo(allConnectors.Where(x => x.Parent != nodes[i].Data && x.Parent != node1.Data)));
                }
            }

            for (int j = 0; j < 3; j++)
            {
                Assert.That(node1.Data.Connectors.ElementAt(j).Connections, Is.Empty);
            }

            actions.Undo();
            CheckAllConnected();
        }