четверг, 1 сентября 2011 г.

MQL4unit

Ну вот, наконец-то я поборол лень и написал краткий мануал для своей мини-библиотечки

MQL4unit – библиотека для юнит-тестирования функций, написанных на языке MQL4 компании MetaQuotes.

Автор: я)))

Идея библиотеки взята из статьи «Повышаем качество кода при помощи Unit Tests»(articles.mql4.com/ru/936), но текущая реализация доработана до стандарта xUnit. Используемая лицензия – GNU/GPL v 2.0 (http://infolex.narod.ru/gpl_gnu/gplrus.html).

Подробнее о практике Unit Testing можно прочитать в книге Кента Бека «Экстремалное программирование. Разработка через тестирования» (Beck Kent “Extreme Programming. Test Driven Development”, Addison-Wesley, 2000). Так как MQL4 является процедурным языком, минимальным тестировочным юнитом будет являться одна функций (процедура). Результаты тестирования можно посмотреть во вкладке «Эксперты» (“Experts”) торгового терминала.

Функции инициализации и деинициализации набора тестов.

void UnitTestStart(string TestName) – функция инициализации набора тестов. Принимает один параметр типа string, обозначающий название набора тестов. Рекомендуется применять осмысленные названия для более четкой идентификации результатов тестирования. Должна быть вызвана до каких-либо других функций библиотеки, так как она инициализирует счетчики успешных и проваленных тестов, общего количества. В противном случае общий результат тестирования будет некорректен.

bool UnitTestEnd() – функция деинициализации набора тестов. Возвращает true в случае прохождения всех тестов, false – в противном случае. Должна быть вызвана после всех обращений к функциям библиотеки в пределах одного набора тестов.

Функции тестирования единичных значений.

bool AssertTrue(bool var) – функция для тестирования логической переменной на ожидаемое значение "истина".

Параметр: bool var.

Возвращаемое значение: true, если входная переменная содержит значение "истина"; false, если входная переменная содержит значение "ложь".

bool AssertFalse(bool var) – функция для тестирования логической переменной на ожидаемое значение "ложь".

Параметр: bool var.

Возвращаемое значение: true, если входная переменная содержит значение "ложь"; false, если входная переменная содержит значение "истина".

bool AssertBoolsEqual(bool gotten, bool needed) – функция для тестирования двух булевых переменных на равенство (полученной в результате работы тестируемого юнита и ожидаемой).

Параметры: bool gotten – значение, полученное в результате работы тестируемого юнита, bool needed – ожидаемое значение.

Возвращаемое значение: true, если значения входных переменных равны; false, если значения входных переменных не равны.

bool AssertIntsEqual(int gotten, int needed) – функция для тестирования двух целочисленных переменных на равенство (полученной в результате работы тестируемого юнита и ожидаемой).

Параметры: int gotten – значение, полученное в результате работы тестируемой функции, int needed – ожидаемое значение

Возвращаемое значение: true, если значения входных переменных равны; false, если значения входных переменных не равны.

bool AssertDoublesEqual(double gotten, double needed, int pres) – функция для тестирования двух переменных типа double на равенство (полученной в результате работы тестируемого юнита и ожидаемой).

Параметры: double gotten – значение, полученное в результате работы тестируемой функции, double needed – ожидаемое значение, int pres – требуемая точность сравнение (кол-во знаков после запятой).

Возвращаемое значение: true, если значения входных переменных равны; false, если значения входных переменных не равны.

bool AssertColorsEqual(color gotten, color needed) – функция для тестирования двух (цветовых) переменных типа color на равенство (полученной в результате работы тетстируемого юнита и ожидаемой).

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

Возвращаемое значение: true, если значения входных переменных равны; false, если значения входных переменных не равны.

bool AssertStringsEqual(string gotten, string needed) – функция для тестирования двух строковых переменных типа на равенство (полученной в результате работы тестируемого юнита и ожидаемой)

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

Возвращаемое значение: true, если значения входных переменных равны; false, если значения входных переменных не равны.

Функции сравнения массивов.

bool AssertBoolArraysEqual(bool gotten[], bool needed[]) – функция для тестирования двух массивов булевых переменных на равенство (полученного в результате работы тестируемого юнита и ожидаемого).

Параметры: bool gotten[]– массив, полученный в результате работы тестируемой функции, bool needed[] – ожидаемый массив.

Возвращаемое значение: true, если массивы равной длины и совпадают поэлементно, false – в противном случае.

bool AssertIntArraysEqual(int gotten[], int needed[]) – функция для тестирования двух массивов целочисленных переменных на равенство (полученного в результате работы тестируемого юнита и ожидаемого).

Параметры: int gotten[] – массив, полученный в результате работы тестируемой функции, int needed[] – ожидаемый массив.

Возвращаемое значение: true, если массивы равной длины и совпадают поэлементно, false – в противном случае.

bool AssertDoubleArraysEqual(double gotten[], double needed[]) – функция для тестирования двух массивов вещественных переменных на равенство (полученного в результате работы тестируемого юнита и ожидаемого).

Параметры: int gotten[] – массив, полученный в результате работы тестируемой функции, int needed[] – ожидаемый массив.

Возвращаемое значение: true, если массивы равной длины и совпадают поэлементно, false – в противном случае.

bool AssertStringArraysEqual(string gotten[], string needed[]) – функция для тестирования двух массивов строковых переменных на равенство (полученного в результате работы тестируемого юнита и ожидаемого).

Параметры: string gotten[] – массив, полученный в результате работы тестируемой функции, string needed[] – ожидаемый массив.

Возвращаемое значение: true, если массивы равной длины и совпадают поэлементно, false – в противном случае.

bool AssertColorArraysEqual(color gotten[], color needed[]) – функция для тестирования двух массивов значений цвета на равенство (полученного в результате работы тестируемого юнита и ожидаемого).

Параметры: color gotten[] – массив, полученный в результате работы тестируемой функции, color needed[] – ожидаемый массив.

Возвращаемое значение: true, если массивы равной длины и совпадают поэлементно, false – в противном случае.

bool AssertDatetimeArraysEqual(datetime gotten[], datetime needed[]) –функция для тестирования двух массивов дат на равенство (полученного в результате работы тестируемого юнита и ожидаемого).

Параметры: datetime gotten[] – массив, полученный в результате работы тестируемой функции, datetime needed[] – ожидаемый массив.

Возвращаемое значение: true, если массивы равной длины и совпадают поэлементно, false – в противном случае।


Код с полной документацией лежит тут.