amber-rails 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (90) hide show
  1. data/.gitignore +2 -0
  2. data/.rvmrc +4 -0
  3. data/CHANGELOG.md +3 -0
  4. data/Gemfile +2 -0
  5. data/Gemfile.lock +96 -0
  6. data/LICENSE +7 -0
  7. data/README.md +13 -0
  8. data/Rakefile +15 -0
  9. data/amber-rails.gemspec +21 -0
  10. data/app/assets/.DS_Store +0 -0
  11. data/app/assets/javascripts/.DS_Store +0 -0
  12. data/app/assets/javascripts/codemirror/codemirror.js +2144 -0
  13. data/app/assets/javascripts/codemirror/overlay.js +51 -0
  14. data/app/assets/javascripts/codemirror/runmode.js +27 -0
  15. data/app/assets/javascripts/codemirror/smalltalk/index.html +56 -0
  16. data/app/assets/javascripts/codemirror/smalltalk/smalltalk.js +134 -0
  17. data/app/assets/javascripts/html5.js +35 -0
  18. data/app/assets/javascripts/jquery.js +8981 -0
  19. data/app/assets/javascripts/jquery.textarea.js +267 -0
  20. data/app/assets/javascripts/jquery.tmpl.js +503 -0
  21. data/app/assets/javascripts/jquery.ui.js +272 -0
  22. data/app/assets/javascripts/json2.js +481 -0
  23. data/app/assets/javascripts/jtalk-development.js.coffee +4 -0
  24. data/app/assets/javascripts/jtalk-todos.js.coffee +4 -0
  25. data/app/assets/javascripts/jtalk.js.coffee +16 -0
  26. data/app/assets/javascripts/jtalk_core/boot.js +466 -0
  27. data/app/assets/javascripts/jtalk_core/st/.DS_Store +0 -0
  28. data/app/assets/javascripts/jtalk_core/st/Benchfib.js +159 -0
  29. data/app/assets/javascripts/jtalk_core/st/Canvas.js +1479 -0
  30. data/app/assets/javascripts/jtalk_core/st/Compiler.js +1587 -0
  31. data/app/assets/javascripts/jtalk_core/st/Examples.js +863 -0
  32. data/app/assets/javascripts/jtalk_core/st/HTML5.js +54 -0
  33. data/app/assets/javascripts/jtalk_core/st/IDE.js +3457 -0
  34. data/app/assets/javascripts/jtalk_core/st/JQuery.js +898 -0
  35. data/app/assets/javascripts/jtalk_core/st/Kernel.js +6761 -0
  36. data/app/assets/javascripts/jtalk_core/st/Parser.js +1655 -0
  37. data/app/assets/javascripts/jtalk_core/st/SUnit.js +1059 -0
  38. data/app/assets/stylesheets/codemirror.css +67 -0
  39. data/app/assets/stylesheets/codemirror_jtalk.css +21 -0
  40. data/app/assets/stylesheets/jtalk.css +369 -0
  41. data/app/assets/stylesheets/sunit.css +65 -0
  42. data/config/routes.rb +10 -0
  43. data/examples/todos/.gitignore +5 -0
  44. data/examples/todos/.rvmrc +4 -0
  45. data/examples/todos/Gemfile +12 -0
  46. data/examples/todos/Gemfile.lock +126 -0
  47. data/examples/todos/README +261 -0
  48. data/examples/todos/Rakefile +15 -0
  49. data/examples/todos/app/assets/images/rails.png +0 -0
  50. data/examples/todos/app/assets/javascripts/application.js.coffee +5 -0
  51. data/examples/todos/app/assets/javascripts/jtalk/Examples.deploy.js +863 -0
  52. data/examples/todos/app/assets/javascripts/jtalk/Examples.js +863 -0
  53. data/examples/todos/app/assets/smalltalk/Examples.st +397 -0
  54. data/examples/todos/app/assets/stylesheets/application.css +8 -0
  55. data/examples/todos/app/assets/stylesheets/jtalk-todos.css +154 -0
  56. data/examples/todos/app/controllers/application_controller.rb +3 -0
  57. data/examples/todos/app/controllers/todos_controller.rb +5 -0
  58. data/examples/todos/app/helpers/application_helper.rb +2 -0
  59. data/examples/todos/app/models/.gitkeep +0 -0
  60. data/examples/todos/app/views/todos/index.html.haml +16 -0
  61. data/examples/todos/config.ru +4 -0
  62. data/examples/todos/config/application.rb +31 -0
  63. data/examples/todos/config/boot.rb +6 -0
  64. data/examples/todos/config/database.yml +25 -0
  65. data/examples/todos/config/environment.rb +5 -0
  66. data/examples/todos/config/environments/development.rb +27 -0
  67. data/examples/todos/config/environments/production.rb +60 -0
  68. data/examples/todos/config/environments/test.rb +42 -0
  69. data/examples/todos/config/initializers/backtrace_silencers.rb +7 -0
  70. data/examples/todos/config/initializers/inflections.rb +10 -0
  71. data/examples/todos/config/initializers/mime_types.rb +5 -0
  72. data/examples/todos/config/initializers/secret_token.rb +7 -0
  73. data/examples/todos/config/initializers/session_store.rb +8 -0
  74. data/examples/todos/config/initializers/wrap_parameters.rb +14 -0
  75. data/examples/todos/config/locales/en.yml +5 -0
  76. data/examples/todos/config/routes.rb +3 -0
  77. data/examples/todos/log/.gitkeep +0 -0
  78. data/examples/todos/public/404.html +26 -0
  79. data/examples/todos/public/422.html +26 -0
  80. data/examples/todos/public/500.html +26 -0
  81. data/examples/todos/public/favicon.ico +0 -0
  82. data/examples/todos/public/robots.txt +5 -0
  83. data/examples/todos/script/rails +6 -0
  84. data/examples/todos/vendor/assets/stylesheets/.gitkeep +0 -0
  85. data/examples/todos/vendor/plugins/.gitkeep +0 -0
  86. data/lib/amber-rails.rb +1 -0
  87. data/lib/amber/rails.rb +30 -0
  88. data/lib/amber/rails/engine.rb +12 -0
  89. data/lib/amber/rails/version.rb +5 -0
  90. metadata +167 -0
