C#:单元测试双数字回文数字

时间:2016-09-15 00:51:27

标签: c# palindrome

我被要求使用预制的回文代码编写测试程序。我们被告知不要修复代码,而是使用Test查找问题。我花了几个小时盯着这个,我只需要指导。我在测试字符串回文和数字回文时发现了很多东西,没有使用数字。也许比我自己制作它更容易,但是以任何方式帮助的链接或指导都非常感激。

public static Boolean isPalindrome(double num)
    {
        if (num >= 10000 && num < 100000)
        {
            double oldNum = num;
            double FirstDig = num % 10;
            num = num - (num % 10);
            double SecondDig = num % 100;
            num = num - (num % 100);
            double ThirdDig = num % 1000;
            num = num - (num % 1000);
            double FourthDig = num % 10000;
            num = num - (num % 10000);
            double FifthDig = num % 100000;
            num = num - (num % 100000);
            FirstDig = FirstDig / 10;
            SecondDig = SecondDig / 100;
            ThirdDig = ThirdDig / 1000;
            FourthDig = FourthDig / 10000;
            FifthDig = FifthDig / 100000;
            double flippedNum = FirstDig + SecondDig + ThirdDig + FourthDig + FifthDig;
            flippedNum = flippedNum * 100000;
            if (flippedNum == oldNum)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        else
        {
            return false;
        }
    }


}

2 个答案:

答案 0 :(得分:2)

编写一个带有数字的单元测试,将其传递给此函数,并将预期结果与实际结果进行比较。使用NUnit3,它可能如下所示:

[TestCase(101d, true)]
[TestCase(100d, false)]
public void SutConfirmsIfNumberIsPalindrome(double input, bool expectedOutcome) {
  var outcome = isPalindrome(input);
  Assert.True(outcome == expectedOutcome);
}

答案 1 :(得分:0)

编写测试时,方法的实现无关紧要。相反,您需要知道给定输入的预期输出。我建议列出这些,然后对你能想到的每个输入实施一个测试。从简单开始,随着时间的推移会有更多的想法,输入将更加复杂。