Test - mmshihov/r8 GitHub Wiki
Тестирование
Обучение программированию на R8 хотелось бы осовременить. Т.е. разработка программ по заданию должна начинаться с создания тестов.
R8 считывает ввод из порта командами in
, выводит результаты командами out
.
Тест, соответственно, должен выводить в порт (извне, моделируя ввод пользователя) то, что считывается программой на R8 и считывать из порта вывод программы. Таким образом, отдельно взятый тест это не пара вход-выход, это линейная последовательность вводимых и считываемых (а затем сверяемых) тестом байт.
Например, если программа пользователя находит произведение двух байт (ввод программы), и выводит два байта результата, и заранее оговорено, что сначала выводится старший байт, а затем --- младший, то тест будет таким:
out 4;
out 5;
in 0;
in 20;
Логично объединить несколько тестов в один файл и тогда получим нечто вроде:
test "4*5=20" {
out 4;
out 5;
in 0; //в аргументе in указывается константа-ожидаемый результат (вывод программы)
in 20;
}
test "100*5=500(i.e. 0x1F4)" {
out 100;
out 5;
in 1;
in 0xF4;
}
* * *
Тесты должны загружаться R8 из файла и по желанию пользователя выполняться автоматически.
Прогон очередного теста в файле выполняется независимо от результатов проверки предыдущих тестов. По каждому тесту выводится результат.