SUnit-Tests.js 34 KB

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