public void NotNotNodeTest()
        {
            var inputNode  = new InputNode("in", new State(true));
            var notNode1   = new NotNode("not1");
            var notNode2   = new NotNode("not2");
            var outputNode = new OutputNode("out");

            var nodeConnections = new List <NodeConnection>
            {
                new NodeConnection(inputNode, notNode1),
                new NodeConnection(notNode1, notNode2),
                new NodeConnection(notNode2, outputNode)
            };

            var inputNodes = new List <InputNode>
            {
                inputNode
            };

            var simulation = new NodeSimulation(nodeConnections);

            simulation.RunSimulation();

            var output = simulation.GetOutputState();

            Assert.True(output["out"].LogicState);
        }
        public void AndNodeTest()
        {
            var inputNode1 = new InputNode("in1", new State(true));
            var inputNode2 = new InputNode("in2", new State(true));
            var andNode    = new AndNode("and");
            var outputNode = new OutputNode("out");

            var nodeConnections = new List <NodeConnection>
            {
                new NodeConnection(
                    new List <NodeBase> {
                    inputNode1, inputNode2
                },
                    andNode),
                new NodeConnection(andNode, outputNode)
            };

            var inputNodes = new List <InputNode>
            {
                inputNode1,
                inputNode2
            };

            var simulation = new NodeSimulation(nodeConnections);

            simulation.RunSimulation();

            var output = simulation.GetOutputState();

            Assert.True(output["out"].LogicState);
        }
        public void ResetSimulationTest()
        {
            var inputNode1 = new InputNode("in1", new State(false));
            var inputNode2 = new InputNode("in2", new State(true));
            var orNode     = new OrNode("or");
            var outputNode = new OutputNode("out");

            var nodeConnections = new List <NodeConnection>
            {
                new NodeConnection(
                    new List <NodeBase> {
                    inputNode1, inputNode2
                },
                    orNode),
                new NodeConnection(orNode, outputNode)
            };

            var inputNodes = new List <InputNode>
            {
                inputNode1,
                inputNode2
            };

            var simulation = new NodeSimulation(nodeConnections);

            simulation.RunSimulation();
            simulation.ResetSimulation();

            var output = simulation.GetOutputState();

            Assert.Null(output["out"]);
        }