diff options
Diffstat (limited to 'test/AngularSpec.js')
| -rw-r--r-- | test/AngularSpec.js | 73 | 
1 files changed, 72 insertions, 1 deletions
| diff --git a/test/AngularSpec.js b/test/AngularSpec.js index 09bc902f..e29bb16b 100644 --- a/test/AngularSpec.js +++ b/test/AngularSpec.js @@ -257,7 +257,7 @@ describe('angular', function() {        function MyObj() {          this.bar = 'barVal';          this.baz = 'bazVal'; -      }; +      }        MyObj.prototype.foo = 'fooVal';        var obj = new MyObj(), @@ -267,6 +267,77 @@ describe('angular', function() {        expect(log).toEqual(['bar:barVal', 'baz:bazVal']);      }); + + +    it('should handle JQLite and jQuery objects like arrays', function() { +      var jqObject = jqLite("<p><span>s1</span><span>s2</span></p>").find("span"), +          log = []; + +      forEach(jqObject, function(value, key) { log.push(key + ':' + value.innerHTML)}); +      expect(log).toEqual(['0:s1', '1:s2']); +    }); + + +    it('should handle NodeList objects like arrays', function() { +      var nodeList = jqLite("<p><span>a</span><span>b</span><span>c</span></p>")[0].childNodes, +          log = []; + + +      forEach(nodeList, function(value, key) { log.push(key + ':' + value.innerHTML)}); +      expect(log).toEqual(['0:a', '1:b', '2:c']); +    }); + + +    it('should handle HTMLCollection objects like arrays', function() { +      document.body.innerHTML = "<p>" + +                                  "<a name='x'>a</a>" + +                                  "<a name='y'>b</a>" + +                                  "<a name='x'>c</a>" + +                                "</p>"; + +      var htmlCollection = document.getElementsByName('x'), +          log = []; + +      forEach(htmlCollection, function(value, key) { log.push(key + ':' + value.innerHTML)}); +      expect(log).toEqual(['0:a', '1:c']); +    }); + + +    it('should handle arguments objects like arrays', function() { +      var args, +          log = []; + +      (function(){ args = arguments}('a', 'b', 'c')); + +      forEach(args, function(value, key) { log.push(key + ':' + value)}); +      expect(log).toEqual(['0:a', '1:b', '2:c']); +    }); + + +    it('should handle objects with length property as objects', function() { +      var obj = { +            'foo' : 'bar', +            'length': 2 +          }, +          log = []; + +      forEach(obj, function(value, key) { log.push(key + ':' + value)}); +      expect(log).toEqual(['foo:bar', 'length:2']); +    }); + + +    it('should handle objects of custom types with length property as objects', function() { +      function CustomType() { +        this.length = 2; +        this.foo = 'bar' +      } + +      var obj = new CustomType(), +          log = []; + +      forEach(obj, function(value, key) { log.push(key + ':' + value)}); +      expect(log).toEqual(['length:2', 'foo:bar']); +    });    }); | 
