コード例 #1
0
        public void PrecisionCheckShouldReturnWrongAnswerInBiggerSameTextsWithTotallyDifferentLinesTest()
        {
            var receivedOutput = new StringBuilder();

            for (decimal i = 0.000001m; i < 1; i += 0.000001m)
            {
                receivedOutput.AppendLine(i.ToString(CultureInfo.InvariantCulture));
            }

            receivedOutput.AppendFormat("{0}", 5.5554m);

            var expectedOutput = new StringBuilder();

            for (decimal i = 0.000001m; i < 1; i += 0.000002m)
            {
                expectedOutput.AppendLine(i.ToString(CultureInfo.InvariantCulture));
            }

            expectedOutput.AppendFormat("{0}", 5.5553m);

            var checker = new PrecisionChecker();

            checker.SetParameter("4");

            var checkerResult = checker.Check(string.Empty, receivedOutput.ToString(), expectedOutput.ToString(), false);

            Assert.IsNotNull(checkerResult);
            Assert.IsFalse(checkerResult.IsCorrect);
            Assert.IsTrue(checkerResult.ResultType.HasFlag(CheckerResultType.WrongAnswer));
        }
コード例 #2
0
        public void PrecisionCheckShouldReturnCorrectAnswerInBiggerSameTextsWithDifferentPrecisionTest()
        {
            var receivedOutput = new StringBuilder();

            for (decimal i = 0.000001m; i < 1; i += 0.000001m)
            {
                receivedOutput.AppendLine(i.ToString(CultureInfo.InvariantCulture));
            }

            var expectedOutput = new StringBuilder();

            for (decimal i = 0.000001m; i < 1; i += 0.000001m)
            {
                expectedOutput.AppendLine((i + 0.0000001m).ToString(CultureInfo.InvariantCulture));
            }

            var checker = new PrecisionChecker();

            checker.SetParameter("4");

            var checkerResult = checker.Check(string.Empty, receivedOutput.ToString(), expectedOutput.ToString(), false);

            Assert.IsNotNull(checkerResult);
            Assert.IsTrue(checkerResult.IsCorrect);
            Assert.IsTrue(checkerResult.ResultType.HasFlag(CheckerResultType.Ok));
        }
コード例 #3
0
        public void PrecisionCheckerShouldNotRespectsDecimalSeparators()
        {
            string receivedOutput = "1,1";
            string expectedOutput = "1.1";
            var checker = new PrecisionChecker();

            var checkerResult = checker.Check(string.Empty, receivedOutput, expectedOutput);

            Assert.IsNotNull(checkerResult);
            Assert.IsTrue(checkerResult.IsCorrect);
            Assert.IsTrue(checkerResult.ResultType.HasFlag(CheckerResultType.Ok));
        }
コード例 #4
0
        public void PrecisionCheckerShouldReturnTrueWhenGivenExactDecimalWithDefaultPrecision()
        {
            string receivedOutput = "1.11111111111111111111111111";
            string expectedOutput = "1.11111111111111111111111112";
            var checker = new PrecisionChecker();

            var checkerResult = checker.Check(string.Empty, receivedOutput, expectedOutput, false);

            Assert.IsNotNull(checkerResult);
            Assert.IsTrue(checkerResult.IsCorrect);
            Assert.IsTrue(checkerResult.ResultType.HasFlag(CheckerResultType.Ok));
        }
コード例 #5
0
        public void PrecisionCheckerShouldReturnTrueWhenGivenExactDecimalWithDefaultPrecision()
        {
            string receivedOutput = "1.11111111111111111111111111";
            string expectedOutput = "1.11111111111111111111111112";
            var    checker        = new PrecisionChecker();

            var checkerResult = checker.Check(string.Empty, receivedOutput, expectedOutput, false);

            Assert.IsNotNull(checkerResult);
            Assert.IsTrue(checkerResult.IsCorrect);
            Assert.IsTrue(checkerResult.ResultType.HasFlag(CheckerResultType.Ok));
        }
コード例 #6
0
        public void PrecisionCheckerShouldNotRespectsDecimalSeparators()
        {
            string receivedOutput = "1,1";
            string expectedOutput = "1.1";
            var    checker        = new PrecisionChecker();

            var checkerResult = checker.Check(string.Empty, receivedOutput, expectedOutput, false);

            Assert.IsNotNull(checkerResult);
            Assert.IsTrue(checkerResult.IsCorrect);
            Assert.IsTrue(checkerResult.ResultType.HasFlag(CheckerResultType.Ok));
        }
