aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorLucas Galfasó2013-04-29 19:07:05 +0100
committerPete Bacon Darwin2013-04-29 19:12:19 +0100
commitda8c320bdedff51db87c632e16c7d0b56fd6cd8b (patch)
treeb02840a5b325b17111649ec46a3a7fd045d27c8b /test
parent06f2b2a8cf7e8216ad9ef05f73426271c2d97faa (diff)
downloadangular.js-da8c320bdedff51db87c632e16c7d0b56fd6cd8b.tar.bz2
test(parse): Test for the parsing not invoking twice to get self
New tests to not call twice a function to get self
Diffstat (limited to 'test')
-rw-r--r--test/ng/parseSpec.js106
1 files changed, 106 insertions, 0 deletions
diff --git a/test/ng/parseSpec.js b/test/ng/parseSpec.js
index 020a1d6f..96b3d909 100644
--- a/test/ng/parseSpec.js
+++ b/test/ng/parseSpec.js
@@ -483,6 +483,112 @@ describe('parser', function() {
});
+ it('should call the function from the received instance and not from a new one', function() {
+ var n = 0;
+ scope.fn = function() {
+ var c = n++;
+ return { c: c, anotherFn: function() { return this.c == c; } };
+ };
+ expect(scope.$eval('fn().anotherFn()')).toBe(true);
+ });
+
+
+ it('should call the function once when it is part of the context', function() {
+ var count = 0;
+ scope.fn = function() {
+ count++;
+ return { anotherFn: function() { return "lucas"; } };
+ };
+ expect(scope.$eval('fn().anotherFn()')).toBe('lucas');
+ expect(count).toBe(1);
+ });
+
+
+ it('should call the function once when it is not part of the context', function() {
+ var count = 0;
+ scope.fn = function() {
+ count++;
+ return function() { return 'lucas'; };
+ };
+ expect(scope.$eval('fn()()')).toBe('lucas');
+ expect(count).toBe(1);
+ });
+
+
+ it('should call the function once when it is not part of the context', function() {
+ var count = 0;
+ scope.fn = function() {
+ count++;
+ return function() { return 'lucas'; };
+ };
+ expect(scope.$eval('fn()()')).toBe('lucas');
+ expect(count).toBe(1);
+ });
+
+
+ it('should call the function once when it is part of the context on assignments', function() {
+ var count = 0;
+ var element = {};
+ scope.fn = function() {
+ count++;
+ return element;
+ };
+ expect(scope.$eval('fn().name = "lucas"')).toBe('lucas');
+ expect(element.name).toBe('lucas');
+ expect(count).toBe(1);
+ });
+
+
+ it('should call the function once when it is part of the context on array lookups', function() {
+ var count = 0;
+ var element = [];
+ scope.fn = function() {
+ count++;
+ return element;
+ };
+ expect(scope.$eval('fn()[0] = "lucas"')).toBe('lucas');
+ expect(element[0]).toBe('lucas');
+ expect(count).toBe(1);
+ });
+
+
+ it('should call the function once when it is part of the context on array lookup function', function() {
+ var count = 0;
+ var element = [{anotherFn: function() { return 'lucas';} }];
+ scope.fn = function() {
+ count++;
+ return element;
+ };
+ expect(scope.$eval('fn()[0].anotherFn()')).toBe('lucas');
+ expect(count).toBe(1);
+ });
+
+
+ it('should call the function once when it is part of the context on array lookup function', function() {
+ var count = 0;
+ var element = {name: {anotherFn: function() { return 'lucas';} } };
+ scope.fn = function() {
+ count++;
+ return element;
+ };
+ expect(scope.$eval('fn().name.anotherFn()')).toBe('lucas');
+ expect(count).toBe(1);
+ });
+
+
+ it('should call the function once when it is part of a sub-expression', function() {
+ var count = 0;
+ scope.element = [{}];
+ scope.fn = function() {
+ count++;
+ return 0;
+ };
+ expect(scope.$eval('element[fn()].name = "lucas"')).toBe('lucas');
+ expect(scope.element[0].name).toBe('lucas');
+ expect(count).toBe(1);
+ });
+
+
describe('promises', function() {
var deferred, promise, q;