summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/membero.adb8
-rw-r--r--test/rembero.adb26
-rw-r--r--test/trees.adb71
3 files changed, 102 insertions, 3 deletions
diff --git a/test/membero.adb b/test/membero.adb
index 89e7f2e..827e6ab 100644
--- a/test/membero.adb
+++ b/test/membero.adb
@@ -44,8 +44,16 @@ begin
Verse.Member (Verse.Fresh ("result") & Test_Item);
+ TIO.Put_Line ("Raw results:");
TIO.Put_Line (Printer.Image (Verse));
+ TIO.New_Line;
+
+ TIO.Put_Line ("Reified results:");
+ for Subst of Verse.Take_All loop
+ TIO.Put_Line (Printer.Image (Resolve_First (Subst, "result")));
+ end loop;
+
end Membero;
diff --git a/test/rembero.adb b/test/rembero.adb
index e2f9a87..669d42a 100644
--- a/test/rembero.adb
+++ b/test/rembero.adb
@@ -8,13 +8,15 @@
with
+ Ada.Characters.Latin_1,
Ada.Text_IO,
Kompsos.Pretty_Print;
procedure Rembero is
- package TIO renames Ada.Text_IO;
+ package Latin renames Ada.Characters.Latin_1;
+ package TIO renames Ada.Text_IO;
package InKomp is new Kompsos (Integer);
@@ -29,13 +31,31 @@ begin
TIO.Put_Line ("Test program to check if calculating an infinite number of results works.");
TIO.New_Line;
TIO.Put_Line ("It will call rembero with variables as all arguments.");
- TIO.Put_Line ("The first 10 results will be displayed.");
+ TIO.Put_Line ("The first 5 results will be displayed.");
TIO.New_Line;
Verse.Remove (Verse.Fresh ("item") & Verse.Fresh ("list") & Verse.Fresh ("out"));
- TIO.Put_Line (Printer.Image (Verse.Take (10)));
+ declare
+ First_Five : constant State_Array := Verse.Take (5);
+ begin
+ TIO.Put_Line ("Raw results:");
+ TIO.Put_Line (Printer.Image (First_Five));
+
+ TIO.New_Line;
+
+ TIO.Put_Line ("Reified results:");
+ for Index in First_Five'Range loop
+ TIO.Put_Line ("#" & Printer.Image (Index) & ":");
+ TIO.Put_Line (Latin.HT & "item: " &
+ Printer.Image (Resolve_First (First_Five (Index), "item")));
+ TIO.Put_Line (Latin.HT & "list: " &
+ Printer.Image (Resolve_First (First_Five (Index), "list")));
+ TIO.Put_Line (Latin.HT & "out: " &
+ Printer.Image (Resolve_First (First_Five (Index), "out")));
+ end loop;
+ end;
end Rembero;
diff --git a/test/trees.adb b/test/trees.adb
new file mode 100644
index 0000000..7f199ad
--- /dev/null
+++ b/test/trees.adb
@@ -0,0 +1,71 @@
+
+
+-- Programmed by Jedidiah Barber
+-- Licensed under the Sunset License v1.0
+
+-- See license.txt for further details
+
+
+with
+
+ Ada.Containers.Multiway_Trees,
+ Ada.Text_IO,
+ Kompsos.Advanced_Reify,
+ Kompsos.Pretty_Print;
+
+
+procedure Trees is
+
+ package TIO renames Ada.Text_IO;
+
+
+ package InKomp is new Kompsos (Integer);
+ use InKomp;
+
+
+ type Integer_Array is array (Positive range <>) of Integer;
+
+ function Var_Minus_One
+ (Item : in Term)
+ return Integer is
+ begin
+ return -1;
+ end Var_Minus_One;
+
+ package Int_Trees is new Ada.Containers.Multiway_Trees (Integer);
+
+ package Reify is new InKomp.Advanced_Reify
+ (Element_Array => Integer_Array,
+ Null_Element => 0,
+ Variable_Convert => Var_Minus_One,
+ Element_Trees => Int_Trees);
+
+
+ package Printer is new InKomp.Pretty_Print (Integer'Image);
+
+
+ Test_Item : constant Term := T (T (T (1) & T (2) & T (3)) & T (T (10) & T (20)));
+
+ Result : constant Int_Trees.Tree := Reify.To_Tree (Test_Item);
+
+begin
+
+ TIO.Put_Line ("Test term is " & Printer.Image (Test_Item));
+
+ TIO.New_Line;
+
+ TIO.Put_Line ("Root has " &
+ Printer.Image (Integer (Int_Trees.Child_Count (Result.Root))) & " children.");
+
+ for Child in Result.Iterate_Children (Result.Root) loop
+ TIO.Put ("Child has " &
+ Printer.Image (Integer (Int_Trees.Child_Count (Child))) & " children:");
+ for Child_Child in Result.Iterate_Children (Child) loop
+ TIO.Put (" " & Printer.Image (Int_Trees.Element (Child_Child)));
+ end loop;
+ TIO.New_Line;
+ end loop;
+
+end Trees;
+
+