コード例 #1
0
        public void CI_InsertPairTest_04()
        {
            string testObject = "InsertPair";

            // Prepare data structures used in the test.
            int width = 1000, height = 1;

            List <int>[] objectXs, contourXs, borderXs;
            SWA_Ariadne_Gui_Mazes_ContourImageAccessor.InitializeScanLines(width, height, out objectXs, out contourXs, out borderXs);
            List <int> borderX = borderXs[0];

            SWA_Ariadne_Gui_Mazes_ContourImageAccessor.InsertPair(borderX, 100, 300);
            SWA_Ariadne_Gui_Mazes_ContourImageAccessor.InsertPair(borderX, 500, 700);
            SWA_Ariadne_Gui_Mazes_ContourImageAccessor.InsertPair(borderX, 700, 900);
            SWA_Ariadne_Gui_Mazes_ContourImageAccessor.InsertPair(borderX, 300, 500);

            SWA_Ariadne_Gui_Mazes_ContourImageAccessor.InsertPair(borderX, 100, 900);
            SWA_Ariadne_Gui_Mazes_ContourImageAccessor.InsertPair(borderX, 400, 600);
            SWA_Ariadne_Gui_Mazes_ContourImageAccessor.InsertPair(borderX, 600, 800);
            SWA_Ariadne_Gui_Mazes_ContourImageAccessor.InsertPair(borderX, 400, 800);
            SWA_Ariadne_Gui_Mazes_ContourImageAccessor.InsertPair(borderX, 550, 850);

            int[] expectedPoints = { 100, 900 };
            TestInsertPair(testObject, borderXs, expectedPoints);
        }
コード例 #2
0
        public void CI_PrepareInfluenceRegionsTest_05_BorderLimits()
        {
            string testObject     = "borderLimits";
            int    radius         = SWA_Ariadne_Gui_Mazes_ContourImageAccessor.ContourDistance;
            int    influenceRange = radius + 1;

            SWA_Ariadne_Gui_Mazes_ContourImageAccessor.PrepareInfluenceRegions(influenceRange);

            // Verify that an application of the borderLimits gives the same scan lines as applying leftBorderLimits and rightBorderLimits.
            for (int i = 0; i < 8; i++)
            {
                for (int j = 0; j < 8; j++)
                {
                    #region Prepare required data structures.

                    int          width = 2 * influenceRange + 1, height = 2 * influenceRange + 1;
                    int          x = (width + 1) / 2, y = (height + 1) / 2;
                    List <int>[] objectXs, contourXs, borderXs;
                    List <int>[] objectXsLR, contourXsLR, borderXsLR;
                    SWA_Ariadne_Gui_Mazes_ContourImageAccessor.InitializeScanLines(width, height, out objectXs, out contourXs, out borderXs);
                    SWA_Ariadne_Gui_Mazes_ContourImageAccessor.InitializeScanLines(width, height, out objectXsLR, out contourXsLR, out borderXsLR);

                    #endregion

                    // Apply the (single) list to borderXs.
                    List <ContourImage.RelativePoint> list = SWA_Ariadne_Gui_Mazes_ContourImageAccessor.borderLimits[i, j];
                    foreach (ContourImage.RelativePoint rp in list)
                    {
                        SWA_Ariadne_Gui_Mazes_ContourImageAccessor.InsertPair(borderXs[y + rp.ry], x - rp.rx, x + rp.rx);
                    }

                    // Apply the left and right lists to borderXsLR.
                    list = SWA_Ariadne_Gui_Mazes_ContourImageAccessor.leftBorderLimits[i, j];
                    foreach (ContourImage.RelativePoint rp in list)
                    {
                        SWA_Ariadne_Gui_Mazes_ContourImageAccessor.InsertPair(borderXsLR[y + rp.ry], x + rp.rx, x - rp.rx);
                    }
                    list = SWA_Ariadne_Gui_Mazes_ContourImageAccessor.rightBorderLimits[i, j];
                    foreach (ContourImage.RelativePoint rp in list)
                    {
                        SWA_Ariadne_Gui_Mazes_ContourImageAccessor.InsertPair(borderXsLR[y + rp.ry], x - rp.rx, x + rp.rx);
                    }

                    // Compare the resulting scan lines.
                    for (y = 0; y < height; y++)
                    {
                        string     testLine = testObject + string.Format("[{0},{1}][{2}]", i, j, y);
                        List <int> expected = borderXsLR[y], actual = borderXs[y];
                        Assert.AreEqual(expected.Count, actual.Count, testLine + " different count");

                        for (int p = 0; p < expected.Count; p++)
                        {
                            Assert.AreEqual(expected[p], actual[p], testLine + " different entry");
                        }
                    }
                }
            }
        }
コード例 #3
0
        public void CI_EliminateInsideRegionsTest_03()
        {
            string testObject = "EliminateInsideRegions";

            int width = 11, height = 10, sy = 1, y0 = sy - 1;

            List <int>[] objectXs, contourXs, borderXs;
            SWA_Ariadne_Gui_Mazes_ContourImageAccessor.InitializeScanLines(width, height, out objectXs, out contourXs, out borderXs);

            int y = y0;

            // nothing

            y += sy;
            SWA_Ariadne_Gui_Mazes_ContourImageAccessor.InsertPair(borderXs[y], 4, 6);

            y += sy;
            SWA_Ariadne_Gui_Mazes_ContourImageAccessor.InsertPair(borderXs[y], 2, 7);

            y += sy;
            SWA_Ariadne_Gui_Mazes_ContourImageAccessor.InsertPair(borderXs[y], 1, 2);
            SWA_Ariadne_Gui_Mazes_ContourImageAccessor.InsertPair(borderXs[y], 4, 5);
            SWA_Ariadne_Gui_Mazes_ContourImageAccessor.InsertPair(borderXs[y], 7, 8);

            y += sy;
            SWA_Ariadne_Gui_Mazes_ContourImageAccessor.InsertPair(borderXs[y], 1, 2);
            SWA_Ariadne_Gui_Mazes_ContourImageAccessor.InsertPair(borderXs[y], 4, 5);
            SWA_Ariadne_Gui_Mazes_ContourImageAccessor.InsertPair(borderXs[y], 8, 9);

            y += sy;
            SWA_Ariadne_Gui_Mazes_ContourImageAccessor.InsertPair(borderXs[y], 1, 2);
            SWA_Ariadne_Gui_Mazes_ContourImageAccessor.InsertPair(borderXs[y], 4, 4);
            SWA_Ariadne_Gui_Mazes_ContourImageAccessor.InsertPair(borderXs[y], 7, 8);

            y += sy;
            SWA_Ariadne_Gui_Mazes_ContourImageAccessor.InsertPair(borderXs[y], 2, 7);

            int insideRegionsExpected = 2;
            int insideRegionsActual   = SWA_Ariadne_Gui_Mazes_ContourImageAccessor.EliminateInsideRegions(borderXs, y0, sy);

            Assert.AreEqual(insideRegionsExpected, insideRegionsActual, testObject + " returned wrong number of inside regions");
        }
コード例 #4
0
 private static void InsertBorderLR(List <int> borderX, List <bool> borderLR, int left, int right)
 {
     SWA_Ariadne_Gui_Mazes_ContourImageAccessor.InsertPair(borderX, left, right);
 }