SUnit-Tests.js 34 KB

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