示例#1
0
        public void SampleRectangularArrayToStringTest()
        {
            List <String> resultStrings = new List <string> {
                "A1,A2,A3", "{A1,A2,A3},{B1,B2,B3},{C1,C2,C3}", "{{A1,A2},{B1,B2}},{{C1,C2},{D1,D2}}"
            };

            Array rectangularArray1D = new string[] { "A1", "A2", "A3" };
            Array rectangularArray2D = new string[, ] {
                { "A1", "A2", "A3" }, { "B1", "B2", "B3" }, { "C1", "C2", "C3" }
            };
            Array rectangularArray3D = new string[, , ] {
                { { "A1", "A2" }, { "B1", "B2" } }, { { "C1", "C2" }, { "D1", "D2" } }
            };
            var arrays = new List <Array>()
            {
                rectangularArray1D, rectangularArray2D, rectangularArray3D
            };

            foreach (var array in arrays)
            {
                var outerProduct = new OuterProductIndexGenerator(array);
                var processor    = new RectangularArrayToString(array);
                outerProduct.ProcessOuterProduct(processor);
                //System.Console.WriteLine (processor.Result.ToString());

                string result = processor.Result.ToString();
                Assert.That(new List <String> {
                    result
                }, Is.SubsetOf(resultStrings));
            }
        }
示例#2
0
        public void NumberElementsPerDimensionCtorTest()
        {
            int[] arrayDimensions = new int[] { 5, 7, 11 };
            var   outerProduct    = new OuterProductIndexGenerator(arrayDimensions);

            Assert.That(outerProduct.Length, Is.EqualTo(5 * 7 * 11));
        }
示例#3
0
        public void ArrayCtorTest()
        {
            String[,] rectangularArray = new string[, ] {
                { "A1", "A2" }, { "B1", "B2" }, { "C1", "C2" }
            };
            var outerProduct = new OuterProductIndexGenerator(rectangularArray);

            Assert.That(outerProduct.Length, Is.EqualTo(3 * 2));
        }
示例#4
0
        public void PermutationVisitorTest()
        {
            var dimensionArray = new int[] { 2, 3, 2 };
            var outerProduct   = new OuterProductIndexGenerator(dimensionArray);
            var processor      = new OuterProductProcessorOneLineString(null);

            outerProduct.ProcessOuterProduct(processor);
            string s = processor.GetResult();

            Assert.That(s, Is.EqualTo("{{(0,0,0),(0,0,1)},{(0,1,0),(0,1,1)},{(0,2,0),(0,2,1)}},{{(1,0,0),(1,0,1)},{(1,1,0),(1,1,1)},{(1,2,0),(1,2,1)}}"));
        }
示例#5
0
        public void RectangularArrayVisitorTest()
        {
            String[,] rectangularArray = new string[, ] {
                { "A1", "A2", "A3" }, { "B1", "B2", "B3" }, { "C1", "C2", "C3" }
            };
            var outerProduct = new OuterProductIndexGenerator(rectangularArray);
            var processor    = new OuterProductProcessorArrayPrinter(rectangularArray);

            outerProduct.ProcessOuterProduct(processor);
            string result = processor.GetResult();

            Assert.That(result, Is.EqualTo("{A1,A2,A3},{B1,B2,B3},{C1,C2,C3}"));
        }
示例#6
0
        public void VisitorNestedForTest2()
        {
            var rectangularArray = new string[, , ] {
                { { null, null }, { null, null }, { null, null } }, { { null, null }, { null, null }, { null, null } }
            };
            var outerProduct = new OuterProductIndexGenerator(rectangularArray);
            var processor    = new OuterProductProcessorOneLineString(rectangularArray);

            outerProduct.ProcessOuterProduct(processor);
            string s = processor.GetResult();

            Assert.That(s, Is.EqualTo("{{(0,0,0),(0,0,1)},{(0,1,0),(0,1,1)},{(0,2,0),(0,2,1)}},{{(1,0,0),(1,0,1)},{(1,1,0),(1,1,1)},{(1,2,0),(1,2,1)}}"));
        }
