SUnit-Tests.js 35 KB

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