} ).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
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
}).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