示例#7
0
        public void RectangularArrayTerminatingVisitorTest()
        {
            String[,] rectangularArray = new string[, ] {
                { "A1", "A2", "A3" }, { "B1", "B2", "B3" }, { "C1", "C2", "C3" }
            };
            var outerProduct = new OuterProductIndexGenerator(rectangularArray);
            var processor    = new OuterProductProcessorArrayPrinter(rectangularArray);

            processor.NumberElementsToOutputInnermost = 2;
            outerProduct.ProcessOuterProduct(processor);
            string result = processor.GetResult();

            Assert.That(result, Is.EqualTo("{A1,A2,...},{B1,B2,...},{C1,C2,...}"));
        }
示例#8
0
        public void SamplePermutationVisitorTest()
        {
            var dimensionArray = new int[] { 2, 3, 2 };
            var outerProduct   = new OuterProductIndexGenerator(dimensionArray);
            var processor      = new OuterProductPermutations();

            outerProduct.ProcessOuterProduct(processor);
            var result = processor.outerProductPermutations;

            var resultExpected = new int[][]
            {
                new int[] { 0, 0, 0 }, new int[] { 0, 0, 1 }, new int[] { 0, 1, 0 }, new int[] { 0, 1, 1 }, new int[] { 0, 2, 0 },
                new int[] { 0, 2, 1 }, new int[] { 1, 0, 0 }, new int[] { 1, 0, 1 }, new int[] { 1, 1, 0 }, new int[] { 1, 1, 1 },
                new int[] { 1, 2, 0 }, new int[] { 1, 2, 1 }
            };

            Assert.That(result.ToArray(), Is.EqualTo(resultExpected));
        }
示例#9
0
        public void ProcessSameOuterProductMultipleTimesTest()
        {
            String[,] rectangularArray = new string[, ] {
                { "A1", "A2", "A3" }, { "B1", "B2", "B3" }, { "C1", "C2", "C3" }, { "D1", "D2", "D3" }
            };
            var outerProduct = new OuterProductIndexGenerator(rectangularArray);
            OuterProductProcessorArrayPrinter processor = null;
            int i = 0;

            for (; i < 3; ++i)
            {
                processor = new OuterProductProcessorArrayPrinter(rectangularArray);
                outerProduct.ProcessOuterProduct(processor);
            }
            Assert.That(i, Is.EqualTo(3));
            string result = processor.GetResult();

            Assert.That(result, Is.EqualTo("{A1,A2,A3},{B1,B2,B3},{C1,C2,C3},{D1,D2,D3}"));
        }
示例#10
0
        public void VisitorNestedForOuterProductProcessorArrayPrettyPrinterTest()
        {
            var rectangularArray = new string[, , ] {
                { { "A0", "A1" }, { "B0", "B1" }, { "C0", "C1" } }, { { "D0", "D1" }, { "E0", "E1" }, { "F0", "F1" } }
            };
            var outerProduct = new OuterProductIndexGenerator(rectangularArray);
            var processor    = new OuterProductProcessorArrayPrettyPrinter(rectangularArray);

            outerProduct.ProcessOuterProduct(processor);
            string       s = processor.GetResult();
            const string resultExpected =
                @"
{
 {
  A0
  A1
 }
 {
  B0
  B1
 }
 {
  C0
  C1
 }
}
{
 {
  D0
  D1
 }
 {
  E0
  E1
 }
 {
  F0
  F1
 }
}";

            Assert.That(s, Is.EqualTo(resultExpected));
        }
示例#11
0
        public void VisitorNestedForOuterProductProcessorPrettyPrinterTest()
        {
            var rectangularArray = new string[, , ] {
                { { null, null }, { null, null }, { null, null } }, { { null, null }, { null, null }, { null, null } }
            };
            var outerProduct = new OuterProductIndexGenerator(rectangularArray);
            var processor    = new OuterProductProcessorPrettyPrinter(rectangularArray);

            outerProduct.ProcessOuterProduct(processor);
            string       s = processor.GetResult();
            const string resultExpected =
                @"
{
 {
  (0,0,0)
  (0,0,1)
 }
 {
  (0,1,0)
  (0,1,1)
 }
 {
  (0,2,0)
  (0,2,1)
 }
}
{
 {
  (1,0,0)
  (1,0,1)
 }
 {
  (1,1,0)
  (1,1,1)
 }
 {
  (1,2,0)
  (1,2,1)
 }
}";

            Assert.That(s, Is.EqualTo(resultExpected));
        }