Похоже, вы не поместили pygame.
перед некоторыми из переменных здесь:
if event.key == K_SPACE: # Does not have pygame prefix
crazy = 1
if event.key == K_DOWN: # Does not have pygame prefix
dir = 's'
y_option -= 1
hotkey = 2
if event.key == pygame.K_w: # Does have pygame prefix
dir = 'w'
y_option += 1
hotkey = 1
if event.key == K_LEFT: # Does not have pygame prefix
dir = 'a'
if event.key == K_RIGHT: # Does not have pygame prefix
dir = 'd'
Добавьте pygame.
к ним, и оно должно обнаружить после этого. Странно, как это не вытянуло NameError
исключение во время работы.
program UnitTest1;
{$IFDEF CONSOLE_TESTRUNNER}
{$APPTYPE CONSOLE}
{$ENDIF}
uses
Forms, Classes, SysUtils,
TestFramework,
GUITestRunner,
TextTestRunner;
{$R *.RES}
type
TIntTestCase = class(TTestCase)
private
FValue: Integer;
public
constructor Create(AValue: Integer); reintroduce;
function GetName: string; override;
published
procedure Run;
end;
{ TIntTestCase }
constructor TIntTestCase.Create(AValue: Integer);
begin
inherited Create('Run');
FValue := AValue;
end;
function TIntTestCase.GetName: string;
begin
Result := Format('Run_%.3d', [FValue]);
end;
procedure TIntTestCase.Run;
begin
Check(FValue mod 2 = 0, Format('%d is not an even value', [FValue]));
end;
procedure RegisterTests;
const
TestCount = 10;
ValueHigh = 1000;
var
I: Integer;
begin
Randomize;
for I := 0 to TestCount - 1 do
RegisterTest(TIntTestCase.Create(Random(ValueHigh) + 1));
end;
begin
Application.Initialize;
RegisterTests;
if IsConsole then
TextTestRunner.RunRegisteredTests
else
GUITestRunner.RunRegisteredTests;
end.
Я сказал бы, что Вы в основном хотите иметь единственную "супертестовую" функцию, которая затем называет другие тесты, один для каждого файла данных. Это - то, что мы делаем с одним из наших тестов DUnit. Вы просто загружаете каждый доступный файл в свою очередь в цикле и запускаете тест с Проверкой как соответствующий.
Альтернатива, которую мы также используем в том же проекте протестировать заключительное приложение и его загрузку данных и анализ, должна использовать что-то как FinalBuilder для цикличного выполнения на приложении (по-видимому, Вы могли циклично выполниться на приложении DUnit также и использовать параметр) со всевозможными файлами данных. Приложение затем выполняет, делает анализ, затем выходит после сохранения. Другое приложение затем сравнивает получающиеся данные с идеальными данными и сообщает об отказе при необходимости.