[an error occurred while processing this directive]

Наборы тестов для преобразования Loop Distribution и конвертера C2HDL

Наборы тестов получены с помощью генератора тестов и проверены на синтаксическую и семантическую корректность компилятором из пакета MinGW.

Набор тестов для преобразования Loop Distribution

Набор тестов состоит из программ на языке C. Тело каждой программы состоит из одного оператора цикла (цикл for). Тело оператора цикла представлено последовательностью из множества операторов присвоения, условных операторов, операторов цикла с предусловием, операторов выбора и операторов цикла с параметром. Последовательность операторов может быть разбита, по крайней мере, на два блока, удовлетворяющим всем следующим условиям:

Критерий полноты набора тестов:

Набор тестов полон, если в нем встречаются все возможные четверки, которые можно составить из оператора присвоения, условного оператора (с одной и двумя ветвями), оператора цикла с предусловием, оператора выбора и оператора цикла с параметром. Мощность набора тестов: 64 = 1296.

Конфигурационный файл, на основе которого генерируются тесты, имеет следующий вид:

<?xml version="1.0" encoding="UTF-8"?>
<program class="loop_distribution">
	<params blockDependency="desc" />
	<body>
		<statFor m="4" statAssign="1" statIf="1" StatIfThenElse="1" StatWhile="1" StatSwitch="1" StatFor="1">
			<block m="2">
				<statIf statAssign="1" statIf="1" StatIfThenElse="1" StatWhile="1" StatSwitch="1" StatFor="1" StatGoTo="1" />
				<StatIfThenElse statAssign="1" statIf="1" StatIfThenElse="1" StatWhile="1" StatSwitch="1" StatFor="1" StatGoTo="1" />
				<StatWhile statAssign="1" statIf="1" StatBreak="1" StatContinue="1" />
				<StatSwitch statAssign="1" statIf="1" StatIfThenElse="1" StatWhile="1" StatSwitch="1" StatFor="1" StatGoTo="1" />
				<StatFor statAssign="1" statIf="1" StatIfThenElse="1" StatWhile="1" StatSwitch="1" StatFor="1" StatGoTo="1" />
			</block>
			<block m="2">
				<statIf statAssign="1" statIf="1" StatIfThenElse="1" StatWhile="1" StatSwitch="1" StatFor="1" StatGoTo="1" />
				<StatIfThenElse statAssign="1" statIf="1" StatIfThenElse="1" StatWhile="1" StatSwitch="1" StatFor="1" StatGoTo="1" />
				<StatWhile statAssign="1" statIf="1" StatBreak="1" StatContinue="1" />
				<StatSwitch statAssign="1" statIf="1" StatIfThenElse="1" StatWhile="1" StatSwitch="1" StatFor="1" StatGoTo="1" />
				<StatFor statAssign="1" statIf="1" StatIfThenElse="1" StatWhile="1" StatSwitch="1" StatFor="1" StatGoTo="1" />
			</block>
		</statFor>
	</body>
</program>

С помощью конфигурационного файла задается общая структура тестовых программ и накладываются ограничения на информационные зависимости. Тестовая программа обязательно должна содержать оператор цикла с параметром FOR (элемент <statFor> непосредственно вложен в элемент <body>). Имена операторов, которые могут быть непосредственно вложены в тело цикла, в конфигурационном файле объявлены как атрибуты элемента <statFor>. Атрибут m определяет, что тело оператора цикла содержит одну из возможных четверок операторов, объявленных в атрибутах элемента <statFor>. Тело оператора цикла с параметром разделено на 2 блока (элементы <block>, вложенные в элемент <statFor>). Атрибуты m элементов <block> определяют, что в каждом блоке содержится по 2 оператора. Атрибут blockDependency элемента <params> определяет, что между любыми двумя блоками в программе могут встречаться информационные зависимости, направленные только сверху вниз.
Скачать набор тестов для преобразования «LoopDistribution»

Набор тестов для конвертера C2HDL

Набор тестов состоит из программ на языке C. Тело каждой программы состоит из пяти подряд идущих операторов цикла (цикл FOR). Каждое тело оператора цикла состоит из последовательности операторов присвоения (от 10 до 50 операторов в последовательности).
Последовательности операторов присвоения в теле цикла удовлетворяются всем следующим условиям:

Критерий полноты набора тестов:

Выделим набор операций M:
ОперацияЗначение
1 * Умножение
2 / Деление и целочисленное деление нацело
3 % Деление по модулю и остаток от деления
4 || Логическое ИЛИ
5 && Логическое И
6 ^ Поразрядное исключающее ИЛИ
7 << Поразрядный сдвиг влево
8 >> Поразрядный сдвиг вправо
Набор тестов полон, если в нем встречаются все возможные тройки из множества M. Мощность набора тестов: 83 = 512.

Конфигурационный файл, на основе которого генерируются тесты, имеет следующий вид:

<?xml version="1.0" encoding="UTF-8"?>
<program class="C2HDL">
	<params blockDependency="desc" />
	<body>
		<statFor m="5">
			<block m="10..50">
				<statAssign m="3">
					<ops><![CDATA[* / % || && ^ << >>]]></ops>
				</statAssign>			
			</block>
		</statFor>
	</body>
</program>

Тело программы состоит из пяти подряд идущих операторов цикла FOR (элемент <statFor> с атрибутом m = 5). Тело цикла составляет от 10 до 50 операторов присвоения. Каждый оператор присвоения считается отдельным блоком. Для оператора присвоения выделено 8 операций (элемент <ops>). Атрибут m элемента <statAssign> указывает, что должен быть произведен перебор всех троек выделенных операций. Наряду с выделенными операциями в правой части оператора присвоения могут так же встречаться операции «+» и «–». Атрибут blockDependency элемента <params> определяет, что между любыми двумя блоками в программе могут встречаться информационные зависимости, направленные только сверху вниз.
Скачать набор тестов для конвертера C2HDL

  Рейтинг@Mail.ru © Optimizing Parallelizing System Group 2001-2017