aboutsummaryrefslogtreecommitdiffstats
path: root/test/ApiSpecs.js
blob: 0fa26e099e373fe867396b612af6f69aff00d4c1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
'use strict';

describe('api', function() {

  describe('HashMap', function() {
    it('should do basic crud', function() {
      var map = new HashMap();
      var key = {};
      var value1 = {};
      var value2 = {};
      map.put(key, value1);
      map.put(key, value2);
      expect(map.get(key)).toBe(value2);
      expect(map.get({})).toBe(undefined);
      expect(map.remove(key)).toBe(value2);
      expect(map.get(key)).toBe(undefined);
    });

    it('should init from an array', function() {
      var map = new HashMap(['a','b']);
      expect(map.get('a')).toBe(0);
      expect(map.get('b')).toBe(1);
      expect(map.get('c')).toBe(undefined);
    });
  });


  describe('HashQueueMap', function() {
    it('should do basic crud with collections', function() {
      var map = new HashQueueMap();
      map.push('key', 'a');
      map.push('key', 'b');
      expect(map[hashKey('key')]).toEqual(['a', 'b']);
      expect(map.shift('key')).toEqual('a');
      expect(map.shift('key')).toEqual('b');
      expect(map.shift('key')).toEqual(undefined);
      expect(map[hashKey('key')]).toEqual(undefined);
    });
  });


  describe('Object', function() {
    it('should return type of', function() {
      assertEquals("undefined", angular.Object.typeOf(undefined));
      assertEquals("null", angular.Object.typeOf(null));
      assertEquals("object", angular.Collection.typeOf({}));
      assertEquals("array", angular.Array.typeOf([]));
      assertEquals("string", angular.Object.typeOf(""));
      assertEquals("date", angular.Object.typeOf(new Date()));
      assertEquals("element", angular.Object.typeOf(document.body));
      assertEquals('function', angular.Object.typeOf(function() {}));
    });

    it('should extend object', function() {
      assertEquals({a:1, b:2}, angular.Object.extend({a:1}, {b:2}));
    });
  });


  it('should return size', function() {
    assertEquals(0, angular.Collection.size({}));
    assertEquals(1, angular.Collection.size({a:"b"}));
    assertEquals(0, angular.Object.size({}));
    assertEquals(1, angular.Array.size([0]));
  });


  describe('Array', function() {

    describe('sum', function() {
      it('should sum', function() {
        assertEquals(3, angular.Array.sum([{a:"1"}, {a:"2"}], 'a'));
      });

      it('should sum containing NaN', function() {
        assertEquals(1, angular.Array.sum([{a:1}, {a:Number.NaN}], 'a'));
        assertEquals(1, angular.Array.sum([{a:1}, {a:Number.NaN}], function($) {return $.a;}));
      });
    });


    it('should find indexOf', function() {
      assertEquals(angular.Array.indexOf(['a'], 'a'), 0);
      assertEquals(angular.Array.indexOf(['a', 'b'], 'a'), 0);
      assertEquals(angular.Array.indexOf(['b', 'a'], 'a'), 1);
      assertEquals(angular.Array.indexOf(['b', 'b'],'x'), -1);
    });

    it('should remove item from array', function() {
      var items = ['a', 'b', 'c'];
      assertEquals(angular.Array.remove(items, 'q'), 'q');
      assertEquals(items.length, 3);

      assertEquals(angular.Array.remove(items, 'b'), 'b');
      assertEquals(items.length, 2);

      assertEquals(angular.Array.remove(items, 'a'), 'a');
      assertEquals(items.length, 1);

      assertEquals(angular.Array.remove(items, 'c'), 'c');
      assertEquals(items.length, 0);

      assertEquals(angular.Array.remove(items, 'q'), 'q');
      assertEquals(items.length, 0);
    });



    it('add', function() {
      var add = angular.Array.add;
      assertJsonEquals([{}, "a"], add(add([]),"a"));
    });

    it('count', function() {
      var array = [{name:'a'},{name:'b'},{name:''}];
      var obj = {};

      assertEquals(3, angular.Array.count(array));
      assertEquals(2, angular.Array.count(array, 'name'));
      assertEquals(1, angular.Array.count(array, 'name=="a"'));
    });



  });

});