コード例 #7
0
        public void PrecisionCheckerShouldReturnWrongAnswerWhenGivenExactDecimalWithPrecisionOfSixAndDifferentDigitsBeforeTheSixthOne()
        {
            string receivedOutput = "1.000004";
            string expectedOutput = "1.000003";
            var checker = new PrecisionChecker();
            checker.SetParameter("6");

            var checkerResult = checker.Check(string.Empty, receivedOutput, expectedOutput, false);

            Assert.IsNotNull(checkerResult);
            Assert.IsFalse(checkerResult.IsCorrect);
            Assert.IsTrue(checkerResult.ResultType.HasFlag(CheckerResultType.WrongAnswer));
        }
コード例 #8
0
        public void PrecisionCheckerShouldReturnTrueWhenGivenExactDecimalWithPrecisionOfFive()
        {
            string receivedOutput = "1.000004";
            string expectedOutput = "1.000003";
            var checker = new PrecisionChecker();
            checker.SetParameter("5");

            var checkerResult = checker.Check(string.Empty, receivedOutput, expectedOutput, false);

            Assert.IsNotNull(checkerResult);
            Assert.IsTrue(checkerResult.IsCorrect);
            Assert.IsTrue(checkerResult.ResultType.HasFlag(CheckerResultType.Ok));
        }
コード例 #9
0
        public void PrecisionCheckerShouldReturnCorrectAnswerIfCultureIsBulgarian()
        {
            string receivedOutput = "1,00\n15,89955\n9999,87\n";
            string expectedOutput = "1.00\n15.89955\n9999.87";
            var checker = new PrecisionChecker();
            checker.SetParameter("4");

            var checkerResult = checker.Check(string.Empty, receivedOutput, expectedOutput);

            Assert.IsNotNull(checkerResult);
            Assert.IsTrue(checkerResult.IsCorrect);
            Assert.IsTrue(checkerResult.ResultType.HasFlag(CheckerResultType.Ok));
        }
コード例 #10
0
        public void PrecisionCheckerShouldReturnFalseIfNoNumberIsEntered()
        {
            string receivedOutput = "Foobar";
            string expectedOutput = "1.000003";
            var checker = new PrecisionChecker();
            checker.SetParameter("6");

            var checkerResult = checker.Check(string.Empty, receivedOutput, expectedOutput);

            Assert.IsNotNull(checkerResult);
            Assert.IsFalse(checkerResult.IsCorrect);
            Assert.IsTrue(checkerResult.ResultType.HasFlag(CheckerResultType.WrongAnswer));
        }
コード例 #11
0
        public void PrecisionCheckerShouldReturnFalseIfTheAnswersAreDifferent()
        {
            string receivedOutput = "0.123456";
            string expectedOutput = "0.999999";
            var checker = new PrecisionChecker();
            checker.SetParameter("2");

            var checkerResult = checker.Check(string.Empty, receivedOutput, expectedOutput);

            Assert.IsNotNull(checkerResult);
            Assert.IsFalse(checkerResult.IsCorrect);
            Assert.IsTrue(checkerResult.ResultType.HasFlag(CheckerResultType.WrongAnswer));
        }
コード例 #12
0
        public void PrecisionCheckerShouldReturnCorrectIfTheAnswerRoundUp()
        {
            string receivedOutput = "1.00";
            string expectedOutput = "1.009";
            var checker = new PrecisionChecker();
            checker.SetParameter("2");

            var checkerResult = checker.Check(string.Empty, receivedOutput, expectedOutput);

            Assert.IsNotNull(checkerResult);
            Assert.IsTrue(checkerResult.IsCorrect);
            Assert.IsTrue(checkerResult.ResultType.HasFlag(CheckerResultType.Ok));
        }
コード例 #13
0
        public void PrecisionCheckerShouldReturnTrueWhenGivenExactDecimalWithPrecisionOfFive()
        {
            string receivedOutput = "1.000004";
            string expectedOutput = "1.000003";
            var    checker        = new PrecisionChecker();

            checker.SetParameter("5");

            var checkerResult = checker.Check(string.Empty, receivedOutput, expectedOutput, false);

            Assert.IsNotNull(checkerResult);
            Assert.IsTrue(checkerResult.IsCorrect);
            Assert.IsTrue(checkerResult.ResultType.HasFlag(CheckerResultType.Ok));
        }
コード例 #14
0
        public void PrecisionCheckerShouldReturnTrueIfTheAnswersAreHugeNumbersSameAndLowPrecision()
        {
            string receivedOutput = "1234567.99";
            string expectedOutput = "1234567.9";
            var    checker        = new PrecisionChecker();

            checker.SetParameter("1");

            var checkerResult = checker.Check(string.Empty, receivedOutput, expectedOutput, false);

            Assert.IsNotNull(checkerResult);
            Assert.IsTrue(checkerResult.IsCorrect);
            Assert.IsTrue(checkerResult.ResultType.HasFlag(CheckerResultType.Ok));
        }
