defmodule Scopes.CSysTest do use ExUnit.Case, async: false @moduletag timeout: 5000 #alias Scopes.CSys alias Scopes.CSys.Environ alias Scopes.CSys.Program alias Scopes.Shape def receive_select(head) do assert_receive {^head, info} {head, info} end def receive_data(head \\ [:csys, :data]) do Shape.data(receive_select(head)) end describe "basic-program:" do test "minimal-b1" do env = Environ.setup(Program.prepare_basic(), Program.init_seq_b1()) Process.sleep(30) Environ.forward_value(env, [:csys, :c00, {0, 0}], 0) assert 0 = receive_data().value Environ.forward_value(env, [:csys, :s01, {1, 0}], 1) assert receive_data().value == 1 #assert receive_data().value in [-1, 1] Environ.forward_value(env, [:csys, :s01, {1, 1}], 3) assert receive_data().value in [2, 3] assert receive_data().value in [2, 3] refute_received msg, "unhandled message(s): #{inspect(msg)}" end test "recursive-1" do env = Environ.setup(Program.prepare_basic(), Program.init_recursive_1()) Process.sleep(30) Environ.forward_value(env, [:csys, :c00, {0, 0}], 42) assert receive_data().value == 42 refute_received msg, "unhandled message(s): #{inspect(msg)}" end end end