From e53ce879001be51f6fda9a39a588ec7132a790a3 Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Fri, 15 May 2026 17:03:05 +0200 Subject: [PATCH] csys: more on synapse operations: filter_head, data_only --- lib/csys/csys.ex | 9 +++++++++ test/csys_test.exs | 9 ++------- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/lib/csys/csys.ex b/lib/csys/csys.ex index 8e3b9e2..b302acc 100644 --- a/lib/csys/csys.ex +++ b/lib/csys/csys.ex @@ -35,6 +35,15 @@ defmodule Scopes.CSys do def noop(msg), do: msg + def filter_head(pat) do + fn msg -> + head = Shape.head(msg) + if List.starts_with?(head, pat), do: msg + end + end + + def data_only(), do: filter_head([:csys, :data]) + # `send` shortcuts def send_message(rcvr, head, data \\ %{}) do diff --git a/test/csys_test.exs b/test/csys_test.exs index 8f33a55..e52d82d 100644 --- a/test/csys_test.exs +++ b/test/csys_test.exs @@ -17,10 +17,7 @@ defmodule Scopes.CSysTest do end def neg_only(msg) do - val = Shape.data(msg)[:value] - if val && val < 0 do - msg - end + if Shape.data(msg)[:value] < 0, do: msg end describe "basic:" do @@ -28,16 +25,14 @@ defmodule Scopes.CSysTest do zero = Environ.setup(Program.prepare_basic()) CSys.send_value(zero, "Hello Zero!") assert "Hello Zero!" = receive_data().value - #CSys.send_message(zero, [:csys, :create, :pred]) CSys.send_message(zero, [:csys, :create, :pred], %{op: &neg_only/1}) assert_receive {:created, new1} - CSys.send_message(new1, [:csys, :create, :succ]) + CSys.send_message(new1, [:csys, :create, :succ], %{op: CSys.data_only()}) assert_receive {:created, _new2} CSys.send_value(new1, "Hello New1!") assert "Hello New1!" = receive_data().value #assert "Hello New1!" = receive_data().value Process.sleep(50) - # Actor.stop(zero) refute_received msg, "unhandled message(s): #{inspect(msg)}" end end