コード例 #15
0
        public void PrecisionCheckerShouldReturnTrueIfTheAnswerRoundUpClose()
        {
            string receivedOutput = "1.00";
            string expectedOutput = "0.999999";
            var    checker        = new PrecisionChecker();

            checker.SetParameter("2");

            var checkerResult = checker.Check(string.Empty, receivedOutput, expectedOutput, false);

            Assert.IsNotNull(checkerResult);
            Assert.IsTrue(checkerResult.IsCorrect);
            Assert.IsTrue(checkerResult.ResultType.HasFlag(CheckerResultType.Ok));
        }
コード例 #16
0
        public void PrecisionCheckerShouldReturnFalseIfTheAnswersAreDifferent()
        {
            string receivedOutput = "0.123456";
            string expectedOutput = "0.999999";
            var    checker        = new PrecisionChecker();

            checker.SetParameter("2");

            var checkerResult = checker.Check(string.Empty, receivedOutput, expectedOutput, false);

            Assert.IsNotNull(checkerResult);
            Assert.IsFalse(checkerResult.IsCorrect);
            Assert.IsTrue(checkerResult.ResultType.HasFlag(CheckerResultType.WrongAnswer));
        }
コード例 #17
0
        public void PrecisionCheckerShouldReturnFalseIfNoNumberIsEntered()
        {
            string receivedOutput = "Foobar";
            string expectedOutput = "1.000003";
            var    checker        = new PrecisionChecker();

            checker.SetParameter("6");

            var checkerResult = checker.Check(string.Empty, receivedOutput, expectedOutput, false);

            Assert.IsNotNull(checkerResult);
            Assert.IsFalse(checkerResult.IsCorrect);
            Assert.IsTrue(checkerResult.ResultType.HasFlag(CheckerResultType.WrongAnswer));
        }
コード例 #18
0
        public void PrecisionCheckerShouldReturnInvalidLineNumberIfAllLinesAreCorrectWithALotOfExtraLine()
        {
            string receivedOutput = "1.00\n15.89955\n9999.87";
            string expectedOutput = "1.00\n15.89955\n9999.87\n\n";
            var    checker        = new PrecisionChecker();

            checker.SetParameter("4");

            var checkerResult = checker.Check(string.Empty, receivedOutput, expectedOutput, false);

            Assert.IsNotNull(checkerResult);
            Assert.IsFalse(checkerResult.IsCorrect);
            Assert.IsTrue(checkerResult.ResultType.HasFlag(CheckerResultType.InvalidNumberOfLines));
        }
コード例 #19
0
        public void PrecisionCheckerShouldReturnWrongAnsweIfAllLinesAreCorrectWithALotOfExtraLinesAtTheBeginningAndEnd()
        {
            string receivedOutput = "\n\n1.00\n15.89955\n9999.87";
            string expectedOutput = "1.00\n15.89955\n9999.87\n\n";
            var    checker        = new PrecisionChecker();

            checker.SetParameter("4");

            var checkerResult = checker.Check(string.Empty, receivedOutput, expectedOutput, false);

            Assert.IsNotNull(checkerResult);
            Assert.IsFalse(checkerResult.IsCorrect);
            Assert.IsTrue(checkerResult.ResultType.HasFlag(CheckerResultType.WrongAnswer));
        }
コード例 #20
0
        public void PrecisionCheckerShouldReturnTrueIfAllLinesAreCorrectWithOneExtraEmptyLine()
        {
            string receivedOutput = "1.00\n15.89955\n9999.87";
            string expectedOutput = "0.999999\n15.8995555\n9999.87000002\n";
            var    checker        = new PrecisionChecker();

            checker.SetParameter("4");

            var checkerResult = checker.Check(string.Empty, receivedOutput, expectedOutput, false);

            Assert.IsNotNull(checkerResult);
            Assert.IsTrue(checkerResult.IsCorrect);
            Assert.IsTrue(checkerResult.ResultType.HasFlag(CheckerResultType.Ok));
        }
コード例 #21
0
        public void PrecisionCheckerShouldReturnWrongAnswerWhenGivenExactDecimalWithPrecisionOfSixAndDifferentDigitsBeforeTheSixthOne()
        {
            string receivedOutput = "1.000004";
            string expectedOutput = "1.000003";
            var    checker        = new PrecisionChecker();

            checker.SetParameter("6");

            var checkerResult = checker.Check(string.Empty, receivedOutput, expectedOutput, false);

            Assert.IsNotNull(checkerResult);
            Assert.IsFalse(checkerResult.IsCorrect);
            Assert.IsTrue(checkerResult.ResultType.HasFlag(CheckerResultType.WrongAnswer));
        }
