resin 0.3.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|