SUnit-Tests.js 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519
  1. smalltalk.addPackage('SUnit-Tests');
  2. smalltalk.addClass('ExampleSetTest', smalltalk.TestCase, ['empty', 'full'], 'SUnit-Tests');
  3. smalltalk.ExampleSetTest.comment="ExampleSetTest is taken from Pharo 1.4.\x0a\x0aTHe purpose of this class is to demonstrate a simple use case of the test framework."
  4. smalltalk.addMethod(
  5. "_setUp",
  6. smalltalk.method({
  7. selector: "setUp",
  8. category: 'running',
  9. fn: function (){
  10. var self=this;
  11. function $Set(){return smalltalk.Set||(typeof Set=="undefined"?nil:Set)}
  12. return smalltalk.withContext(function($ctx1) { self["@empty"]=_st($Set())._new();
  13. self["@full"]=_st($Set())._with_with_((5),"abc");
  14. return self}, function($ctx1) {$ctx1.fill(self,"setUp",{},smalltalk.ExampleSetTest)})},
  15. args: [],
  16. source: "setUp\x0a\x09empty := Set new.\x0a\x09full := Set with: 5 with: #abc",
  17. messageSends: ["new", "with:with:"],
  18. referencedClasses: ["Set"]
  19. }),
  20. smalltalk.ExampleSetTest);
  21. smalltalk.addMethod(
  22. "_testAdd",
  23. smalltalk.method({
  24. selector: "testAdd",
  25. category: 'tests',
  26. fn: function (){
  27. var self=this;
  28. return smalltalk.withContext(function($ctx1) { _st(self["@empty"])._add_((5));
  29. _st(self)._assert_(_st(self["@empty"])._includes_((5)));
  30. return self}, function($ctx1) {$ctx1.fill(self,"testAdd",{},smalltalk.ExampleSetTest)})},
  31. args: [],
  32. source: "testAdd\x0a\x09empty add: 5.\x0a\x09self assert: (empty includes: 5)",
  33. messageSends: ["add:", "assert:", "includes:"],
  34. referencedClasses: []
  35. }),
  36. smalltalk.ExampleSetTest);
  37. smalltalk.addMethod(
  38. "_testGrow",
  39. smalltalk.method({
  40. selector: "testGrow",
  41. category: 'tests',
  42. fn: function (){
  43. var self=this;
  44. return smalltalk.withContext(function($ctx1) { _st(self["@empty"])._addAll_(_st((1))._to_((100)));
  45. _st(self)._assert_equals_(_st(self["@empty"])._size(),(100));
  46. return self}, function($ctx1) {$ctx1.fill(self,"testGrow",{},smalltalk.ExampleSetTest)})},
  47. args: [],
  48. source: "testGrow\x0a\x09empty addAll: (1 to: 100).\x0a\x09self assert: empty size equals: 100",
  49. messageSends: ["addAll:", "to:", "assert:equals:", "size"],
  50. referencedClasses: []
  51. }),
  52. smalltalk.ExampleSetTest);
  53. smalltalk.addMethod(
  54. "_testIllegal",
  55. smalltalk.method({
  56. selector: "testIllegal",
  57. category: 'tests',
  58. fn: function (){
  59. var self=this;
  60. function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
  61. return smalltalk.withContext(function($ctx1) { _st(self)._should_raise_((function(){
  62. return smalltalk.withContext(function($ctx2) { return _st(self["@empty"])._at_((5));
  63. }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$Error());
  64. _st(self)._should_raise_((function(){
  65. return smalltalk.withContext(function($ctx2) { return _st(self["@empty"])._at_put_((5),"abc");
  66. }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$Error());
  67. return self}, function($ctx1) {$ctx1.fill(self,"testIllegal",{},smalltalk.ExampleSetTest)})},
  68. args: [],
  69. source: "testIllegal\x0a\x09self\x0a\x09\x09should: [empty at: 5]\x0a\x09\x09raise: Error.\x0a\x09self\x0a\x09\x09should: [empty at: 5 put: #abc]\x0a\x09\x09raise: Error",
  70. messageSends: ["should:raise:", "at:", "at:put:"],
  71. referencedClasses: ["Error"]
  72. }),
  73. smalltalk.ExampleSetTest);
  74. smalltalk.addMethod(
  75. "_testIncludes",
  76. smalltalk.method({
  77. selector: "testIncludes",
  78. category: 'tests',
  79. fn: function (){
  80. var self=this;
  81. return smalltalk.withContext(function($ctx1) { _st(self)._assert_(_st(self["@full"])._includes_((5)));
  82. _st(self)._assert_(_st(self["@full"])._includes_("abc"));
  83. return self}, function($ctx1) {$ctx1.fill(self,"testIncludes",{},smalltalk.ExampleSetTest)})},
  84. args: [],
  85. source: "testIncludes\x0a\x09self assert: (full includes: 5).\x0a\x09self assert: (full includes: #abc)",
  86. messageSends: ["assert:", "includes:"],
  87. referencedClasses: []
  88. }),
  89. smalltalk.ExampleSetTest);
  90. smalltalk.addMethod(
  91. "_testOccurrences",
  92. smalltalk.method({
  93. selector: "testOccurrences",
  94. category: 'tests',
  95. fn: function (){
  96. var self=this;
  97. return smalltalk.withContext(function($ctx1) { _st(self)._assert_equals_(_st(self["@empty"])._occurrencesOf_((0)),(0));
  98. _st(self)._assert_equals_(_st(self["@full"])._occurrencesOf_((5)),(1));
  99. _st(self["@full"])._add_((5));
  100. _st(self)._assert_equals_(_st(self["@full"])._occurrencesOf_((5)),(1));
  101. return self}, function($ctx1) {$ctx1.fill(self,"testOccurrences",{},smalltalk.ExampleSetTest)})},
  102. args: [],
  103. source: "testOccurrences\x0a\x09self assert: (empty occurrencesOf: 0) equals: 0.\x0a\x09self assert: (full occurrencesOf: 5) equals: 1.\x0a\x09full add: 5.\x0a\x09self assert: (full occurrencesOf: 5) equals: 1",
  104. messageSends: ["assert:equals:", "occurrencesOf:", "add:"],
  105. referencedClasses: []
  106. }),
  107. smalltalk.ExampleSetTest);
  108. smalltalk.addMethod(
  109. "_testRemove",
  110. smalltalk.method({
  111. selector: "testRemove",
  112. category: 'tests',
  113. fn: function (){
  114. var self=this;
  115. return smalltalk.withContext(function($ctx1) { _st(self["@full"])._remove_((5));
  116. _st(self)._assert_(_st(self["@full"])._includes_("abc"));
  117. _st(self)._deny_(_st(self["@full"])._includes_((5)));
  118. return self}, function($ctx1) {$ctx1.fill(self,"testRemove",{},smalltalk.ExampleSetTest)})},
  119. args: [],
  120. source: "testRemove\x0a\x09full remove: 5.\x0a\x09self assert: (full includes: #abc).\x0a\x09self deny: (full includes: 5)",
  121. messageSends: ["remove:", "assert:", "includes:", "deny:"],
  122. referencedClasses: []
  123. }),
  124. smalltalk.ExampleSetTest);
  125. smalltalk.addClass('SUnitAsyncTest', smalltalk.TestCase, ['flag'], 'SUnit-Tests');
  126. smalltalk.addMethod(
  127. "_fakeError",
  128. smalltalk.method({
  129. selector: "fakeError",
  130. category: 'helpers',
  131. fn: function (){
  132. var self=this;
  133. return smalltalk.withContext(function($ctx1) { self["@flag"]="bad";
  134. _st(self)._timeout_((10));
  135. self["@flag"]=_st(_st(self)._async_((function(){
  136. return smalltalk.withContext(function($ctx2) { self["@flag"]="ok";
  137. self["@flag"];
  138. return _st(self)._error_("Intentional");
  139. }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._valueWithTimeout_((5));
  140. return self}, function($ctx1) {$ctx1.fill(self,"fakeError",{},smalltalk.SUnitAsyncTest)})},
  141. args: [],
  142. source: "fakeError\x0a\x09flag := 'bad'.\x0a\x09self timeout: 10.\x0a\x09flag := (self async: [ flag := 'ok'. self error: 'Intentional' ]) valueWithTimeout: 5",
  143. messageSends: ["timeout:", "valueWithTimeout:", "async:", "error:"],
  144. referencedClasses: []
  145. }),
  146. smalltalk.SUnitAsyncTest);
  147. smalltalk.addMethod(
  148. "_fakeErrorFailingInTearDown",
  149. smalltalk.method({
  150. selector: "fakeErrorFailingInTearDown",
  151. category: 'helpers',
  152. fn: function (){
  153. var self=this;
  154. return smalltalk.withContext(function($ctx1) { self["@flag"]="bad";
  155. _st(self)._timeout_((10));
  156. self["@flag"]=_st(_st(self)._async_((function(){
  157. return smalltalk.withContext(function($ctx2) { return _st(self)._error_("Intentional");
  158. }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._valueWithTimeout_((5));
  159. return self}, function($ctx1) {$ctx1.fill(self,"fakeErrorFailingInTearDown",{},smalltalk.SUnitAsyncTest)})},
  160. args: [],
  161. source: "fakeErrorFailingInTearDown\x0a\x09flag := 'bad'.\x0a\x09self timeout: 10.\x0a\x09flag := (self async: [ self error: 'Intentional' ]) valueWithTimeout: 5",
  162. messageSends: ["timeout:", "valueWithTimeout:", "async:", "error:"],
  163. referencedClasses: []
  164. }),
  165. smalltalk.SUnitAsyncTest);
  166. smalltalk.addMethod(
  167. "_fakeFailure",
  168. smalltalk.method({
  169. selector: "fakeFailure",
  170. category: 'helpers',
  171. fn: function (){
  172. var self=this;
  173. return smalltalk.withContext(function($ctx1) { self["@flag"]="bad";
  174. _st(self)._timeout_((10));
  175. self["@flag"]=_st(_st(self)._async_((function(){
  176. return smalltalk.withContext(function($ctx2) { self["@flag"]="ok";
  177. self["@flag"];
  178. return _st(self)._assert_(false);
  179. }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._valueWithTimeout_((5));
  180. return self}, function($ctx1) {$ctx1.fill(self,"fakeFailure",{},smalltalk.SUnitAsyncTest)})},
  181. args: [],
  182. source: "fakeFailure\x0a\x09flag := 'bad'.\x0a\x09self timeout: 10.\x0a\x09flag := (self async: [ flag := 'ok'. self assert: false ]) valueWithTimeout: 5",
  183. messageSends: ["timeout:", "valueWithTimeout:", "async:", "assert:"],
  184. referencedClasses: []
  185. }),
  186. smalltalk.SUnitAsyncTest);
  187. smalltalk.addMethod(
  188. "_fakeMultipleTimeoutFailing",
  189. smalltalk.method({
  190. selector: "fakeMultipleTimeoutFailing",
  191. category: 'helpers',
  192. fn: function (){
  193. var self=this;
  194. return smalltalk.withContext(function($ctx1) { _st(self)._timeout_((100));
  195. _st(_st(self)._async_((function(){
  196. return smalltalk.withContext(function($ctx2) { _st(self)._timeout_((5));
  197. return _st(_st(self)._async_((function(){
  198. return smalltalk.withContext(function($ctx3) { return _st(self)._finished();
  199. }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})})))._valueWithTimeout_((10));
  200. }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._valueWithTimeout_((5));
  201. return self}, function($ctx1) {$ctx1.fill(self,"fakeMultipleTimeoutFailing",{},smalltalk.SUnitAsyncTest)})},
  202. args: [],
  203. source: "fakeMultipleTimeoutFailing\x0a\x09self timeout: 100.\x0a\x09(self async: [\x0a\x09\x09self timeout: 5.\x0a\x09\x09(self async: [ self finished ]) valueWithTimeout: 10\x0a\x09]) valueWithTimeout: 5",
  204. messageSends: ["timeout:", "valueWithTimeout:", "async:", "finished"],
  205. referencedClasses: []
  206. }),
  207. smalltalk.SUnitAsyncTest);
  208. smalltalk.addMethod(
  209. "_fakeMultipleTimeoutPassing",
  210. smalltalk.method({
  211. selector: "fakeMultipleTimeoutPassing",
  212. category: 'helpers',
  213. fn: function (){
  214. var self=this;
  215. return smalltalk.withContext(function($ctx1) { _st(self)._timeout_((10));
  216. _st(_st(self)._async_((function(){
  217. return smalltalk.withContext(function($ctx2) { _st(self)._timeout_((20));
  218. return _st(_st(self)._async_((function(){
  219. return smalltalk.withContext(function($ctx3) { return _st(self)._finished();
  220. }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})})))._valueWithTimeout_((10));
  221. }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._valueWithTimeout_((5));
  222. return self}, function($ctx1) {$ctx1.fill(self,"fakeMultipleTimeoutPassing",{},smalltalk.SUnitAsyncTest)})},
  223. args: [],
  224. source: "fakeMultipleTimeoutPassing\x0a\x09self timeout: 10.\x0a\x09(self async: [\x0a\x09\x09self timeout: 20.\x0a\x09\x09(self async: [ self finished ]) valueWithTimeout: 10\x0a\x09]) valueWithTimeout: 5",
  225. messageSends: ["timeout:", "valueWithTimeout:", "async:", "finished"],
  226. referencedClasses: []
  227. }),
  228. smalltalk.SUnitAsyncTest);
  229. smalltalk.addMethod(
  230. "_fakeTimeout",
  231. smalltalk.method({
  232. selector: "fakeTimeout",
  233. category: 'helpers',
  234. fn: function (){
  235. var self=this;
  236. return smalltalk.withContext(function($ctx1) { _st(self)._timeout_((4));
  237. _st(_st(self)._async_((function(){
  238. return smalltalk.withContext(function($ctx2) { return _st(self)._finished();
  239. }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._valueWithTimeout_((5));
  240. return self}, function($ctx1) {$ctx1.fill(self,"fakeTimeout",{},smalltalk.SUnitAsyncTest)})},
  241. args: [],
  242. source: "fakeTimeout\x0a\x09self timeout: 4.\x0a\x09(self async: [ self finished ]) valueWithTimeout: 5",
  243. messageSends: ["timeout:", "valueWithTimeout:", "async:", "finished"],
  244. referencedClasses: []
  245. }),
  246. smalltalk.SUnitAsyncTest);
  247. smalltalk.addMethod(
  248. "_selectorSetOf_",
  249. smalltalk.method({
  250. selector: "selectorSetOf:",
  251. category: 'private',
  252. fn: function (aCollection){
  253. var self=this;
  254. return smalltalk.withContext(function($ctx1) { var $1;
  255. $1=_st(_st(aCollection)._collect_((function(each){
  256. return smalltalk.withContext(function($ctx2) { return _st(each)._selector();
  257. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})})))._asSet();
  258. return $1;
  259. }, function($ctx1) {$ctx1.fill(self,"selectorSetOf:",{aCollection:aCollection},smalltalk.SUnitAsyncTest)})},
  260. args: ["aCollection"],
  261. source: "selectorSetOf: aCollection\x0a\x09^(aCollection collect: [:each | each selector]) asSet",
  262. messageSends: ["asSet", "collect:", "selector"],
  263. referencedClasses: []
  264. }),
  265. smalltalk.SUnitAsyncTest);
  266. smalltalk.addMethod(
  267. "_setUp",
  268. smalltalk.method({
  269. selector: "setUp",
  270. category: 'running',
  271. fn: function (){
  272. var self=this;
  273. return smalltalk.withContext(function($ctx1) { self["@flag"]="ok";
  274. return self}, function($ctx1) {$ctx1.fill(self,"setUp",{},smalltalk.SUnitAsyncTest)})},
  275. args: [],
  276. source: "setUp\x0a\x09flag := 'ok'",
  277. messageSends: [],
  278. referencedClasses: []
  279. }),
  280. smalltalk.SUnitAsyncTest);
  281. smalltalk.addMethod(
  282. "_tearDown",
  283. smalltalk.method({
  284. selector: "tearDown",
  285. category: 'running',
  286. fn: function (){
  287. var self=this;
  288. return smalltalk.withContext(function($ctx1) { _st(self)._assert_equals_("ok",self["@flag"]);
  289. return self}, function($ctx1) {$ctx1.fill(self,"tearDown",{},smalltalk.SUnitAsyncTest)})},
  290. args: [],
  291. source: "tearDown\x0a\x09self assert: 'ok' equals: flag",
  292. messageSends: ["assert:equals:"],
  293. referencedClasses: []
  294. }),
  295. smalltalk.SUnitAsyncTest);
  296. smalltalk.addMethod(
  297. "_testAsyncErrorsAndFailures",
  298. smalltalk.method({
  299. selector: "testAsyncErrorsAndFailures",
  300. category: 'tests',
  301. fn: function (){
  302. var self=this;
  303. var suite,runner,result,assertBlock;
  304. function $TestSuiteRunner(){return smalltalk.TestSuiteRunner||(typeof TestSuiteRunner=="undefined"?nil:TestSuiteRunner)}
  305. function $ResultAnnouncement(){return smalltalk.ResultAnnouncement||(typeof ResultAnnouncement=="undefined"?nil:ResultAnnouncement)}
  306. return smalltalk.withContext(function($ctx1) { var $1,$2;
  307. suite=_st(["fakeError", "fakeErrorFailingInTearDown", "fakeFailure", "testPass"])._collect_((function(each){
  308. return smalltalk.withContext(function($ctx2) { return _st(_st(self)._class())._selector_(each);
  309. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
  310. runner=_st($TestSuiteRunner())._on_(suite);
  311. _st(self)._timeout_((200));
  312. result=_st(runner)._result();
  313. assertBlock=_st(self)._async_((function(){
  314. return smalltalk.withContext(function($ctx2) { _st(self)._assert_equals_(_st(self)._selectorSetOf_(_st(result)._errors()),_st(["fakeError"])._asSet());
  315. _st(self)._assert_equals_(_st(self)._selectorSetOf_(_st(result)._failures()),_st(["fakeErrorFailingInTearDown", "fakeFailure"])._asSet());
  316. return _st(self)._finished();
  317. }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
  318. _st(_st(runner)._announcer())._on_do_($ResultAnnouncement(),(function(ann){
  319. return smalltalk.withContext(function($ctx2) { $1=_st(_st(ann)._result()).__eq_eq(result);
  320. if(smalltalk.assert($1)){
  321. $2=_st(_st(result)._runs()).__eq(_st(result)._total());
  322. return _st($2)._ifTrue_(assertBlock);
  323. };
  324. }, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1)})}));
  325. _st(runner)._run();
  326. return self}, function($ctx1) {$ctx1.fill(self,"testAsyncErrorsAndFailures",{suite:suite,runner:runner,result:result,assertBlock:assertBlock},smalltalk.SUnitAsyncTest)})},
  327. args: [],
  328. source: "testAsyncErrorsAndFailures\x0a\x09| suite runner result assertBlock |\x0a\x09suite := #('fakeError' 'fakeErrorFailingInTearDown' 'fakeFailure' 'testPass') collect: [ :each | self class selector: each ].\x0a\x09runner := TestSuiteRunner on: suite.\x0a\x09self timeout: 200.\x0a\x09result := runner result.\x0a\x09assertBlock := self async: [\x0a\x09\x09self assert: (self selectorSetOf: result errors) equals: #('fakeError') asSet.\x0a\x09\x09self assert: (self selectorSetOf: result failures) equals: #('fakeErrorFailingInTearDown' 'fakeFailure') asSet.\x0a\x09\x09self finished\x0a\x09].\x0a\x09runner announcer on: ResultAnnouncement do: [:ann |\x0a\x09\x09ann result == result ifTrue: [ result runs = result total ifTrue: assertBlock ]].\x0a\x09runner run",
  329. messageSends: ["collect:", "selector:", "class", "on:", "timeout:", "result", "async:", "assert:equals:", "selectorSetOf:", "errors", "asSet", "failures", "finished", "on:do:", "ifTrue:", "=", "total", "runs", "==", "announcer", "run"],
  330. referencedClasses: ["TestSuiteRunner", "ResultAnnouncement"]
  331. }),
  332. smalltalk.SUnitAsyncTest);
  333. smalltalk.addMethod(
  334. "_testAsyncNeedsTimeout",
  335. smalltalk.method({
  336. selector: "testAsyncNeedsTimeout",
  337. category: 'tests',
  338. fn: function (){
  339. var self=this;
  340. function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
  341. return smalltalk.withContext(function($ctx1) { _st(self)._should_raise_((function(){
  342. return smalltalk.withContext(function($ctx2) { return _st(self)._async_((function(){
  343. return smalltalk.withContext(function($ctx3) { }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
  344. }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$Error());
  345. _st(self)._timeout_((0));
  346. _st(self)._shouldnt_raise_((function(){
  347. return smalltalk.withContext(function($ctx2) { return _st(self)._async_((function(){
  348. return smalltalk.withContext(function($ctx3) { }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
  349. }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$Error());
  350. _st(self)._finished();
  351. return self}, function($ctx1) {$ctx1.fill(self,"testAsyncNeedsTimeout",{},smalltalk.SUnitAsyncTest)})},
  352. args: [],
  353. source: "testAsyncNeedsTimeout\x0a\x09self should: [ self async: [ ] ] raise: Error.\x0a\x09self timeout: 0.\x0a\x09self shouldnt: [ self async: [ ] ] raise: Error.\x0a\x09self finished",
  354. messageSends: ["should:raise:", "async:", "timeout:", "shouldnt:raise:", "finished"],
  355. referencedClasses: ["Error"]
  356. }),
  357. smalltalk.SUnitAsyncTest);
  358. smalltalk.addMethod(
  359. "_testFinishedNeedsTimeout",
  360. smalltalk.method({
  361. selector: "testFinishedNeedsTimeout",
  362. category: 'tests',
  363. fn: function (){
  364. var self=this;
  365. function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
  366. return smalltalk.withContext(function($ctx1) { _st(self)._should_raise_((function(){
  367. return smalltalk.withContext(function($ctx2) { return _st(self)._finished();
  368. }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$Error());
  369. _st(self)._timeout_((0));
  370. _st(self)._shouldnt_raise_((function(){
  371. return smalltalk.withContext(function($ctx2) { return _st(self)._finished();
  372. }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$Error());
  373. return self}, function($ctx1) {$ctx1.fill(self,"testFinishedNeedsTimeout",{},smalltalk.SUnitAsyncTest)})},
  374. args: [],
  375. source: "testFinishedNeedsTimeout\x0a\x09self should: [ self finished ] raise: Error.\x0a\x09self timeout: 0.\x0a\x09self shouldnt: [ self finished ] raise: Error.",
  376. messageSends: ["should:raise:", "finished", "timeout:", "shouldnt:raise:"],
  377. referencedClasses: ["Error"]
  378. }),
  379. smalltalk.SUnitAsyncTest);
  380. smalltalk.addMethod(
  381. "_testIsAsyncReturnsCorrectValues",
  382. smalltalk.method({
  383. selector: "testIsAsyncReturnsCorrectValues",
  384. category: 'tests',
  385. fn: function (){
  386. var self=this;
  387. return smalltalk.withContext(function($ctx1) { _st(self)._deny_(_st(self)._isAsync());
  388. _st(self)._timeout_((0));
  389. _st(self)._assert_(_st(self)._isAsync());
  390. _st(self)._finished();
  391. _st(self)._deny_(_st(self)._isAsync());
  392. return self}, function($ctx1) {$ctx1.fill(self,"testIsAsyncReturnsCorrectValues",{},smalltalk.SUnitAsyncTest)})},
  393. args: [],
  394. source: "testIsAsyncReturnsCorrectValues\x0a\x09self deny: self isAsync.\x0a\x09self timeout: 0.\x0a\x09self assert: self isAsync.\x0a\x09self finished.\x0a\x09self deny: self isAsync",
  395. messageSends: ["deny:", "isAsync", "timeout:", "assert:", "finished"],
  396. referencedClasses: []
  397. }),
  398. smalltalk.SUnitAsyncTest);
  399. smalltalk.addMethod(
  400. "_testPass",
  401. smalltalk.method({
  402. selector: "testPass",
  403. category: 'tests',
  404. fn: function (){
  405. var self=this;
  406. return smalltalk.withContext(function($ctx1) { self["@flag"]="bad";
  407. _st(self)._timeout_((10));
  408. self["@flag"]=_st(_st(self)._async_((function(){
  409. return smalltalk.withContext(function($ctx2) { _st(self)._assert_(true);
  410. _st(self)._finished();
  411. self["@flag"]="ok";
  412. return self["@flag"];
  413. }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._valueWithTimeout_((5));
  414. return self}, function($ctx1) {$ctx1.fill(self,"testPass",{},smalltalk.SUnitAsyncTest)})},
  415. args: [],
  416. source: "testPass\x0a\x09flag := 'bad'.\x0a\x09self timeout: 10.\x0a\x09flag := (self async: [ self assert: true. self finished. flag := 'ok' ]) valueWithTimeout: 5",
  417. messageSends: ["timeout:", "valueWithTimeout:", "async:", "assert:", "finished"],
  418. referencedClasses: []
  419. }),
  420. smalltalk.SUnitAsyncTest);
  421. smalltalk.addMethod(
  422. "_testTimeouts",
  423. smalltalk.method({
  424. selector: "testTimeouts",
  425. category: 'tests',
  426. fn: function (){
  427. var self=this;
  428. var suite,runner,result,assertBlock;
  429. function $TestSuiteRunner(){return smalltalk.TestSuiteRunner||(typeof TestSuiteRunner=="undefined"?nil:TestSuiteRunner)}
  430. function $Set(){return smalltalk.Set||(typeof Set=="undefined"?nil:Set)}
  431. function $ResultAnnouncement(){return smalltalk.ResultAnnouncement||(typeof ResultAnnouncement=="undefined"?nil:ResultAnnouncement)}
  432. return smalltalk.withContext(function($ctx1) { var $1,$2;
  433. suite=_st(["fakeTimeout", "fakeMultipleTimeoutFailing", "fakeMultipleTimeoutPassing", "testPass"])._collect_((function(each){
  434. return smalltalk.withContext(function($ctx2) { return _st(_st(self)._class())._selector_(each);
  435. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
  436. runner=_st($TestSuiteRunner())._on_(suite);
  437. _st(self)._timeout_((200));
  438. result=_st(runner)._result();
  439. assertBlock=_st(self)._async_((function(){
  440. return smalltalk.withContext(function($ctx2) { _st(self)._assert_equals_(_st(self)._selectorSetOf_(_st(result)._errors()),_st($Set())._new());
  441. _st(self)._assert_equals_(_st(self)._selectorSetOf_(_st(result)._failures()),_st(["fakeMultipleTimeoutFailing", "fakeTimeout"])._asSet());
  442. return _st(self)._finished();
  443. }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
  444. _st(_st(runner)._announcer())._on_do_($ResultAnnouncement(),(function(ann){
  445. return smalltalk.withContext(function($ctx2) { $1=_st(_st(ann)._result()).__eq_eq(result);
  446. if(smalltalk.assert($1)){
  447. $2=_st(_st(result)._runs()).__eq(_st(result)._total());
  448. return _st($2)._ifTrue_(assertBlock);
  449. };
  450. }, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1)})}));
  451. _st(runner)._run();
  452. return self}, function($ctx1) {$ctx1.fill(self,"testTimeouts",{suite:suite,runner:runner,result:result,assertBlock:assertBlock},smalltalk.SUnitAsyncTest)})},
  453. args: [],
  454. source: "testTimeouts\x0a\x09| suite runner result assertBlock |\x0a\x09suite := #('fakeTimeout' 'fakeMultipleTimeoutFailing' 'fakeMultipleTimeoutPassing' 'testPass') collect: [ :each | self class selector: each ].\x0a\x09runner := TestSuiteRunner on: suite.\x0a\x09self timeout: 200.\x0a\x09result := runner result.\x0a\x09assertBlock := self async: [\x0a\x09\x09self assert: (self selectorSetOf: result errors) equals: Set new.\x0a\x09\x09self assert: (self selectorSetOf: result failures) equals: #('fakeMultipleTimeoutFailing' 'fakeTimeout') asSet.\x0a\x09\x09self finished\x0a\x09].\x0a\x09runner announcer on: ResultAnnouncement do: [:ann |\x0a\x09\x09ann result == result ifTrue: [ result runs = result total ifTrue: assertBlock ]].\x0a\x09runner run",
  455. messageSends: ["collect:", "selector:", "class", "on:", "timeout:", "result", "async:", "assert:equals:", "selectorSetOf:", "errors", "new", "failures", "asSet", "finished", "on:do:", "ifTrue:", "=", "total", "runs", "==", "announcer", "run"],
  456. referencedClasses: ["TestSuiteRunner", "Set", "ResultAnnouncement"]
  457. }),
  458. smalltalk.SUnitAsyncTest);
  459. smalltalk.addMethod(
  460. "_testTwoAsyncPassesWithFinishedOnlyOneIsRun",
  461. smalltalk.method({
  462. selector: "testTwoAsyncPassesWithFinishedOnlyOneIsRun",
  463. category: 'tests',
  464. fn: function (){
  465. var self=this;
  466. var x;
  467. return smalltalk.withContext(function($ctx1) { self["@flag"]="bad";
  468. _st(self)._timeout_((10));
  469. x=(0);
  470. self["@flag"]=_st(_st(self)._async_((function(){
  471. return smalltalk.withContext(function($ctx2) { _st(self)._finished();
  472. self["@flag"]="ok";
  473. self["@flag"];
  474. x=_st(x).__plus((1));
  475. x;
  476. return _st(self)._assert_equals_(x,(1));
  477. }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._valueWithTimeout_((0));
  478. self["@flag"]=_st(_st(self)._async_((function(){
  479. return smalltalk.withContext(function($ctx2) { _st(self)._finished();
  480. self["@flag"]="ok";
  481. self["@flag"];
  482. x=_st(x).__plus((1));
  483. x;
  484. return _st(self)._assert_equals_(x,(1));
  485. }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._valueWithTimeout_((0));
  486. return self}, function($ctx1) {$ctx1.fill(self,"testTwoAsyncPassesWithFinishedOnlyOneIsRun",{x:x},smalltalk.SUnitAsyncTest)})},
  487. args: [],
  488. source: "testTwoAsyncPassesWithFinishedOnlyOneIsRun\x0a\x09| x |\x0a\x09flag := 'bad'.\x0a\x09self timeout: 10.\x0a\x09x := 0.\x0a\x09flag := (self async: [ self finished. flag := 'ok'. x := x+1. self assert: x equals: 1 ]) valueWithTimeout: 0.\x0a\x09flag := (self async: [ self finished. flag := 'ok'. x := x+1. self assert: x equals: 1 ]) valueWithTimeout: 0.",
  489. messageSends: ["timeout:", "valueWithTimeout:", "async:", "finished", "+", "assert:equals:"],
  490. referencedClasses: []
  491. }),
  492. smalltalk.SUnitAsyncTest);