SUnit-Tests.js 34 KB

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