resin 0.3.0 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- data/amber/bin/amberc +4 -3
- data/amber/js/IDE.deploy.js +147 -45
- data/amber/js/IDE.js +155 -53
- data/amber/js/Kernel-Classes.deploy.js +20 -14
- data/amber/js/Kernel-Classes.js +29 -18
- data/amber/js/Kernel-Collections.deploy.js +82 -0
- data/amber/js/Kernel-Collections.js +102 -0
- data/amber/js/Kernel-Methods.deploy.js +374 -261
- data/amber/js/Kernel-Methods.js +417 -269
- data/amber/js/Kernel-Objects.deploy.js +90 -28
- data/amber/js/Kernel-Objects.js +121 -34
- data/amber/js/Kernel-Tests.deploy.js +35 -0
- data/amber/js/Kernel-Tests.js +45 -0
- data/amber/js/SUnit.deploy.js +175 -17
- data/amber/js/SUnit.js +237 -24
- data/amber/js/amber.js +2 -1
- data/amber/js/boot.js +74 -18
- data/amber/js/lib/es5-shim-2.0.2/CHANGES +93 -0
- data/amber/js/lib/es5-shim-2.0.2/CONTRIBUTORS.md +25 -0
- data/amber/js/lib/es5-shim-2.0.2/LICENSE +19 -0
- data/amber/js/lib/es5-shim-2.0.2/README.md +161 -0
- data/amber/js/lib/es5-shim-2.0.2/es5-sham.js +348 -0
- data/amber/js/lib/es5-shim-2.0.2/es5-sham.min.js +6 -0
- data/amber/js/lib/es5-shim-2.0.2/es5-shim.js +963 -0
- data/amber/js/lib/es5-shim-2.0.2/es5-shim.min.js +16 -0
- data/amber/js/lib/es5-shim-2.0.2/minify +2 -0
- data/amber/js/lib/es5-shim-2.0.2/package.json +31 -0
- data/amber/js/lib/es5-shim-2.0.2/tests/helpers/h-kill.js +59 -0
- data/amber/js/lib/es5-shim-2.0.2/tests/helpers/h-matchers.js +34 -0
- data/amber/js/lib/es5-shim-2.0.2/tests/helpers/h.js +3 -0
- data/amber/js/lib/es5-shim-2.0.2/tests/index.html +62 -0
- data/amber/js/lib/es5-shim-2.0.2/tests/lib/jasmine-html.js +190 -0
- data/amber/js/lib/es5-shim-2.0.2/tests/lib/jasmine.css +166 -0
- data/amber/js/lib/es5-shim-2.0.2/tests/lib/jasmine.js +2477 -0
- data/amber/js/lib/es5-shim-2.0.2/tests/lib/jasmine_favicon.png +0 -0
- data/amber/js/lib/es5-shim-2.0.2/tests/lib/json2.js +478 -0
- data/amber/js/lib/es5-shim-2.0.2/tests/spec/s-array.js +1138 -0
- data/amber/js/lib/es5-shim-2.0.2/tests/spec/s-date.js +117 -0
- data/amber/js/lib/es5-shim-2.0.2/tests/spec/s-function.js +147 -0
- data/amber/js/lib/es5-shim-2.0.2/tests/spec/s-object.js +84 -0
- data/amber/js/lib/es5-shim-2.0.2/tests/spec/s-string.js +24 -0
- data/amber/st/IDE.st +15 -16
- data/amber/st/Kernel-Classes.st +9 -9
- data/amber/st/Kernel-Collections.st +37 -0
- data/amber/st/Kernel-Methods.st +63 -8
- data/amber/st/Kernel-Objects.st +34 -7
- data/amber/st/Kernel-Tests.st +10 -0
- data/amber/st/SUnit.st +86 -9
- metadata +44 -21
- data/amber/js/compat.js +0 -22
@@ -0,0 +1,117 @@
|
|
1
|
+
describe('Date', function () {
|
2
|
+
|
3
|
+
describe('now', function () {
|
4
|
+
it('should be the current time', function () {
|
5
|
+
expect(Date.now() === new Date().getTime()).toBe(true);
|
6
|
+
});
|
7
|
+
});
|
8
|
+
|
9
|
+
describe("parse", function () {
|
10
|
+
// TODO: Write the rest of the test.
|
11
|
+
|
12
|
+
it('should support extended years', function () {
|
13
|
+
|
14
|
+
expect(Date.parse('0001-01-01T00:00:00Z')).toBe(-62135596800000);
|
15
|
+
expect(Date.parse('+275760-09-13T00:00:00.000Z')).toBe(8.64e15);
|
16
|
+
expect(Date.parse('+033658-09-27T01:46:40.000Z')).toBe(1e15);
|
17
|
+
expect(Date.parse('-000001-01-01T00:00:00Z')).toBe(-62198755200000);
|
18
|
+
expect(Date.parse('+002009-12-15T00:00:00Z')).toBe(1260835200000);
|
19
|
+
|
20
|
+
});
|
21
|
+
|
22
|
+
it('should work', function () {
|
23
|
+
//Chrome 19 Opera 12 Firefox 11 IE 9 Safari 5.1.1
|
24
|
+
expect(Date.parse("2012-11-31T23:59:59.000Z")).toBeFalsy(); //1354406399000 NaN NaN 1354406399000 NaN
|
25
|
+
expect(Date.parse("2012-12-31T23:59:59.000Z")).toBe(1356998399000); //1356998399000 1356998399000 1356998399000 1356998399000 1356998399000
|
26
|
+
expect(Date.parse("2012-12-31T23:59:60.000Z")).toBeFalsy(); //NaN NaN NaN NaN 1356998400000
|
27
|
+
expect(Date.parse("2012-04-04T05:02:02.170Z")).toBe(1333515722170); //1333515722170 1333515722170 1333515722170 1333515722170 1333515722170
|
28
|
+
expect(Date.parse("2012-04-04T24:00:00.000Z")).toBe(1333584000000); //NaN 1333584000000 1333584000000 1333584000000 1333584000000
|
29
|
+
expect(Date.parse("2012-04-04T24:00:00.500Z")).toBeFalsy(); //NaN NaN 1333584000500 1333584000500 NaN
|
30
|
+
expect(Date.parse("2012-12-31T10:08:60.000Z")).toBeFalsy(); //NaN NaN NaN NaN 1356948540000
|
31
|
+
expect(Date.parse("2012-13-01T12:00:00.000Z")).toBeFalsy(); //NaN NaN NaN NaN NaN
|
32
|
+
expect(Date.parse("2012-12-32T12:00:00.000Z")).toBeFalsy(); //NaN NaN NaN NaN NaN
|
33
|
+
expect(Date.parse("2012-12-31T25:00:00.000Z")).toBeFalsy(); //NaN NaN NaN NaN NaN
|
34
|
+
expect(Date.parse("2012-12-31T24:01:00.000Z")).toBeFalsy(); //NaN NaN NaN 1356998460000 NaN
|
35
|
+
expect(Date.parse("2012-12-31T12:60:00.000Z")).toBeFalsy(); //NaN NaN NaN NaN NaN
|
36
|
+
expect(Date.parse("2012-12-31T12:00:60.000Z")).toBeFalsy(); //NaN NaN NaN NaN 1356955260000
|
37
|
+
expect(Date.parse("2012-00-31T23:59:59.000Z")).toBeFalsy(); //NaN NaN NaN NaN NaN
|
38
|
+
expect(Date.parse("2012-12-00T23:59:59.000Z")).toBeFalsy(); //NaN NaN NaN NaN NaN
|
39
|
+
expect(Date.parse("2012-02-29T12:00:00.000Z")).toBe(1330516800000); //1330516800000 1330516800000 1330516800000 1330516800000 1330516800000
|
40
|
+
expect(Date.parse("2011-02-29T12:00:00.000Z")).toBeFalsy(); //1298980800000 NaN NaN 1298980800000 NaN
|
41
|
+
expect(Date.parse("2011-03-01T12:00:00.000Z")).toBe(1298980800000); //1298980800000 1298980800000 1298980800000 1298980800000 1298980800000
|
42
|
+
|
43
|
+
// extended years:
|
44
|
+
expect(Date.parse("0000-01-01T00:00:00.000Z")).toBe(-621672192e5); //-621672192e5 -621672192e5 -621672192e5 -621672192e5 -621672192e5
|
45
|
+
expect(Date.parse("+275760-09-13T00:00:00.000Z")).toBe(8.64e15); //8.64e15 NaN 8.64e15 8.64e15 8.64e15
|
46
|
+
expect(Date.parse("-271821-04-20T00:00:00.000Z")).toBe(-8.64e15); //-8.64e15 NaN -8.64e15 -8.64e15 -8.6400000864e15
|
47
|
+
expect(Date.parse("+275760-09-13T00:00:00.001Z")).toBeFalsy(); //NaN NaN NaN 8.64e15 + 1 8.64e15 + 1
|
48
|
+
expect(Date.parse("-271821-04-19T23:59:59.999Z")).toBeFalsy(); //NaN NaN NaN -8.64e15 - 1 -8.6400000864e15 - 1
|
49
|
+
|
50
|
+
// https://github.com/kriskowal/es5-shim/issues/80 Safari bug with leap day
|
51
|
+
expect(Date.parse("2034-03-01T00:00:00.000Z") -
|
52
|
+
Date.parse("2034-02-27T23:59:59.999Z")).toBe(86400001); //86400001 86400001 86400001 86400001 1
|
53
|
+
|
54
|
+
// Time Zone Offset
|
55
|
+
expect(Date.parse("2012-01-29T12:00:00.000+01:00")).toBe(132783480e4);//132783480e4 132783480e4 132783480e4 132783480e4 132783480e4
|
56
|
+
expect(Date.parse("2012-01-29T12:00:00.000-00:00")).toBe(132783840e4);//132783840e4 132783840e4 132783840e4 132783840e4 132783840e4
|
57
|
+
expect(Date.parse("2012-01-29T12:00:00.000+00:00")).toBe(132783840e4);//132783840e4 132783840e4 132783840e4 132783840e4 132783840e4
|
58
|
+
expect(Date.parse("2012-01-29T12:00:00.000+23:59")).toBe(132775206e4);//132775206e4 132775206e4 132775206e4 132775206e4 132775206e4
|
59
|
+
expect(Date.parse("2012-01-29T12:00:00.000-23:59")).toBe(132792474e4);//132792474e4 132792474e4 132792474e4 132792474e4 132792474e4
|
60
|
+
expect(Date.parse("2012-01-29T12:00:00.000+24:00")).toBeFalsy(); //NaN 1327752e6 NaN 1327752000000 1327752000000
|
61
|
+
expect(Date.parse("2012-01-29T12:00:00.000+24:01")).toBeFalsy(); //NaN NaN NaN 1327751940000 1327751940000
|
62
|
+
expect(Date.parse("2012-01-29T12:00:00.000+24:59")).toBeFalsy(); //NaN NaN NaN 1327748460000 1327748460000
|
63
|
+
expect(Date.parse("2012-01-29T12:00:00.000+25:00")).toBeFalsy(); //NaN NaN NaN NaN NaN
|
64
|
+
expect(Date.parse("2012-01-29T12:00:00.000+00:60")).toBeFalsy(); //NaN NaN NaN NaN NaN
|
65
|
+
expect(Date.parse("-271821-04-20T00:00:00.000+00:01")).toBeFalsy(); //NaN NaN NaN -864000000006e4 -864000008646e4
|
66
|
+
expect(Date.parse("-271821-04-20T00:01:00.000+00:01")).toBe(-8.64e15);//-8.64e15 NaN -8.64e15 -8.64e15 -864000008640e4
|
67
|
+
|
68
|
+
// When time zone is missed, local offset should be used (ES 5.1 bug)
|
69
|
+
// see https://bugs.ecmascript.org/show_bug.cgi?id=112
|
70
|
+
var tzOffset = Number(new Date(1970, 0));
|
71
|
+
// same as (new Date().getTimezoneOffset() * 60000)
|
72
|
+
expect(Date.parse('1970-01-01T00:00:00')).toBe(tzOffset); //tzOffset 0 0 0 NaN
|
73
|
+
});
|
74
|
+
});
|
75
|
+
|
76
|
+
describe("toISOString", function () {
|
77
|
+
// TODO: write the rest of the test.
|
78
|
+
|
79
|
+
it('should support extended years', function () {
|
80
|
+
expect(new Date(-62198755200000).toISOString().indexOf('-000001-01-01')).toBe(0);
|
81
|
+
expect(new Date(8.64e15).toISOString().indexOf('+275760-09-13')).toBe(0);
|
82
|
+
});
|
83
|
+
|
84
|
+
it('should return correct dates', function () {
|
85
|
+
expect(new Date(-1).toISOString()).toBe('1969-12-31T23:59:59.999Z');// Safari 5.1.5 "1969-12-31T23:59:59.-01Z"
|
86
|
+
expect(new Date(-3509827334573292).toISOString()).toBe('-109252-01-01T10:37:06.708Z'); // Opera 11.61/Opera 12 bug with Date#getUTCMonth
|
87
|
+
});
|
88
|
+
|
89
|
+
});
|
90
|
+
|
91
|
+
describe("toJSON", function () {
|
92
|
+
|
93
|
+
// Opera 11.6x/12 bug
|
94
|
+
it('should call toISOString', function () {
|
95
|
+
var date = new Date(0);
|
96
|
+
date.toISOString = function () {
|
97
|
+
return 1;
|
98
|
+
};
|
99
|
+
expect(date.toJSON()).toBe(1);
|
100
|
+
});
|
101
|
+
|
102
|
+
it('should return null for not finite dates', function () {
|
103
|
+
var date = new Date(NaN),
|
104
|
+
json;
|
105
|
+
try {
|
106
|
+
json = date.toJSON();
|
107
|
+
} catch (e) {}
|
108
|
+
expect(json).toBe(null);
|
109
|
+
});
|
110
|
+
|
111
|
+
it('should return the isoString when stringified', function () {
|
112
|
+
var date = new Date();
|
113
|
+
expect(JSON.stringify(date.toISOString())).toBe(JSON.stringify(date));
|
114
|
+
})
|
115
|
+
});
|
116
|
+
|
117
|
+
});
|
@@ -0,0 +1,147 @@
|
|
1
|
+
|
2
|
+
describe('Function', function() {
|
3
|
+
"use strict";
|
4
|
+
describe('bind', function() {
|
5
|
+
var actual, expected,
|
6
|
+
testSubject;
|
7
|
+
|
8
|
+
testSubject = {
|
9
|
+
push: function(o) {
|
10
|
+
this.a.push(o);
|
11
|
+
}
|
12
|
+
};
|
13
|
+
|
14
|
+
function func() {
|
15
|
+
Array.prototype.forEach.call(arguments, function(a) {
|
16
|
+
this.push(a);
|
17
|
+
}, this);
|
18
|
+
return this;
|
19
|
+
};
|
20
|
+
|
21
|
+
beforeEach(function() {
|
22
|
+
actual = [];
|
23
|
+
testSubject.a = [];
|
24
|
+
});
|
25
|
+
|
26
|
+
it('binds properly without a context', function() {
|
27
|
+
var context;
|
28
|
+
testSubject.func = function() {
|
29
|
+
context = this;
|
30
|
+
}.bind();
|
31
|
+
testSubject.func();
|
32
|
+
expect(context).toBe(function() {return this}.call());
|
33
|
+
});
|
34
|
+
it('binds properly without a context, and still supplies bound arguments', function() {
|
35
|
+
var a, context;
|
36
|
+
testSubject.func = function() {
|
37
|
+
a = Array.prototype.slice.call(arguments);
|
38
|
+
context = this;
|
39
|
+
}.bind(undefined, 1,2,3);
|
40
|
+
testSubject.func(1,2,3);
|
41
|
+
expect(a).toEqual([1,2,3,1,2,3]);
|
42
|
+
expect(context).toBe(function() {return this}.call());
|
43
|
+
});
|
44
|
+
it('binds a context properly', function() {
|
45
|
+
testSubject.func = func.bind(actual);
|
46
|
+
testSubject.func(1,2,3);
|
47
|
+
expect(actual).toEqual([1,2,3]);
|
48
|
+
expect(testSubject.a).toEqual([]);
|
49
|
+
});
|
50
|
+
it('binds a context and supplies bound arguments', function() {
|
51
|
+
testSubject.func = func.bind(actual, 1,2,3);
|
52
|
+
testSubject.func(4,5,6);
|
53
|
+
expect(actual).toEqual([1,2,3,4,5,6]);
|
54
|
+
expect(testSubject.a).toEqual([]);
|
55
|
+
});
|
56
|
+
|
57
|
+
it('returns properly without binding a context', function() {
|
58
|
+
testSubject.func = function() {
|
59
|
+
return this;
|
60
|
+
}.bind();
|
61
|
+
var context = testSubject.func();
|
62
|
+
expect(context).toBe(function() {return this}.call());
|
63
|
+
});
|
64
|
+
it('returns properly without binding a context, and still supplies bound arguments', function() {
|
65
|
+
var context;
|
66
|
+
testSubject.func = function() {
|
67
|
+
context = this;
|
68
|
+
return Array.prototype.slice.call(arguments);
|
69
|
+
}.bind(undefined, 1,2,3);
|
70
|
+
actual = testSubject.func(1,2,3);
|
71
|
+
expect(context).toBe(function() {return this}.call());
|
72
|
+
expect(actual).toEqual([1,2,3,1,2,3]);
|
73
|
+
});
|
74
|
+
it('returns properly while binding a context properly', function() {
|
75
|
+
var ret;
|
76
|
+
testSubject.func = func.bind(actual);
|
77
|
+
ret = testSubject.func(1,2,3);
|
78
|
+
expect(ret).toBe(actual);
|
79
|
+
expect(ret).not.toBe(testSubject);
|
80
|
+
});
|
81
|
+
it('returns properly while binding a context and supplies bound arguments', function() {
|
82
|
+
var ret;
|
83
|
+
testSubject.func = func.bind(actual, 1,2,3);
|
84
|
+
ret = testSubject.func(4,5,6);
|
85
|
+
expect(ret).toBe(actual);
|
86
|
+
expect(ret).not.toBe(testSubject);
|
87
|
+
});
|
88
|
+
it('passes the correct arguments as a constructor', function() {
|
89
|
+
var ret, expected = { name: "Correct" };
|
90
|
+
testSubject.func = function(arg) {
|
91
|
+
return arg;
|
92
|
+
}.bind({ name: "Incorrect" });
|
93
|
+
ret = new testSubject.func(expected);
|
94
|
+
expect(ret).toBe(expected);
|
95
|
+
});
|
96
|
+
it('returns the return value of the bound function when called as a constructor', function () {
|
97
|
+
var oracle = [1, 2, 3];
|
98
|
+
var subject = function () {
|
99
|
+
return oracle;
|
100
|
+
}.bind(null);
|
101
|
+
var result = new subject;
|
102
|
+
expect(result).toBe(oracle);
|
103
|
+
});
|
104
|
+
it('returns the correct value if constructor returns primitive', function() {
|
105
|
+
var oracle = [1, 2, 3];
|
106
|
+
var subject = function () {
|
107
|
+
return oracle;
|
108
|
+
}.bind(null);
|
109
|
+
var result = new subject;
|
110
|
+
expect(result).toBe(oracle);
|
111
|
+
|
112
|
+
oracle = {};
|
113
|
+
result = new subject;
|
114
|
+
expect(result).toBe(oracle);
|
115
|
+
|
116
|
+
oracle = function(){};
|
117
|
+
result = new subject;
|
118
|
+
expect(result).toBe(oracle);
|
119
|
+
|
120
|
+
oracle = "asdf";
|
121
|
+
result = new subject;
|
122
|
+
expect(result).not.toBe(oracle);
|
123
|
+
|
124
|
+
oracle = null;
|
125
|
+
result = new subject;
|
126
|
+
expect(result).not.toBe(oracle);
|
127
|
+
|
128
|
+
oracle = true;
|
129
|
+
result = new subject;
|
130
|
+
expect(result).not.toBe(oracle);
|
131
|
+
|
132
|
+
oracle = 1;
|
133
|
+
result = new subject;
|
134
|
+
expect(result).not.toBe(oracle);
|
135
|
+
});
|
136
|
+
it('returns the value that instance of original "class" when called as a constructor', function() {
|
137
|
+
var classA = function(x) {
|
138
|
+
this.name = x || "A";
|
139
|
+
}
|
140
|
+
var classB = classA.bind(null, "B");
|
141
|
+
|
142
|
+
var result = new classB;
|
143
|
+
expect(result instanceof classA).toBe(true);
|
144
|
+
expect(result instanceof classB).toBe(true);
|
145
|
+
});
|
146
|
+
});
|
147
|
+
});
|
@@ -0,0 +1,84 @@
|
|
1
|
+
describe('Object', function () {
|
2
|
+
"use strict";
|
3
|
+
|
4
|
+
describe("Object.keys", function () {
|
5
|
+
var obj = {
|
6
|
+
"str": "boz",
|
7
|
+
"obj": { },
|
8
|
+
"arr": [],
|
9
|
+
"bool": true,
|
10
|
+
"num": 42,
|
11
|
+
"null": null,
|
12
|
+
"undefined": undefined
|
13
|
+
};
|
14
|
+
|
15
|
+
var loopedValues = [];
|
16
|
+
for (var k in obj) {
|
17
|
+
loopedValues.push(k);
|
18
|
+
}
|
19
|
+
|
20
|
+
var keys = Object.keys(obj);
|
21
|
+
it('should have correct length', function () {
|
22
|
+
expect(keys.length).toBe(7);
|
23
|
+
});
|
24
|
+
|
25
|
+
it('should return an Array', function () {
|
26
|
+
expect(Array.isArray(keys)).toBe(true);
|
27
|
+
});
|
28
|
+
|
29
|
+
it('should return names which are own properties', function () {
|
30
|
+
keys.forEach(function (name) {
|
31
|
+
expect(obj.hasOwnProperty(name)).toBe(true);
|
32
|
+
});
|
33
|
+
});
|
34
|
+
|
35
|
+
it('should return names which are enumerable', function () {
|
36
|
+
keys.forEach(function (name) {
|
37
|
+
expect(loopedValues.indexOf(name)).toNotBe(-1);
|
38
|
+
})
|
39
|
+
});
|
40
|
+
|
41
|
+
it('should throw error for non object', function () {
|
42
|
+
var e = {};
|
43
|
+
expect(function () {
|
44
|
+
try {
|
45
|
+
Object.keys(42)
|
46
|
+
} catch (err) {
|
47
|
+
throw e;
|
48
|
+
}
|
49
|
+
}).toThrow(e);
|
50
|
+
});
|
51
|
+
});
|
52
|
+
|
53
|
+
describe("Object.isExtensible", function () {
|
54
|
+
var obj = { };
|
55
|
+
|
56
|
+
it('should return true if object is extensible', function () {
|
57
|
+
expect(Object.isExtensible(obj)).toBe(true);
|
58
|
+
});
|
59
|
+
|
60
|
+
it('should return false if object is not extensible', function () {
|
61
|
+
expect(Object.isExtensible(Object.preventExtensions(obj))).toBe(false);
|
62
|
+
});
|
63
|
+
|
64
|
+
it('should return false if object is seal', function () {
|
65
|
+
expect(Object.isExtensible(Object.seal(obj))).toBe(false);
|
66
|
+
});
|
67
|
+
|
68
|
+
it('should return false if object is freeze', function () {
|
69
|
+
expect(Object.isExtensible(Object.freeze(obj))).toBe(false);
|
70
|
+
});
|
71
|
+
|
72
|
+
it('should throw error for non object', function () {
|
73
|
+
var e1 = {};
|
74
|
+
expect(function () {
|
75
|
+
try {
|
76
|
+
Object.isExtensible(42)
|
77
|
+
} catch (err) {
|
78
|
+
throw e1;
|
79
|
+
}
|
80
|
+
}).toThrow(e1);
|
81
|
+
});
|
82
|
+
});
|
83
|
+
|
84
|
+
});
|
@@ -0,0 +1,24 @@
|
|
1
|
+
describe('String', function() {
|
2
|
+
"use strict";
|
3
|
+
describe("trim", function() {
|
4
|
+
var test = "\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFFHello, World!\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF";
|
5
|
+
|
6
|
+
it('trims all ES5 whitespace', function() {
|
7
|
+
expect(test.trim()).toEqual("Hello, World!");
|
8
|
+
expect(test.trim().length).toEqual(13);
|
9
|
+
});
|
10
|
+
});
|
11
|
+
|
12
|
+
describe("split", function() {
|
13
|
+
var test = "ab";
|
14
|
+
|
15
|
+
it('If "separator" is undefined must return Array with one String - "this" string', function() {
|
16
|
+
expect(test.split()).toEqual([test]);
|
17
|
+
expect(test.split(void 0)).toEqual([test]);
|
18
|
+
});
|
19
|
+
|
20
|
+
it('If "separator" is undefined and "limit" set to 0 must return Array[]', function() {
|
21
|
+
expect(test.split(void 0, 0)).toEqual([]);
|
22
|
+
});
|
23
|
+
});
|
24
|
+
});
|
data/amber/st/IDE.st
CHANGED
@@ -1226,7 +1226,8 @@ updateSourceAndButtons
|
|
1226
1226
|
with: [ |option|
|
1227
1227
|
html option
|
1228
1228
|
with: 'References';
|
1229
|
-
at: 'disabled' put: 'disabled'
|
1229
|
+
at: 'disabled' put: 'disabled';
|
1230
|
+
at: 'selected' put: 'selected'.
|
1230
1231
|
html option
|
1231
1232
|
class: 'important';
|
1232
1233
|
with: selectedMethod selector.
|
@@ -2052,23 +2053,21 @@ testCases
|
|
2052
2053
|
!TestRunner methodsFor: 'actions'!
|
2053
2054
|
|
2054
2055
|
performFailure: aTestCase
|
2055
|
-
aTestCase
|
2056
|
-
[ aTestCase perform: aTestCase selector ]
|
2057
|
-
ensure: [ aTestCase tearDown ]
|
2056
|
+
aTestCase runCase
|
2058
2057
|
!
|
2059
2058
|
|
2060
2059
|
run: aCollection
|
2061
|
-
|
2062
|
-
|
2063
|
-
|
2064
|
-
|
2065
|
-
|
2066
|
-
|
2067
|
-
|
2068
|
-
|
2069
|
-
|
2070
|
-
|
2071
|
-
|
2060
|
+
| worker |
|
2061
|
+
worker := TestSuiteRunner on: aCollection.
|
2062
|
+
result := worker result.
|
2063
|
+
worker announcer on: ResultAnnouncement do: [:ann |
|
2064
|
+
ann result == result ifTrue: [
|
2065
|
+
self progressBar updatePercent: result runs / result total * 100.
|
2066
|
+
self updateStatusDiv.
|
2067
|
+
self updateMethodsList
|
2068
|
+
]
|
2069
|
+
].
|
2070
|
+
worker run
|
2072
2071
|
!
|
2073
2072
|
|
2074
2073
|
selectAllCategories
|
@@ -2124,7 +2123,7 @@ printFailures
|
|
2124
2123
|
!
|
2125
2124
|
|
2126
2125
|
printPasses
|
2127
|
-
^(self result
|
2126
|
+
^(self result runs - self result errors size - self result failures size) asString , ' passes, '
|
2128
2127
|
!
|
2129
2128
|
|
2130
2129
|
printTotal
|
data/amber/st/Kernel-Classes.st
CHANGED
@@ -106,13 +106,12 @@ name
|
|
106
106
|
<return self.className || nil>
|
107
107
|
!
|
108
108
|
|
109
|
+
organization
|
110
|
+
^ self basicAt: 'organization'
|
111
|
+
!
|
112
|
+
|
109
113
|
protocols
|
110
|
-
|
111
|
-
protocols := Array new.
|
112
|
-
self methodDictionary do: [:each |
|
113
|
-
(protocols includes: each category) ifFalse: [
|
114
|
-
protocols add: each category]].
|
115
|
-
^protocols sort
|
114
|
+
^ self organization elements sorted
|
116
115
|
!
|
117
116
|
|
118
117
|
protocolsDo: aBlock
|
@@ -180,9 +179,10 @@ compile: aString category: anotherString
|
|
180
179
|
!
|
181
180
|
|
182
181
|
removeCompiledMethod: aMethod
|
183
|
-
<
|
184
|
-
|
185
|
-
|
182
|
+
<
|
183
|
+
smalltalk.removeMethod(aMethod)
|
184
|
+
smalltalk.init(self);
|
185
|
+
>.
|
186
186
|
|
187
187
|
SystemAnnouncer current
|
188
188
|
announce: (MethodRemoved new
|