public void assign_a_value_command()
        {
            var input   = "123 -> x";
            var command = AOC_2015_Day07_Answer.ParseCommand(input);
            var answer  = AOC_2015_Day07_Answer.Execute(new[] { command });

            answer.Should().BeEquivalentTo(new[] { ("x", 123) });
        public void parse_a_command_with_a_NOT_operation()
        {
            var input  = "NOT e -> f";
            var answer = AOC_2015_Day07_Answer.ParseCommand(input);

            answer.Should().BeEquivalentTo(
                new CommandWithANotOperation
            {
                OutputWire = "f",
                WireToNot  = "e"
            }
                );
        }
        public void parse_a_command_with_a_value()
        {
            var input  = "123 -> x";
            var answer = AOC_2015_Day07_Answer.ParseCommand(input);

            answer.Should().BeEquivalentTo(
                new CommandAssigningValue
            {
                OutputWire    = "x",
                ValueToAssign = "123"
            }
                );
        }
        public void parse_a_command_with_an_RSHIFT_operation()
        {
            var input  = "p RSHIFT 2 -> q";
            var answer = AOC_2015_Day07_Answer.ParseCommand(input);

            answer.Should().BeEquivalentTo(
                new CommandWithAnRshiftOperation
            {
                OutputWire      = "q",
                AmountToShiftBy = 2,
                WireToShift     = "p"
            }
                );
        }
        public void parse_a_command_with_an_OR_operation()
        {
            var input  = "x OR y -> z";
            var answer = AOC_2015_Day07_Answer.ParseCommand(input);

            answer.Should().BeEquivalentTo(
                new CommandWithOrOperaiton
            {
                OutputWire = "z",
                LeftWire   = "x",
                RightWire  = "y"
            }
                );
        }