OSDN Git Service

Modify the 'of' method on the base.js
[sie/sie.git] / tool / Spec / spec / BaseJSSpec.js
index f8064dc..c091eee 100644 (file)
@@ -420,8 +420,7 @@ describe("base.js", function() {
       } ).toThrow("No arguments error");\r
     } );\r
   });\r
-  \r
-  describe("an 'call' method", function() {\r
+  describe("a 'call' method", function() {\r
     it("limit value analysis", function() {\r
       expect(typeof base("$bfp").call).toBe("function");\r
       expect(base("$bfp").call()).toBe(base("$bfp"));\r
@@ -492,7 +491,7 @@ describe("base.js", function() {
       expect(base("$cfp").up("$bfp").of({a:base("$bfp")}).call()).toBe(base("$cfp").$bfp);\r
       \r
       /*循環参照は防ぐようにする*/\r
-      expect(base("$bfp").$b.up().of( {b: base("$bfp").$b.$1} ).call()).toBe(base("$bfp").$b.$1);\r
+      expect(base("$bfp").$b.up().of( {b: base("$bfp").$b.$1} ).call()).toBe(15);\r
       \r
       /*ofメソッドで指定されたfuncメソッドなどは、callメソッドで呼び出し時に実行される(thisはcallメソッドのレシーバ)*/\r
       expect( base("$cfp").up("$a").of( {\r
@@ -529,7 +528,31 @@ describe("base.js", function() {
       }).toThrow();\r
       } );\r
   });\r
-\r
+  \r
+  describe("an 'initToEval' method", function() {\r
+    it("limit value analysis", function() {\r
+      base("$ifp").of(\r
+        {a: function(){return 1;}, b: base("$ifp"),\r
+          call: function() {return 2;}\r
+        }\r
+      ).initToEval();\r
+      expect(base("$ifp").a).toBeUndefined();\r
+      expect(base("$ifp").b).toBeUndefined();\r
+      expect(base("$ifp").b__).toBe(base("$ifp"));\r
+      base("$ifp").call();\r
+      expect(base("$ifp").a).toBe(1);\r
+      expect(base("$ifp").b).toBe(2);\r
+      expect(base("$ifp").b__).toBe(base("$ifp"));\r
+      base("$ifp").initToEval().mix( {a__: function(){return 2;}} );\r
+      expect(base("$ifp").a).toBe(1);\r
+      base("$ifp").call();\r
+      expect(base("$ifp").a).toBe(2);\r
+      expect(base("$ifp").b).toBe(2);\r
+      expect(base("$ifp").b__).toBe(base("$ifp"));\r
+      \r
+    } );\r
+  } );\r
+  \r
   it("should occur an error, if no arguments", function(){\r
     var message = "No arguments error";\r
     expect(function(){\r