コード例 #22
0
        public void PrecisionCheckerShouldReturnCorrectAnswerIfCultureIsBulgarian()
        {
            string receivedOutput = "1,00\n15,89955\n9999,87\n";
            string expectedOutput = "1.00\n15.89955\n9999.87";
            var    checker        = new PrecisionChecker();

            checker.SetParameter("4");

            var checkerResult = checker.Check(string.Empty, receivedOutput, expectedOutput, false);

            Assert.IsNotNull(checkerResult);
            Assert.IsTrue(checkerResult.IsCorrect);
            Assert.IsTrue(checkerResult.ResultType.HasFlag(CheckerResultType.Ok));
        }
コード例 #23
0
        public void PrecisionCheckerShouldReturnTrueIfTheAnswersAreSameAndPrecisionIsBiggerThanTheNumbers()
        {
            string receivedOutput = "0.999999";
            string expectedOutput = "0.999999";
            var    checker        = new PrecisionChecker();

            checker.SetParameter("15");

            var checkerResult = checker.Check(string.Empty, receivedOutput, expectedOutput);

            Assert.IsNotNull(checkerResult);
            Assert.IsTrue(checkerResult.IsCorrect);
            Assert.IsTrue(checkerResult.ResultType.HasFlag(CheckerResultType.Ok));
        }
コード例 #24
0
        public void PrecisionCheckerShouldReturnTrueIfAllLinesAreCorrect()
        {
            System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("bg-BG");

            string receivedOutput = "1.00\n15.89955\n9999.87";
            string expectedOutput = "0.999999\n15.8995555\n9999.87000002";
            var    checker        = new PrecisionChecker();

            checker.SetParameter("4");

            var checkerResult = checker.Check(string.Empty, receivedOutput, expectedOutput, false);

            Assert.IsNotNull(checkerResult);
            Assert.IsTrue(checkerResult.IsCorrect);
            Assert.IsTrue(checkerResult.ResultType.HasFlag(CheckerResultType.Ok));
        }
コード例 #25
0
        public override void Interpret(ColumnResolveContext context)
        {
            Regex regex = new Regex(@"<If_HasPrecision>(?<template>((?!</EndIf>).|\n)*)</EndIf>", RegexOptions.IgnoreCase | RegexOptions.Compiled);

            Match match = regex.Match(context.Output);

            string template = match.Groups["template"].Value;

            PrecisionChecker  checker  = new PrecisionChecker();
            PrecisionReplacer replacer = new PrecisionReplacer();

            checker.SetSuccessor(replacer);

            string replaceStr = checker.Resolve(template, context.Column.DbType, context.Column.TotalBit, context.Column.DeicmalBit);

            context.Output = regex.Replace(context.Output, replaceStr);
        }
コード例 #26
0
        public void PrecisionCheckerShouldReturnInvalidLineNumberIfAllLinesAreCorrectWithALotOfExtraLine()
        {
            string receivedOutput = "1.00\n15.89955\n9999.87";
            string expectedOutput = "1.00\n15.89955\n9999.87\n\n";
            var checker = new PrecisionChecker();
            checker.SetParameter("4");

            var checkerResult = checker.Check(string.Empty, receivedOutput, expectedOutput);

            Assert.IsNotNull(checkerResult);
            Assert.IsFalse(checkerResult.IsCorrect);
            Assert.IsTrue(checkerResult.ResultType.HasFlag(CheckerResultType.InvalidNumberOfLines));
        }
コード例 #27
0
        public void PrecisionCheckerShouldReturnTrueIfAllLinesAreCorrect()
        {
            System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("bg-BG");

            string receivedOutput = "1.00\n15.89955\n9999.87";
            string expectedOutput = "0.999999\n15.8995555\n9999.87000002";
            var checker = new PrecisionChecker();
            checker.SetParameter("4");

            var checkerResult = checker.Check(string.Empty, receivedOutput, expectedOutput);

            Assert.IsNotNull(checkerResult);
            Assert.IsTrue(checkerResult.IsCorrect);
            Assert.IsTrue(checkerResult.ResultType.HasFlag(CheckerResultType.Ok));
        }
