コード例 #1
0
        public void Test10()
        {
            uint n = 10000, m = n, a = 1, z = n;

            SimpleDepartment[] deps = new SimpleDepartment[n];
            for (uint i = 0; i < n - 1; ++i)
            {
                deps[i] = new SimpleDepartment(i + 1, 0, i + 2);
            }
            deps[n - 1] = new SimpleDepartment(m, 0, 1);
            Departments dps         = new Departments(n, m, a, z, deps);

            bool[]     isInfExpected  = new bool[n];
            bool[]     isVisited      = new bool[n];
            uint[][][] stampsExpected = new uint[n][][];
            for (uint i = 0; i < n - 1; ++i)
            {
                isInfExpected[i]     = false;
                isVisited[i]         = true;
                stampsExpected[i]    = new uint[1][];
                stampsExpected[i][0] = new uint[i + 1];
                for (uint j = 0; j < i + 1; ++j)
                {
                    stampsExpected[i][0][j] = j + 1;
                }
            }
            isInfExpected[n - 1]  = false;
            isVisited[n - 1]      = true;
            stampsExpected[n - 1] = new uint[0][];
            MyTestHelper(isInfExpected, isVisited, stampsExpected, dps, n);
        }
コード例 #2
0
        public void Test4()
        {
            uint n = 3, m = 3, a = 1, z = 3;

            SimpleDepartment[] deps = new SimpleDepartment[n];
            deps[0] = new SimpleDepartment(2, 0, 2);
            deps[1] = new SimpleDepartment(1, 3, 0, 1, 1, 0, 1);
            deps[2] = new SimpleDepartment(1, 0, 1);
            Departments dps         = new Departments(n, m, a, z, deps);

            bool[]     isInfExpected  = new bool[] { true, true, false };
            bool[]     isVisited      = new bool[] { true, true, false };
            uint[][][] stampsExpected = new uint[][][]
            {
                new uint[][]
                {
                    new uint[] { 2 },
                    new uint[] { 1, 2 },
                    new uint[] { 1, 2, 3 }
                },
                new uint[][]
                {
                    new uint[] { 1, 2 },
                    new uint[] { 1, 2, 3 }
                },
                new uint[0][]
            };
            MyTestHelper(isInfExpected, isVisited, stampsExpected, dps, n);
        }
コード例 #3
0
        public void Test1()
        {
            uint n = 1, m = 1, a = 1, z = 1;

            SimpleDepartment[] deps = new SimpleDepartment[n];
            deps[0] = new SimpleDepartment(1, 0, 1);
            Departments dps         = new Departments(n, m, a, z, deps);

            bool isInfExpected = false;
            bool isVisited     = true;

            uint[][]         stampsExpected = new uint[0][];
            DepartmentsQuery expected       = new DepartmentsQuery(isInfExpected, isVisited, stampsExpected);

            Assert.True(expected.EqualTo(dps.Query(1)));
        }
コード例 #4
0
        public void Test9()
        {
            uint n = 6, m = 7, a = 1, z = 6;

            SimpleDepartment[] deps = new SimpleDepartment[n];
            deps[0] = new SimpleDepartment(7, 0, 2);
            deps[1] = new SimpleDepartment(1, 6, 0, 3, 2, 0, 5);
            deps[2] = new SimpleDepartment(5, 0, 4);
            deps[3] = new SimpleDepartment(3, 0, 5);
            deps[4] = new SimpleDepartment(1, 4, 0, 6, 1, 0, 2);
            deps[5] = new SimpleDepartment(1, 0, 1);
            Departments dps         = new Departments(n, m, a, z, deps);

            bool[]     isInfExpected  = new bool[] { false, false, false, false, false, false, false };
            bool[]     isVisited      = new bool[] { true, true, true, true, true, true, true };
            uint[][][] stampsExpected = new uint[][][]
            {
                new uint[][]
                {
                    new uint[] { 7 }
                },
                new uint[][]
                {
                    new uint[] { 2, 7 },
                    new uint[] { 1, 2, 6, 7 }
                },
                new uint[][]
                {
                    new uint[] { 1, 2, 5, 6, 7 }
                },
                new uint[][]
                {
                    new uint[] { 1, 2, 3, 5, 6, 7 }
                },
                new uint[][]
                {
                    new uint[] { 1, 2, 7 },
                    new uint[] { 1, 2, 3, 4, 5, 6, 7 }
                },
                new uint[0][]
            };
            MyTestHelper(isInfExpected, isVisited, stampsExpected, dps, n);
        }
