SUnit-Tests.js 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945
  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. $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. var $1;
  142. $1=$recv($self.full)._includes_((5));
  143. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  144. $ctx1.sendIdx["includes:"]=1;
  145. //>>excludeEnd("ctx");
  146. $self._assert_($1);
  147. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  148. $ctx1.sendIdx["assert:"]=1;
  149. //>>excludeEnd("ctx");
  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. var $1,$2;
  174. $1=$recv($self.empty)._occurrencesOf_((0));
  175. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  176. $ctx1.sendIdx["occurrencesOf:"]=1;
  177. //>>excludeEnd("ctx");
  178. $self._assert_equals_($1,(0));
  179. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  180. $ctx1.sendIdx["assert:equals:"]=1;
  181. //>>excludeEnd("ctx");
  182. $2=$recv($self.full)._occurrencesOf_((5));
  183. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  184. $ctx1.sendIdx["occurrencesOf:"]=2;
  185. //>>excludeEnd("ctx");
  186. $self._assert_equals_($2,(1));
  187. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  188. $ctx1.sendIdx["assert:equals:"]=2;
  189. //>>excludeEnd("ctx");
  190. $recv($self.full)._add_((5));
  191. $self._assert_equals_($recv($self.full)._occurrencesOf_((5)),(1));
  192. return self;
  193. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  194. }, function($ctx1) {$ctx1.fill(self,"testOccurrences",{})});
  195. //>>excludeEnd("ctx");
  196. }; }),
  197. $globals.ExampleSetTest);
  198. $core.addMethod(
  199. $core.method({
  200. selector: "testRemove",
  201. protocol: "tests",
  202. //>>excludeStart("ide", pragmas.excludeIdeData);
  203. args: [],
  204. source: "testRemove\x0a\x09full remove: 5.\x0a\x09self assert: (full includes: #abc).\x0a\x09self deny: (full includes: 5)",
  205. referencedClasses: [],
  206. //>>excludeEnd("ide");
  207. pragmas: [],
  208. messageSends: ["remove:", "assert:", "includes:", "deny:"]
  209. }, function ($methodClass){ return function (){
  210. var self=this,$self=this;
  211. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  212. return $core.withContext(function($ctx1) {
  213. //>>excludeEnd("ctx");
  214. var $1;
  215. $recv($self.full)._remove_((5));
  216. $1=$recv($self.full)._includes_("abc");
  217. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  218. $ctx1.sendIdx["includes:"]=1;
  219. //>>excludeEnd("ctx");
  220. $self._assert_($1);
  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. var $1;
  347. $self._timeout_((100));
  348. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  349. $ctx1.sendIdx["timeout:"]=1;
  350. //>>excludeEnd("ctx");
  351. $1=$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. $recv($1)._valueWithTimeout_((20));
  373. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  374. $ctx1.sendIdx["valueWithTimeout:"]=1;
  375. //>>excludeEnd("ctx");
  376. return self;
  377. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  378. }, function($ctx1) {$ctx1.fill(self,"fakeMultipleTimeoutFailing",{})});
  379. //>>excludeEnd("ctx");
  380. }; }),
  381. $globals.SUnitAsyncTest);
  382. $core.addMethod(
  383. $core.method({
  384. selector: "fakeMultipleTimeoutPassing",
  385. protocol: "helpers",
  386. //>>excludeStart("ide", pragmas.excludeIdeData);
  387. args: [],
  388. 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",
  389. referencedClasses: [],
  390. //>>excludeEnd("ide");
  391. pragmas: [],
  392. messageSends: ["timeout:", "valueWithTimeout:", "async:", "finished"]
  393. }, function ($methodClass){ return function (){
  394. var self=this,$self=this;
  395. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  396. return $core.withContext(function($ctx1) {
  397. //>>excludeEnd("ctx");
  398. var $1;
  399. $self._timeout_((20));
  400. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  401. $ctx1.sendIdx["timeout:"]=1;
  402. //>>excludeEnd("ctx");
  403. $1=$self._async_((function(){
  404. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  405. return $core.withContext(function($ctx2) {
  406. //>>excludeEnd("ctx");
  407. $self._timeout_((40));
  408. return $recv($self._async_((function(){
  409. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  410. return $core.withContext(function($ctx3) {
  411. //>>excludeEnd("ctx");
  412. return $self._finished();
  413. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  414. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  415. //>>excludeEnd("ctx");
  416. })))._valueWithTimeout_((20));
  417. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  418. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  419. //>>excludeEnd("ctx");
  420. }));
  421. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  422. $ctx1.sendIdx["async:"]=1;
  423. //>>excludeEnd("ctx");
  424. $recv($1)._valueWithTimeout_((10));
  425. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  426. $ctx1.sendIdx["valueWithTimeout:"]=1;
  427. //>>excludeEnd("ctx");
  428. return self;
  429. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  430. }, function($ctx1) {$ctx1.fill(self,"fakeMultipleTimeoutPassing",{})});
  431. //>>excludeEnd("ctx");
  432. }; }),
  433. $globals.SUnitAsyncTest);
  434. $core.addMethod(
  435. $core.method({
  436. selector: "fakeTimeout",
  437. protocol: "helpers",
  438. //>>excludeStart("ide", pragmas.excludeIdeData);
  439. args: [],
  440. source: "fakeTimeout\x0a\x09self timeout: 10.\x0a\x09(self async: [ self finished ]) valueWithTimeout: 20",
  441. referencedClasses: [],
  442. //>>excludeEnd("ide");
  443. pragmas: [],
  444. messageSends: ["timeout:", "valueWithTimeout:", "async:", "finished"]
  445. }, function ($methodClass){ return function (){
  446. var self=this,$self=this;
  447. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  448. return $core.withContext(function($ctx1) {
  449. //>>excludeEnd("ctx");
  450. $self._timeout_((10));
  451. $recv($self._async_((function(){
  452. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  453. return $core.withContext(function($ctx2) {
  454. //>>excludeEnd("ctx");
  455. return $self._finished();
  456. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  457. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  458. //>>excludeEnd("ctx");
  459. })))._valueWithTimeout_((20));
  460. return self;
  461. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  462. }, function($ctx1) {$ctx1.fill(self,"fakeTimeout",{})});
  463. //>>excludeEnd("ctx");
  464. }; }),
  465. $globals.SUnitAsyncTest);
  466. $core.addMethod(
  467. $core.method({
  468. selector: "selectorSetOf:",
  469. protocol: "private",
  470. //>>excludeStart("ide", pragmas.excludeIdeData);
  471. args: ["aCollection"],
  472. source: "selectorSetOf: aCollection\x0a\x09^ (aCollection collect: [ :each | each selector ]) asSet",
  473. referencedClasses: [],
  474. //>>excludeEnd("ide");
  475. pragmas: [],
  476. messageSends: ["asSet", "collect:", "selector"]
  477. }, function ($methodClass){ return function (aCollection){
  478. var self=this,$self=this;
  479. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  480. return $core.withContext(function($ctx1) {
  481. //>>excludeEnd("ctx");
  482. return $recv($recv(aCollection)._collect_((function(each){
  483. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  484. return $core.withContext(function($ctx2) {
  485. //>>excludeEnd("ctx");
  486. return $recv(each)._selector();
  487. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  488. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  489. //>>excludeEnd("ctx");
  490. })))._asSet();
  491. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  492. }, function($ctx1) {$ctx1.fill(self,"selectorSetOf:",{aCollection:aCollection})});
  493. //>>excludeEnd("ctx");
  494. }; }),
  495. $globals.SUnitAsyncTest);
  496. $core.addMethod(
  497. $core.method({
  498. selector: "setUp",
  499. protocol: "running",
  500. //>>excludeStart("ide", pragmas.excludeIdeData);
  501. args: [],
  502. source: "setUp\x0a\x09flag := 'ok'",
  503. referencedClasses: [],
  504. //>>excludeEnd("ide");
  505. pragmas: [],
  506. messageSends: []
  507. }, function ($methodClass){ return function (){
  508. var self=this,$self=this;
  509. $self.flag="ok";
  510. return self;
  511. }; }),
  512. $globals.SUnitAsyncTest);
  513. $core.addMethod(
  514. $core.method({
  515. selector: "tearDown",
  516. protocol: "running",
  517. //>>excludeStart("ide", pragmas.excludeIdeData);
  518. args: [],
  519. source: "tearDown\x0a\x09self assert: 'ok' equals: flag",
  520. referencedClasses: [],
  521. //>>excludeEnd("ide");
  522. pragmas: [],
  523. messageSends: ["assert:equals:"]
  524. }, function ($methodClass){ return function (){
  525. var self=this,$self=this;
  526. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  527. return $core.withContext(function($ctx1) {
  528. //>>excludeEnd("ctx");
  529. $self._assert_equals_("ok",$self.flag);
  530. return self;
  531. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  532. }, function($ctx1) {$ctx1.fill(self,"tearDown",{})});
  533. //>>excludeEnd("ctx");
  534. }; }),
  535. $globals.SUnitAsyncTest);
  536. $core.addMethod(
  537. $core.method({
  538. selector: "testAsyncErrorsAndFailures",
  539. protocol: "tests",
  540. //>>excludeStart("ide", pragmas.excludeIdeData);
  541. args: [],
  542. 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",
  543. referencedClasses: ["TestSuiteRunner", "ResultAnnouncement"],
  544. //>>excludeEnd("ide");
  545. pragmas: [],
  546. messageSends: ["collect:", "selector:", "class", "on:", "timeout:", "result", "async:", "assert:equals:", "selectorSetOf:", "errors", "asSet", "failures", "finished", "on:do:", "announcer", "ifTrue:", "==", "=", "runs", "total", "run"]
  547. }, function ($methodClass){ return function (){
  548. var self=this,$self=this;
  549. var suite,runner,result,assertBlock;
  550. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  551. return $core.withContext(function($ctx1) {
  552. //>>excludeEnd("ctx");
  553. var $1,$2,$3,$4;
  554. suite=["fakeError", "fakeErrorFailingInTearDown", "fakeFailure", "testPass"]._collect_((function(each){
  555. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  556. return $core.withContext(function($ctx2) {
  557. //>>excludeEnd("ctx");
  558. return $recv($self._class())._selector_(each);
  559. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  560. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  561. //>>excludeEnd("ctx");
  562. }));
  563. runner=$recv($globals.TestSuiteRunner)._on_(suite);
  564. $self._timeout_((200));
  565. result=$recv(runner)._result();
  566. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  567. $ctx1.sendIdx["result"]=1;
  568. //>>excludeEnd("ctx");
  569. assertBlock=$self._async_((function(){
  570. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  571. return $core.withContext(function($ctx2) {
  572. //>>excludeEnd("ctx");
  573. $1=$self._selectorSetOf_($recv(result)._errors());
  574. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  575. $ctx2.sendIdx["selectorSetOf:"]=1;
  576. //>>excludeEnd("ctx");
  577. $2=["fakeError"]._asSet();
  578. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  579. $ctx2.sendIdx["asSet"]=1;
  580. //>>excludeEnd("ctx");
  581. $self._assert_equals_($1,$2);
  582. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  583. $ctx2.sendIdx["assert:equals:"]=1;
  584. //>>excludeEnd("ctx");
  585. $self._assert_equals_($self._selectorSetOf_($recv(result)._failures()),["fakeErrorFailingInTearDown", "fakeFailure"]._asSet());
  586. return $self._finished();
  587. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  588. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  589. //>>excludeEnd("ctx");
  590. }));
  591. $recv($recv(runner)._announcer())._on_do_($globals.ResultAnnouncement,(function(ann){
  592. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  593. return $core.withContext(function($ctx2) {
  594. //>>excludeEnd("ctx");
  595. $3=$recv($recv(ann)._result()).__eq_eq(result);
  596. if($core.assert($3)){
  597. $4=$recv($recv(result)._runs()).__eq($recv(result)._total());
  598. return $recv($4)._ifTrue_(assertBlock);
  599. }
  600. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  601. }, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1,3)});
  602. //>>excludeEnd("ctx");
  603. }));
  604. $recv(runner)._run();
  605. return self;
  606. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  607. }, function($ctx1) {$ctx1.fill(self,"testAsyncErrorsAndFailures",{suite:suite,runner:runner,result:result,assertBlock:assertBlock})});
  608. //>>excludeEnd("ctx");
  609. }; }),
  610. $globals.SUnitAsyncTest);
  611. $core.addMethod(
  612. $core.method({
  613. selector: "testAsyncNeedsTimeout",
  614. protocol: "tests",
  615. //>>excludeStart("ide", pragmas.excludeIdeData);
  616. args: [],
  617. source: "testAsyncNeedsTimeout\x0a\x09self should: [ self async: [ ] ] raise: Error.\x0a\x09self timeout: 0.\x0a\x09self shouldnt: [ self async: [ ] ] raise: Error.\x0a\x09self finished",
  618. referencedClasses: ["Error"],
  619. //>>excludeEnd("ide");
  620. pragmas: [],
  621. messageSends: ["should:raise:", "async:", "timeout:", "shouldnt:raise:", "finished"]
  622. }, function ($methodClass){ return function (){
  623. var self=this,$self=this;
  624. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  625. return $core.withContext(function($ctx1) {
  626. //>>excludeEnd("ctx");
  627. $self._should_raise_((function(){
  628. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  629. return $core.withContext(function($ctx2) {
  630. //>>excludeEnd("ctx");
  631. return $self._async_((function(){
  632. }));
  633. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  634. $ctx2.sendIdx["async:"]=1;
  635. //>>excludeEnd("ctx");
  636. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  637. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  638. //>>excludeEnd("ctx");
  639. }),$globals.Error);
  640. $self._timeout_((0));
  641. $self._shouldnt_raise_((function(){
  642. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  643. return $core.withContext(function($ctx2) {
  644. //>>excludeEnd("ctx");
  645. return $self._async_((function(){
  646. }));
  647. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  648. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  649. //>>excludeEnd("ctx");
  650. }),$globals.Error);
  651. $self._finished();
  652. return self;
  653. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  654. }, function($ctx1) {$ctx1.fill(self,"testAsyncNeedsTimeout",{})});
  655. //>>excludeEnd("ctx");
  656. }; }),
  657. $globals.SUnitAsyncTest);
  658. $core.addMethod(
  659. $core.method({
  660. selector: "testFinishedNeedsTimeout",
  661. protocol: "tests",
  662. //>>excludeStart("ide", pragmas.excludeIdeData);
  663. args: [],
  664. source: "testFinishedNeedsTimeout\x0a\x09self should: [ self finished ] raise: Error.\x0a\x09self timeout: 0.\x0a\x09self shouldnt: [ self finished ] raise: Error.",
  665. referencedClasses: ["Error"],
  666. //>>excludeEnd("ide");
  667. pragmas: [],
  668. messageSends: ["should:raise:", "finished", "timeout:", "shouldnt:raise:"]
  669. }, function ($methodClass){ return function (){
  670. var self=this,$self=this;
  671. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  672. return $core.withContext(function($ctx1) {
  673. //>>excludeEnd("ctx");
  674. $self._should_raise_((function(){
  675. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  676. return $core.withContext(function($ctx2) {
  677. //>>excludeEnd("ctx");
  678. return $self._finished();
  679. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  680. $ctx2.sendIdx["finished"]=1;
  681. //>>excludeEnd("ctx");
  682. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  683. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  684. //>>excludeEnd("ctx");
  685. }),$globals.Error);
  686. $self._timeout_((0));
  687. $self._shouldnt_raise_((function(){
  688. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  689. return $core.withContext(function($ctx2) {
  690. //>>excludeEnd("ctx");
  691. return $self._finished();
  692. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  693. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  694. //>>excludeEnd("ctx");
  695. }),$globals.Error);
  696. return self;
  697. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  698. }, function($ctx1) {$ctx1.fill(self,"testFinishedNeedsTimeout",{})});
  699. //>>excludeEnd("ctx");
  700. }; }),
  701. $globals.SUnitAsyncTest);
  702. $core.addMethod(
  703. $core.method({
  704. selector: "testIsAsyncReturnsCorrectValues",
  705. protocol: "tests",
  706. //>>excludeStart("ide", pragmas.excludeIdeData);
  707. args: [],
  708. source: "testIsAsyncReturnsCorrectValues\x0a\x09self deny: self isAsync.\x0a\x09self timeout: 0.\x0a\x09self assert: self isAsync.\x0a\x09self finished.\x0a\x09self deny: self isAsync",
  709. referencedClasses: [],
  710. //>>excludeEnd("ide");
  711. pragmas: [],
  712. messageSends: ["deny:", "isAsync", "timeout:", "assert:", "finished"]
  713. }, function ($methodClass){ return function (){
  714. var self=this,$self=this;
  715. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  716. return $core.withContext(function($ctx1) {
  717. //>>excludeEnd("ctx");
  718. var $1,$2;
  719. $1=$self._isAsync();
  720. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  721. $ctx1.sendIdx["isAsync"]=1;
  722. //>>excludeEnd("ctx");
  723. $self._deny_($1);
  724. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  725. $ctx1.sendIdx["deny:"]=1;
  726. //>>excludeEnd("ctx");
  727. $self._timeout_((0));
  728. $2=$self._isAsync();
  729. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  730. $ctx1.sendIdx["isAsync"]=2;
  731. //>>excludeEnd("ctx");
  732. $self._assert_($2);
  733. $self._finished();
  734. $self._deny_($self._isAsync());
  735. return self;
  736. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  737. }, function($ctx1) {$ctx1.fill(self,"testIsAsyncReturnsCorrectValues",{})});
  738. //>>excludeEnd("ctx");
  739. }; }),
  740. $globals.SUnitAsyncTest);
  741. $core.addMethod(
  742. $core.method({
  743. selector: "testPass",
  744. protocol: "tests",
  745. //>>excludeStart("ide", pragmas.excludeIdeData);
  746. args: [],
  747. source: "testPass\x0a\x09flag := 'bad'.\x0a\x09self timeout: 10.\x0a\x09flag := (self async: [ self assert: true. self finished. flag := 'ok' ]) valueWithTimeout: 5",
  748. referencedClasses: [],
  749. //>>excludeEnd("ide");
  750. pragmas: [],
  751. messageSends: ["timeout:", "valueWithTimeout:", "async:", "assert:", "finished"]
  752. }, function ($methodClass){ return function (){
  753. var self=this,$self=this;
  754. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  755. return $core.withContext(function($ctx1) {
  756. //>>excludeEnd("ctx");
  757. $self.flag="bad";
  758. $self._timeout_((10));
  759. $self.flag=$recv($self._async_((function(){
  760. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  761. return $core.withContext(function($ctx2) {
  762. //>>excludeEnd("ctx");
  763. $self._assert_(true);
  764. $self._finished();
  765. $self.flag="ok";
  766. return $self.flag;
  767. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  768. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  769. //>>excludeEnd("ctx");
  770. })))._valueWithTimeout_((5));
  771. return self;
  772. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  773. }, function($ctx1) {$ctx1.fill(self,"testPass",{})});
  774. //>>excludeEnd("ctx");
  775. }; }),
  776. $globals.SUnitAsyncTest);
  777. $core.addMethod(
  778. $core.method({
  779. selector: "testTimeouts",
  780. protocol: "tests",
  781. //>>excludeStart("ide", pragmas.excludeIdeData);
  782. args: [],
  783. 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",
  784. referencedClasses: ["TestSuiteRunner", "Set", "ResultAnnouncement"],
  785. //>>excludeEnd("ide");
  786. pragmas: [],
  787. messageSends: ["collect:", "selector:", "class", "on:", "timeout:", "result", "async:", "assert:equals:", "selectorSetOf:", "errors", "new", "failures", "asSet", "finished", "on:do:", "announcer", "ifTrue:", "==", "=", "runs", "total", "run"]
  788. }, function ($methodClass){ return function (){
  789. var self=this,$self=this;
  790. var suite,runner,result,assertBlock;
  791. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  792. return $core.withContext(function($ctx1) {
  793. //>>excludeEnd("ctx");
  794. var $1,$2,$3;
  795. suite=["fakeTimeout", "fakeMultipleTimeoutFailing", "fakeMultipleTimeoutPassing", "testPass"]._collect_((function(each){
  796. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  797. return $core.withContext(function($ctx2) {
  798. //>>excludeEnd("ctx");
  799. return $recv($self._class())._selector_(each);
  800. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  801. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  802. //>>excludeEnd("ctx");
  803. }));
  804. runner=$recv($globals.TestSuiteRunner)._on_(suite);
  805. $self._timeout_((200));
  806. result=$recv(runner)._result();
  807. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  808. $ctx1.sendIdx["result"]=1;
  809. //>>excludeEnd("ctx");
  810. assertBlock=$self._async_((function(){
  811. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  812. return $core.withContext(function($ctx2) {
  813. //>>excludeEnd("ctx");
  814. $1=$self._selectorSetOf_($recv(result)._errors());
  815. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  816. $ctx2.sendIdx["selectorSetOf:"]=1;
  817. //>>excludeEnd("ctx");
  818. $self._assert_equals_($1,$recv($globals.Set)._new());
  819. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  820. $ctx2.sendIdx["assert:equals:"]=1;
  821. //>>excludeEnd("ctx");
  822. $self._assert_equals_($self._selectorSetOf_($recv(result)._failures()),["fakeMultipleTimeoutFailing", "fakeTimeout"]._asSet());
  823. return $self._finished();
  824. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  825. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  826. //>>excludeEnd("ctx");
  827. }));
  828. $recv($recv(runner)._announcer())._on_do_($globals.ResultAnnouncement,(function(ann){
  829. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  830. return $core.withContext(function($ctx2) {
  831. //>>excludeEnd("ctx");
  832. $2=$recv($recv(ann)._result()).__eq_eq(result);
  833. if($core.assert($2)){
  834. $3=$recv($recv(result)._runs()).__eq($recv(result)._total());
  835. return $recv($3)._ifTrue_(assertBlock);
  836. }
  837. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  838. }, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1,3)});
  839. //>>excludeEnd("ctx");
  840. }));
  841. $recv(runner)._run();
  842. return self;
  843. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  844. }, function($ctx1) {$ctx1.fill(self,"testTimeouts",{suite:suite,runner:runner,result:result,assertBlock:assertBlock})});
  845. //>>excludeEnd("ctx");
  846. }; }),
  847. $globals.SUnitAsyncTest);
  848. $core.addMethod(
  849. $core.method({
  850. selector: "testTwoAsyncPassesWithFinishedOnlyOneIsRun",
  851. protocol: "tests",
  852. //>>excludeStart("ide", pragmas.excludeIdeData);
  853. args: [],
  854. 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.",
  855. referencedClasses: [],
  856. //>>excludeEnd("ide");
  857. pragmas: [],
  858. messageSends: ["timeout:", "valueWithTimeout:", "async:", "finished", "+", "assert:equals:"]
  859. }, function ($methodClass){ return function (){
  860. var self=this,$self=this;
  861. var x;
  862. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  863. return $core.withContext(function($ctx1) {
  864. //>>excludeEnd("ctx");
  865. var $1;
  866. $self.flag="bad";
  867. $self._timeout_((10));
  868. x=(0);
  869. $1=$self._async_((function(){
  870. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  871. return $core.withContext(function($ctx2) {
  872. //>>excludeEnd("ctx");
  873. $self._finished();
  874. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  875. $ctx2.sendIdx["finished"]=1;
  876. //>>excludeEnd("ctx");
  877. $self.flag="ok";
  878. x=$recv(x).__plus((1));
  879. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  880. $ctx2.sendIdx["+"]=1;
  881. //>>excludeEnd("ctx");
  882. return $self._assert_equals_(x,(1));
  883. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  884. $ctx2.sendIdx["assert:equals:"]=1;
  885. //>>excludeEnd("ctx");
  886. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  887. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  888. //>>excludeEnd("ctx");
  889. }));
  890. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  891. $ctx1.sendIdx["async:"]=1;
  892. //>>excludeEnd("ctx");
  893. $self.flag=$recv($1)._valueWithTimeout_((0));
  894. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  895. $ctx1.sendIdx["valueWithTimeout:"]=1;
  896. //>>excludeEnd("ctx");
  897. $self.flag=$recv($self._async_((function(){
  898. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  899. return $core.withContext(function($ctx2) {
  900. //>>excludeEnd("ctx");
  901. $self._finished();
  902. $self.flag="ok";
  903. x=$recv(x).__plus((1));
  904. return $self._assert_equals_(x,(1));
  905. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  906. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  907. //>>excludeEnd("ctx");
  908. })))._valueWithTimeout_((0));
  909. return self;
  910. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  911. }, function($ctx1) {$ctx1.fill(self,"testTwoAsyncPassesWithFinishedOnlyOneIsRun",{x:x})});
  912. //>>excludeEnd("ctx");
  913. }; }),
  914. $globals.SUnitAsyncTest);
  915. });