SUnit-Tests.js 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951
  1. define("amber_core/SUnit-Tests", ["amber/boot", "amber_core/SUnit"], function($boot){"use strict";
  2. var $core=$boot.api,nil=$boot.nil,$recv=$boot.asReceiver,$globals=$boot.globals;
  3. $core.addPackage('SUnit-Tests');
  4. $core.packages["SUnit-Tests"].innerEval = function (expr) { return eval(expr); };
  5. $core.packages["SUnit-Tests"].transport = {"type":"amd","amdNamespace":"amber_core"};
  6. $core.addClass('ExampleSetTest', $globals.TestCase, ['empty', 'full'], 'SUnit-Tests');
  7. //>>excludeStart("ide", pragmas.excludeIdeData);
  8. $globals.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.";
  9. //>>excludeEnd("ide");
  10. $core.addMethod(
  11. $core.method({
  12. selector: "setUp",
  13. protocol: 'running',
  14. fn: function (){
  15. var self=this;
  16. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17. return $core.withContext(function($ctx1) {
  18. //>>excludeEnd("ctx");
  19. self["@empty"]=$recv($globals.Set)._new();
  20. self["@full"]=$recv($globals.Set)._with_with_((5),"abc");
  21. return self;
  22. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23. }, function($ctx1) {$ctx1.fill(self,"setUp",{},$globals.ExampleSetTest)});
  24. //>>excludeEnd("ctx");
  25. },
  26. //>>excludeStart("ide", pragmas.excludeIdeData);
  27. args: [],
  28. source: "setUp\x0a\x09empty := Set new.\x0a\x09full := Set with: 5 with: #abc",
  29. referencedClasses: ["Set"],
  30. //>>excludeEnd("ide");
  31. messageSends: ["new", "with:with:"]
  32. }),
  33. $globals.ExampleSetTest);
  34. $core.addMethod(
  35. $core.method({
  36. selector: "testAdd",
  37. protocol: 'tests',
  38. fn: function (){
  39. var self=this;
  40. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41. return $core.withContext(function($ctx1) {
  42. //>>excludeEnd("ctx");
  43. $recv(self["@empty"])._add_((5));
  44. self._assert_($recv(self["@empty"])._includes_((5)));
  45. return self;
  46. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47. }, function($ctx1) {$ctx1.fill(self,"testAdd",{},$globals.ExampleSetTest)});
  48. //>>excludeEnd("ctx");
  49. },
  50. //>>excludeStart("ide", pragmas.excludeIdeData);
  51. args: [],
  52. source: "testAdd\x0a\x09empty add: 5.\x0a\x09self assert: (empty includes: 5)",
  53. referencedClasses: [],
  54. //>>excludeEnd("ide");
  55. messageSends: ["add:", "assert:", "includes:"]
  56. }),
  57. $globals.ExampleSetTest);
  58. $core.addMethod(
  59. $core.method({
  60. selector: "testGrow",
  61. protocol: 'tests',
  62. fn: function (){
  63. var self=this;
  64. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65. return $core.withContext(function($ctx1) {
  66. //>>excludeEnd("ctx");
  67. $recv(self["@empty"])._addAll_((1)._to_((100)));
  68. self._assert_equals_($recv(self["@empty"])._size(),(100));
  69. return self;
  70. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71. }, function($ctx1) {$ctx1.fill(self,"testGrow",{},$globals.ExampleSetTest)});
  72. //>>excludeEnd("ctx");
  73. },
  74. //>>excludeStart("ide", pragmas.excludeIdeData);
  75. args: [],
  76. source: "testGrow\x0a\x09empty addAll: (1 to: 100).\x0a\x09self assert: empty size equals: 100",
  77. referencedClasses: [],
  78. //>>excludeEnd("ide");
  79. messageSends: ["addAll:", "to:", "assert:equals:", "size"]
  80. }),
  81. $globals.ExampleSetTest);
  82. $core.addMethod(
  83. $core.method({
  84. selector: "testIllegal",
  85. protocol: 'tests',
  86. fn: function (){
  87. var self=this;
  88. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89. return $core.withContext(function($ctx1) {
  90. //>>excludeEnd("ctx");
  91. self._should_raise_((function(){
  92. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93. return $core.withContext(function($ctx2) {
  94. //>>excludeEnd("ctx");
  95. return $recv(self["@empty"])._at_((5));
  96. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  97. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  98. //>>excludeEnd("ctx");
  99. }),$globals.Error);
  100. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  101. $ctx1.sendIdx["should:raise:"]=1;
  102. //>>excludeEnd("ctx");
  103. self._should_raise_((function(){
  104. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  105. return $core.withContext(function($ctx2) {
  106. //>>excludeEnd("ctx");
  107. return $recv(self["@empty"])._at_put_((5),"abc");
  108. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  109. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  110. //>>excludeEnd("ctx");
  111. }),$globals.Error);
  112. return self;
  113. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  114. }, function($ctx1) {$ctx1.fill(self,"testIllegal",{},$globals.ExampleSetTest)});
  115. //>>excludeEnd("ctx");
  116. },
  117. //>>excludeStart("ide", pragmas.excludeIdeData);
  118. args: [],
  119. 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",
  120. referencedClasses: ["Error"],
  121. //>>excludeEnd("ide");
  122. messageSends: ["should:raise:", "at:", "at:put:"]
  123. }),
  124. $globals.ExampleSetTest);
  125. $core.addMethod(
  126. $core.method({
  127. selector: "testIncludes",
  128. protocol: 'tests',
  129. fn: function (){
  130. var self=this;
  131. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  132. return $core.withContext(function($ctx1) {
  133. //>>excludeEnd("ctx");
  134. var $1;
  135. $1=$recv(self["@full"])._includes_((5));
  136. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  137. $ctx1.sendIdx["includes:"]=1;
  138. //>>excludeEnd("ctx");
  139. self._assert_($1);
  140. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  141. $ctx1.sendIdx["assert:"]=1;
  142. //>>excludeEnd("ctx");
  143. self._assert_($recv(self["@full"])._includes_("abc"));
  144. return self;
  145. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  146. }, function($ctx1) {$ctx1.fill(self,"testIncludes",{},$globals.ExampleSetTest)});
  147. //>>excludeEnd("ctx");
  148. },
  149. //>>excludeStart("ide", pragmas.excludeIdeData);
  150. args: [],
  151. source: "testIncludes\x0a\x09self assert: (full includes: 5).\x0a\x09self assert: (full includes: #abc)",
  152. referencedClasses: [],
  153. //>>excludeEnd("ide");
  154. messageSends: ["assert:", "includes:"]
  155. }),
  156. $globals.ExampleSetTest);
  157. $core.addMethod(
  158. $core.method({
  159. selector: "testOccurrences",
  160. protocol: 'tests',
  161. fn: function (){
  162. var self=this;
  163. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  164. return $core.withContext(function($ctx1) {
  165. //>>excludeEnd("ctx");
  166. var $1,$2;
  167. $1=$recv(self["@empty"])._occurrencesOf_((0));
  168. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  169. $ctx1.sendIdx["occurrencesOf:"]=1;
  170. //>>excludeEnd("ctx");
  171. self._assert_equals_($1,(0));
  172. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  173. $ctx1.sendIdx["assert:equals:"]=1;
  174. //>>excludeEnd("ctx");
  175. $2=$recv(self["@full"])._occurrencesOf_((5));
  176. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  177. $ctx1.sendIdx["occurrencesOf:"]=2;
  178. //>>excludeEnd("ctx");
  179. self._assert_equals_($2,(1));
  180. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  181. $ctx1.sendIdx["assert:equals:"]=2;
  182. //>>excludeEnd("ctx");
  183. $recv(self["@full"])._add_((5));
  184. self._assert_equals_($recv(self["@full"])._occurrencesOf_((5)),(1));
  185. return self;
  186. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  187. }, function($ctx1) {$ctx1.fill(self,"testOccurrences",{},$globals.ExampleSetTest)});
  188. //>>excludeEnd("ctx");
  189. },
  190. //>>excludeStart("ide", pragmas.excludeIdeData);
  191. args: [],
  192. 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",
  193. referencedClasses: [],
  194. //>>excludeEnd("ide");
  195. messageSends: ["assert:equals:", "occurrencesOf:", "add:"]
  196. }),
  197. $globals.ExampleSetTest);
  198. $core.addMethod(
  199. $core.method({
  200. selector: "testRemove",
  201. protocol: 'tests',
  202. fn: function (){
  203. var self=this;
  204. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  205. return $core.withContext(function($ctx1) {
  206. //>>excludeEnd("ctx");
  207. var $1;
  208. $recv(self["@full"])._remove_((5));
  209. $1=$recv(self["@full"])._includes_("abc");
  210. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  211. $ctx1.sendIdx["includes:"]=1;
  212. //>>excludeEnd("ctx");
  213. self._assert_($1);
  214. self._deny_($recv(self["@full"])._includes_((5)));
  215. return self;
  216. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  217. }, function($ctx1) {$ctx1.fill(self,"testRemove",{},$globals.ExampleSetTest)});
  218. //>>excludeEnd("ctx");
  219. },
  220. //>>excludeStart("ide", pragmas.excludeIdeData);
  221. args: [],
  222. source: "testRemove\x0a\x09full remove: 5.\x0a\x09self assert: (full includes: #abc).\x0a\x09self deny: (full includes: 5)",
  223. referencedClasses: [],
  224. //>>excludeEnd("ide");
  225. messageSends: ["remove:", "assert:", "includes:", "deny:"]
  226. }),
  227. $globals.ExampleSetTest);
  228. $core.addClass('SUnitAsyncTest', $globals.TestCase, ['flag'], 'SUnit-Tests');
  229. $core.addMethod(
  230. $core.method({
  231. selector: "fakeError",
  232. protocol: 'helpers',
  233. fn: function (){
  234. var self=this;
  235. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  236. return $core.withContext(function($ctx1) {
  237. //>>excludeEnd("ctx");
  238. self["@flag"]="bad";
  239. self._timeout_((30));
  240. self["@flag"]=$recv(self._async_((function(){
  241. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  242. return $core.withContext(function($ctx2) {
  243. //>>excludeEnd("ctx");
  244. self["@flag"]="ok";
  245. self["@flag"];
  246. return self._error_("Intentional");
  247. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  248. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  249. //>>excludeEnd("ctx");
  250. })))._valueWithTimeout_((20));
  251. return self;
  252. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  253. }, function($ctx1) {$ctx1.fill(self,"fakeError",{},$globals.SUnitAsyncTest)});
  254. //>>excludeEnd("ctx");
  255. },
  256. //>>excludeStart("ide", pragmas.excludeIdeData);
  257. args: [],
  258. source: "fakeError\x0a\x09flag := 'bad'.\x0a\x09self timeout: 30.\x0a\x09flag := (self async: [ flag := 'ok'. self error: 'Intentional' ]) valueWithTimeout: 20",
  259. referencedClasses: [],
  260. //>>excludeEnd("ide");
  261. messageSends: ["timeout:", "valueWithTimeout:", "async:", "error:"]
  262. }),
  263. $globals.SUnitAsyncTest);
  264. $core.addMethod(
  265. $core.method({
  266. selector: "fakeErrorFailingInTearDown",
  267. protocol: 'helpers',
  268. fn: function (){
  269. var self=this;
  270. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  271. return $core.withContext(function($ctx1) {
  272. //>>excludeEnd("ctx");
  273. self["@flag"]="bad";
  274. self._timeout_((30));
  275. self["@flag"]=$recv(self._async_((function(){
  276. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  277. return $core.withContext(function($ctx2) {
  278. //>>excludeEnd("ctx");
  279. return self._error_("Intentional");
  280. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  281. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  282. //>>excludeEnd("ctx");
  283. })))._valueWithTimeout_((20));
  284. return self;
  285. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  286. }, function($ctx1) {$ctx1.fill(self,"fakeErrorFailingInTearDown",{},$globals.SUnitAsyncTest)});
  287. //>>excludeEnd("ctx");
  288. },
  289. //>>excludeStart("ide", pragmas.excludeIdeData);
  290. args: [],
  291. source: "fakeErrorFailingInTearDown\x0a\x09flag := 'bad'.\x0a\x09self timeout: 30.\x0a\x09flag := (self async: [ self error: 'Intentional' ]) valueWithTimeout: 20",
  292. referencedClasses: [],
  293. //>>excludeEnd("ide");
  294. messageSends: ["timeout:", "valueWithTimeout:", "async:", "error:"]
  295. }),
  296. $globals.SUnitAsyncTest);
  297. $core.addMethod(
  298. $core.method({
  299. selector: "fakeFailure",
  300. protocol: 'helpers',
  301. fn: function (){
  302. var self=this;
  303. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  304. return $core.withContext(function($ctx1) {
  305. //>>excludeEnd("ctx");
  306. self["@flag"]="bad";
  307. self._timeout_((30));
  308. self["@flag"]=$recv(self._async_((function(){
  309. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  310. return $core.withContext(function($ctx2) {
  311. //>>excludeEnd("ctx");
  312. self["@flag"]="ok";
  313. self["@flag"];
  314. return self._assert_(false);
  315. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  316. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  317. //>>excludeEnd("ctx");
  318. })))._valueWithTimeout_((20));
  319. return self;
  320. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  321. }, function($ctx1) {$ctx1.fill(self,"fakeFailure",{},$globals.SUnitAsyncTest)});
  322. //>>excludeEnd("ctx");
  323. },
  324. //>>excludeStart("ide", pragmas.excludeIdeData);
  325. args: [],
  326. source: "fakeFailure\x0a\x09flag := 'bad'.\x0a\x09self timeout: 30.\x0a\x09flag := (self async: [ flag := 'ok'. self assert: false ]) valueWithTimeout: 20",
  327. referencedClasses: [],
  328. //>>excludeEnd("ide");
  329. messageSends: ["timeout:", "valueWithTimeout:", "async:", "assert:"]
  330. }),
  331. $globals.SUnitAsyncTest);
  332. $core.addMethod(
  333. $core.method({
  334. selector: "fakeMultipleTimeoutFailing",
  335. protocol: 'helpers',
  336. fn: function (){
  337. var self=this;
  338. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  339. return $core.withContext(function($ctx1) {
  340. //>>excludeEnd("ctx");
  341. var $1;
  342. self._timeout_((100));
  343. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  344. $ctx1.sendIdx["timeout:"]=1;
  345. //>>excludeEnd("ctx");
  346. $1=self._async_((function(){
  347. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  348. return $core.withContext(function($ctx2) {
  349. //>>excludeEnd("ctx");
  350. self._timeout_((20));
  351. return $recv(self._async_((function(){
  352. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  353. return $core.withContext(function($ctx3) {
  354. //>>excludeEnd("ctx");
  355. return self._finished();
  356. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  357. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  358. //>>excludeEnd("ctx");
  359. })))._valueWithTimeout_((30));
  360. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  361. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  362. //>>excludeEnd("ctx");
  363. }));
  364. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  365. $ctx1.sendIdx["async:"]=1;
  366. //>>excludeEnd("ctx");
  367. $recv($1)._valueWithTimeout_((20));
  368. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  369. $ctx1.sendIdx["valueWithTimeout:"]=1;
  370. //>>excludeEnd("ctx");
  371. return self;
  372. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  373. }, function($ctx1) {$ctx1.fill(self,"fakeMultipleTimeoutFailing",{},$globals.SUnitAsyncTest)});
  374. //>>excludeEnd("ctx");
  375. },
  376. //>>excludeStart("ide", pragmas.excludeIdeData);
  377. args: [],
  378. source: "fakeMultipleTimeoutFailing\x0a\x09self timeout: 100.\x0a\x09(self async: [ \x0a\x09\x09self timeout: 20.\x0a\x09\x09(self async: [ self finished ]) valueWithTimeout: 30\x0a\x09]) valueWithTimeout: 20",
  379. referencedClasses: [],
  380. //>>excludeEnd("ide");
  381. messageSends: ["timeout:", "valueWithTimeout:", "async:", "finished"]
  382. }),
  383. $globals.SUnitAsyncTest);
  384. $core.addMethod(
  385. $core.method({
  386. selector: "fakeMultipleTimeoutPassing",
  387. protocol: 'helpers',
  388. fn: function (){
  389. var self=this;
  390. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  391. return $core.withContext(function($ctx1) {
  392. //>>excludeEnd("ctx");
  393. var $1;
  394. self._timeout_((20));
  395. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  396. $ctx1.sendIdx["timeout:"]=1;
  397. //>>excludeEnd("ctx");
  398. $1=self._async_((function(){
  399. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  400. return $core.withContext(function($ctx2) {
  401. //>>excludeEnd("ctx");
  402. self._timeout_((40));
  403. return $recv(self._async_((function(){
  404. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  405. return $core.withContext(function($ctx3) {
  406. //>>excludeEnd("ctx");
  407. return self._finished();
  408. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  409. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  410. //>>excludeEnd("ctx");
  411. })))._valueWithTimeout_((20));
  412. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  413. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  414. //>>excludeEnd("ctx");
  415. }));
  416. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  417. $ctx1.sendIdx["async:"]=1;
  418. //>>excludeEnd("ctx");
  419. $recv($1)._valueWithTimeout_((10));
  420. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  421. $ctx1.sendIdx["valueWithTimeout:"]=1;
  422. //>>excludeEnd("ctx");
  423. return self;
  424. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  425. }, function($ctx1) {$ctx1.fill(self,"fakeMultipleTimeoutPassing",{},$globals.SUnitAsyncTest)});
  426. //>>excludeEnd("ctx");
  427. },
  428. //>>excludeStart("ide", pragmas.excludeIdeData);
  429. args: [],
  430. source: "fakeMultipleTimeoutPassing\x0a\x09self timeout: 20.\x0a\x09(self async: [\x0a\x09\x09self timeout: 40.\x0a\x09\x09(self async: [ self finished ]) valueWithTimeout: 20\x0a\x09]) valueWithTimeout: 10",
  431. referencedClasses: [],
  432. //>>excludeEnd("ide");
  433. messageSends: ["timeout:", "valueWithTimeout:", "async:", "finished"]
  434. }),
  435. $globals.SUnitAsyncTest);
  436. $core.addMethod(
  437. $core.method({
  438. selector: "fakeTimeout",
  439. protocol: 'helpers',
  440. fn: function (){
  441. var self=this;
  442. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  443. return $core.withContext(function($ctx1) {
  444. //>>excludeEnd("ctx");
  445. self._timeout_((10));
  446. $recv(self._async_((function(){
  447. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  448. return $core.withContext(function($ctx2) {
  449. //>>excludeEnd("ctx");
  450. return self._finished();
  451. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  452. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  453. //>>excludeEnd("ctx");
  454. })))._valueWithTimeout_((20));
  455. return self;
  456. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  457. }, function($ctx1) {$ctx1.fill(self,"fakeTimeout",{},$globals.SUnitAsyncTest)});
  458. //>>excludeEnd("ctx");
  459. },
  460. //>>excludeStart("ide", pragmas.excludeIdeData);
  461. args: [],
  462. source: "fakeTimeout\x0a\x09self timeout: 10.\x0a\x09(self async: [ self finished ]) valueWithTimeout: 20",
  463. referencedClasses: [],
  464. //>>excludeEnd("ide");
  465. messageSends: ["timeout:", "valueWithTimeout:", "async:", "finished"]
  466. }),
  467. $globals.SUnitAsyncTest);
  468. $core.addMethod(
  469. $core.method({
  470. selector: "selectorSetOf:",
  471. protocol: 'private',
  472. fn: function (aCollection){
  473. var self=this;
  474. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  475. return $core.withContext(function($ctx1) {
  476. //>>excludeEnd("ctx");
  477. return $recv($recv(aCollection)._collect_((function(each){
  478. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  479. return $core.withContext(function($ctx2) {
  480. //>>excludeEnd("ctx");
  481. return $recv(each)._selector();
  482. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  483. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  484. //>>excludeEnd("ctx");
  485. })))._asSet();
  486. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  487. }, function($ctx1) {$ctx1.fill(self,"selectorSetOf:",{aCollection:aCollection},$globals.SUnitAsyncTest)});
  488. //>>excludeEnd("ctx");
  489. },
  490. //>>excludeStart("ide", pragmas.excludeIdeData);
  491. args: ["aCollection"],
  492. source: "selectorSetOf: aCollection\x0a\x09^ (aCollection collect: [ :each | each selector ]) asSet",
  493. referencedClasses: [],
  494. //>>excludeEnd("ide");
  495. messageSends: ["asSet", "collect:", "selector"]
  496. }),
  497. $globals.SUnitAsyncTest);
  498. $core.addMethod(
  499. $core.method({
  500. selector: "setUp",
  501. protocol: 'running',
  502. fn: function (){
  503. var self=this;
  504. self["@flag"]="ok";
  505. return self;
  506. },
  507. //>>excludeStart("ide", pragmas.excludeIdeData);
  508. args: [],
  509. source: "setUp\x0a\x09flag := 'ok'",
  510. referencedClasses: [],
  511. //>>excludeEnd("ide");
  512. messageSends: []
  513. }),
  514. $globals.SUnitAsyncTest);
  515. $core.addMethod(
  516. $core.method({
  517. selector: "tearDown",
  518. protocol: 'running',
  519. fn: function (){
  520. var self=this;
  521. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  522. return $core.withContext(function($ctx1) {
  523. //>>excludeEnd("ctx");
  524. self._assert_equals_("ok",self["@flag"]);
  525. return self;
  526. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  527. }, function($ctx1) {$ctx1.fill(self,"tearDown",{},$globals.SUnitAsyncTest)});
  528. //>>excludeEnd("ctx");
  529. },
  530. //>>excludeStart("ide", pragmas.excludeIdeData);
  531. args: [],
  532. source: "tearDown\x0a\x09self assert: 'ok' equals: flag",
  533. referencedClasses: [],
  534. //>>excludeEnd("ide");
  535. messageSends: ["assert:equals:"]
  536. }),
  537. $globals.SUnitAsyncTest);
  538. $core.addMethod(
  539. $core.method({
  540. selector: "testAsyncErrorsAndFailures",
  541. protocol: 'tests',
  542. fn: function (){
  543. var self=this;
  544. var suite,runner,result,assertBlock;
  545. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  546. return $core.withContext(function($ctx1) {
  547. //>>excludeEnd("ctx");
  548. var $1,$2,$3,$4;
  549. suite=["fakeError", "fakeErrorFailingInTearDown", "fakeFailure", "testPass"]._collect_((function(each){
  550. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  551. return $core.withContext(function($ctx2) {
  552. //>>excludeEnd("ctx");
  553. return $recv(self._class())._selector_(each);
  554. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  555. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  556. //>>excludeEnd("ctx");
  557. }));
  558. runner=$recv($globals.TestSuiteRunner)._on_(suite);
  559. self._timeout_((200));
  560. result=$recv(runner)._result();
  561. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  562. $ctx1.sendIdx["result"]=1;
  563. //>>excludeEnd("ctx");
  564. assertBlock=self._async_((function(){
  565. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  566. return $core.withContext(function($ctx2) {
  567. //>>excludeEnd("ctx");
  568. $1=self._selectorSetOf_($recv(result)._errors());
  569. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  570. $ctx2.sendIdx["selectorSetOf:"]=1;
  571. //>>excludeEnd("ctx");
  572. $2=["fakeError"]._asSet();
  573. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  574. $ctx2.sendIdx["asSet"]=1;
  575. //>>excludeEnd("ctx");
  576. self._assert_equals_($1,$2);
  577. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  578. $ctx2.sendIdx["assert:equals:"]=1;
  579. //>>excludeEnd("ctx");
  580. self._assert_equals_(self._selectorSetOf_($recv(result)._failures()),["fakeErrorFailingInTearDown", "fakeFailure"]._asSet());
  581. return self._finished();
  582. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  583. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  584. //>>excludeEnd("ctx");
  585. }));
  586. $recv($recv(runner)._announcer())._on_do_($globals.ResultAnnouncement,(function(ann){
  587. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  588. return $core.withContext(function($ctx2) {
  589. //>>excludeEnd("ctx");
  590. $3=$recv($recv(ann)._result()).__eq_eq(result);
  591. if($core.assert($3)){
  592. $4=$recv($recv(result)._runs()).__eq($recv(result)._total());
  593. return $recv($4)._ifTrue_(assertBlock);
  594. };
  595. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  596. }, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1,3)});
  597. //>>excludeEnd("ctx");
  598. }));
  599. $recv(runner)._run();
  600. return self;
  601. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  602. }, function($ctx1) {$ctx1.fill(self,"testAsyncErrorsAndFailures",{suite:suite,runner:runner,result:result,assertBlock:assertBlock},$globals.SUnitAsyncTest)});
  603. //>>excludeEnd("ctx");
  604. },
  605. //>>excludeStart("ide", pragmas.excludeIdeData);
  606. args: [],
  607. 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",
  608. referencedClasses: ["TestSuiteRunner", "ResultAnnouncement"],
  609. //>>excludeEnd("ide");
  610. messageSends: ["collect:", "selector:", "class", "on:", "timeout:", "result", "async:", "assert:equals:", "selectorSetOf:", "errors", "asSet", "failures", "finished", "on:do:", "announcer", "ifTrue:", "==", "=", "runs", "total", "run"]
  611. }),
  612. $globals.SUnitAsyncTest);
  613. $core.addMethod(
  614. $core.method({
  615. selector: "testAsyncNeedsTimeout",
  616. protocol: 'tests',
  617. fn: function (){
  618. var self=this;
  619. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  620. return $core.withContext(function($ctx1) {
  621. //>>excludeEnd("ctx");
  622. self._should_raise_((function(){
  623. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  624. return $core.withContext(function($ctx2) {
  625. //>>excludeEnd("ctx");
  626. return self._async_((function(){
  627. }));
  628. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  629. $ctx2.sendIdx["async:"]=1;
  630. //>>excludeEnd("ctx");
  631. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  632. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  633. //>>excludeEnd("ctx");
  634. }),$globals.Error);
  635. self._timeout_((0));
  636. self._shouldnt_raise_((function(){
  637. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  638. return $core.withContext(function($ctx2) {
  639. //>>excludeEnd("ctx");
  640. return self._async_((function(){
  641. }));
  642. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  643. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  644. //>>excludeEnd("ctx");
  645. }),$globals.Error);
  646. self._finished();
  647. return self;
  648. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  649. }, function($ctx1) {$ctx1.fill(self,"testAsyncNeedsTimeout",{},$globals.SUnitAsyncTest)});
  650. //>>excludeEnd("ctx");
  651. },
  652. //>>excludeStart("ide", pragmas.excludeIdeData);
  653. args: [],
  654. source: "testAsyncNeedsTimeout\x0a\x09self should: [ self async: [ ] ] raise: Error.\x0a\x09self timeout: 0.\x0a\x09self shouldnt: [ self async: [ ] ] raise: Error.\x0a\x09self finished",
  655. referencedClasses: ["Error"],
  656. //>>excludeEnd("ide");
  657. messageSends: ["should:raise:", "async:", "timeout:", "shouldnt:raise:", "finished"]
  658. }),
  659. $globals.SUnitAsyncTest);
  660. $core.addMethod(
  661. $core.method({
  662. selector: "testFinishedNeedsTimeout",
  663. protocol: 'tests',
  664. fn: function (){
  665. var self=this;
  666. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  667. return $core.withContext(function($ctx1) {
  668. //>>excludeEnd("ctx");
  669. self._should_raise_((function(){
  670. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  671. return $core.withContext(function($ctx2) {
  672. //>>excludeEnd("ctx");
  673. return self._finished();
  674. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  675. $ctx2.sendIdx["finished"]=1;
  676. //>>excludeEnd("ctx");
  677. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  678. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  679. //>>excludeEnd("ctx");
  680. }),$globals.Error);
  681. self._timeout_((0));
  682. self._shouldnt_raise_((function(){
  683. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  684. return $core.withContext(function($ctx2) {
  685. //>>excludeEnd("ctx");
  686. return self._finished();
  687. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  688. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  689. //>>excludeEnd("ctx");
  690. }),$globals.Error);
  691. return self;
  692. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  693. }, function($ctx1) {$ctx1.fill(self,"testFinishedNeedsTimeout",{},$globals.SUnitAsyncTest)});
  694. //>>excludeEnd("ctx");
  695. },
  696. //>>excludeStart("ide", pragmas.excludeIdeData);
  697. args: [],
  698. source: "testFinishedNeedsTimeout\x0a\x09self should: [ self finished ] raise: Error.\x0a\x09self timeout: 0.\x0a\x09self shouldnt: [ self finished ] raise: Error.",
  699. referencedClasses: ["Error"],
  700. //>>excludeEnd("ide");
  701. messageSends: ["should:raise:", "finished", "timeout:", "shouldnt:raise:"]
  702. }),
  703. $globals.SUnitAsyncTest);
  704. $core.addMethod(
  705. $core.method({
  706. selector: "testIsAsyncReturnsCorrectValues",
  707. protocol: 'tests',
  708. fn: function (){
  709. var self=this;
  710. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  711. return $core.withContext(function($ctx1) {
  712. //>>excludeEnd("ctx");
  713. var $1,$2;
  714. $1=self._isAsync();
  715. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  716. $ctx1.sendIdx["isAsync"]=1;
  717. //>>excludeEnd("ctx");
  718. self._deny_($1);
  719. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  720. $ctx1.sendIdx["deny:"]=1;
  721. //>>excludeEnd("ctx");
  722. self._timeout_((0));
  723. $2=self._isAsync();
  724. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  725. $ctx1.sendIdx["isAsync"]=2;
  726. //>>excludeEnd("ctx");
  727. self._assert_($2);
  728. self._finished();
  729. self._deny_(self._isAsync());
  730. return self;
  731. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  732. }, function($ctx1) {$ctx1.fill(self,"testIsAsyncReturnsCorrectValues",{},$globals.SUnitAsyncTest)});
  733. //>>excludeEnd("ctx");
  734. },
  735. //>>excludeStart("ide", pragmas.excludeIdeData);
  736. args: [],
  737. source: "testIsAsyncReturnsCorrectValues\x0a\x09self deny: self isAsync.\x0a\x09self timeout: 0.\x0a\x09self assert: self isAsync.\x0a\x09self finished.\x0a\x09self deny: self isAsync",
  738. referencedClasses: [],
  739. //>>excludeEnd("ide");
  740. messageSends: ["deny:", "isAsync", "timeout:", "assert:", "finished"]
  741. }),
  742. $globals.SUnitAsyncTest);
  743. $core.addMethod(
  744. $core.method({
  745. selector: "testPass",
  746. protocol: 'tests',
  747. fn: function (){
  748. var self=this;
  749. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  750. return $core.withContext(function($ctx1) {
  751. //>>excludeEnd("ctx");
  752. self["@flag"]="bad";
  753. self._timeout_((10));
  754. self["@flag"]=$recv(self._async_((function(){
  755. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  756. return $core.withContext(function($ctx2) {
  757. //>>excludeEnd("ctx");
  758. self._assert_(true);
  759. self._finished();
  760. self["@flag"]="ok";
  761. return self["@flag"];
  762. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  763. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  764. //>>excludeEnd("ctx");
  765. })))._valueWithTimeout_((5));
  766. return self;
  767. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  768. }, function($ctx1) {$ctx1.fill(self,"testPass",{},$globals.SUnitAsyncTest)});
  769. //>>excludeEnd("ctx");
  770. },
  771. //>>excludeStart("ide", pragmas.excludeIdeData);
  772. args: [],
  773. source: "testPass\x0a\x09flag := 'bad'.\x0a\x09self timeout: 10.\x0a\x09flag := (self async: [ self assert: true. self finished. flag := 'ok' ]) valueWithTimeout: 5",
  774. referencedClasses: [],
  775. //>>excludeEnd("ide");
  776. messageSends: ["timeout:", "valueWithTimeout:", "async:", "assert:", "finished"]
  777. }),
  778. $globals.SUnitAsyncTest);
  779. $core.addMethod(
  780. $core.method({
  781. selector: "testTimeouts",
  782. protocol: 'tests',
  783. fn: function (){
  784. var self=this;
  785. var suite,runner,result,assertBlock;
  786. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  787. return $core.withContext(function($ctx1) {
  788. //>>excludeEnd("ctx");
  789. var $1,$2,$3;
  790. suite=["fakeTimeout", "fakeMultipleTimeoutFailing", "fakeMultipleTimeoutPassing", "testPass"]._collect_((function(each){
  791. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  792. return $core.withContext(function($ctx2) {
  793. //>>excludeEnd("ctx");
  794. return $recv(self._class())._selector_(each);
  795. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  796. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  797. //>>excludeEnd("ctx");
  798. }));
  799. runner=$recv($globals.TestSuiteRunner)._on_(suite);
  800. self._timeout_((200));
  801. result=$recv(runner)._result();
  802. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  803. $ctx1.sendIdx["result"]=1;
  804. //>>excludeEnd("ctx");
  805. assertBlock=self._async_((function(){
  806. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  807. return $core.withContext(function($ctx2) {
  808. //>>excludeEnd("ctx");
  809. $1=self._selectorSetOf_($recv(result)._errors());
  810. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  811. $ctx2.sendIdx["selectorSetOf:"]=1;
  812. //>>excludeEnd("ctx");
  813. self._assert_equals_($1,$recv($globals.Set)._new());
  814. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  815. $ctx2.sendIdx["assert:equals:"]=1;
  816. //>>excludeEnd("ctx");
  817. self._assert_equals_(self._selectorSetOf_($recv(result)._failures()),["fakeMultipleTimeoutFailing", "fakeTimeout"]._asSet());
  818. return self._finished();
  819. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  820. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  821. //>>excludeEnd("ctx");
  822. }));
  823. $recv($recv(runner)._announcer())._on_do_($globals.ResultAnnouncement,(function(ann){
  824. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  825. return $core.withContext(function($ctx2) {
  826. //>>excludeEnd("ctx");
  827. $2=$recv($recv(ann)._result()).__eq_eq(result);
  828. if($core.assert($2)){
  829. $3=$recv($recv(result)._runs()).__eq($recv(result)._total());
  830. return $recv($3)._ifTrue_(assertBlock);
  831. };
  832. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  833. }, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1,3)});
  834. //>>excludeEnd("ctx");
  835. }));
  836. $recv(runner)._run();
  837. return self;
  838. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  839. }, function($ctx1) {$ctx1.fill(self,"testTimeouts",{suite:suite,runner:runner,result:result,assertBlock:assertBlock},$globals.SUnitAsyncTest)});
  840. //>>excludeEnd("ctx");
  841. },
  842. //>>excludeStart("ide", pragmas.excludeIdeData);
  843. args: [],
  844. 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",
  845. referencedClasses: ["TestSuiteRunner", "Set", "ResultAnnouncement"],
  846. //>>excludeEnd("ide");
  847. messageSends: ["collect:", "selector:", "class", "on:", "timeout:", "result", "async:", "assert:equals:", "selectorSetOf:", "errors", "new", "failures", "asSet", "finished", "on:do:", "announcer", "ifTrue:", "==", "=", "runs", "total", "run"]
  848. }),
  849. $globals.SUnitAsyncTest);
  850. $core.addMethod(
  851. $core.method({
  852. selector: "testTwoAsyncPassesWithFinishedOnlyOneIsRun",
  853. protocol: 'tests',
  854. fn: function (){
  855. var self=this;
  856. var x;
  857. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  858. return $core.withContext(function($ctx1) {
  859. //>>excludeEnd("ctx");
  860. var $1;
  861. self["@flag"]="bad";
  862. self._timeout_((10));
  863. x=(0);
  864. $1=self._async_((function(){
  865. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  866. return $core.withContext(function($ctx2) {
  867. //>>excludeEnd("ctx");
  868. self._finished();
  869. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  870. $ctx2.sendIdx["finished"]=1;
  871. //>>excludeEnd("ctx");
  872. self["@flag"]="ok";
  873. self["@flag"];
  874. x=$recv(x).__plus((1));
  875. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  876. $ctx2.sendIdx["+"]=1;
  877. //>>excludeEnd("ctx");
  878. x;
  879. return self._assert_equals_(x,(1));
  880. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  881. $ctx2.sendIdx["assert:equals:"]=1;
  882. //>>excludeEnd("ctx");
  883. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  884. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  885. //>>excludeEnd("ctx");
  886. }));
  887. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  888. $ctx1.sendIdx["async:"]=1;
  889. //>>excludeEnd("ctx");
  890. self["@flag"]=$recv($1)._valueWithTimeout_((0));
  891. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  892. $ctx1.sendIdx["valueWithTimeout:"]=1;
  893. //>>excludeEnd("ctx");
  894. self["@flag"]=$recv(self._async_((function(){
  895. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  896. return $core.withContext(function($ctx2) {
  897. //>>excludeEnd("ctx");
  898. self._finished();
  899. self["@flag"]="ok";
  900. self["@flag"];
  901. x=$recv(x).__plus((1));
  902. x;
  903. return self._assert_equals_(x,(1));
  904. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  905. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  906. //>>excludeEnd("ctx");
  907. })))._valueWithTimeout_((0));
  908. return self;
  909. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  910. }, function($ctx1) {$ctx1.fill(self,"testTwoAsyncPassesWithFinishedOnlyOneIsRun",{x:x},$globals.SUnitAsyncTest)});
  911. //>>excludeEnd("ctx");
  912. },
  913. //>>excludeStart("ide", pragmas.excludeIdeData);
  914. args: [],
  915. 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.",
  916. referencedClasses: [],
  917. //>>excludeEnd("ide");
  918. messageSends: ["timeout:", "valueWithTimeout:", "async:", "finished", "+", "assert:equals:"]
  919. }),
  920. $globals.SUnitAsyncTest);
  921. });