diff options
| author | Misko Hevery | 2011-03-23 09:33:29 -0700 | 
|---|---|---|
| committer | Vojta Jina | 2011-08-02 01:00:03 +0200 | 
| commit | 8f0dcbab804180828d6859b1340c86cf161209fb (patch) | |
| tree | d13d47d47a1889cb7c96a87cecacd2e25307d51c /test/ParserSpec.js | |
| parent | 1f4b417184ce53af15474de065400f8a686430c5 (diff) | |
| download | angular.js-8f0dcbab804180828d6859b1340c86cf161209fb.tar.bz2 | |
feat(scope): new and improved scope implementation
- Speed improvements (about 4x on flush phase)
- Memory improvements (uses no function closures)
- Break $eval into $apply, $dispatch, $flush
- Introduced $watch and $observe
Breaks angular.equals() use === instead of ==
Breaks angular.scope() does not take parent as first argument
Breaks scope.$watch() takes scope as first argument
Breaks scope.$set(), scope.$get are removed
Breaks scope.$config is removed
Breaks $route.onChange callback has not "this" bounded
Diffstat (limited to 'test/ParserSpec.js')
| -rw-r--r-- | test/ParserSpec.js | 40 | 
1 files changed, 20 insertions, 20 deletions
| diff --git a/test/ParserSpec.js b/test/ParserSpec.js index 71ac9813..4c3cb64b 100644 --- a/test/ParserSpec.js +++ b/test/ParserSpec.js @@ -204,15 +204,15 @@ describe('parser', function() {        scope.$eval("1|nonExistant");      }).toThrow(new Error("Syntax Error: Token 'nonExistant' should be a function at column 3 of the expression [1|nonExistant] starting at [nonExistant].")); -    scope.$set('offset', 3); +    scope.offset =  3;      expect(scope.$eval("'abcd'|upper._case")).toEqual("ABCD");      expect(scope.$eval("'abcd'|substring:1:offset")).toEqual("bc");      expect(scope.$eval("'abcd'|substring:1:3|upper._case")).toEqual("BC");    });    it('should access scope', function() { -    scope.$set('a', 123); -    scope.$set('b.c', 456); +    scope.a =  123; +    scope.b = {c: 456};      expect(scope.$eval("a", scope)).toEqual(123);      expect(scope.$eval("b.c", scope)).toEqual(456);      expect(scope.$eval("x.y.z", scope)).not.toBeDefined(); @@ -224,32 +224,32 @@ describe('parser', function() {    it('should evaluate assignments', function() {      expect(scope.$eval("a=12")).toEqual(12); -    expect(scope.$get("a")).toEqual(12); +    expect(scope.a).toEqual(12);      scope = createScope();      expect(scope.$eval("x.y.z=123;")).toEqual(123); -    expect(scope.$get("x.y.z")).toEqual(123); +    expect(scope.x.y.z).toEqual(123);      expect(scope.$eval("a=123; b=234")).toEqual(234); -    expect(scope.$get("a")).toEqual(123); -    expect(scope.$get("b")).toEqual(234); +    expect(scope.a).toEqual(123); +    expect(scope.b).toEqual(234);    });    it('should evaluate function call without arguments', function() { -    scope.$set('const', function(a,b){return 123;}); +    scope['const'] =  function(a,b){return 123;};      expect(scope.$eval("const()")).toEqual(123);    });    it('should evaluate function call with arguments', function() { -    scope.$set('add', function(a,b) { +    scope.add =  function(a,b) {        return a+b; -    }); +    };      expect(scope.$eval("add(1,2)")).toEqual(3);    });    it('should evaluate multiplication and division', function() { -    scope.$set('taxRate', 8); -    scope.$set('subTotal', 100); +    scope.taxRate =  8; +    scope.subTotal =  100;      expect(scope.$eval("taxRate / 100 * subTotal")).toEqual(8);      expect(scope.$eval("subTotal * taxRate / 100")).toEqual(8);    }); @@ -297,7 +297,7 @@ describe('parser', function() {        return this.a;      }; -    scope.$set("obj", new C()); +    scope.obj = new C();      expect(scope.$eval("obj.getA()")).toEqual(123);    }); @@ -312,29 +312,29 @@ describe('parser', function() {        return this.a;      }; -    scope.$set("obj", new C()); +    scope.obj = new C();      expect(scope.$eval("obj.sum(obj.getA())")).toEqual(246);    });    it('should evaluate objects on scope context', function() { -    scope.$set('a', "abc"); +    scope.a =  "abc";      expect(scope.$eval("{a:a}").a).toEqual("abc");    });    it('should evaluate field access on function call result', function() { -    scope.$set('a', function() { +    scope.a =  function() {        return {name:'misko'}; -    }); +    };      expect(scope.$eval("a().name")).toEqual("misko");    });    it('should evaluate field access after array access', function () { -    scope.$set('items', [{}, {name:'misko'}]); +    scope.items =  [{}, {name:'misko'}];      expect(scope.$eval('items[1].name')).toEqual("misko");    });    it('should evaluate array assignment', function() { -    scope.$set('items', []); +    scope.items =  [];      expect(scope.$eval('items[1] = "abc"')).toEqual("abc");      expect(scope.$eval('items[1]')).toEqual("abc"); @@ -388,7 +388,7 @@ describe('parser', function() {    it('should evaluate undefined', function() {      expect(scope.$eval("undefined")).not.toBeDefined();      expect(scope.$eval("a=undefined")).not.toBeDefined(); -    expect(scope.$get("a")).not.toBeDefined(); +    expect(scope.a).not.toBeDefined();    });    it('should allow assignment after array dereference', function(){ | 