コード例 #28
0
        public void PrecisionCheckerShouldReturnTrueIfTheAnswersAreHugeNumbersSameAndLowPrecision()
        {
            string receivedOutput = "1234567.99";
            string expectedOutput = "1234567.9";
            var checker = new PrecisionChecker();
            checker.SetParameter("1");

            var checkerResult = checker.Check(string.Empty, receivedOutput, expectedOutput, false);

            Assert.IsNotNull(checkerResult);
            Assert.IsTrue(checkerResult.IsCorrect);
            Assert.IsTrue(checkerResult.ResultType.HasFlag(CheckerResultType.Ok));
        }
コード例 #29
0
        public void PrecisionCheckerShouldReturnTrueIfAllLinesAreCorrectWithOneExtraEmptyLine()
        {
            string receivedOutput = "1.00\n15.89955\n9999.87";
            string expectedOutput = "0.999999\n15.8995555\n9999.87000002\n";
            var checker = new PrecisionChecker();
            checker.SetParameter("4");

            var checkerResult = checker.Check(string.Empty, receivedOutput, expectedOutput);

            Assert.IsNotNull(checkerResult);
            Assert.IsTrue(checkerResult.IsCorrect);
            Assert.IsTrue(checkerResult.ResultType.HasFlag(CheckerResultType.Ok));
        }
コード例 #30
0
        public void PrecisionCheckerShouldReturnTrueIfTheAnswersAreSameAndPrecisionIsBiggerThanTheNumbers()
        {
            string receivedOutput = "0.999999";
            string expectedOutput = "0.999999";
            var checker = new PrecisionChecker();
            checker.SetParameter("15");

            var checkerResult = checker.Check(string.Empty, receivedOutput, expectedOutput);

            Assert.IsNotNull(checkerResult);
            Assert.IsTrue(checkerResult.IsCorrect);
            Assert.IsTrue(checkerResult.ResultType.HasFlag(CheckerResultType.Ok));
        }
コード例 #31
0
        public void PrecisionCheckerShouldReturnWrongAnsweIfAllLinesAreCorrectWithALotOfExtraLinesAtTheBeginningAndEnd()
        {
            string receivedOutput = "\n\n1.00\n15.89955\n9999.87";
            string expectedOutput = "1.00\n15.89955\n9999.87\n\n";
            var checker = new PrecisionChecker();
            checker.SetParameter("4");

            var checkerResult = checker.Check(string.Empty, receivedOutput, expectedOutput);

            Assert.IsNotNull(checkerResult);
            Assert.IsFalse(checkerResult.IsCorrect);
            Assert.IsTrue(checkerResult.ResultType.HasFlag(CheckerResultType.WrongAnswer));
        }
コード例 #32
0
        public void PrecisionCheckShouldReturnCorrectAnswerInBiggerSameTextsWithDifferentPrecisionTest()
        {
            var receivedOutput = new StringBuilder();
            for (decimal i = 0.000001m; i < 1; i += 0.000001m)
            {
                receivedOutput.AppendLine(i.ToString(CultureInfo.InvariantCulture));
            }

            var expectedOutput = new StringBuilder();
            for (decimal i = 0.000001m; i < 1; i += 0.000001m)
            {
                expectedOutput.AppendLine((i + 0.0000001m).ToString(CultureInfo.InvariantCulture));
            }

            var checker = new PrecisionChecker();
            checker.SetParameter("4");

            var checkerResult = checker.Check(string.Empty, receivedOutput.ToString(), expectedOutput.ToString());

            Assert.IsNotNull(checkerResult);
            Assert.IsTrue(checkerResult.IsCorrect);
            Assert.IsTrue(checkerResult.ResultType.HasFlag(CheckerResultType.Ok));
        }
コード例 #33
0
        public void PrecisionCheckShouldReturnWrongAnswerInBiggerSameTextsWithTotallyDifferentLinesTest()
        {
            var receivedOutput = new StringBuilder();
            for (decimal i = 0.000001m; i < 1; i += 0.000001m)
            {
                receivedOutput.AppendLine(i.ToString(CultureInfo.InvariantCulture));
            }

            receivedOutput.AppendFormat("{0}", 5.5554m);

            var expectedOutput = new StringBuilder();
            for (decimal i = 0.000001m; i < 1; i += 0.000002m)
            {
                expectedOutput.AppendLine(i.ToString(CultureInfo.InvariantCulture));
            }

            expectedOutput.AppendFormat("{0}", 5.5553m);

            var checker = new PrecisionChecker();
            checker.SetParameter("4");

            var checkerResult = checker.Check(string.Empty, receivedOutput.ToString(), expectedOutput.ToString());

            Assert.IsNotNull(checkerResult);
            Assert.IsFalse(checkerResult.IsCorrect);
            Assert.IsTrue(checkerResult.ResultType.HasFlag(CheckerResultType.WrongAnswer));
        }