コード例 #5
0
        public void Test2()
        {
            uint n = 2, m = 3, a = 1, z = 2;

            SimpleDepartment[] deps = new SimpleDepartment[n];
            deps[0] = new SimpleDepartment(3, 0, 2);
            deps[1] = new SimpleDepartment(1, 0, 1);
            Departments dps         = new Departments(n, m, a, z, deps);

            bool[]     isInfExpected  = new bool[] { false, false };
            bool[]     isVisited      = new bool[] { true, true };
            uint[][][] stampsExpected = new uint[][][]
            {
                new uint[][]
                {
                    new uint[] { 3 }
                },
                new uint[][] {}
            };
            MyTestHelper(isInfExpected, isVisited, stampsExpected, dps, n);
        }
コード例 #6
0
        public void Test11()
        {
            uint n = 10000, m = n, a = 1, z = n;

            SimpleDepartment[] deps = new SimpleDepartment[n];
            for (uint i = 0; i < n - 1; ++i)
            {
                deps[i] = new SimpleDepartment(i + 1, 0, i + 2);
            }
            deps[n - 1] = new SimpleDepartment(m, 0, 1);
            Departments dps         = new Departments(n, m, a, z, deps);

            bool[]     isInfExpected  = new bool[n];
            bool[]     isVisited      = new bool[n];
            uint[][][] stampsExpected = new uint[n][][];
            for (uint i = 0; i < n - 1; ++i)
            {
                isInfExpected[i]     = false;
                isVisited[i]         = true;
                stampsExpected[i]    = new uint[1][];
                stampsExpected[i][0] = new uint[i + 1];
                for (uint j = 0; j < i + 1; ++j)
                {
                    stampsExpected[i][0][j] = j + 1;
                }
            }
            isInfExpected[n - 1]  = false;
            isVisited[n - 1]      = true;
            stampsExpected[n - 1] = new uint[0][];
            isTest11Correct       = true;

            Thread t1 = StartTheThread(0, n / 2, isInfExpected, isVisited, stampsExpected, dps);
            Thread t2 = StartTheThread(n / 2, n, isInfExpected, isVisited, stampsExpected, dps);

            t1.Join();
            t2.Join();
            Assert.True(isTest11Correct);
        }
コード例 #7
0
        public void Test7()
        {
            uint n = 5, m = 3, a = 1, z = 5;

            SimpleDepartment[] deps = new SimpleDepartment[n];
            deps[0] = new SimpleDepartment(1, 0, 2);
            deps[1] = new SimpleDepartment(1, 3, 0, 3, 0, 0, 4);
            deps[2] = new SimpleDepartment(3, 0, 0, 4, 0, 0, 5);
            deps[3] = new SimpleDepartment(0, 1, 2);
            deps[4] = new SimpleDepartment(0, 0, 1);
            Departments dps         = new Departments(n, m, a, z, deps);

            bool[]     isInfExpected  = new bool[] { false, true, false, true, false };
            bool[]     isVisited      = new bool[] { true, true, true, true, false };
            uint[][][] stampsExpected = new uint[][][]
            {
                new uint[][]
                {
                    new uint[] { 1 }
                },
                new uint[][]
                {
                    new uint[] { 1, 3 },
                    new uint[] { 3 }
                },
                new uint[][]
                {
                    new uint[] { 1, 3 }
                },
                new uint[][]
                {
                    new uint[] { 3 }
                },
                new uint[0][]
            };
            MyTestHelper(isInfExpected, isVisited, stampsExpected, dps, n);
        }