SUnit-Tests.js 34 KB

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