Модуль String.Capitalize()

Алгоритм и код

Программный код модуля приведен в листинге 2.

Листинг 2

public static string Capitalize(this string s)  
{  
if (String.IsNullOrEmpty(s))
return "";
   
string res = "";
res += s[0];
   
for (int i = 1; i < s.Length; i++)
{  
res += (_delimeters.Contains(s[i - 1])
? Char.ToUpper(s[i])
: s[i]);
}
res = res.Remove(" ");
   
return res;
}

 

 

Нижеприведенный Рисунок 6 отражает блок-схему метода. Посимвольно перебирая строку, этот метод исключает все пробелы и знаки препинания из строки и заменяет следующие за ними символы их заглавными вариациями.

Например, строка «Это строка из НЕСКОЛЬКИХ слов» будет преобразована к виду «ЭтоСтрокаИзНесколькихСтрок».

Данный метод является методом расширения для стандартного класса String из .NET Framework. Он используется в качестве вспомогательного для работы с перечислением Quntifier (Квантор) – см. полный программный код в Приложении (или электронном приложении к отчету).

Рисунок 6. Блок-схема модуля String.Capitalize

 

 

Тестирование базового пути

Построение потового графа

Потоковый граф рассматриваемого модуля с указанием регионов и выделенными предикаторными узлами приведен ниже (см. Рисунок 7).

Рисунок 7. Потоковый граф модуля String.Capitalize

Оценка цикломатической сложности

Приведенный граф позволяет оценить минимальное количество тестов, которые должны быть проведены. Оценку цикломатической сложности будем производить тремя указанными методами:

4) V(G) = количество регионов = 4

5) V(G) = количество дуг – количество узлов + 2 = 13 – 11 + 2 = 4

6) V(G) = количество предикатных узлов +1 = 3 + 1 = 4

Таким образом, необходимо составить 4 теста, охватывающих независимые пути в графе.

Определение базового множества независимых путей

Путь начинается в начальном узле, а заканчивается в конечном узле графа. Независимые пути необходимо разрабатывать в порядке от самого короткого к самому длинному.

Были выявлены следующие независимые пути:

1) 1-2-11

2) 1-3-4-9-10-11

3) 1-3-4-5-6-8-10-4-…-4-9-10-11

4) 1-3-4-5-7-8-10-4-…-4-9-10-11

В представленном списке не учитывался факт наличия цикла (отрезки путей 3-4…-…-8 могут повторяться неоднократно)

Подготовка тестовых вариантов

Для тестирования каждого из независимых путей были созданы тестовые варианты исходных данных. Сами данные (ИД), ожидаемый от них результат (ОЖ. РЕЗ.) и результат, полученный фактически при выполнении программы (Ф. РЕЗ.), приведены в Таблица 6.

Таблица 6. Тестовые варианты для метода базового пути

ИД ОЖ. РЕЗ.
null Пустая строка
Пустая строка Пустая строка
Это другая строка ЭтоДругаяСтрока
Это Еще Одна Строка ЭтоЕщеОднаСтрока