mirror of
https://github.com/AntKrotov/oberon-07-compiler.git
synced 2026-10-05 09:45:47 +00:00
Svi (#19)
* Форматирвоание READMY * Добавление целей сборки под Linux * Мзсенение целевого пакета сборки * Добавление компилятора в изолированном каталоге * Изменение регистра литер (стандарт для Linux) * Добавление пересобранного компилятора * Добавление тестов, целей сборки * Добавление тестов * Упрощение кода тестирования * Добавление комментариев в кож * Добавление теста на go Co-authored-by: SVI <shipkovvi@atomsbt.ru>
This commit is contained in:
1 parent
81e32b72ab
commit
39f6458109
20 files changed
+212
-5
No files matched your search
@@ -7,15 +7,19 @@
|
||||
|
||||
MODULE COLLECTIONS;
|
||||
|
||||
IMPORT Out;
|
||||
|
||||
TYPE
|
||||
|
||||
(* Элемент коллекции. Поле "link" содержит ссылку на свой же тип в
|
||||
качестве продолжения цепочки *)
|
||||
ITEM* = POINTER TO RECORD
|
||||
|
||||
link: ITEM
|
||||
|
||||
END;
|
||||
|
||||
(* Коллекция содержит "голову" всей цепочки *)
|
||||
COLLECTION* = POINTER TO RECORD
|
||||
|
||||
last: ITEM
|
||||
@@ -23,6 +27,11 @@ TYPE
|
||||
END;
|
||||
|
||||
|
||||
(* push -- добавляет в коллецию элемент.
|
||||
Элемент голову коллекции пристраивает себе в хвост,
|
||||
а сам становится голвоой коллекции. Поэтому элемент
|
||||
НЕ МОЖЕТ быть NIL. #TODO: не хватает проверок на то, что коллекция
|
||||
не NIL и элемент не NIL. Ошибка вываливается ВО ВРЕМЯ РАБОТЫ. *)
|
||||
PROCEDURE push* (collection: COLLECTION; item: ITEM);
|
||||
BEGIN
|
||||
item.link := collection.last;
|
||||
@@ -55,5 +64,30 @@ BEGIN
|
||||
RETURN collection
|
||||
END create;
|
||||
|
||||
(* --------- TESTING ------------ *)
|
||||
PROCEDURE test*():BOOLEAN;
|
||||
VAR
|
||||
collection: COLLECTION;
|
||||
res: BOOLEAN;
|
||||
item: ITEM;
|
||||
BEGIN
|
||||
Out.String("test.COLLECTIONS.create()");Out.Ln;
|
||||
collection := create();
|
||||
IF collection = NIL THEN
|
||||
Out.String("test.COLLECTIONS.create(): collection = NIL");Out.Ln;
|
||||
res := FALSE;
|
||||
END;
|
||||
IF collection.last # NIL THEN
|
||||
Out.String("test.COLLECTIONS.create(): collection.last # NIL");Out.Ln;
|
||||
res := FALSE;
|
||||
END;
|
||||
Out.String("test.COLLECTIONS.push()");Out.Ln;
|
||||
push(collection, item);
|
||||
IF collection.last # item THEN
|
||||
Out.String("test.COLLECTIONS.push(): collection.last # item");Out.Ln;
|
||||
res := FALSE;
|
||||
END;
|
||||
RETURN res
|
||||
END test;
|
||||
|
||||
END COLLECTIONS.
|
||||
Executable
BIN
Binary file not shown.
@@ -0,0 +1,19 @@
|
||||
MODULE TESTING;
|
||||
(*
|
||||
Testing for compiler Anton Krotov
|
||||
(c) svi, BSD-2.
|
||||
*)
|
||||
|
||||
IMPORT Out, CT:=COLLECTIONS;
|
||||
|
||||
VAR
|
||||
res: BOOLEAN;
|
||||
|
||||
BEGIN
|
||||
Out.String("Testing begin...");Out.Ln;
|
||||
res := CT.test();
|
||||
IF res # FALSE THEN
|
||||
Out.String("Test COLLECTIOS/create(): failed");Out.Ln();
|
||||
END;
|
||||
Out.String("Test COLLECTIOS/create(): ok");Out.Ln();
|
||||
END TESTING.
|
||||
Reference in new issue
Block a user