SUnit-Tests.js 34 KB

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