コード例 #1
0
        public void TestRelativeBase()
        {
            var program  = new long[] { 109, 1, 204, -1, 1001, 100, 1, 100, 1008, 100, 16, 101, 1006, 101, 0, 99 };
            var computer = new LongCodeComputer(program);

            computer.Run();
            CollectionAssert.AreEqual(program, computer.Outputs);
        }
コード例 #2
0
        public void TestLargeNumbers()
        {
            var program  = new long[] { 104, 1125899906842624, 99 };
            var computer = new LongCodeComputer(program);

            computer.Run();
            Assert.AreEqual(program[1], computer.Outputs.First());
        }
コード例 #3
0
        public void CompareJump_4_lessthan_8(long input, long expected)
        {
            var computer = new LongCodeComputer(new long[] { 3, 3, 1107, -1, 8, 3, 4, 3, 99 });

            computer.Inputs.Enqueue(input);
            computer.Run(10);
            Assert.AreEqual(expected, computer.Outputs.First());
        }
コード例 #4
0
        public void CompareJump_1_equals_8(long input, long expected)
        {
            var computer = new LongCodeComputer(new long[] { 3, 9, 8, 9, 10, 9, 4, 9, 99, -1, 8 });

            computer.Inputs.Enqueue(input);
            computer.Run(10);
            Assert.AreEqual(expected, computer.Outputs.First());
        }
コード例 #5
0
        public void InputOutputWorks()
        {
            var computer = new LongCodeComputer(new long[] { 3, 0, 4, 0, 99 });

            computer.Inputs.Enqueue(37);
            computer.Run();
            Assert.AreEqual(37, computer.Outputs.First());
        }
コード例 #6
0
        public void LimitedExecution()
        {
            var computer = new LongCodeComputer(new long[] { 1, 1, 1, 4, 99, 5, 6, 0, 99 });

            computer.Run(1);
            var expected = new long[] { 1, 1, 1, 4, 2, 5, 6, 0, 99 };

            CollectionAssertAreEqual(expected, computer.Memory);
        }
コード例 #7
0
        public void Program_D5_negative_instr()
        {
            var computer = new LongCodeComputer(new long[] { 1101, 100, -1, 4, 0 });

            computer.Run(5);
            var expected = new long[] { 1101, 100, -1, 4, 99 };

            CollectionAssertAreEqual(expected, computer.Memory);
        }
コード例 #8
0
        public void Program_4()
        {
            var computer = new LongCodeComputer(new long[] { 1, 1, 1, 4, 99, 5, 6, 0, 99 });

            computer.Run();
            var expected = new long[] { 30, 1, 1, 4, 2, 5, 6, 0, 99 };

            CollectionAssertAreEqual(expected, computer.Memory);
        }
コード例 #9
0
        public void Program_3()
        {
            var computer = new LongCodeComputer(new long[] { 2, 4, 4, 5, 99, 0 });

            computer.Run();
            var expected = new long[] { 2, 4, 4, 5, 99, 9801 };

            CollectionAssertAreEqual(expected, computer.Memory);
        }
コード例 #10
0
        public void Program_2()
        {
            var computer = new LongCodeComputer(new long[] { 2, 3, 0, 3, 99 });

            computer.Run();
            var expected = new long[] { 2, 3, 0, 6, 99 };

            CollectionAssertAreEqual(expected, computer.Memory);
        }
コード例 #11
0
        public void ImmediateParamWorks()
        {
            var computer = new LongCodeComputer(new long[] { 1002, 4, 3, 4, 33 });

            computer.Run(2);
            var expected = new long[] { 1002, 4, 3, 4, 99 };

            CollectionAssertAreEqual(expected, computer.Memory);
        }
コード例 #12
0
        public void Program_1()
        {
            var computer = new LongCodeComputer(new long[] { 1, 0, 0, 0, 99 });

            computer.Run();
            var expected = new long[] { 2, 0, 0, 0, 99 };

            CollectionAssertAreEqual(expected, computer.Memory);
            Assert.AreEqual(2, computer.StepCount);
        }
コード例 #13
0
        public void InputOutputWorks2(long input, long expected)
        {
            var computer = new LongCodeComputer(new long[] { 3, 21, 1008, 21, 8, 20, 1005, 20, 22,
                                                             107, 8, 21, 20, 1006, 20, 31, 1106, 0, 36, 98, 0, 0, 1002, 21, 125, 20, 4, 20,
                                                             1105, 1, 46, 104, 999, 1105, 1, 46, 1101, 1000, 1, 20, 4, 20, 1105, 1, 46, 98, 99 });

            computer.Inputs.Enqueue(input);
            computer.Run();
            Assert.AreEqual(expected, computer.Outputs.First());
        }