@@ -0,0 +1,1059 @@
1
+ smalltalk.addClass('TestCase', smalltalk.Object, ['testedClass'], 'SUnit');
2
+ smalltalk.addMethod(
3
+ '_testedClass',
4
+ smalltalk.method({
5
+ selector: 'testedClass',
6
+ category: 'accessing',
7
+ fn: function (){
8
+ var self=this;
9
+ return self['@testedClass'];
10
+ return self;},
11
+ source: unescape('testedClass%0A%09%5EtestedClass'),
12
+ messageSends: [],
13
+ referencedClasses: []
14
+ }),
15
+ smalltalk.TestCase);
16
+
17
+ smalltalk.addMethod(
18
+ '_testedClass_',
19
+ smalltalk.method({
20
+ selector: 'testedClass:',
21
+ category: 'accessing',
22
+ fn: function (aClass){
23
+ var self=this;
24
+ self['@testedClass']=aClass;
25
+ return self;},
26
+ source: unescape('testedClass%3A%20aClass%0A%09testedClass%20%3A%3D%20aClass'),
27
+ messageSends: [],
28
+ referencedClasses: []
29
+ }),
30
+ smalltalk.TestCase);
31
+
32
+ smalltalk.addMethod(
33
+ '_cleanUpInstanceVariables',
34
+ smalltalk.method({
35
+ selector: 'cleanUpInstanceVariables',
36
+ category: 'private',
37
+ fn: function (){
38
+ var self=this;
39
+ smalltalk.send(smalltalk.send(smalltalk.send(self, "_class", []), "_instanceVariableNames", []), "_do_", [(function(name){return smalltalk.send(smalltalk.send(name, "__eq", ["testSelector"]), "_ifFalse_", [(function(){return smalltalk.send(self, "_instVarAt_put_", [name, nil]);})]);})]);
40
+ return self;},
41
+ source: unescape('cleanUpInstanceVariables%0A%09self%20class%20instanceVariableNames%20do%3A%20%5B%20%3Aname%20%7C%0A%09%09name%20%3D%20%27testSelector%27%20ifFalse%3A%20%5B%0A%09%09%09self%20instVarAt%3A%20name%20put%3A%20nil%20%5D%5D'),
42
+ messageSends: ["do:", "instanceVariableNames", "class", "ifFalse:", unescape("%3D"), "instVarAt:put:"],
43
+ referencedClasses: []
44
+ }),
45
+ smalltalk.TestCase);
46
+
47
+ smalltalk.addMethod(
48
+ '_signalFailure_',
49
+ smalltalk.method({
50
+ selector: 'signalFailure:',
51
+ category: 'private',
52
+ fn: function (aString){
53
+ var self=this;
54
+ (function($rec){smalltalk.send($rec, "_messageText_", [aString]);return smalltalk.send($rec, "_signal", []);})(smalltalk.send(smalltalk.TestFailure, "_new", []));
55
+ return self;},
56
+ source: unescape('signalFailure%3A%20aString%0A%09TestFailure%20new%0A%09%09messageText%3A%20aString%3B%0A%09%09signal'),
57
+ messageSends: ["messageText:", "signal", "new"],
58
+ referencedClasses: [smalltalk.nil]
59
+ }),
60
+ smalltalk.TestCase);
61
+
62
+ smalltalk.addMethod(
63
+ '_setUp',
64
+ smalltalk.method({
65
+ selector: 'setUp',
66
+ category: 'running',
67
+ fn: function (){
68
+ var self=this;
69
+
70
+ return self;},
71
+ source: unescape('setUp'),
72
+ messageSends: [],
73
+ referencedClasses: []
74
+ }),
75
+ smalltalk.TestCase);
76
+
77
+ smalltalk.addMethod(
78
+ '_tearDown',
79
+ smalltalk.method({
80
+ selector: 'tearDown',
81
+ category: 'running',
82
+ fn: function (){
83
+ var self=this;
84
+
85
+ return self;},
86
+ source: unescape('tearDown'),
87
+ messageSends: [],
88
+ referencedClasses: []
89
+ }),
90
+ smalltalk.TestCase);
91
+
92
+ smalltalk.addMethod(
93
+ '_methods',
94
+ smalltalk.method({
95
+ selector: 'methods',
96
+ category: 'running',
97
+ fn: function (){
98
+ var self=this;
99
+ return smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(self, "_class", []), "_methodDictionary", []), "_keys", []), "_select_", [(function(each){return smalltalk.send(each, "_match_", [unescape("%5Etest")]);})]);
100
+ return self;},
101
+ source: unescape('methods%0A%09%5Eself%20class%20methodDictionary%20keys%20select%3A%20%5B%3Aeach%20%7C%20each%20match%3A%20%27%5Etest%27%5D'),
102
+ messageSends: ["select:", "keys", "methodDictionary", "class", "match:"],
103
+ referencedClasses: []
104
+ }),
105
+ smalltalk.TestCase);
106
+
107
+ smalltalk.addMethod(
108
+ '_runCaseFor_',
109
+ smalltalk.method({
110
+ selector: 'runCaseFor:',
111
+ category: 'running',
112
+ fn: function (aTestResult){
113
+ var self=this;
114
+ smalltalk.send((function(){smalltalk.send(self, "_setUp", []);return smalltalk.send(self, "_performTestFor_", [aTestResult]);}), "_on_do_", [smalltalk.Error, (function(ex){smalltalk.send(self, "_tearDown", []);smalltalk.send(self, "_cleanUpInstanceVariables", []);return smalltalk.send(ex, "_signal", []);})]);
115
+ smalltalk.send(self, "_tearDown", []);
116
+ smalltalk.send(self, "_cleanUpInstanceVariables", []);
117
+ return self;},
118
+ source: unescape('runCaseFor%3A%20aTestResult%0A%09%5Bself%20setUp.%0A%09self%20performTestFor%3A%20aTestResult%5D%0A%09%09on%3A%20Error%0A%09%09do%3A%20%5B%3Aex%20%7C%0A%09%09%09self%20tearDown.%0A%09%09%09self%20cleanUpInstanceVariables.%0A%09%09%09ex%20signal%5D.%0A%09self%20tearDown.%0A%09self%20cleanUpInstanceVariables'),
119
+ messageSends: ["on:do:", "setUp", "performTestFor:", "tearDown", "cleanUpInstanceVariables", "signal"],
120
+ referencedClasses: [smalltalk.Error]
121
+ }),
122
+ smalltalk.TestCase);
123
+
124
+ smalltalk.addMethod(
125
+ '_performTestFor_',
126
+ smalltalk.method({
127
+ selector: 'performTestFor:',
128
+ category: 'running',
129
+ fn: function (aResult){
130
+ var self=this;
131
+ smalltalk.send(smalltalk.send(self, "_methods", []), "_do_", [(function(each){smalltalk.send((function(){return smalltalk.send((function(){return smalltalk.send(self, "_perform_", [each]);}), "_on_do_", [smalltalk.TestFailure, (function(ex){return smalltalk.send(aResult, "_addFailure_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(self, "_class", []), "_name", []), "__comma", [unescape("%3E%3E")]), "__comma", [each])]);})]);}), "_on_do_", [smalltalk.Error, (function(ex){return smalltalk.send(aResult, "_addError_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(self, "_class", []), "_name", []), "__comma", [unescape("%3E%3E")]), "__comma", [each])]);})]);return smalltalk.send(aResult, "_increaseRuns", []);})]);
132
+ return self;},
133
+ source: unescape('performTestFor%3A%20aResult%0A%09self%20methods%20do%3A%20%5B%3Aeach%20%7C%20%0A%09%09%5B%5Bself%20perform%3A%20each%5D%0A%09%09%09on%3A%20TestFailure%20do%3A%20%5B%3Aex%20%7C%20aResult%20addFailure%3A%20self%20class%20name%2C%20%27%3E%3E%27%2C%20each%5D%5D%0A%09%09%09on%3A%20Error%20do%3A%20%5B%3Aex%20%7C%20aResult%20addError%3A%20self%20class%20name%2C%20%27%3E%3E%27%2C%20each%5D.%0A%09%09aResult%20increaseRuns%5D'),
134
+ messageSends: ["do:", "methods", "on:do:", "perform:", "addFailure:", unescape("%2C"), "name", "class", "addError:", "increaseRuns"],
135
+ referencedClasses: [smalltalk.nil,smalltalk.Error]
136
+ }),
137
+ smalltalk.TestCase);
138
+
139
+ smalltalk.addMethod(
140
+ '_assert_',
141
+ smalltalk.method({
142
+ selector: 'assert:',
143
+ category: 'testing',
144
+ fn: function (aBoolean){
145
+ var self=this;
146
+ smalltalk.send(aBoolean, "_ifFalse_", [(function(){return smalltalk.send(self, "_signalFailure_", ["Assertion failed"]);})]);
147
+ return self;},
148
+ source: unescape('assert%3A%20aBoolean%0A%09aBoolean%20ifFalse%3A%20%5Bself%20signalFailure%3A%20%27Assertion%20failed%27%5D'),
149
+ messageSends: ["ifFalse:", "signalFailure:"],
150
+ referencedClasses: []
151
+ }),
152
+ smalltalk.TestCase);
153
+
154
+ smalltalk.addMethod(
155
+ '_deny_',
156
+ smalltalk.method({
157
+ selector: 'deny:',
158
+ category: 'testing',
159
+ fn: function (aBoolean){
160
+ var self=this;
161
+ smalltalk.send(self, "_assert_", [smalltalk.send(aBoolean, "_not", [])]);
162
+ return self;},
163
+ source: unescape('deny%3A%20aBoolean%0A%09self%20assert%3A%20aBoolean%20not'),
164
+ messageSends: ["assert:", "not"],
165
+ referencedClasses: []
166
+ }),
167
+ smalltalk.TestCase);
168
+
169
+
170
+
171
+ smalltalk.addClass('ExampleTest', smalltalk.TestCase, ['test'], 'SUnit');
172
+ smalltalk.addMethod(
173
+ '_testFailure',
174
+ smalltalk.method({
175
+ selector: 'testFailure',
176
+ category: 'not yet classified',
177
+ fn: function (){
178
+ var self=this;
179
+ smalltalk.send(self, "_deny_", [true]);
180
+ return self;},
181
+ source: unescape('testFailure%0A%09self%20deny%3A%20true'),
182
+ messageSends: ["deny:"],
183
+ referencedClasses: []
184
+ }),
185
+ smalltalk.ExampleTest);
186
+
187
+ smalltalk.addMethod(
188
+ '_testPasses',
189
+ smalltalk.method({
190
+ selector: 'testPasses',
191
+ category: 'not yet classified',
192
+ fn: function (){
193
+ var self=this;
194
+ smalltalk.send((100000), "_timesRepeat_", [(function(){return smalltalk.send(self, "_assert_", [smalltalk.send(smalltalk.send((1), "__plus", [(1)]), "__eq", [(2)])]);})]);
195
+ return self;},
196
+ source: unescape('testPasses%0A%09100000%20timesRepeat%3A%20%5Bself%20assert%3A%201%20+%201%20%3D%202%5D'),
197
+ messageSends: ["timesRepeat:", "assert:", unescape("%3D"), unescape("+")],
198
+ referencedClasses: []
199
+ }),
200
+ smalltalk.ExampleTest);
201
+
202
+ smalltalk.addMethod(
203
+ '_testError',
204
+ smalltalk.method({
205
+ selector: 'testError',
206
+ category: 'not yet classified',
207
+ fn: function (){
208
+ var self=this;
209
+ smalltalk.send(self, "_assert_", [smalltalk.send((1), "_foo", [])]);
210
+ return self;},
211
+ source: unescape('testError%0A%09self%20assert%3A%201%20foo'),
212
+ messageSends: ["assert:", "foo"],
213
+ referencedClasses: []
214
+ }),
215
+ smalltalk.ExampleTest);
216
+
217
+
218
+
219
+ smalltalk.addClass('ProgressBar', smalltalk.TabWidget, ['percent', 'progressDiv', 'div'], 'SUnit');
220
+ smalltalk.addMethod(
221
+ '_percent',
222
+ smalltalk.method({
223
+ selector: 'percent',
224
+ category: 'accessing',
225
+ fn: function (){
226
+ var self=this;
227
+ return smalltalk.send(self['@percent'], "_ifNil_", [(function(){return (0);})]);
228
+ return self;},
229
+ source: unescape('percent%0A%09%5Epercent%20ifNil%3A%20%5B0%5D'),
230
+ messageSends: ["ifNil:"],
231
+ referencedClasses: []
232
+ }),
233
+ smalltalk.ProgressBar);
234
+
235
+ smalltalk.addMethod(
236
+ '_percent_',
237
+ smalltalk.method({
238
+ selector: 'percent:',
239
+ category: 'accessing',
240
+ fn: function (aNumber){
241
+ var self=this;
242
+ self['@percent']=aNumber;
243
+ return self;},
244
+ source: unescape('percent%3A%20aNumber%0A%09percent%20%3A%3D%20aNumber'),
245
+ messageSends: [],
246
+ referencedClasses: []
247
+ }),
248
+ smalltalk.ProgressBar);
249
+
250
+ smalltalk.addMethod(
251
+ '_renderOn_',
252
+ smalltalk.method({
253
+ selector: 'renderOn:',
254
+ category: 'rendering',
255
+ fn: function (html){
256
+ var self=this;
257
+ self['@div']=(function($rec){smalltalk.send($rec, "_class_", ["progress_bar"]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(html, "_div", []));
258
+ smalltalk.send(self, "_renderProgressBar", []);
259
+ return self;},
260
+ source: unescape('renderOn%3A%20html%20%0A%09div%20%3A%3D%20html%20div%20%0A%09%09class%3A%20%27progress_bar%27%3B%0A%09%09yourself.%0A%09self%20renderProgressBar'),
261
+ messageSends: ["class:", "yourself", "div", "renderProgressBar"],
262
+ referencedClasses: []
263
+ }),
264
+ smalltalk.ProgressBar);
265
+
266
+ smalltalk.addMethod(
267
+ '_updatePercent_',
268
+ smalltalk.method({
269
+ selector: 'updatePercent:',
270
+ category: 'updating',
271
+ fn: function (aNumber){
272
+ var self=this;
273
+ smalltalk.send(self, "_percent_", [aNumber]);
274
+ smalltalk.send(self, "_renderProgressBar", []);
275
+ return self;},
276
+ source: unescape('updatePercent%3A%20aNumber%0A%09self%20percent%3A%20aNumber.%0A%09self%20renderProgressBar'),
277
+ messageSends: ["percent:", "renderProgressBar"],
278
+ referencedClasses: []
279
+ }),
280
+ smalltalk.ProgressBar);
281
+
282
+ smalltalk.addMethod(
283
+ '_renderProgressBar',
284
+ smalltalk.method({
285
+ selector: 'renderProgressBar',
286
+ category: 'rendering',
287
+ fn: function (){
288
+ var self=this;
289
+ smalltalk.send(self['@div'], "_contents_", [(function(html){return (function($rec){smalltalk.send($rec, "_class_", ["progress"]);return smalltalk.send($rec, "_style_", [smalltalk.send(smalltalk.send("width:", "__comma", [smalltalk.send(smalltalk.send(self, "_percent", []), "_asString", [])]), "__comma", [unescape("%25")])]);})(smalltalk.send(html, "_div", []));})]);
290
+ return self;},
291
+ source: unescape('renderProgressBar%0A%09div%20contents%3A%20%5B%3Ahtml%20%7C%0A%09%09html%20div%20%0A%09%09%09class%3A%20%27progress%27%3B%0A%09%09%09style%3A%20%27width%3A%27%2C%20self%20percent%20asString%2C%20%27%25%27%5D'),
292
+ messageSends: ["contents:", "class:", "style:", unescape("%2C"), "asString", "percent", "div"],
293
+ referencedClasses: []
294
+ }),
295
+ smalltalk.ProgressBar);
296
+
297
+
298
+
299
+ smalltalk.addClass('TestFailure', smalltalk.Error, [], 'SUnit');
300
+
301
+
302
+ smalltalk.addClass('TestRunner', smalltalk.TabWidget, ['selectedCategories', 'categoriesList', 'selectedClasses', 'classesList', 'selectedMethods', 'progressBar', 'methodsList', 'result', 'statusDiv'], 'SUnit');
303
+ smalltalk.addMethod(
304
+ '_label',
305
+ smalltalk.method({
306
+ selector: 'label',
307
+ category: 'accessing',
308
+ fn: function (){
309
+ var self=this;
310
+ return unescape("%5BTest%20runner%5D");
311
+ return self;},
312
+ source: unescape('label%0A%20%20%20%20%5E%27%5BTest%20runner%5D%27'),
313
+ messageSends: [],
314
+ referencedClasses: []
315
+ }),
316
+ smalltalk.TestRunner);
317
+
318
+ smalltalk.addMethod(
319
+ '_categories',
320
+ smalltalk.method({
321
+ selector: 'categories',
322
+ category: 'accessing',
323
+ fn: function (){
324
+ var self=this;
325
+ var categories=nil;
326
+ categories=smalltalk.send(smalltalk.Array, "_new", []);
327
+ smalltalk.send(smalltalk.send(self, "_allClasses", []), "_do_", [(function(each){return smalltalk.send(smalltalk.send(categories, "_includes_", [smalltalk.send(each, "_category", [])]), "_ifFalse_", [(function(){return smalltalk.send(categories, "_add_", [smalltalk.send(each, "_category", [])]);})]);})]);
328
+ return smalltalk.send(categories, "_sort", []);
329
+ return self;},
330
+ source: unescape('categories%0A%20%20%20%20%7C%20categories%20%7C%0A%20%20%20%20categories%20%3A%3D%20Array%20new.%0A%20%20%20%20self%20allClasses%20do%3A%20%5B%3Aeach%20%7C%0A%09%28categories%20includes%3A%20each%20category%29%20ifFalse%3A%20%5B%0A%09%20%20%20%20categories%20add%3A%20each%20category%5D%5D.%0A%20%20%20%20%5Ecategories%20sort'),
331
+ messageSends: ["new", "do:", "allClasses", "ifFalse:", "includes:", "category", "add:", "sort"],
332
+ referencedClasses: [smalltalk.Array]
333
+ }),
334
+ smalltalk.TestRunner);
335
+
336
+ smalltalk.addMethod(
337
+ '_classes',
338
+ smalltalk.method({
339
+ selector: 'classes',
340
+ category: 'accessing',
341
+ fn: function (){
342
+ var self=this;
343
+ return smalltalk.send(smalltalk.send(smalltalk.send(self, "_allClasses", []), "_select_", [(function(each){return smalltalk.send(smalltalk.send(self, "_selectedCategories", []), "_includes_", [smalltalk.send(each, "_category", [])]);})]), "_sort_", [(function(a, b){return smalltalk.send(smalltalk.send(a, "_name", []), "__gt", [smalltalk.send(b, "_name", [])]);})]);
344
+ return self;},
345
+ source: unescape('classes%0A%20%20%20%20%5E%28self%20allClasses%20%0A%09select%3A%20%5B%3Aeach%20%7C%20self%20selectedCategories%20includes%3A%20each%20category%5D%29%0A%09sort%3A%20%5B%3Aa%20%3Ab%20%7C%20a%20name%20%3E%20b%20name%5D'),
346
+ messageSends: ["sort:", "select:", "allClasses", "includes:", "selectedCategories", "category", unescape("%3E"), "name"],
347
+ referencedClasses: []
348
+ }),
349
+ smalltalk.TestRunner);
350
+
351
+ smalltalk.addMethod(
352
+ '_selectedCategories',
353
+ smalltalk.method({
354
+ selector: 'selectedCategories',
355
+ category: 'accessing',
356
+ fn: function (){
357
+ var self=this;
358
+ return smalltalk.send(self['@selectedCategories'], "_ifNil_", [(function(){return self['@selectedCategories']=smalltalk.send(smalltalk.Array, "_new", []);})]);
359
+ return self;},
360
+ source: unescape('selectedCategories%0A%09%5EselectedCategories%20ifNil%3A%20%5BselectedCategories%20%3A%3D%20Array%20new%5D'),
361
+ messageSends: ["ifNil:", "new"],
362
+ referencedClasses: [smalltalk.Array]
363
+ }),
364
+ smalltalk.TestRunner);
365
+
366
+ smalltalk.addMethod(
367
+ '_allClasses',
368
+ smalltalk.method({
369
+ selector: 'allClasses',
370
+ category: 'accessing',
371
+ fn: function (){
372
+ var self=this;
373
+ return smalltalk.send(smalltalk.TestCase, "_allSubclasses", []);
374
+ return self;},
375
+ source: unescape('allClasses%0A%09%5ETestCase%20allSubclasses'),
376
+ messageSends: ["allSubclasses"],
377
+ referencedClasses: [smalltalk.TestCase]
378
+ }),
379
+ smalltalk.TestRunner);
380
+
381
+ smalltalk.addMethod(
382
+ '_selectedClasses',
383
+ smalltalk.method({
384
+ selector: 'selectedClasses',
385
+ category: 'accessing',
386
+ fn: function (){
387
+ var self=this;
388
+ return smalltalk.send(self['@selectedClasses'], "_ifNil_", [(function(){return self['@selectedClasses']=smalltalk.send(smalltalk.Array, "_new", []);})]);
389
+ return self;},
390
+ source: unescape('selectedClasses%0A%09%5EselectedClasses%20%20ifNil%3A%20%5BselectedClasses%20%3A%3D%20Array%20new%5D'),
391
+ messageSends: ["ifNil:", "new"],
392
+ referencedClasses: [smalltalk.Array]
393
+ }),
394
+ smalltalk.TestRunner);
395
+
396
+ smalltalk.addMethod(
397
+ '_progressBar',
398
+ smalltalk.method({
399
+ selector: 'progressBar',
400
+ category: 'accessing',
401
+ fn: function (){
402
+ var self=this;
403
+ return smalltalk.send(self['@progressBar'], "_ifNil_", [(function(){return self['@progressBar']=smalltalk.send(smalltalk.ProgressBar, "_new", []);})]);
404
+ return self;},
405
+ source: unescape('progressBar%0A%09%5EprogressBar%20ifNil%3A%20%5BprogressBar%20%3A%3D%20ProgressBar%20new%5D'),
406
+ messageSends: ["ifNil:", "new"],
407
+ referencedClasses: [smalltalk.ProgressBar]
408
+ }),
409
+ smalltalk.TestRunner);
410
+
411
+ smalltalk.addMethod(
412
+ '_selectedMethods',
413
+ smalltalk.method({
414
+ selector: 'selectedMethods',
415
+ category: 'accessing',
416
+ fn: function (){
417
+ var self=this;
418
+ return smalltalk.send(self['@selectedMethods'], "_ifNil_", [(function(){return smalltalk.send(smalltalk.send(self, "_selectedClasses", []), "_collect_", [(function(each){return smalltalk.send(smalltalk.send(smalltalk.send(each, "_methodDictionary", []), "_keys", []), "_select_", [(function(key){return smalltalk.send(key, "_beginsWith_", ["test"]);})]);})]);})]);
419
+ return self;},
420
+ source: unescape('selectedMethods%0A%09%5EselectedMethods%20ifNil%3A%20%5Bself%20selectedClasses%20collect%3A%20%5B%3Aeach%20%7C%0A%09%09each%20methodDictionary%20keys%20select%3A%20%5B%3Akey%20%7C%20%20key%20beginsWith%3A%20%27test%27%20%5D%5D%5D'),
421
+ messageSends: ["ifNil:", "collect:", "selectedClasses", "select:", "keys", "methodDictionary", "beginsWith:"],
422
+ referencedClasses: []
423
+ }),
424
+ smalltalk.TestRunner);
425
+
426
+ smalltalk.addMethod(
427
+ '_statusInfo',
428
+ smalltalk.method({
429
+ selector: 'statusInfo',
430
+ category: 'accessing',
431
+ fn: function (){
432
+ var self=this;
433
+ return smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(self, "_printTotal", []), "__comma", [smalltalk.send(self, "_printPasses", [])]), "__comma", [smalltalk.send(self, "_printErrors", [])]), "__comma", [smalltalk.send(self, "_printFailures", [])]);
434
+ return self;},
435
+ source: unescape('statusInfo%0A%09%5Eself%20printTotal%2C%20self%20printPasses%2C%20self%20printErrors%2C%20self%20printFailures'),
436
+ messageSends: [unescape("%2C"), "printTotal", "printPasses", "printErrors", "printFailures"],
437
+ referencedClasses: []
438
+ }),
439
+ smalltalk.TestRunner);
440
+
441
+ smalltalk.addMethod(
442
+ '_result',
443
+ smalltalk.method({
444
+ selector: 'result',
445
+ category: 'accessing',
446
+ fn: function (){
447
+ var self=this;
448
+ return self['@result'];
449
+ return self;},
450
+ source: unescape('result%0A%09%5Eresult'),
451
+ messageSends: [],
452
+ referencedClasses: []
453
+ }),
454
+ smalltalk.TestRunner);
455
+
456
+ smalltalk.addMethod(
457
+ '_failedMethods',
458
+ smalltalk.method({
459
+ selector: 'failedMethods',
460
+ category: 'accessing',
461
+ fn: function (){
462
+ var self=this;
463
+ smalltalk.send(smalltalk.send(smalltalk.send(self, "_result", []), "_failures", []), "_collect_", [(function(each){return (function($rec){smalltalk.send($rec, "_class_", ["failures"]);return smalltalk.send($rec, "_with_", [each]);})(smalltalk.send(html, "_li", []));})]);
464
+ return self;},
465
+ source: unescape('failedMethods%0A%09self%20result%20failures%20collect%3A%20%5B%3Aeach%20%7C%0A%09%09html%20li%20%0A%09%09%09class%3A%20%27failures%27%3B%0A%09%09%09with%3A%20each%5D'),
466
+ messageSends: ["collect:", "failures", "result", "class:", "with:", "li"],
467
+ referencedClasses: []
468
+ }),
469
+ smalltalk.TestRunner);
470
+
471
+ smalltalk.addMethod(
472
+ '_selectAllCategories',
473
+ smalltalk.method({
474
+ selector: 'selectAllCategories',
475
+ category: 'actions',
476
+ fn: function (){
477
+ var self=this;
478
+ smalltalk.send(smalltalk.send(self, "_categories", []), "_do_", [(function(each){return smalltalk.send(smalltalk.send(self['@selectedCategories'], "_includes_", [each]), "_ifFalse_", [(function(){return smalltalk.send(smalltalk.send(self, "_selectedCategories", []), "_add_", [each]);})]);})]);
479
+ (function($rec){smalltalk.send($rec, "_updateCategoriesList", []);return smalltalk.send($rec, "_updateClassesList", []);})(self);
480
+ return self;},
481
+ source: unescape('selectAllCategories%0A%09self%20categories%20do%3A%20%5B%3Aeach%20%7C%20%0A%09%09%28selectedCategories%20includes%3A%20each%29%20ifFalse%3A%20%5B%0A%09%09%09self%20selectedCategories%20add%3A%20each%5D%5D.%0A%09self%20%0A%09%20%20%20%20updateCategoriesList%3B%0A%09%20%20%20%20updateClassesList'),
482
+ messageSends: ["do:", "categories", "ifFalse:", "includes:", "add:", "selectedCategories", "updateCategoriesList", "updateClassesList"],
483
+ referencedClasses: []
484
+ }),
485
+ smalltalk.TestRunner);
486
+
487
+ smalltalk.addMethod(
488
+ '_toggleCategory_',
489
+ smalltalk.method({
490
+ selector: 'toggleCategory:',
491
+ category: 'actions',
492
+ fn: function (aCategory){
493
+ var self=this;
494
+ smalltalk.send(smalltalk.send(self, "_isSelectedCategory_", [aCategory]), "_ifFalse_ifTrue_", [(function(){return smalltalk.send(self['@selectedCategories'], "_add_", [aCategory]);}), (function(){return smalltalk.send(self['@selectedCategories'], "_remove_", [aCategory]);})]);
495
+ (function($rec){smalltalk.send($rec, "_updateCategoriesList", []);return smalltalk.send($rec, "_updateClassesList", []);})(self);
496
+ return self;},
497
+ source: unescape('toggleCategory%3A%20aCategory%0A%09%28self%20isSelectedCategory%3A%20aCategory%29%20%0A%09%09ifFalse%3A%20%5BselectedCategories%20add%3A%20aCategory%5D%0A%09%09ifTrue%3A%20%5BselectedCategories%20remove%3A%20aCategory%5D.%0A%09self%20%0A%09%20%20%20%20updateCategoriesList%3B%0A%09%20%20%20%20updateClassesList'),
498
+ messageSends: ["ifFalse:ifTrue:", "isSelectedCategory:", "add:", "remove:", "updateCategoriesList", "updateClassesList"],
499
+ referencedClasses: []
500
+ }),
501
+ smalltalk.TestRunner);
502
+
503
+ smalltalk.addMethod(
504
+ '_toggleClass_',
505
+ smalltalk.method({
506
+ selector: 'toggleClass:',
507
+ category: 'actions',
508
+ fn: function (aClass){
509
+ var self=this;
510
+ smalltalk.send(smalltalk.send(self, "_isSelectedClass_", [aClass]), "_ifFalse_ifTrue_", [(function(){return smalltalk.send(self['@selectedClasses'], "_add_", [aClass]);}), (function(){return smalltalk.send(self['@selectedClasses'], "_remove_", [aClass]);})]);
511
+ smalltalk.send(self, "_updateClassesList", []);
512
+ return self;},
513
+ source: unescape('toggleClass%3A%20aClass%0A%09%28self%20isSelectedClass%3A%20aClass%29%20%0A%09%09ifFalse%3A%20%5BselectedClasses%20add%3A%20aClass%5D%0A%09%09ifTrue%3A%20%5BselectedClasses%20remove%3A%20aClass%5D.%0A%09self%20%0A%09%20%20%20%20updateClassesList'),
514
+ messageSends: ["ifFalse:ifTrue:", "isSelectedClass:", "add:", "remove:", "updateClassesList"],
515
+ referencedClasses: []
516
+ }),
517
+ smalltalk.TestRunner);
518
+
519
+ smalltalk.addMethod(
520
+ '_selectAllClasses',
521
+ smalltalk.method({
522
+ selector: 'selectAllClasses',
523
+ category: 'actions',
524
+ fn: function (){
525
+ var self=this;
526
+ smalltalk.send(smalltalk.send(self, "_classes", []), "_do_", [(function(each){return smalltalk.send(smalltalk.send(self['@selectedClasses'], "_includes_", [each]), "_ifFalse_", [(function(){return smalltalk.send(smalltalk.send(self, "_selectedClasses", []), "_add_", [each]);})]);})]);
527
+ (function($rec){smalltalk.send($rec, "_updateCategoriesList", []);return smalltalk.send($rec, "_updateClassesList", []);})(self);
528
+ return self;},
529
+ source: unescape('selectAllClasses%0A%09self%20classes%20do%3A%20%5B%3Aeach%20%7C%20%0A%09%09%28selectedClasses%20includes%3A%20each%29%20ifFalse%3A%20%5B%0A%09%09%09self%20selectedClasses%20add%3A%20each%5D%5D.%0A%09self%20%0A%09%20%20%20%20updateCategoriesList%3B%0A%09%20%20%20%20updateClassesList'),
530
+ messageSends: ["do:", "classes", "ifFalse:", "includes:", "add:", "selectedClasses", "updateCategoriesList", "updateClassesList"],
531
+ referencedClasses: []
532
+ }),
533
+ smalltalk.TestRunner);
534
+
535
+ smalltalk.addMethod(
536
+ '_run_',
537
+ smalltalk.method({
538
+ selector: 'run:',
539
+ category: 'actions',
540
+ fn: function (aCollection){
541
+ var self=this;
542
+ self['@result']=smalltalk.send(smalltalk.TestResult, "_new", []);
543
+ (function($rec){smalltalk.send($rec, "_updateStatusDiv", []);return smalltalk.send($rec, "_updateMethodsList", []);})(self);
544
+ smalltalk.send(smalltalk.send(self, "_progressBar", []), "_updatePercent_", [(0)]);
545
+ smalltalk.send(self['@result'], "_total_", [smalltalk.send(aCollection, "_inject_into_", [(0), (function(acc, each){return smalltalk.send(acc, "__plus", [smalltalk.send(smalltalk.send(each, "_methods", []), "_size", [])]);})])]);
546
+ smalltalk.send(aCollection, "_do_", [(function(each){return smalltalk.send((function(){smalltalk.send(each, "_runCaseFor_", [self['@result']]);smalltalk.send(smalltalk.send(self, "_progressBar", []), "_updatePercent_", [smalltalk.send(smalltalk.send(smalltalk.send(self['@result'], "_runs", []), "__slash", [smalltalk.send(self['@result'], "_total", [])]), "__star", [(100)])]);smalltalk.send(self, "_updateStatusDiv", []);return smalltalk.send(self, "_updateMethodsList", []);}), "_valueWithTimeout_", [(100)]);})]);
547
+ return self;},
548
+ source: unescape('run%3A%20aCollection%0A%09result%20%3A%3D%20TestResult%20new.%0A%09self%20%0A%09%09updateStatusDiv%3B%0A%09%09updateMethodsList.%0A%09self%20progressBar%20updatePercent%3A%200.%0A%09result%20total%3A%20%28aCollection%20inject%3A%200%20into%3A%20%5B%3Aacc%20%3Aeach%20%7C%20acc%20+%20each%20methods%20size%5D%29.%0A%09aCollection%20do%3A%20%5B%3Aeach%20%7C%20%0A%09%09%5Beach%20runCaseFor%3A%20result.%0A%09%09self%20progressBar%20updatePercent%3A%20result%20runs%20/%20result%20total%20*%20100.%0A%09%09self%20updateStatusDiv.%0A%09%09self%20updateMethodsList%5D%20valueWithTimeout%3A%20100%5D.'),
549
+ messageSends: ["new", "updateStatusDiv", "updateMethodsList", "updatePercent:", "progressBar", "total:", "inject:into:", unescape("+"), "size", "methods", "do:", "valueWithTimeout:", "runCaseFor:", unescape("*"), unescape("/"), "runs", "total"],
550
+ referencedClasses: [smalltalk.nil]
551
+ }),
552
+ smalltalk.TestRunner);
553
+
554
+ smalltalk.addMethod(
555
+ '_initialize',
556
+ smalltalk.method({
557
+ selector: 'initialize',
558
+ category: 'initialization',
559
+ fn: function (){
560
+ var self=this;
561
+ smalltalk.send(self, "_initialize", [], smalltalk.TabWidget);
562
+ self['@result']=smalltalk.send(smalltalk.TestResult, "_new", []);
563
+ return self;},
564
+ source: unescape('initialize%0A%09super%20initialize.%0A%09result%20%3A%3D%20TestResult%20new'),
565
+ messageSends: ["initialize", "new"],
566
+ referencedClasses: [smalltalk.nil]
567
+ }),
568
+ smalltalk.TestRunner);
569
+
570
+ smalltalk.addMethod(
571
+ '_printErrors',
572
+ smalltalk.method({
573
+ selector: 'printErrors',
574
+ category: 'printing',
575
+ fn: function (){
576
+ var self=this;
577
+ return smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(self, "_result", []), "_errors", []), "_size", []), "_asString", []), "__comma", [unescape("%20errors%2C%20")]);
578
+ return self;},
579
+ source: unescape('printErrors%0A%09%5Eself%20result%20errors%20size%20asString%20%2C%20%27%20errors%2C%20%27'),
580
+ messageSends: [unescape("%2C"), "asString", "size", "errors", "result"],
581
+ referencedClasses: []
582
+ }),
583
+ smalltalk.TestRunner);
584
+
585
+ smalltalk.addMethod(
586
+ '_printFailures',
587
+ smalltalk.method({
588
+ selector: 'printFailures',
589
+ category: 'printing',
590
+ fn: function (){
591
+ var self=this;
592
+ return smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(self, "_result", []), "_failures", []), "_size", []), "_asString", []), "__comma", [" failures"]);
593
+ return self;},
594
+ source: unescape('printFailures%0A%09%5Eself%20result%20failures%20size%20asString%2C%20%27%20failures%27'),
595
+ messageSends: [unescape("%2C"), "asString", "size", "failures", "result"],
596
+ referencedClasses: []
597
+ }),
598
+ smalltalk.TestRunner);
599
+
600
+ smalltalk.addMethod(
601
+ '_printPasses',
602
+ smalltalk.method({
603
+ selector: 'printPasses',
604
+ category: 'printing',
605
+ fn: function (){
606
+ var self=this;
607
+ return smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(self, "_result", []), "_total", []), "__minus", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(self, "_result", []), "_errors", []), "_size", []), "__plus", [smalltalk.send(smalltalk.send(smalltalk.send(self, "_result", []), "_failures", []), "_size", [])])]), "_asString", []), "__comma", [unescape("%20passes%2C%20")]);
608
+ return self;},
609
+ source: unescape('printPasses%0A%09%5E%28%28%28self%20result%20total%29%20-%20%28self%20result%20errors%20size%20+%20%28self%20result%20failures%20size%29%29%29%20asString%29%20%2C%20%27%20passes%2C%20%27'),
610
+ messageSends: [unescape("%2C"), "asString", unescape("-"), "total", "result", unescape("+"), "size", "errors", "failures"],
611
+ referencedClasses: []
612
+ }),
613
+ smalltalk.TestRunner);
614
+
615
+ smalltalk.addMethod(
616
+ '_printTotal',
617
+ smalltalk.method({
618
+ selector: 'printTotal',
619
+ category: 'printing',
620
+ fn: function (){
621
+ var self=this;
622
+ return smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(self, "_result", []), "_total", []), "_asString", []), "__comma", [unescape("%20runs%2C%20")]);
623
+ return self;},
624
+ source: unescape('printTotal%0A%09%5Eself%20result%20total%20asString%2C%20%27%20runs%2C%20%27'),
625
+ messageSends: [unescape("%2C"), "asString", "total", "result"],
626
+ referencedClasses: []
627
+ }),
628
+ smalltalk.TestRunner);
629
+
630
+ smalltalk.addMethod(
631
+ '_renderBoxOn_',
632
+ smalltalk.method({
633
+ selector: 'renderBoxOn:',
634
+ category: 'rendering',
635
+ fn: function (html){
636
+ var self=this;
637
+ (function($rec){smalltalk.send($rec, "_renderCategoriesOn_", [html]);smalltalk.send($rec, "_renderClassesOn_", [html]);return smalltalk.send($rec, "_renderResultsOn_", [html]);})(self);
638
+ return self;},
639
+ source: unescape('renderBoxOn%3A%20html%0A%20%20%20%20self%20%0A%09renderCategoriesOn%3A%20html%3B%0A%09renderClassesOn%3A%20html%3B%0A%09renderResultsOn%3A%20html'),
640
+ messageSends: ["renderCategoriesOn:", "renderClassesOn:", "renderResultsOn:"],
641
+ referencedClasses: []
642
+ }),
643
+ smalltalk.TestRunner);
644
+
645
+ smalltalk.addMethod(
646
+ '_renderButtonsOn_',
647
+ smalltalk.method({
648
+ selector: 'renderButtonsOn:',
649
+ category: 'rendering',
650
+ fn: function (html){
651
+ var self=this;
652
+ (function($rec){smalltalk.send($rec, "_with_", ["Run selected"]);return smalltalk.send($rec, "_onClick_", [(function(){return smalltalk.send(self, "_run_", [smalltalk.send(smalltalk.send(self, "_selectedClasses", []), "_collect_", [(function(each){return smalltalk.send(each, "_new", []);})])]);})]);})(smalltalk.send(html, "_button", []));
653
+ return self;},
654
+ source: unescape('renderButtonsOn%3A%20html%0A%20%20%20%20html%20button%0A%09with%3A%20%27Run%20selected%27%3B%0A%09onClick%3A%20%5Bself%20run%3A%20%28self%20selectedClasses%20collect%3A%20%5B%3Aeach%20%7C%20each%20new%5D%29%5D'),
655
+ messageSends: ["with:", "onClick:", "run:", "collect:", "selectedClasses", "new", "button"],
656
+ referencedClasses: []
657
+ }),
658
+ smalltalk.TestRunner);
659
+
660
+ smalltalk.addMethod(
661
+ '_renderCategoriesOn_',
662
+ smalltalk.method({
663
+ selector: 'renderCategoriesOn:',
664
+ category: 'rendering',
665
+ fn: function (html){
666
+ var self=this;
667
+ self['@categoriesList']=smalltalk.send(smalltalk.send(html, "_ul", []), "_class_", ["jt_column sunit categories"]);
668
+ smalltalk.send(self, "_updateCategoriesList", []);
669
+ return self;},
670
+ source: unescape('renderCategoriesOn%3A%20html%0A%20%20%20%20%09categoriesList%20%3A%3D%20html%20ul%20class%3A%20%27jt_column%20sunit%20categories%27.%0A%09self%20updateCategoriesList'),
671
+ messageSends: ["class:", "ul", "updateCategoriesList"],
672
+ referencedClasses: []
673
+ }),
674
+ smalltalk.TestRunner);
675
+
676
+ smalltalk.addMethod(
677
+ '_renderClassesOn_',
678
+ smalltalk.method({
679
+ selector: 'renderClassesOn:',
680
+ category: 'rendering',
681
+ fn: function (html){
682
+ var self=this;
683
+ self['@classesList']=smalltalk.send(smalltalk.send(html, "_ul", []), "_class_", ["jt_column sunit classes"]);
684
+ smalltalk.send(self, "_updateClassesList", []);
685
+ return self;},
686
+ source: unescape('renderClassesOn%3A%20html%0A%20%20%20%20%09classesList%20%3A%3D%20html%20ul%20class%3A%20%27jt_column%20sunit%20classes%27.%0A%09self%20updateClassesList'),
687
+ messageSends: ["class:", "ul", "updateClassesList"],
688
+ referencedClasses: []
689
+ }),
690
+ smalltalk.TestRunner);
691
+
692
+ smalltalk.addMethod(
693
+ '_renderResultsOn_',
694
+ smalltalk.method({
695
+ selector: 'renderResultsOn:',
696
+ category: 'rendering',
697
+ fn: function (html){
698
+ var self=this;
699
+ self['@statusDiv']=smalltalk.send(html, "_div", []);
700
+ smalltalk.send(html, "_with_", [smalltalk.send(self, "_progressBar", [])]);
701
+ self['@methodsList']=smalltalk.send(smalltalk.send(html, "_ul", []), "_class_", ["jt_column sunit methods"]);
702
+ smalltalk.send(self, "_updateMethodsList", []);
703
+ smalltalk.send(self, "_updateStatusDiv", []);
704
+ return self;},
705
+ source: unescape('renderResultsOn%3A%20html%0A%20%20%20%20%09statusDiv%20%3A%3D%20html%20div.%0A%09html%20with%3A%20self%20progressBar.%0A%20%20%20%09methodsList%20%3A%3D%20html%20ul%20class%3A%20%27jt_column%20sunit%20methods%27.%0A%09self%20updateMethodsList.%0A%09self%20updateStatusDiv'),
706
+ messageSends: ["div", "with:", "progressBar", "class:", "ul", "updateMethodsList", "updateStatusDiv"],
707
+ referencedClasses: []
708
+ }),
709
+ smalltalk.TestRunner);
710
+
711
+ smalltalk.addMethod(
712
+ '_renderFailuresOn_',
713
+ smalltalk.method({
714
+ selector: 'renderFailuresOn:',
715
+ category: 'rendering',
716
+ fn: function (html){
717
+ var self=this;
718
+ smalltalk.send(smalltalk.send(smalltalk.send(self, "_result", []), "_failures", []), "_do_", [(function(each){return (function($rec){smalltalk.send($rec, "_class_", ["failures"]);return smalltalk.send($rec, "_with_", [each]);})(smalltalk.send(html, "_li", []));})]);
719
+ return self;},
720
+ source: unescape('renderFailuresOn%3A%20html%0A%09self%20result%20failures%20do%3A%20%5B%3Aeach%20%7C%0A%09%09html%20li%20%0A%09%09%09class%3A%20%27failures%27%3B%0A%09%09%09with%3A%20each%5D'),
721
+ messageSends: ["do:", "failures", "result", "class:", "with:", "li"],
722
+ referencedClasses: []
723
+ }),
724
+ smalltalk.TestRunner);
725
+
726
+ smalltalk.addMethod(
727
+ '_renderErrorsOn_',
728
+ smalltalk.method({
729
+ selector: 'renderErrorsOn:',
730
+ category: 'rendering',
731
+ fn: function (html){
732
+ var self=this;
733
+ smalltalk.send(smalltalk.send(smalltalk.send(self, "_result", []), "_errors", []), "_do_", [(function(each){return (function($rec){smalltalk.send($rec, "_class_", ["errors"]);return smalltalk.send($rec, "_with_", [each]);})(smalltalk.send(html, "_li", []));})]);
734
+ return self;},
735
+ source: unescape('renderErrorsOn%3A%20html%0A%09self%20result%20errors%20do%3A%20%5B%3Aeach%20%7C%0A%09%09html%20li%20%0A%09%09%09class%3A%20%27errors%27%3B%0A%09%09%09with%3A%20each%5D'),
736
+ messageSends: ["do:", "errors", "result", "class:", "with:", "li"],
737
+ referencedClasses: []
738
+ }),
739
+ smalltalk.TestRunner);
740
+
741
+ smalltalk.addMethod(
742
+ '_canBeClosed',
743
+ smalltalk.method({
744
+ selector: 'canBeClosed',
745
+ category: 'testing',
746
+ fn: function (){
747
+ var self=this;
748
+ return true;
749
+ return self;},
750
+ source: unescape('canBeClosed%0A%20%20%20%20%5Etrue'),
751
+ messageSends: [],
752
+ referencedClasses: []
753
+ }),
754
+ smalltalk.TestRunner);
755
+
756
+ smalltalk.addMethod(
757
+ '_isSelectedClass_',
758
+ smalltalk.method({
759
+ selector: 'isSelectedClass:',
760
+ category: 'testing',
761
+ fn: function (aClass){
762
+ var self=this;
763
+ return smalltalk.send(smalltalk.send(self, "_selectedClasses", []), "_includes_", [aClass]);
764
+ return self;},
765
+ source: unescape('isSelectedClass%3A%20aClass%0A%09%5E%28self%20selectedClasses%20includes%3A%20aClass%29'),
766
+ messageSends: ["includes:", "selectedClasses"],
767
+ referencedClasses: []
768
+ }),
769
+ smalltalk.TestRunner);
770
+
771
+ smalltalk.addMethod(
772
+ '_isSelectedCategory_',
773
+ smalltalk.method({
774
+ selector: 'isSelectedCategory:',
775
+ category: 'testing',
776
+ fn: function (aCategory){
777
+ var self=this;
778
+ return smalltalk.send(smalltalk.send(self, "_selectedCategories", []), "_includes_", [aCategory]);
779
+ return self;},
780
+ source: unescape('isSelectedCategory%3A%20aCategory%0A%09%5E%28self%20selectedCategories%20includes%3A%20aCategory%29'),
781
+ messageSends: ["includes:", "selectedCategories"],
782
+ referencedClasses: []
783
+ }),
784
+ smalltalk.TestRunner);
785
+
786
+ smalltalk.addMethod(
787
+ '_updateCategoriesList',
788
+ smalltalk.method({
789
+ selector: 'updateCategoriesList',
790
+ category: 'updating',
791
+ fn: function (){
792
+ var self=this;
793
+ smalltalk.send(self['@categoriesList'], "_contents_", [(function(html){(function($rec){smalltalk.send($rec, "_class_", ["all"]);smalltalk.send($rec, "_with_", ["All"]);return smalltalk.send($rec, "_onClick_", [(function(){return smalltalk.send(self, "_selectAllCategories", []);})]);})(smalltalk.send(html, "_li", []));return smalltalk.send(smalltalk.send(self, "_categories", []), "_do_", [(function(each){var li=nil;
794
+ li=smalltalk.send(html, "_li", []);smalltalk.send(smalltalk.send(smalltalk.send(self, "_selectedCategories", []), "_includes_", [each]), "_ifTrue_", [(function(){return smalltalk.send(li, "_class_", ["selected"]);})]);return (function($rec){smalltalk.send($rec, "_with_", [each]);return smalltalk.send($rec, "_onClick_", [(function(){return smalltalk.send(self, "_toggleCategory_", [each]);})]);})(li);})]);})]);
795
+ return self;},
796
+ source: unescape('updateCategoriesList%0A%20%20%20%20categoriesList%20contents%3A%20%5B%3Ahtml%20%7C%0A%09%20%20%20%20html%20li%20%0A%09%09class%3A%20%27all%27%3B%0A%09%09with%3A%20%27All%27%3B%0A%09%09onClick%3A%20%5Bself%20selectAllCategories%5D.%0A%09self%20categories%20do%3A%20%5B%3Aeach%20%7C%7C%20li%20%7C%0A%09%20%20%20%20li%20%3A%3D%20html%20li.%0A%09%20%20%20%20%28self%20selectedCategories%20includes%3A%20each%29%20ifTrue%3A%20%5B%0A%09%09li%20class%3A%20%27selected%27%5D.%0A%09%20%20%20%20li%0A%09%09with%3A%20each%3B%0A%09%09onClick%3A%20%5Bself%20toggleCategory%3A%20each%5D%5D%5D'),
797
+ messageSends: ["contents:", "class:", "with:", "onClick:", "selectAllCategories", "li", "do:", "categories", "ifTrue:", "includes:", "selectedCategories", "toggleCategory:"],
798
+ referencedClasses: []
799
+ }),
800
+ smalltalk.TestRunner);
801
+
802
+ smalltalk.addMethod(
803
+ '_updateClassesList',
804
+ smalltalk.method({
805
+ selector: 'updateClassesList',
806
+ category: 'updating',
807
+ fn: function (){
808
+ var self=this;
809
+ smalltalk.send(self['@classesList'], "_contents_", [(function(html){smalltalk.send(smalltalk.send(smalltalk.send(self, "_selectedCategories", []), "_isEmpty", []), "_ifFalse_", [(function(){return (function($rec){smalltalk.send($rec, "_class_", ["all"]);smalltalk.send($rec, "_with_", ["All"]);return smalltalk.send($rec, "_onClick_", [(function(){return smalltalk.send(self, "_selectAllClasses", []);})]);})(smalltalk.send(html, "_li", []));})]);return smalltalk.send(smalltalk.send(self, "_classes", []), "_do_", [(function(each){var li=nil;
810
+ li=smalltalk.send(html, "_li", []);smalltalk.send(smalltalk.send(smalltalk.send(self, "_selectedClasses", []), "_includes_", [each]), "_ifTrue_", [(function(){return smalltalk.send(li, "_class_", ["selected"]);})]);return (function($rec){smalltalk.send($rec, "_with_", [smalltalk.send(each, "_name", [])]);return smalltalk.send($rec, "_onClick_", [(function(){return smalltalk.send(self, "_toggleClass_", [each]);})]);})(li);})]);})]);
811
+ return self;},
812
+ source: unescape('updateClassesList%0A%20%20%20%20classesList%20contents%3A%20%5B%3Ahtml%20%7C%0A%09%28self%20selectedCategories%20isEmpty%29%20ifFalse%3A%20%5B%0A%09%09html%20li%0A%09%09%09class%3A%20%27all%27%3B%0A%09%09%09with%3A%20%27All%27%3B%0A%09%09%09onClick%3A%20%5Bself%20selectAllClasses%5D%5D.%0A%09self%20classes%20do%3A%20%5B%3Aeach%20%7C%7C%20li%20%7C%0A%09%09li%20%3A%3D%20html%20li.%0A%09%09%28self%20selectedClasses%20includes%3A%20each%29%20ifTrue%3A%20%5B%0A%09%09%09li%20class%3A%20%27selected%27%5D.%0A%09%09li%0A%09%09%09with%3A%20each%20name%3B%0A%09%09%09onClick%3A%20%5Bself%20toggleClass%3A%20each%5D%5D%5D'),
813
+ messageSends: ["contents:", "ifFalse:", "isEmpty", "selectedCategories", "class:", "with:", "onClick:", "selectAllClasses", "li", "do:", "classes", "ifTrue:", "includes:", "selectedClasses", "name", "toggleClass:"],
814
+ referencedClasses: []
815
+ }),
816
+ smalltalk.TestRunner);
817
+
818
+ smalltalk.addMethod(
819
+ '_updateMethodsList',
820
+ smalltalk.method({
821
+ selector: 'updateMethodsList',
822
+ category: 'updating',
823
+ fn: function (){
824
+ var self=this;
825
+ smalltalk.send(self['@methodsList'], "_contents_", [(function(html){smalltalk.send(self, "_renderFailuresOn_", [html]);return smalltalk.send(self, "_renderErrorsOn_", [html]);})]);
826
+ return self;},
827
+ source: unescape('updateMethodsList%0A%09methodsList%20contents%3A%20%5B%3Ahtml%20%7C%0A%09%09self%20renderFailuresOn%3A%20html.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20self%20renderErrorsOn%3A%20html%5D'),
828
+ messageSends: ["contents:", "renderFailuresOn:", "renderErrorsOn:"],
829
+ referencedClasses: []
830
+ }),
831
+ smalltalk.TestRunner);
832
+
833
+ smalltalk.addMethod(
834
+ '_updateStatusDiv',
835
+ smalltalk.method({
836
+ selector: 'updateStatusDiv',
837
+ category: 'updating',
838
+ fn: function (){
839
+ var self=this;
840
+ smalltalk.send(self['@statusDiv'], "_class_", [smalltalk.send("sunit status ", "__comma", [smalltalk.send(self['@result'], "_status", [])])]);
841
+ smalltalk.send(self['@statusDiv'], "_contents_", [(function(html){return smalltalk.send(smalltalk.send(html, "_span", []), "_with_", [smalltalk.send(self, "_statusInfo", [])]);})]);
842
+ return self;},
843
+ source: unescape('updateStatusDiv%0A%09statusDiv%20class%3A%20%27sunit%20status%20%27%2C%20result%20status.%0A%09statusDiv%20contents%3A%20%5B%3Ahtml%20%7C%0A%09%09html%20span%20with%3A%20self%20statusInfo%5D'),
844
+ messageSends: ["class:", unescape("%2C"), "status", "contents:", "with:", "span", "statusInfo"],
845
+ referencedClasses: []
846
+ }),
847
+ smalltalk.TestRunner);
848
+
849
+
850
+
851
+ smalltalk.addClass('TestResult', smalltalk.Object, ['timestamp', 'runs', 'errors', 'failures', 'total'], 'SUnit');
852
+ smalltalk.addMethod(
853
+ '_timestamp',
854
+ smalltalk.method({
855
+ selector: 'timestamp',
856
+ category: 'accessing',
857
+ fn: function (){
858
+ var self=this;
859
+ return self['@timestamp'];
860
+ return self;},
861
+ source: unescape('timestamp%0A%09%5Etimestamp'),
862
+ messageSends: [],
863
+ referencedClasses: []
864
+ }),
865
+ smalltalk.TestResult);
866
+
867
+ smalltalk.addMethod(
868
+ '_errors',
869
+ smalltalk.method({
870
+ selector: 'errors',
871
+ category: 'accessing',
872
+ fn: function (){
873
+ var self=this;
874
+ return self['@errors'];
875
+ return self;},
876
+ source: unescape('errors%0A%09%5Eerrors'),
877
+ messageSends: [],
878
+ referencedClasses: []
879
+ }),
880
+ smalltalk.TestResult);
881
+
882
+ smalltalk.addMethod(
883
+ '_failures',
884
+ smalltalk.method({
885
+ selector: 'failures',
886
+ category: 'accessing',
887
+ fn: function (){
888
+ var self=this;
889
+ return self['@failures'];
890
+ return self;},
891
+ source: unescape('failures%0A%09%5Efailures'),
892
+ messageSends: [],
893
+ referencedClasses: []
894
+ }),
895
+ smalltalk.TestResult);
896
+
897
+ smalltalk.addMethod(
898
+ '_total',
899
+ smalltalk.method({
900
+ selector: 'total',
901
+ category: 'accessing',
902
+ fn: function (){
903
+ var self=this;
904
+ return self['@total'];
905
+ return self;},
906
+ source: unescape('total%0A%09%5Etotal'),
907
+ messageSends: [],
908
+ referencedClasses: []
909
+ }),
910
+ smalltalk.TestResult);
911
+
912
+ smalltalk.addMethod(
913
+ '_total_',
914
+ smalltalk.method({
915
+ selector: 'total:',
916
+ category: 'accessing',
917
+ fn: function (aNumber){
918
+ var self=this;
919
+ self['@total']=aNumber;
920
+ return self;},
921
+ source: unescape('total%3A%20aNumber%0A%09total%20%3A%3D%20aNumber'),
922
+ messageSends: [],
923
+ referencedClasses: []
924
+ }),
925
+ smalltalk.TestResult);
926
+
927
+ smalltalk.addMethod(
928
+ '_addError_',
929
+ smalltalk.method({
930
+ selector: 'addError:',
931
+ category: 'accessing',
932
+ fn: function (anError){
933
+ var self=this;
934
+ smalltalk.send(smalltalk.send(self, "_errors", []), "_add_", [anError]);
935
+ return self;},
936
+ source: unescape('addError%3A%20anError%0A%09self%20errors%20add%3A%20anError'),
937
+ messageSends: ["add:", "errors"],
938
+ referencedClasses: []
939
+ }),
940
+ smalltalk.TestResult);
941
+
942
+ smalltalk.addMethod(
943
+ '_addFailure_',
944
+ smalltalk.method({
945
+ selector: 'addFailure:',
946
+ category: 'accessing',
947
+ fn: function (aFailure){
948
+ var self=this;
949
+ smalltalk.send(smalltalk.send(self, "_failures", []), "_add_", [aFailure]);
950
+ return self;},
951
+ source: unescape('addFailure%3A%20aFailure%0A%09self%20failures%20add%3A%20aFailure'),
952
+ messageSends: ["add:", "failures"],
953
+ referencedClasses: []
954
+ }),
955
+ smalltalk.TestResult);
956
+
957
+ smalltalk.addMethod(
958
+ '_runs',
959
+ smalltalk.method({
960
+ selector: 'runs',
961
+ category: 'accessing',
962
+ fn: function (){
963
+ var self=this;
964
+ return self['@runs'];
965
+ return self;},
966
+ source: unescape('runs%0A%09%5Eruns'),
967
+ messageSends: [],
968
+ referencedClasses: []
969
+ }),
970
+ smalltalk.TestResult);
971
+
972
+ smalltalk.addMethod(
973
+ '_increaseRuns',
974
+ smalltalk.method({
975
+ selector: 'increaseRuns',
976
+ category: 'accessing',
977
+ fn: function (){
978
+ var self=this;
979
+ self['@runs']=smalltalk.send(self['@runs'], "__plus", [(1)]);
980
+ return self;},
981
+ source: unescape('increaseRuns%0A%09runs%20%3A%3D%20runs%20+%201'),
982
+ messageSends: [unescape("+")],
983
+ referencedClasses: []
984
+ }),
985
+ smalltalk.TestResult);
986
+
987
+ smalltalk.addMethod(
988
+ '_status',
989
+ smalltalk.method({
990
+ selector: 'status',
991
+ category: 'accessing',
992
+ fn: function (){
993
+ var self=this;
994
+ return smalltalk.send(smalltalk.send(smalltalk.send(self, "_errors", []), "_isEmpty", []), "_ifTrue_ifFalse_", [(function(){return smalltalk.send(smalltalk.send(smalltalk.send(self, "_failures", []), "_isEmpty", []), "_ifTrue_ifFalse_", [(function(){return "success";}), (function(){return "failure";})]);}), (function(){return "error";})]);
995
+ return self;},
996
+ source: unescape('status%0A%09%5Eself%20errors%20isEmpty%20%0A%09%09ifTrue%3A%20%5B%0A%09%09%09self%20failures%20isEmpty%20%0A%09%09%09%09ifTrue%3A%20%5B%27success%27%5D%0A%09%09%09%09ifFalse%3A%20%5B%27failure%27%5D%5D%0A%09%09ifFalse%3A%20%5B%27error%27%5D'),
997
+ messageSends: ["ifTrue:ifFalse:", "isEmpty", "errors", "failures"],
998
+ referencedClasses: []
999
+ }),
1000
+ smalltalk.TestResult);
1001
+
1002
+ smalltalk.addMethod(
1003
+ '_initialize',
1004
+ smalltalk.method({
1005
+ selector: 'initialize',
1006
+ category: 'initialization',
1007
+ fn: function (){
1008
+ var self=this;
1009
+ smalltalk.send(self, "_initialize", [], smalltalk.Object);
1010
+ self['@timestamp']=smalltalk.send(smalltalk.Date, "_now", []);
1011
+ self['@runs']=(0);
1012
+ self['@errors']=smalltalk.send(smalltalk.Array, "_new", []);
1013
+ self['@failures']=smalltalk.send(smalltalk.Array, "_new", []);
1014
+ self['@total']=(0);
1015
+ return self;},
1016
+ source: unescape('initialize%0A%09super%20initialize.%0A%09timestamp%20%3A%3D%20Date%20now.%0A%09runs%20%3A%3D%200.%0A%09errors%20%3A%3D%20Array%20new.%0A%09failures%20%3A%3D%20Array%20new.%0A%09total%20%3A%3D%200'),
1017
+ messageSends: ["initialize", "now", "new"],
1018
+ referencedClasses: [smalltalk.Date,smalltalk.Array]
1019
+ }),
1020
+ smalltalk.TestResult);
1021
+
1022
+
1023
+
1024
+ smalltalk.addClass('ExampleTest2', smalltalk.TestCase, [], 'SUnit');
1025
+ smalltalk.addMethod(
1026
+ '_testPasses',
1027
+ smalltalk.method({
1028
+ selector: 'testPasses',
1029
+ category: 'not yet classified',
1030
+ fn: function (){
1031
+ var self=this;
1032
+ smalltalk.send((100000), "_timesRepeat_", [(function(){return smalltalk.send(self, "_assert_", [smalltalk.send(smalltalk.send((1), "__plus", [(1)]), "__eq", [(2)])]);})]);
1033
+ return self;},
1034
+ source: unescape('testPasses%0A%09100000%20timesRepeat%3A%20%5Bself%20assert%3A%201%20+%201%20%3D%202%5D'),
1035
+ messageSends: ["timesRepeat:", "assert:", unescape("%3D"), unescape("+")],
1036
+ referencedClasses: []
1037
+ }),
1038
+ smalltalk.ExampleTest2);
1039
+
1040
+
1041
+
1042
+ smalltalk.addClass('ExampleTest3', smalltalk.TestCase, [], 'SUnit');
1043
+ smalltalk.addMethod(
1044
+ '_testPasses',
1045
+ smalltalk.method({
1046
+ selector: 'testPasses',
1047
+ category: 'not yet classified',
1048
+ fn: function (){
1049
+ var self=this;
1050
+ smalltalk.send((100000), "_timesRepeat_", [(function(){return smalltalk.send(self, "_assert_", [smalltalk.send(smalltalk.send((1), "__plus", [(1)]), "__eq", [(2)])]);})]);
1051
+ return self;},
1052
+ source: unescape('testPasses%0A%09100000%20timesRepeat%3A%20%5Bself%20assert%3A%201%20+%201%20%3D%202%5D'),
1053
+ messageSends: ["timesRepeat:", "assert:", unescape("%3D"), unescape("+")],
1054
+ referencedClasses: []
1055
+ }),
1056
+ smalltalk.ExampleTest3);
1057
+
1058
+
1059
+