kolumbou
@kolumbou
python, html, c#

Как протестировать добавление элемента в список C#?

Доброго времени суток!

Никак не могу догадаться, как же протестировать следующий блок в коде:

public static class List  //Абстрактный класс работы со списком на основе двух типовых элементов
    {
        public static void Add(ref SimpleElm firstElm, string value)  //Добавить в список простой элемент
        {
            if (value == "") return;
            SimpleElm newElm = new SimpleElm(value);
            if (firstElm == null)
            {
                firstElm = newElm;
                return;
            }
            SimpleElm elm = firstElm;
            while (elm.next != null)
                elm = elm.next;
            elm.next = newElm;
        }
}


Собственно сам SimpleElm ниже:

public class SimpleElm // Простой класс
    {
        public string Value
        {
            get;
            set;
        }
        public SimpleElm next;
        public SimpleElm(string value = "")
        {
            Value = value;
            next = null;
        }
        public SimpleElm this[int index]
        {
            get
            {
                if (index < 0) throw new IndexOutOfRangeException();
                var item = this;
                for (int i = 0; i < index; i++)
                    if (item.next != null) 
                        item = item.next;
                return item;
            }
            set
            {
                if (index < 0) throw new IndexOutOfRangeException();
                var item = this;
                for (int i = 0; i < index; i++)
                    if (item.next != null)
                        item = item.next;
                item = value;
            }
        }
    }
  • Вопрос задан
  • 304 просмотра
Решения вопроса 1
EvilsInterrupt
@EvilsInterrupt
System programming, Reversing Engineering, C++
Вы не можете начать тестировать только потому, что Вы решили сначала написать код, а только потом его тестировать. Это неверно! Когда принимается решение писать код, нужно хотя бы где-то описать его задачу. TDD почти один в один взяли подход от математиков. У математиков тоже есть "Дано" - это аналог SetUp и "Нужно сделать" - это аналог вашего тестируемого кода, т.е. то что Вы реализуете и "Чтобы удовлетворяло условиям...." - Это очень похоже на Assert.

Откиньте Ваш код, как будто Вы его еще не написали. Прочитайте формулировки нескольких мат.задач. Посмотрите их стилистику. Как они оформляют мысли при изложении сути задачи. И попробуйте следовать точно также! То есть опишите вашу программерскую задачу до начала решения, как это делают математики.

/Offtop:
Рекомендую Вам выписать возможные случаи при добавлении элемента в список. К примеру:

Позитивные случаи:
* Добавить нормальный элемент;
и т.д. и т.п.

Негативные:
* Добавить Null;
* Добавить когда список уже переполнен - а такое возможно?;
* Добавить когда список, когда не доконца создан - а такое возможно?
и т.д. и т.п.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы