csys: Environ initialization sequence basically working

This commit is contained in:
Helmut Merz 2026-05-20 13:52:05 +02:00
parent 38207ab8d9
commit b223400225

View file

@ -16,25 +16,37 @@ defmodule Scopes.CSysTest do
Shape.data(receive_select(head))
end
def init_seq() do [
fn [zero | _ns] -> CSys.send_message(zero, [:csys, :create, :pred],
%{op: [CSys.data_only(), Program.negate()]}) end,
fn [one | _ns] -> CSys.send_message(one, [:csys, :create, :succ],
%{op: CSys.data_only()}) end,
fn [two | _ns] -> CSys.send_message(two, [:csys, :create, :pred]) end,
fn [three | others] ->
zero = List.last(others)
CSys.send_message(three, [:csys, :connect], %{target: zero})
end
]
end
describe "basic:" do
test "minimal-neural-net" do
_env = Environ.setup(Program.prepare_basic())
_env = Environ.setup(Program.prepare_basic(), init_seq())
zero = receive_data([:csys, :created]).new
CSys.send_value(zero, 0)
assert 0 = receive_data().value
CSys.send_message(zero, [:csys, :create, :pred],
%{op: [CSys.data_only(), Program.negate()]})
#CSys.send_message(zero, [:csys, :create, :pred],
# %{op: [CSys.data_only(), Program.negate()]})
one = receive_data([:csys, :created]).new
CSys.send_message(one, [:csys, :create, :succ], %{op: CSys.data_only()})
two = receive_data([:csys, :created]).new
Process.sleep(1)
#CSys.send_message(one, [:csys, :create, :succ], %{op: CSys.data_only()})
_two = receive_data([:csys, :created]).new
#CSys.send_message(two, [:csys, :create, :pred])
three = receive_data([:csys, :created]).new
#CSys.send_message(three, [:csys, :connect], %{target: zero})
Process.sleep(3)
CSys.send_value(one, 1)
assert receive_data().value == 1
#assert receive_data().value in [-1, 1]
CSys.send_message(two, [:csys, :create, :pred])
three = receive_data([:csys, :created]).new
CSys.send_message(three, [:csys, :connect], %{target: zero})
Process.sleep(3)
CSys.send_value(three, 3)
assert receive_data().value in [2, 3]
assert receive_data().value in [2, 3]