
require-macros:
   ..src ->
      reactive
   earl-mocha ->
      describe, it, before, after, before-each, after-each
      xdescribe, xit
      assert, asserts
      expect-error

require:
   ..src ->
      fields
      deprox, make-struct, read-proxy, write-proxy, Directory, ID
      reactive-function, System
   .people ->
      alice, bob, clara, donald, emily, francis, gerard, helen
      aid, bid, cid, did, eid, fid, gid, hid


describe "reactive":

   before-each:
      me = [@]

      reactive @one{person} =
         {'A:{person.name}'}

      reactive @two{person} =
         {me.one{person}, 'B:{person.name}'}

      reactive @three{person} =
         {me.two{person}, 'C:{person.name}'}

   it "test":
      sys = System{clara, @three}
      assert sys.get{} == {{{"A:clara"}, "B:clara"}, "C:clara"}

   it "update":
      sys = System{clara, @three}
      sys.transact with {clara} ->
         clara.name = .coco
      assert sys.get{} == {{{"A:coco"}, "B:coco"}, "C:coco"}
