diff --git a/apps/csys/lib/application.ex b/apps/csys/lib/application.ex index f45fc5a..f945ffd 100644 --- a/apps/csys/lib/application.ex +++ b/apps/csys/lib/application.ex @@ -12,7 +12,7 @@ defmodule Scopes.CSys.Application do IO.puts("Hello CSys") Logger.info(Util.show [type, args]) children = [ - Scopes.Core.Environ, + {Scopes.Core.Environ, init: []}, Scopes.CSys.Server.Endpoint ] opts = [strategy: :one_for_one, name: Scopes.CSys.Supervisor] diff --git a/lib/core/environ.ex b/lib/core/environ.ex index 73320ea..988f46d 100644 --- a/lib/core/environ.ex +++ b/lib/core/environ.ex @@ -2,6 +2,7 @@ defmodule Scopes.Core.Environ do @cell_registry __MODULE__.Cells alias Scopes.Core + alias Scopes.Core.Actor alias Scopes.Core.Shape defmodule State do @@ -13,8 +14,13 @@ defmodule Scopes.Core.Environ do start: {__MODULE__, :start_link, opts}} end - def start_link() do + def start_link(opts \\ []) do + #IO.inspect(opts) Registry.start_link(keys: :unique, name: @cell_registry) + zero_spec = opts[:zero_spec] + if zero_spec do + setup(zero_spec, opts[:init_seq] || []) + end end def cells(), do: @cell_registry @@ -22,9 +28,10 @@ defmodule Scopes.Core.Environ do def setup({state, proc}, init_seq, proc_env \\ &proc_env/2) do env_scope = {%State{init_seq: init_seq}, proc_env, [], self()} env = Core.neuron(env_scope) + Actor.register(env, cells(), {:env, :c00}) msg = Shape.create([:csys, :zero], data: %{addr: [:csys, :c00, "0-0"]}) - proc = {state, proc, [], env} - Core.create(msg, proc) + scope = {state, proc, [], env} + Core.create(msg, scope) env end diff --git a/test/core/actor_test.exs b/test/core/actor_test.exs index a004846..11b2f2e 100644 --- a/test/core/actor_test.exs +++ b/test/core/actor_test.exs @@ -1,5 +1,5 @@ defmodule Scopes.CoreActorTest do - use ExUnit.Case, async: true + use ExUnit.Case, async: false alias Scopes.Core.Actor describe "actors:" do diff --git a/test/core/core_test.exs b/test/core/core_test.exs index e8a27a2..12db1fb 100644 --- a/test/core/core_test.exs +++ b/test/core/core_test.exs @@ -17,9 +17,12 @@ defmodule Scopes.CoreTest do describe "core-basic:" do test "minimal-b1" do - Environ.start_link() - env = Environ.setup(Program.prepare_basic(), Program.init_seq_b1()) + Environ.start_link( + zero_spec: Program.prepare_basic(), + init_seq: Program.init_seq_b1()) + #env = Environ.setup(Program.prepare_basic(), Program.init_seq_b1()) Process.sleep(50) + [{env, _val}] = Registry.lookup(Environ.cells(), {:env, :c00}) Environ.forward_value(env, [:csys, :c00, "0-0"], 0) assert 0 = receive_data().value Environ.forward_value(env, [:csys, :s01, "1-0"], 1) diff --git a/test/core/shape_test.exs b/test/core/shape_test.exs index 584d47d..38d8cb2 100644 --- a/test/core/shape_test.exs +++ b/test/core/shape_test.exs @@ -1,5 +1,5 @@ defmodule Scopes.CoreShapeTest do - use ExUnit.Case, async: true + use ExUnit.Case, async: false alias Scopes.Core.Shape diff --git a/test/demo_test.exs b/test/demo_test.exs index 9245b20..37fcd00 100644 --- a/test/demo_test.exs +++ b/test/demo_test.exs @@ -1,5 +1,5 @@ defmodule Scopes.DemoTest do - use ExUnit.Case, async: true + use ExUnit.Case, async: false alias Scopes.Demo.Hello doctest Hello diff --git a/test/util_test.exs b/test/util_test.exs index d95b84b..80af92a 100644 --- a/test/util_test.exs +++ b/test/util_test.exs @@ -1,5 +1,5 @@ defmodule Scopes.UtilTest do - use ExUnit.Case, async: true + use ExUnit.Case, async: false alias Scopes.Util require Util