summaryrefslogtreecommitdiff
path: root/ocaml/test/test_arms.ml
diff options
context:
space:
mode:
Diffstat (limited to 'ocaml/test/test_arms.ml')
-rw-r--r--ocaml/test/test_arms.ml73
1 files changed, 73 insertions, 0 deletions
diff --git a/ocaml/test/test_arms.ml b/ocaml/test/test_arms.ml
new file mode 100644
index 0000000..0847f6f
--- /dev/null
+++ b/ocaml/test/test_arms.ml
@@ -0,0 +1,73 @@
+(* Test Different Arms
+ *
+ * Try calling different arms of the Arvo kernel
+ *)
+
+open Nock_lib
+
+let test_arm arm_num kernel =
+ Printf.printf "Testing arm %d: " arm_num;
+
+ try
+ let formula = Noun.cell (Noun.atom 9)
+ (Noun.cell (Noun.atom arm_num)
+ (Noun.cell (Noun.atom 0) (Noun.atom 1))) in
+
+ let _result = Nock.nock_on kernel formula in
+ Printf.printf "✓ Success!\n";
+ true
+ with e ->
+ Printf.printf "✗ %s\n" (Printexc.to_string e);
+ false
+
+let test_arms env =
+ Printf.printf "🔍 Testing Different Arms of Arvo\n\n";
+
+ Eio.Switch.run @@ fun _sw ->
+ let fs = Eio.Stdenv.fs env in
+
+ (* Load ivory pill *)
+ let state = State.create () in
+ match Boot.boot_from_file ~fs state "ivory.pill" with
+ | Error msg ->
+ Printf.printf "✗ Failed to load pill: %s\n%!" msg
+ | Ok () ->
+ let kernel = State.get_arvo state in
+
+ Printf.printf "Trying arms 2 through 10...\n\n";
+
+ for arm = 2 to 10 do
+ let _ = test_arm arm kernel in
+ ()
+ done;
+
+ Printf.printf "\nNow trying specific formulas:\n\n";
+
+ (* Try the actual C Vere poke formula from u3v_poke *)
+ Printf.printf "C Vere style (simplified): ";
+ try
+ (* Subject is [now kernel] typically *)
+ let now = Noun.atom 0 in
+ let poke_subject = Noun.cell now kernel in
+
+ (* Formula to replace sample and call *)
+ (* [8 kernel-with-new-sample [9 2 [0 1]]] *)
+ let formula = Noun.cell (Noun.atom 8)
+ (Noun.cell kernel
+ (Noun.cell (Noun.atom 9)
+ (Noun.cell (Noun.atom 2)
+ (Noun.cell (Noun.atom 0) (Noun.atom 1))))) in
+
+ let _result = Nock.nock_on poke_subject formula in
+ Printf.printf "✓ Success!\n"
+ with e ->
+ Printf.printf "✗ %s\n" (Printexc.to_string e)
+
+let () =
+ Printf.printf "\n";
+ Printf.printf "═══════════════════════════════════════════════════════════\n";
+ Printf.printf " Testing Arms of Arvo Kernel\n";
+ Printf.printf "═══════════════════════════════════════════════════════════\n";
+ Printf.printf "\n";
+
+ Eio_main.run test_arms