Ejemplo n.º 1
0
        public void Transpose()
        {
            StringTransducer transducer = StringTransducer.Consume(StringAutomaton.Constant(3.0));
            StringTransducer transpose1 = StringTransducer.Transpose(transducer);
            StringTransducer transpose2 = transducer.Clone();

            transpose2.TransposeInPlace();

            var pairs = new[]
            {
                new[] { "a", string.Empty },
                new[] { string.Empty, string.Empty },
                new[] { "a", "bc" },
                new[] { "a", "a" }
            };

            foreach (string[] valuePair in pairs)
            {
                double referenceValue1 = transducer.GetValue(valuePair[0], valuePair[1]);
                Assert.Equal(referenceValue1, transpose1.GetValue(valuePair[1], valuePair[0]));
                Assert.Equal(referenceValue1, transpose2.GetValue(valuePair[1], valuePair[0]));

                double referenceValue2 = transducer.GetValue(valuePair[1], valuePair[0]);
                Assert.Equal(referenceValue2, transpose1.GetValue(valuePair[0], valuePair[1]));
                Assert.Equal(referenceValue2, transpose2.GetValue(valuePair[0], valuePair[1]));
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Tests if a transducer has the desired value on a given pair of strings.
        /// </summary>
        /// <param name="transducer">The transducer.</param>
        /// <param name="string1">The first string.</param>
        /// <param name="string2">The second string.</param>
        /// <param name="trueValue">The desired value of the transducer on the strings.</param>
        public static void TestTransducerValue(
            StringTransducer transducer, string string1, string string2, double trueValue)
        {
            // Test ProjectSource(sequence)
            var result = transducer.ProjectSource(string1);

            TestValue(result, trueValue, string2);

            // Test ProjectSource(func)
            TestTransducerProjection(transducer, StringAutomaton.ConstantOn(1.0, string1), string2, trueValue);

            // Test GetValue()
            double value = transducer.GetValue(string1, string2);

            Assert.Equal(trueValue, value, LogValueEps);
        }