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

require:
   ..src ->
      identify
      read-proxy, write-proxy
      Directory
      changed-relevantly, intersect
      ID, FORKID
      Patch, Tracks
   .people ->
      alice, bob, clara, donald
      aid, bid, cid, did


describe "changed-relevantly and intersect":

   before-each:
      @tracks = Tracks{} ;;{=}
      @patch = Patch{}
      @dir = Directory{}
      @clara = @dir.acquire{clara}
      @clarar = read-proxy{@clara, @tracks}
      @claraw = write-proxy{@clara, @patch}

   it "tracks relevant changes":
      @clarar.name
      @claraw.name = .clairette
      assert changed-relevantly{@clara, @tracks.get{cid}, @patch.get{cid}}
      assert intersect{@tracks, @patch, @dir}

   it "does not track irrelevant changes":
      @clarar.name
      @claraw.age = 20
      assert not changed-relevantly{@clara, @tracks.get{cid}, @patch.get{cid}}
      assert not intersect{@tracks, @patch, @dir}

   it "operates on individual objects":
      @clarar.name
      @clarar.mother.age
      @claraw.mother.age = 20
      assert not changed-relevantly{@clara, @tracks.get{cid}, @patch.get{cid}}
      assert changed-relevantly{@clara.mother, @tracks.get{aid}, @patch.get{aid}}
      assert intersect{@tracks, @patch, @dir}
