summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2020-11-03 18:04:07 +0100
committerNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2020-11-03 18:04:07 +0100
commit5b3884e1850050dcf2c6928b5ee55b65ef6d989e (patch)
tree074180c2e0f29320ac7a2b3eb08a789eb67210d4
parentc2cbe46aef61efee72bf5af7771a78d16472a4e2 (diff)
...
-rw-r--r--data/unit-testing/access_pointer.fate34
-rw-r--r--data/unit-testing/add_element_at.fate41
-rw-r--r--src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/ComputationCompiler.java11
-rw-r--r--src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/InstructionCompiler.java11
-rw-r--r--src/core/src/tonkadur/wyrd/v1/compiler/util/InsertAt.java1
5 files changed, 95 insertions, 3 deletions
diff --git a/data/unit-testing/access_pointer.fate b/data/unit-testing/access_pointer.fate
index 39af580..e9218e9 100644
--- a/data/unit-testing/access_pointer.fate
+++ b/data/unit-testing/access_pointer.fate
@@ -1,5 +1,9 @@
(fate_version 1)
+(global string test_name)
+
+(set test_name ( ACCESS POINTER ))
+
(global (list int) li)
(global (ptr (list int)) li_ptr)
@@ -17,6 +21,36 @@
)
)
+(global (list (list int)) lili)
+
+(for (set i 0) (=< i 10) (set i (+ i 1))
+ (add! (range 0 i 1) lili)
+)
+
+(assert (= (at (access_ptr (at (access_ptr lili 10)) 0)) 0) [FAILED] (var test_name) lili.10.0 was (at (access_ptr (at (access_ptr lili 10)) 0)) for part A.)
+(assert (= (at (access_ptr (at (access_ptr lili 9)) 1)) 1) [FAILED] (var test_name) lili.9.1 was (at (access_ptr (at (access_ptr lili 9)) 1)) for part A.)
+(assert (= (at (access_ptr (at (access_ptr lili 8)) 2)) 2) [FAILED] (var test_name) lili.8.2 was (at (access_ptr (at (access_ptr lili 8)) 2)) for part A.)
+(assert (= (at (access_ptr (at (access_ptr lili 7)) 3)) 3) [FAILED] (var test_name) lili.7.3 was (at (access_ptr (at (access_ptr lili 7)) 3)) for part A.)
+(assert (= (at (access_ptr (at (access_ptr lili 6)) 4)) 4) [FAILED] (var test_name) lili.6.4 was (at (access_ptr (at (access_ptr lili 6)) 4)) for part A.)
+(assert (= (at (access_ptr (at (access_ptr lili 5)) 5)) 5) [FAILED] (var test_name) lili.5.5 was (at (access_ptr (at (access_ptr lili 5)) 5)) for part A.)
+(assert (= (at (access_ptr (at (access_ptr lili 4)) 3)) 3) [FAILED] (var test_name) lili.4.3 was (at (access_ptr (at (access_ptr lili 4)) 3)) for part A.)
+(assert (= (at (access_ptr (at (access_ptr lili 3)) 2)) 2) [FAILED] (var test_name) lili.3.2 was (at (access_ptr (at (access_ptr lili 3)) 2)) for part A.)
+(assert (= (at (access_ptr (at (access_ptr lili 2)) 1)) 1) [FAILED] (var test_name) lili.2.1 was (at (access_ptr (at (access_ptr lili 2)) 1)) for part A.)
+(assert (= (at (access_ptr (at (access_ptr lili 1)) 0)) 0) [FAILED] (var test_name) lili.1.0 was (at (access_ptr (at (access_ptr lili 1)) 0)) for part A.)
+(assert (= (at (access_ptr (at (access_ptr lili 0)) 0)) 0) [FAILED] (var test_name) lili.0.0 was (at (access_ptr (at (access_ptr lili 0)) 0)) for part A.)
+
+(assert (= (at (access_ptr lili.10 0)) 0) [FAILED] (var test_name) lili.10.0 was (at (access_ptr lili.10 0)) for part B.)
+(assert (= (at (access_ptr lili.9 1)) 1) [FAILED] (var test_name) lili.9.1 was (at (access_ptr lili.9 1)) for part B.)
+(assert (= (at (access_ptr lili.8 2)) 2) [FAILED] (var test_name) lili.8.2 was (at (access_ptr lili.8 2)) for part B.)
+(assert (= (at (access_ptr lili.7 3)) 3) [FAILED] (var test_name) lili.7.3 was (at (access_ptr lili.7 3)) for part B.)
+(assert (= (at (access_ptr lili.6 4)) 4) [FAILED] (var test_name) lili.6.4 was (at (access_ptr lili.6 4)) for part B.)
+(assert (= (at (access_ptr lili.5 5)) 5) [FAILED] (var test_name) lili.5.5 was (at (access_ptr lili.5 5)) for part B.)
+(assert (= (at (access_ptr lili.4 3)) 3) [FAILED] (var test_name) lili.4.3 was (at (access_ptr lili.4 3)) for part B.)
+(assert (= (at (access_ptr lili.3 2)) 2) [FAILED] (var test_name) lili.3.2 was (at (access_ptr lili.3 2)) for part B.)
+(assert (= (at (access_ptr lili.2 1)) 1) [FAILED] (var test_name) lili.2.1 was (at (access_ptr lili.2 1)) for part B.)
+(assert (= (at (access_ptr lili.1 0)) 0) [FAILED] (var test_name) lili.1.0 was (at (access_ptr lili.1 0)) for part B.)
+(assert (= (at (access_ptr lili.0 0)) 0) [FAILED] (var test_name) lili.0.0 was (at (access_ptr lili.0 0)) for part B.)
+
[COMPLETED] ACCESS POINTER
(end)
diff --git a/data/unit-testing/add_element_at.fate b/data/unit-testing/add_element_at.fate
new file mode 100644
index 0000000..97c0b3c
--- /dev/null
+++ b/data/unit-testing/add_element_at.fate
@@ -0,0 +1,41 @@
+(fate_version 1)
+
+(global string test_name)
+
+(set test_name ( ADD ELEMENT AT ))
+
+(global (list int) li0)
+(global (list int) li1)
+
+(set li0 (add_element_at 0 0 li0))
+(set li0 (add_element_at 1 1 li0))
+(set li0 (add_element_at 2 2 li0))
+(set li0 (add_element_at 0 -1 li0))
+(set li0 (add_element_at 0 -3 li0))
+(set li0 (add_element_at 1 -2 li0))
+(set li0 (add_element_at 44 3 li0))
+(set li0 (add_element_at -44 -4 li0))
+
+(add_element_at! 0 0 li1)
+(add_element_at! 1 1 li1)
+(add_element_at! 2 2 li1)
+(add_element_at! 0 -1 li1)
+(add_element_at! 0 -3 li1)
+(add_element_at! 1 -2 li1)
+(add_element_at! 44 3 li1)
+(add_element_at! -44 -4 li1)
+
+(assert (= (var li0) (var li1)) [FAILED] (var test_name) equality.)
+
+(assert (= (var li0.0) (var li1.0) -4) [FAILED] (var test_name) at 0: (var li0.0), (var li1.0).)
+(assert (= (var li0.1) (var li1.1) -3) [FAILED] (var test_name) at 1: (var li0.1), (var li1.1).)
+(assert (= (var li0.2) (var li1.2) -2) [FAILED] (var test_name) at 2: (var li0.2), (var li1.2).)
+(assert (= (var li0.3) (var li1.3) -1) [FAILED] (var test_name) at 3: (var li0.3), (var li1.3).)
+(assert (= (var li0.4) (var li1.4) 0) [FAILED] (var test_name) at 4: (var li0.4), (var li1.4).)
+(assert (= (var li0.5) (var li1.5) 1) [FAILED] (var test_name) at 5: (var li0.5), (var li1.5).)
+(assert (= (var li0.6) (var li1.6) 2) [FAILED] (var test_name) at 6: (var li0.6), (var li1.6).)
+(assert (= (var li0.7) (var li1.7) 3) [FAILED] (var test_name) at 7: (var li0.6), (var li1.6).)
+
+[COMPLETED] (var test_name)
+
+(end)
diff --git a/src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/ComputationCompiler.java b/src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/ComputationCompiler.java
index 0b316e1..30fe7b8 100644
--- a/src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/ComputationCompiler.java
+++ b/src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/ComputationCompiler.java
@@ -2170,7 +2170,16 @@ implements tonkadur.fate.v1.lang.meta.ComputationVisitor
collection_size.get_value()
),
collection_size.get_value(),
- index_compiler.get_computation()
+ new IfElseComputation
+ (
+ Operation.less_than
+ (
+ index_compiler.get_computation(),
+ Constant.ZERO
+ ),
+ Constant.ZERO,
+ index_compiler.get_computation()
+ )
)
)
);
diff --git a/src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/InstructionCompiler.java b/src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/InstructionCompiler.java
index 679fcea..438dde7 100644
--- a/src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/InstructionCompiler.java
+++ b/src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/InstructionCompiler.java
@@ -253,7 +253,16 @@ implements tonkadur.fate.v1.lang.meta.InstructionVisitor
new Size(collection_compiler.get_address())
),
new Size(collection_compiler.get_address()),
- index_compiler.get_computation()
+ new IfElseComputation
+ (
+ Operation.less_than
+ (
+ index_compiler.get_computation(),
+ Constant.ZERO
+ ),
+ Constant.ZERO,
+ index_compiler.get_computation()
+ )
)
)
);
diff --git a/src/core/src/tonkadur/wyrd/v1/compiler/util/InsertAt.java b/src/core/src/tonkadur/wyrd/v1/compiler/util/InsertAt.java
index 71c4bc1..b01e007 100644
--- a/src/core/src/tonkadur/wyrd/v1/compiler/util/InsertAt.java
+++ b/src/core/src/tonkadur/wyrd/v1/compiler/util/InsertAt.java
@@ -74,7 +74,6 @@ public class InsertAt
value_of_index = new ValueOf(index);
-
/* (set .end collection_size) */
result.add(new SetValue(end.get_address(), collection_size));