Используя инструменты тестирования, необходимо написать функцию, которая позволяет проходить тестовые случаи для IndexOf со строкой и символом - PullRequest
0 голосов
/ 17 ноября 2018

Я беру класс методологий QA, и мы используем инструменты тестирования в Visual Studio. У меня есть контрольные примеры, которые учитель хочет, чтобы мы реализовали:

str      c     Result
________________________

null    'a'   Exception
" "     'a'   -1
"a"     'b'   -1
"a"     'a'    0
"a..."  'b'   -1
"a..."  'a'    0
"ba.."  'b'    0
"a..b"  'b'    999,999,999

Это делается в C #, который я также беру в этом квартале (не знал, что это будет часть класса QA, или я бы ждал четверть). У меня есть методы испытаний, написанные для 1-7 , У меня один на 8, но это не совсем верно. Советы по этому поводу были бы полезны.

Вот мой код:

using System;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace UnitTesting
{
    [TestClass]
    public class Helper
    {
        //Part 2 of Assignment
        public static int IndexOf(string s, char c)
        {
            while ()
            {
                return ...;
            }

            return -1;
        }

        //Test cases - part 3 of assignment
        //s = null, c = 'a', expected output = Exception
        [TestMethod]
        [ExpectedException(typeof(ArgumentNullException))]
        public void TestMethod1()
        {
            Helper.IndexOf(null, 'a');
        }

        //s = " ", c = 'a', expected outout = -1
        [TestMethod]
        public void TestMethod2()
        {
            Assert.AreEqual(-1, Helper.IndexOf("", 'a'));
        }

        //s = "a", c = 'b', expected outout = -1
        [TestMethod]
        public void TestMethod3()
        {
            Assert.AreEqual(-1, Helper.IndexOf("a", 'b'));
        }

        //s = "a", c = 'a', expected outout = 0
        [TestMethod]
        public void TestMethod4()
        {
            Assert.AreEqual(0, Helper.IndexOf("a", 'a'));
        }

        //s = "aaaaaa", c = 'b', expected outout = -1
        [TestMethod]
        public void TestMethod5()
        {
            Assert.AreEqual(-1, Helper.IndexOf("aaaaaa", 'b'));
        }

        //s = "aaaaaa", c = '', expected outout = 0
        [TestMethod]
        public void TestMethod6()
        {
            Assert.AreEqual(0, Helper.IndexOf("aaaaaa", 'a'));
        }

        //s = "baaaaa", c = 'b', expected outout = 0
        [TestMethod]
        public void TestMethod7()
        {
            Assert.AreEqual(0, Helper.IndexOf("baaaaa", 'b'));
        }

        ////s = "a...b", c = 'b', expected outout = 999999999
        //[TestMethod]
        //public void TestMethod8()
        //{
        //    string str = "aa";
        //    for (int i = 1; i <= 999999990; i++)
        //    {
        //        str.Insert(i, "a");
        //    }
        //    str.Insert(999999991, "b");
        //    Assert.AreEqual(999999991, Helper.IndexOf(str, 'b'));
        //}
    }
}

Метод тестирования 8 закомментирован, потому что он вызывает исключение вне диапазона.

Я пробовал несколько вещей с помощью функции. В классе учитель особо упомянул цикл «время». В инструкциях также требуется указатель возврата -1 для результатов, в которых символ не найден.

Я не могу понять, как написать цикл while. Я пытался использовать .Contains, цикл не закончился правильно. У меня ощущение, что это действительно просто, но это просто вне моей досягаемости. У меня есть возврат в цикле while, потому что мне кажется, что для результатов, где найден символ, нужно что-то отличное от -1,

Я прошу прощения, если это так просто, как я боюсь, но я действительно мог бы использовать помощь людей, более опытных в C #. Я ходил в репетиторскую лабораторию в школе, но она не открыта по выходным, и на следующей неделе у меня очень плохой график работы.

Заранее спасибо.

1 Ответ

0 голосов
/ 17 ноября 2018

Нет необходимости в цикле, вы можете использовать

string str = new string('a', 99999999) + "b";
...