| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 | 
							- /* globals S, describe, it, expect */
 
- describe("S.root()", function () {
 
-     it("allows subcomputations to escape their parents", function () {
 
-         S.root(function () {
 
-             var outerTrigger = S.data(null),
 
-                 innerTrigger = S.data(null),
 
-                 outer,
 
-                 innerRuns = 0;
 
-             outer = S(function () {
 
-                 // register dependency to outer trigger
 
-                 outerTrigger();
 
-                 // inner computation
 
-                 S.root(function () {
 
-                     S(function () {
 
-                         // register dependency on inner trigger
 
-                         innerTrigger();
 
-                         // count total runs
 
-                         innerRuns++;
 
-                     });
 
-                 });
 
-             });
 
-             // at start, we have one inner computation, that's run once
 
-             expect(innerRuns).toBe(1);
 
-             // trigger the outer computation, making more inners
 
-             outerTrigger(null);
 
-             outerTrigger(null);
 
-             expect(innerRuns).toBe(3);
 
-             // now trigger inner signal: three orphaned computations should equal three runs
 
-             innerRuns = 0;
 
-             innerTrigger(null);
 
-             expect(innerRuns).toBe(3);
 
-         });
 
-     });
 
-     //it("is necessary to create a toplevel computation", function () {
 
-     //    expect(() => {
 
-     //        S(() => 1)
 
-     //    }).toThrowError(/root/);
 
-     //});
 
-     it("does not freeze updates when used at top level", function () {
 
-         S.root(() => {
 
-             var s = S.data(1),
 
-                 c = S(() => s());
 
-             
 
-             expect(c()).toBe(1);
 
-             s(2);
 
-             expect(c()).toBe(2);
 
-             s(3);
 
-             expect(c()).toBe(3);
 
-         });
 
-     });
 
-     it("persists through entire scope when used at top level", () => {
 
-         S.root(() => {
 
-             var s = S.data(1),
 
-                 c1 = S(() => s());
 
-             
 
-             s(2);
 
-             var c2 = S(() => s());
 
-             s(3);
 
-             expect(c2()).toBe(3);
 
-         });
 
-     });
 
- });
 
 
  |