source: Dev/trunk/src/client/dojox/mvc/tests/doh/StatefulArray.js

Last change on this file was 483, checked in by hendrikvanantwerpen, 11 years ago

Added Dojo 1.9.3 release.

File size: 2.5 KB
Line 
1define([
2        "doh",
3        "dojo/Stateful",
4        "dojox/mvc/StatefulArray"
5], function(doh, Stateful, StatefulArray){
6        doh.register("dojox.mvc.tests.doh.StatefulArray", [
7                {
8                        name: "splice",
9                        runTest: function(){
10                                var dfd = new doh.Deferred(),
11                                 a = new StatefulArray([0, 1, 2, 3]);
12
13                                this.h = a.watchElements(function(idx, removals, adds){
14                                        try{
15                                                doh.is(1, idx, "The removal starts with index 1");
16                                                doh.is([1, 2], removals, "Index 1 and index 2 should be removed");
17                                                doh.is([100, 101], adds, "100 and 101 should be added");
18                                        }catch(e){
19                                                dfd.errback(e);
20                                        }
21                                });
22
23                                a.splice(-3, 2, 100, 101);
24
25                                doh.is([0, 100, 101, 3], a, "The array should end up with 0, 100, 101, 3");
26                                dfd.callback(1);
27
28                                return dfd;
29                        },
30                        tearDown: function(){
31                                this.h && this.h.remove();
32                        }
33                },
34                function slice(){
35                        var a = new StatefulArray([0, 1, 2, 3]);
36                        doh.is([1, 2], a.slice(-3, 3), "Index 1 and index 2 should be returned");
37                        doh.is([1], a.slice(-3, -2), "Index 1 should be returned");
38                },
39                function concat(){
40                        var a = new StatefulArray([0, 1, 2, 3]);
41                        doh.is([0, 1, 2, 3], a.concat(), "concat() with empty args should end up with the same array");
42                        doh.is([0, 1, 2, 3, 4, 5, 6, 7, 8], a.concat([4, 5], [6, 7, 8]), "concat() should support multiple args");
43                        doh.is([0, 1, 2, 3, 4, 5, 6, 7, 8], a.concat(4, 5, [6, 7, 8]), "concat() should non-array values");
44                },
45                function isInstanceOf(){
46                        var a = new StatefulArray();
47                        doh.t(a.isInstanceOf(Stateful), "StatefulArray should be a subclass of Stateful");
48                        doh.t(a.isInstanceOf(StatefulArray), "StatefulArray's instance should work with isInstanceOf() call");
49                },
50                {
51                        name: "changeLength",
52                        runTest: function(){
53                                var dfd = new doh.Deferred(),
54                                 a = new StatefulArray([0, 1, 2, 3]),
55                                 changes = [];
56                                this.h = a.watchElements(dfd.getTestErrback(function(idx, removals, adds){
57                                        changes.push({
58                                                idx: idx,
59                                                removals: removals,
60                                                adds: adds
61                                        });
62                                        if(changes.length >= 2){
63                                                doh.is(2, changes.length, "Two changes should have been notified");
64                                                doh.is({
65                                                        idx: 2,
66                                                        removals: [2, 3],
67                                                        adds: []
68                                                }, changes[0], "The first change should remove two elements at index 2");
69                                                doh.is({
70                                                        idx: 2,
71                                                        removals: [],
72                                                        adds: [void 0, void 0]
73                                                }, changes[1], "The second change should add empty two elements");
74                                                dfd.callback(1);
75                                        }
76                                }));
77                                a.set("length", 2);
78                                a.set("length", 4);
79                                return dfd;
80                        },
81                        tearDown: function(){
82                                this.h && this.h.remove();
83                        }
84                }
85        ]);
86});
Note: See TracBrowser for help on using the repository browser.