SUnit-Tests.js 66 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758
  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: "fakeNonLifoReturn",
  441. protocol: "helpers",
  442. //>>excludeStart("ide", pragmas.excludeIdeData);
  443. args: [],
  444. source: "fakeNonLifoReturn\x0a\x09flag := 'bad'.\x0a\x09self timeout: 30.\x0a\x09flag := (self async: [ flag := 'ok'. ^ 'non-lifo' ]) valueWithTimeout: 20",
  445. referencedClasses: [],
  446. //>>excludeEnd("ide");
  447. pragmas: [],
  448. messageSends: ["timeout:", "valueWithTimeout:", "async:"]
  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. var $early={};
  455. try {
  456. $self.flag="bad";
  457. $self._timeout_((30));
  458. $self.flag=$recv($self._async_((function(){
  459. $self.flag="ok";
  460. throw $early=["non-lifo"];
  461. })))._valueWithTimeout_((20));
  462. return self;
  463. }
  464. catch(e) {if(e===$early)return e[0]; throw e}
  465. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  466. }, function($ctx1) {$ctx1.fill(self,"fakeNonLifoReturn",{})});
  467. //>>excludeEnd("ctx");
  468. }; }),
  469. $globals.SUnitAsyncTest);
  470. $core.addMethod(
  471. $core.method({
  472. selector: "fakeTimeout",
  473. protocol: "helpers",
  474. //>>excludeStart("ide", pragmas.excludeIdeData);
  475. args: [],
  476. source: "fakeTimeout\x0a\x09self timeout: 10.\x0a\x09(self async: [ self finished ]) valueWithTimeout: 20",
  477. referencedClasses: [],
  478. //>>excludeEnd("ide");
  479. pragmas: [],
  480. messageSends: ["timeout:", "valueWithTimeout:", "async:", "finished"]
  481. }, function ($methodClass){ return function (){
  482. var self=this,$self=this;
  483. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  484. return $core.withContext(function($ctx1) {
  485. //>>excludeEnd("ctx");
  486. $self._timeout_((10));
  487. $recv($self._async_((function(){
  488. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  489. return $core.withContext(function($ctx2) {
  490. //>>excludeEnd("ctx");
  491. return $self._finished();
  492. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  493. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  494. //>>excludeEnd("ctx");
  495. })))._valueWithTimeout_((20));
  496. return self;
  497. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  498. }, function($ctx1) {$ctx1.fill(self,"fakeTimeout",{})});
  499. //>>excludeEnd("ctx");
  500. }; }),
  501. $globals.SUnitAsyncTest);
  502. $core.addMethod(
  503. $core.method({
  504. selector: "selectorSetOf:",
  505. protocol: "private",
  506. //>>excludeStart("ide", pragmas.excludeIdeData);
  507. args: ["aCollection"],
  508. source: "selectorSetOf: aCollection\x0a\x09^ (aCollection collect: [ :each | each selector ]) asSet",
  509. referencedClasses: [],
  510. //>>excludeEnd("ide");
  511. pragmas: [],
  512. messageSends: ["asSet", "collect:", "selector"]
  513. }, function ($methodClass){ return function (aCollection){
  514. var self=this,$self=this;
  515. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  516. return $core.withContext(function($ctx1) {
  517. //>>excludeEnd("ctx");
  518. return $recv($recv(aCollection)._collect_((function(each){
  519. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  520. return $core.withContext(function($ctx2) {
  521. //>>excludeEnd("ctx");
  522. return $recv(each)._selector();
  523. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  524. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  525. //>>excludeEnd("ctx");
  526. })))._asSet();
  527. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  528. }, function($ctx1) {$ctx1.fill(self,"selectorSetOf:",{aCollection:aCollection})});
  529. //>>excludeEnd("ctx");
  530. }; }),
  531. $globals.SUnitAsyncTest);
  532. $core.addMethod(
  533. $core.method({
  534. selector: "setUp",
  535. protocol: "running",
  536. //>>excludeStart("ide", pragmas.excludeIdeData);
  537. args: [],
  538. source: "setUp\x0a\x09flag := 'ok'",
  539. referencedClasses: [],
  540. //>>excludeEnd("ide");
  541. pragmas: [],
  542. messageSends: []
  543. }, function ($methodClass){ return function (){
  544. var self=this,$self=this;
  545. $self.flag="ok";
  546. return self;
  547. }; }),
  548. $globals.SUnitAsyncTest);
  549. $core.addMethod(
  550. $core.method({
  551. selector: "tearDown",
  552. protocol: "running",
  553. //>>excludeStart("ide", pragmas.excludeIdeData);
  554. args: [],
  555. source: "tearDown\x0a\x09self assert: 'ok' equals: flag",
  556. referencedClasses: [],
  557. //>>excludeEnd("ide");
  558. pragmas: [],
  559. messageSends: ["assert:equals:"]
  560. }, function ($methodClass){ return function (){
  561. var self=this,$self=this;
  562. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  563. return $core.withContext(function($ctx1) {
  564. //>>excludeEnd("ctx");
  565. $self._assert_equals_("ok",$self.flag);
  566. return self;
  567. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  568. }, function($ctx1) {$ctx1.fill(self,"tearDown",{})});
  569. //>>excludeEnd("ctx");
  570. }; }),
  571. $globals.SUnitAsyncTest);
  572. $core.addMethod(
  573. $core.method({
  574. selector: "testAsyncErrorsAndFailures",
  575. protocol: "tests",
  576. //>>excludeStart("ide", pragmas.excludeIdeData);
  577. args: [],
  578. 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\x09(ann result == result and: [ result runs = result total ]) ifTrue: assertBlock ].\x0a\x09runner run",
  579. referencedClasses: ["TestSuiteRunner", "ResultAnnouncement"],
  580. //>>excludeEnd("ide");
  581. pragmas: [],
  582. messageSends: ["collect:", "selector:", "class", "on:", "timeout:", "result", "async:", "assert:equals:", "selectorSetOf:", "errors", "asSet", "failures", "finished", "on:do:", "announcer", "ifTrue:", "and:", "==", "=", "runs", "total", "run"]
  583. }, function ($methodClass){ return function (){
  584. var self=this,$self=this;
  585. var suite,runner,result,assertBlock;
  586. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  587. return $core.withContext(function($ctx1) {
  588. //>>excludeEnd("ctx");
  589. var $1;
  590. suite=["fakeError", "fakeErrorFailingInTearDown", "fakeFailure", "testPass"]._collect_((function(each){
  591. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  592. return $core.withContext(function($ctx2) {
  593. //>>excludeEnd("ctx");
  594. return $recv($self._class())._selector_(each);
  595. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  596. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  597. //>>excludeEnd("ctx");
  598. }));
  599. runner=$recv($globals.TestSuiteRunner)._on_(suite);
  600. $self._timeout_((200));
  601. result=[$recv(runner)._result()
  602. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  603. ,$ctx1.sendIdx["result"]=1
  604. //>>excludeEnd("ctx");
  605. ][0];
  606. assertBlock=$self._async_((function(){
  607. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  608. return $core.withContext(function($ctx2) {
  609. //>>excludeEnd("ctx");
  610. [$self._assert_equals_([$self._selectorSetOf_($recv(result)._errors())
  611. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  612. ,$ctx2.sendIdx["selectorSetOf:"]=1
  613. //>>excludeEnd("ctx");
  614. ][0],[["fakeError"]._asSet()
  615. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  616. ,$ctx2.sendIdx["asSet"]=1
  617. //>>excludeEnd("ctx");
  618. ][0])
  619. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  620. ,$ctx2.sendIdx["assert:equals:"]=1
  621. //>>excludeEnd("ctx");
  622. ][0];
  623. $self._assert_equals_($self._selectorSetOf_($recv(result)._failures()),["fakeErrorFailingInTearDown", "fakeFailure"]._asSet());
  624. return $self._finished();
  625. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  626. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  627. //>>excludeEnd("ctx");
  628. }));
  629. $recv($recv(runner)._announcer())._on_do_($globals.ResultAnnouncement,(function(ann){
  630. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  631. return $core.withContext(function($ctx2) {
  632. //>>excludeEnd("ctx");
  633. if($core.assert($recv($recv(ann)._result()).__eq_eq(result))){
  634. $1=$recv($recv(result)._runs()).__eq($recv(result)._total());
  635. } else {
  636. $1=false;
  637. }
  638. return $recv($1)._ifTrue_(assertBlock);
  639. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  640. }, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1,3)});
  641. //>>excludeEnd("ctx");
  642. }));
  643. $recv(runner)._run();
  644. return self;
  645. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  646. }, function($ctx1) {$ctx1.fill(self,"testAsyncErrorsAndFailures",{suite:suite,runner:runner,result:result,assertBlock:assertBlock})});
  647. //>>excludeEnd("ctx");
  648. }; }),
  649. $globals.SUnitAsyncTest);
  650. $core.addMethod(
  651. $core.method({
  652. selector: "testAsyncNeedsTimeout",
  653. protocol: "tests",
  654. //>>excludeStart("ide", pragmas.excludeIdeData);
  655. args: [],
  656. source: "testAsyncNeedsTimeout\x0a\x09self should: [ self async: [ ] ] raise: Error.\x0a\x09self timeout: 0.\x0a\x09self shouldnt: [ self async: [ ] ] raise: Error.\x0a\x09self finished",
  657. referencedClasses: ["Error"],
  658. //>>excludeEnd("ide");
  659. pragmas: [],
  660. messageSends: ["should:raise:", "async:", "timeout:", "shouldnt:raise:", "finished"]
  661. }, function ($methodClass){ return function (){
  662. var self=this,$self=this;
  663. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  664. return $core.withContext(function($ctx1) {
  665. //>>excludeEnd("ctx");
  666. $self._should_raise_((function(){
  667. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  668. return $core.withContext(function($ctx2) {
  669. //>>excludeEnd("ctx");
  670. return [$self._async_((function(){
  671. }))
  672. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  673. ,$ctx2.sendIdx["async:"]=1
  674. //>>excludeEnd("ctx");
  675. ][0];
  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._async_((function(){
  686. }));
  687. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  688. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  689. //>>excludeEnd("ctx");
  690. }),$globals.Error);
  691. $self._finished();
  692. return self;
  693. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  694. }, function($ctx1) {$ctx1.fill(self,"testAsyncNeedsTimeout",{})});
  695. //>>excludeEnd("ctx");
  696. }; }),
  697. $globals.SUnitAsyncTest);
  698. $core.addMethod(
  699. $core.method({
  700. selector: "testFinishedNeedsTimeout",
  701. protocol: "tests",
  702. //>>excludeStart("ide", pragmas.excludeIdeData);
  703. args: [],
  704. source: "testFinishedNeedsTimeout\x0a\x09self should: [ self finished ] raise: Error.\x0a\x09self timeout: 0.\x0a\x09self shouldnt: [ self finished ] raise: Error.",
  705. referencedClasses: ["Error"],
  706. //>>excludeEnd("ide");
  707. pragmas: [],
  708. messageSends: ["should:raise:", "finished", "timeout:", "shouldnt:raise:"]
  709. }, function ($methodClass){ return function (){
  710. var self=this,$self=this;
  711. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  712. return $core.withContext(function($ctx1) {
  713. //>>excludeEnd("ctx");
  714. $self._should_raise_((function(){
  715. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  716. return $core.withContext(function($ctx2) {
  717. //>>excludeEnd("ctx");
  718. return [$self._finished()
  719. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  720. ,$ctx2.sendIdx["finished"]=1
  721. //>>excludeEnd("ctx");
  722. ][0];
  723. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  724. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  725. //>>excludeEnd("ctx");
  726. }),$globals.Error);
  727. $self._timeout_((0));
  728. $self._shouldnt_raise_((function(){
  729. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  730. return $core.withContext(function($ctx2) {
  731. //>>excludeEnd("ctx");
  732. return $self._finished();
  733. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  734. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  735. //>>excludeEnd("ctx");
  736. }),$globals.Error);
  737. return self;
  738. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  739. }, function($ctx1) {$ctx1.fill(self,"testFinishedNeedsTimeout",{})});
  740. //>>excludeEnd("ctx");
  741. }; }),
  742. $globals.SUnitAsyncTest);
  743. $core.addMethod(
  744. $core.method({
  745. selector: "testIsAsyncReturnsCorrectValues",
  746. protocol: "tests",
  747. //>>excludeStart("ide", pragmas.excludeIdeData);
  748. args: [],
  749. source: "testIsAsyncReturnsCorrectValues\x0a\x09self deny: self isAsync.\x0a\x09self timeout: 0.\x0a\x09self assert: self isAsync.\x0a\x09self finished.\x0a\x09self deny: self isAsync",
  750. referencedClasses: [],
  751. //>>excludeEnd("ide");
  752. pragmas: [],
  753. messageSends: ["deny:", "isAsync", "timeout:", "assert:", "finished"]
  754. }, function ($methodClass){ return function (){
  755. var self=this,$self=this;
  756. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  757. return $core.withContext(function($ctx1) {
  758. //>>excludeEnd("ctx");
  759. [$self._deny_([$self._isAsync()
  760. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  761. ,$ctx1.sendIdx["isAsync"]=1
  762. //>>excludeEnd("ctx");
  763. ][0])
  764. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  765. ,$ctx1.sendIdx["deny:"]=1
  766. //>>excludeEnd("ctx");
  767. ][0];
  768. $self._timeout_((0));
  769. $self._assert_([$self._isAsync()
  770. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  771. ,$ctx1.sendIdx["isAsync"]=2
  772. //>>excludeEnd("ctx");
  773. ][0]);
  774. $self._finished();
  775. $self._deny_($self._isAsync());
  776. return self;
  777. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  778. }, function($ctx1) {$ctx1.fill(self,"testIsAsyncReturnsCorrectValues",{})});
  779. //>>excludeEnd("ctx");
  780. }; }),
  781. $globals.SUnitAsyncTest);
  782. $core.addMethod(
  783. $core.method({
  784. selector: "testNonLifo",
  785. protocol: "tests",
  786. //>>excludeStart("ide", pragmas.excludeIdeData);
  787. args: [],
  788. source: "testNonLifo\x0a\x09| suite runner result assertBlock |\x0a\x09suite := #(fakeNonLifoReturn 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: #(fakeNonLifoReturn) asSet.\x0a\x09\x09self assert: (self selectorSetOf: result failures) equals: Set new.\x0a\x09\x09\x22TODO check that error is indeed a correct NonLifoReturn\x22\x0a\x09\x09self finished\x0a\x09].\x0a\x09runner announcer on: ResultAnnouncement do: [ :ann |\x0a\x09\x09(ann result == result and: [ 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", "asSet", "failures", "new", "finished", "on:do:", "announcer", "ifTrue:", "and:", "==", "=", "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. var $1;
  800. suite=["fakeNonLifoReturn", "testPass"]._collect_((function(each){
  801. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  802. return $core.withContext(function($ctx2) {
  803. //>>excludeEnd("ctx");
  804. return $recv($self._class())._selector_(each);
  805. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  806. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  807. //>>excludeEnd("ctx");
  808. }));
  809. runner=$recv($globals.TestSuiteRunner)._on_(suite);
  810. $self._timeout_((200));
  811. result=[$recv(runner)._result()
  812. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  813. ,$ctx1.sendIdx["result"]=1
  814. //>>excludeEnd("ctx");
  815. ][0];
  816. assertBlock=$self._async_((function(){
  817. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  818. return $core.withContext(function($ctx2) {
  819. //>>excludeEnd("ctx");
  820. [$self._assert_equals_([$self._selectorSetOf_($recv(result)._errors())
  821. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  822. ,$ctx2.sendIdx["selectorSetOf:"]=1
  823. //>>excludeEnd("ctx");
  824. ][0],["fakeNonLifoReturn"]._asSet())
  825. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  826. ,$ctx2.sendIdx["assert:equals:"]=1
  827. //>>excludeEnd("ctx");
  828. ][0];
  829. $self._assert_equals_($self._selectorSetOf_($recv(result)._failures()),$recv($globals.Set)._new());
  830. return $self._finished();
  831. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  832. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  833. //>>excludeEnd("ctx");
  834. }));
  835. $recv($recv(runner)._announcer())._on_do_($globals.ResultAnnouncement,(function(ann){
  836. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  837. return $core.withContext(function($ctx2) {
  838. //>>excludeEnd("ctx");
  839. if($core.assert($recv($recv(ann)._result()).__eq_eq(result))){
  840. $1=$recv($recv(result)._runs()).__eq($recv(result)._total());
  841. } else {
  842. $1=false;
  843. }
  844. return $recv($1)._ifTrue_(assertBlock);
  845. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  846. }, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1,3)});
  847. //>>excludeEnd("ctx");
  848. }));
  849. $recv(runner)._run();
  850. return self;
  851. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  852. }, function($ctx1) {$ctx1.fill(self,"testNonLifo",{suite:suite,runner:runner,result:result,assertBlock:assertBlock})});
  853. //>>excludeEnd("ctx");
  854. }; }),
  855. $globals.SUnitAsyncTest);
  856. $core.addMethod(
  857. $core.method({
  858. selector: "testPass",
  859. protocol: "tests",
  860. //>>excludeStart("ide", pragmas.excludeIdeData);
  861. args: [],
  862. source: "testPass\x0a\x09flag := 'bad'.\x0a\x09self timeout: 10.\x0a\x09flag := (self async: [ self assert: true. self finished. flag := 'ok' ]) valueWithTimeout: 5",
  863. referencedClasses: [],
  864. //>>excludeEnd("ide");
  865. pragmas: [],
  866. messageSends: ["timeout:", "valueWithTimeout:", "async:", "assert:", "finished"]
  867. }, function ($methodClass){ return function (){
  868. var self=this,$self=this;
  869. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  870. return $core.withContext(function($ctx1) {
  871. //>>excludeEnd("ctx");
  872. $self.flag="bad";
  873. $self._timeout_((10));
  874. $self.flag=$recv($self._async_((function(){
  875. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  876. return $core.withContext(function($ctx2) {
  877. //>>excludeEnd("ctx");
  878. $self._assert_(true);
  879. $self._finished();
  880. $self.flag="ok";
  881. return $self.flag;
  882. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  883. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  884. //>>excludeEnd("ctx");
  885. })))._valueWithTimeout_((5));
  886. return self;
  887. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  888. }, function($ctx1) {$ctx1.fill(self,"testPass",{})});
  889. //>>excludeEnd("ctx");
  890. }; }),
  891. $globals.SUnitAsyncTest);
  892. $core.addMethod(
  893. $core.method({
  894. selector: "testTimeouts",
  895. protocol: "tests",
  896. //>>excludeStart("ide", pragmas.excludeIdeData);
  897. args: [],
  898. 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\x09(ann result == result and: [ result runs = result total ]) ifTrue: assertBlock ].\x0a\x09runner run",
  899. referencedClasses: ["TestSuiteRunner", "Set", "ResultAnnouncement"],
  900. //>>excludeEnd("ide");
  901. pragmas: [],
  902. messageSends: ["collect:", "selector:", "class", "on:", "timeout:", "result", "async:", "assert:equals:", "selectorSetOf:", "errors", "new", "failures", "asSet", "finished", "on:do:", "announcer", "ifTrue:", "and:", "==", "=", "runs", "total", "run"]
  903. }, function ($methodClass){ return function (){
  904. var self=this,$self=this;
  905. var suite,runner,result,assertBlock;
  906. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  907. return $core.withContext(function($ctx1) {
  908. //>>excludeEnd("ctx");
  909. var $1;
  910. suite=["fakeTimeout", "fakeMultipleTimeoutFailing", "fakeMultipleTimeoutPassing", "testPass"]._collect_((function(each){
  911. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  912. return $core.withContext(function($ctx2) {
  913. //>>excludeEnd("ctx");
  914. return $recv($self._class())._selector_(each);
  915. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  916. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  917. //>>excludeEnd("ctx");
  918. }));
  919. runner=$recv($globals.TestSuiteRunner)._on_(suite);
  920. $self._timeout_((200));
  921. result=[$recv(runner)._result()
  922. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  923. ,$ctx1.sendIdx["result"]=1
  924. //>>excludeEnd("ctx");
  925. ][0];
  926. assertBlock=$self._async_((function(){
  927. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  928. return $core.withContext(function($ctx2) {
  929. //>>excludeEnd("ctx");
  930. [$self._assert_equals_([$self._selectorSetOf_($recv(result)._errors())
  931. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  932. ,$ctx2.sendIdx["selectorSetOf:"]=1
  933. //>>excludeEnd("ctx");
  934. ][0],$recv($globals.Set)._new())
  935. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  936. ,$ctx2.sendIdx["assert:equals:"]=1
  937. //>>excludeEnd("ctx");
  938. ][0];
  939. $self._assert_equals_($self._selectorSetOf_($recv(result)._failures()),["fakeMultipleTimeoutFailing", "fakeTimeout"]._asSet());
  940. return $self._finished();
  941. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  942. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  943. //>>excludeEnd("ctx");
  944. }));
  945. $recv($recv(runner)._announcer())._on_do_($globals.ResultAnnouncement,(function(ann){
  946. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  947. return $core.withContext(function($ctx2) {
  948. //>>excludeEnd("ctx");
  949. if($core.assert($recv($recv(ann)._result()).__eq_eq(result))){
  950. $1=$recv($recv(result)._runs()).__eq($recv(result)._total());
  951. } else {
  952. $1=false;
  953. }
  954. return $recv($1)._ifTrue_(assertBlock);
  955. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  956. }, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1,3)});
  957. //>>excludeEnd("ctx");
  958. }));
  959. $recv(runner)._run();
  960. return self;
  961. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  962. }, function($ctx1) {$ctx1.fill(self,"testTimeouts",{suite:suite,runner:runner,result:result,assertBlock:assertBlock})});
  963. //>>excludeEnd("ctx");
  964. }; }),
  965. $globals.SUnitAsyncTest);
  966. $core.addMethod(
  967. $core.method({
  968. selector: "testTwoAsyncPassesWithFinishedOnlyOneIsRun",
  969. protocol: "tests",
  970. //>>excludeStart("ide", pragmas.excludeIdeData);
  971. args: [],
  972. 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.",
  973. referencedClasses: [],
  974. //>>excludeEnd("ide");
  975. pragmas: [],
  976. messageSends: ["timeout:", "valueWithTimeout:", "async:", "finished", "+", "assert:equals:"]
  977. }, function ($methodClass){ return function (){
  978. var self=this,$self=this;
  979. var x;
  980. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  981. return $core.withContext(function($ctx1) {
  982. //>>excludeEnd("ctx");
  983. $self.flag="bad";
  984. $self._timeout_((10));
  985. x=(0);
  986. $self.flag=[$recv([$self._async_((function(){
  987. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  988. return $core.withContext(function($ctx2) {
  989. //>>excludeEnd("ctx");
  990. [$self._finished()
  991. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  992. ,$ctx2.sendIdx["finished"]=1
  993. //>>excludeEnd("ctx");
  994. ][0];
  995. $self.flag="ok";
  996. x=[$recv(x).__plus((1))
  997. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  998. ,$ctx2.sendIdx["+"]=1
  999. //>>excludeEnd("ctx");
  1000. ][0];
  1001. return [$self._assert_equals_(x,(1))
  1002. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1003. ,$ctx2.sendIdx["assert:equals:"]=1
  1004. //>>excludeEnd("ctx");
  1005. ][0];
  1006. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1007. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  1008. //>>excludeEnd("ctx");
  1009. }))
  1010. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1011. ,$ctx1.sendIdx["async:"]=1
  1012. //>>excludeEnd("ctx");
  1013. ][0])._valueWithTimeout_((0))
  1014. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1015. ,$ctx1.sendIdx["valueWithTimeout:"]=1
  1016. //>>excludeEnd("ctx");
  1017. ][0];
  1018. $self.flag=$recv($self._async_((function(){
  1019. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1020. return $core.withContext(function($ctx2) {
  1021. //>>excludeEnd("ctx");
  1022. $self._finished();
  1023. $self.flag="ok";
  1024. x=$recv(x).__plus((1));
  1025. return $self._assert_equals_(x,(1));
  1026. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1027. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  1028. //>>excludeEnd("ctx");
  1029. })))._valueWithTimeout_((0));
  1030. return self;
  1031. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1032. }, function($ctx1) {$ctx1.fill(self,"testTwoAsyncPassesWithFinishedOnlyOneIsRun",{x:x})});
  1033. //>>excludeEnd("ctx");
  1034. }; }),
  1035. $globals.SUnitAsyncTest);
  1036. $core.addClass("SUnitPromiseTest", $globals.TestCase, "SUnit-Tests");
  1037. $core.setSlots($globals.SUnitPromiseTest, ["flag"]);
  1038. $core.addMethod(
  1039. $core.method({
  1040. selector: "fakeError",
  1041. protocol: "helpers",
  1042. //>>excludeStart("ide", pragmas.excludeIdeData);
  1043. args: [],
  1044. source: "fakeError\x0a\x09flag := 'bad'.\x0a\x09self timeout: 30.\x0a\x09flag := Promise delayMilliseconds: 20.\x0a\x09^ flag then: [ flag := 'ok'. self error: 'Intentional' ]",
  1045. referencedClasses: ["Promise"],
  1046. //>>excludeEnd("ide");
  1047. pragmas: [],
  1048. messageSends: ["timeout:", "delayMilliseconds:", "then:", "error:"]
  1049. }, function ($methodClass){ return function (){
  1050. var self=this,$self=this;
  1051. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1052. return $core.withContext(function($ctx1) {
  1053. //>>excludeEnd("ctx");
  1054. $self.flag="bad";
  1055. $self._timeout_((30));
  1056. $self.flag=$recv($globals.Promise)._delayMilliseconds_((20));
  1057. return $recv($self.flag)._then_((function(){
  1058. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1059. return $core.withContext(function($ctx2) {
  1060. //>>excludeEnd("ctx");
  1061. $self.flag="ok";
  1062. return $self._error_("Intentional");
  1063. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1064. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  1065. //>>excludeEnd("ctx");
  1066. }));
  1067. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1068. }, function($ctx1) {$ctx1.fill(self,"fakeError",{})});
  1069. //>>excludeEnd("ctx");
  1070. }; }),
  1071. $globals.SUnitPromiseTest);
  1072. $core.addMethod(
  1073. $core.method({
  1074. selector: "fakeErrorFailingInTearDown",
  1075. protocol: "helpers",
  1076. //>>excludeStart("ide", pragmas.excludeIdeData);
  1077. args: [],
  1078. source: "fakeErrorFailingInTearDown\x0a\x09flag := 'bad'.\x0a\x09self timeout: 30.\x0a\x09flag := Promise delayMilliseconds: 20.\x0a\x09^ flag then: [ self error: 'Intentional' ]",
  1079. referencedClasses: ["Promise"],
  1080. //>>excludeEnd("ide");
  1081. pragmas: [],
  1082. messageSends: ["timeout:", "delayMilliseconds:", "then:", "error:"]
  1083. }, function ($methodClass){ return function (){
  1084. var self=this,$self=this;
  1085. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1086. return $core.withContext(function($ctx1) {
  1087. //>>excludeEnd("ctx");
  1088. $self.flag="bad";
  1089. $self._timeout_((30));
  1090. $self.flag=$recv($globals.Promise)._delayMilliseconds_((20));
  1091. return $recv($self.flag)._then_((function(){
  1092. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1093. return $core.withContext(function($ctx2) {
  1094. //>>excludeEnd("ctx");
  1095. return $self._error_("Intentional");
  1096. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1097. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  1098. //>>excludeEnd("ctx");
  1099. }));
  1100. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1101. }, function($ctx1) {$ctx1.fill(self,"fakeErrorFailingInTearDown",{})});
  1102. //>>excludeEnd("ctx");
  1103. }; }),
  1104. $globals.SUnitPromiseTest);
  1105. $core.addMethod(
  1106. $core.method({
  1107. selector: "fakeFailure",
  1108. protocol: "helpers",
  1109. //>>excludeStart("ide", pragmas.excludeIdeData);
  1110. args: [],
  1111. source: "fakeFailure\x0a\x09flag := 'bad'.\x0a\x09self timeout: 30.\x0a\x09flag := Promise delayMilliseconds: 20.\x0a\x09^ flag then: [ flag := 'ok'. self assert: false ]",
  1112. referencedClasses: ["Promise"],
  1113. //>>excludeEnd("ide");
  1114. pragmas: [],
  1115. messageSends: ["timeout:", "delayMilliseconds:", "then:", "assert:"]
  1116. }, function ($methodClass){ return function (){
  1117. var self=this,$self=this;
  1118. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1119. return $core.withContext(function($ctx1) {
  1120. //>>excludeEnd("ctx");
  1121. $self.flag="bad";
  1122. $self._timeout_((30));
  1123. $self.flag=$recv($globals.Promise)._delayMilliseconds_((20));
  1124. return $recv($self.flag)._then_((function(){
  1125. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1126. return $core.withContext(function($ctx2) {
  1127. //>>excludeEnd("ctx");
  1128. $self.flag="ok";
  1129. return $self._assert_(false);
  1130. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1131. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  1132. //>>excludeEnd("ctx");
  1133. }));
  1134. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1135. }, function($ctx1) {$ctx1.fill(self,"fakeFailure",{})});
  1136. //>>excludeEnd("ctx");
  1137. }; }),
  1138. $globals.SUnitPromiseTest);
  1139. $core.addMethod(
  1140. $core.method({
  1141. selector: "fakeMultipleTimeoutFailing",
  1142. protocol: "helpers",
  1143. //>>excludeStart("ide", pragmas.excludeIdeData);
  1144. args: [],
  1145. source: "fakeMultipleTimeoutFailing\x0a\x09self timeout: 100.\x0a\x09^ (Promise delayMilliseconds: 20) then: [ self timeout: 20. Promise delayMilliseconds: 30 ]",
  1146. referencedClasses: ["Promise"],
  1147. //>>excludeEnd("ide");
  1148. pragmas: [],
  1149. messageSends: ["timeout:", "then:", "delayMilliseconds:"]
  1150. }, function ($methodClass){ return function (){
  1151. var self=this,$self=this;
  1152. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1153. return $core.withContext(function($ctx1) {
  1154. //>>excludeEnd("ctx");
  1155. [$self._timeout_((100))
  1156. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1157. ,$ctx1.sendIdx["timeout:"]=1
  1158. //>>excludeEnd("ctx");
  1159. ][0];
  1160. return $recv([$recv($globals.Promise)._delayMilliseconds_((20))
  1161. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1162. ,$ctx1.sendIdx["delayMilliseconds:"]=1
  1163. //>>excludeEnd("ctx");
  1164. ][0])._then_((function(){
  1165. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1166. return $core.withContext(function($ctx2) {
  1167. //>>excludeEnd("ctx");
  1168. $self._timeout_((20));
  1169. return $recv($globals.Promise)._delayMilliseconds_((30));
  1170. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1171. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  1172. //>>excludeEnd("ctx");
  1173. }));
  1174. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1175. }, function($ctx1) {$ctx1.fill(self,"fakeMultipleTimeoutFailing",{})});
  1176. //>>excludeEnd("ctx");
  1177. }; }),
  1178. $globals.SUnitPromiseTest);
  1179. $core.addMethod(
  1180. $core.method({
  1181. selector: "fakeMultipleTimeoutPassing",
  1182. protocol: "helpers",
  1183. //>>excludeStart("ide", pragmas.excludeIdeData);
  1184. args: [],
  1185. source: "fakeMultipleTimeoutPassing\x0a\x09self timeout: 20.\x0a\x09^ (Promise delayMilliseconds: 10) then: [ self timeout: 40. Promise delayMilliseconds: 20 ]",
  1186. referencedClasses: ["Promise"],
  1187. //>>excludeEnd("ide");
  1188. pragmas: [],
  1189. messageSends: ["timeout:", "then:", "delayMilliseconds:"]
  1190. }, function ($methodClass){ return function (){
  1191. var self=this,$self=this;
  1192. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1193. return $core.withContext(function($ctx1) {
  1194. //>>excludeEnd("ctx");
  1195. [$self._timeout_((20))
  1196. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1197. ,$ctx1.sendIdx["timeout:"]=1
  1198. //>>excludeEnd("ctx");
  1199. ][0];
  1200. return $recv([$recv($globals.Promise)._delayMilliseconds_((10))
  1201. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1202. ,$ctx1.sendIdx["delayMilliseconds:"]=1
  1203. //>>excludeEnd("ctx");
  1204. ][0])._then_((function(){
  1205. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1206. return $core.withContext(function($ctx2) {
  1207. //>>excludeEnd("ctx");
  1208. $self._timeout_((40));
  1209. return $recv($globals.Promise)._delayMilliseconds_((20));
  1210. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1211. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  1212. //>>excludeEnd("ctx");
  1213. }));
  1214. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1215. }, function($ctx1) {$ctx1.fill(self,"fakeMultipleTimeoutPassing",{})});
  1216. //>>excludeEnd("ctx");
  1217. }; }),
  1218. $globals.SUnitPromiseTest);
  1219. $core.addMethod(
  1220. $core.method({
  1221. selector: "fakeNonLifoReturn",
  1222. protocol: "helpers",
  1223. //>>excludeStart("ide", pragmas.excludeIdeData);
  1224. args: [],
  1225. source: "fakeNonLifoReturn\x0a\x09flag := 'bad'.\x0a\x09self timeout: 30.\x0a\x09flag := Promise delayMilliseconds: 20.\x0a\x09^ flag then: [ flag := 'ok'. ^ 'non-lifo' ]",
  1226. referencedClasses: ["Promise"],
  1227. //>>excludeEnd("ide");
  1228. pragmas: [],
  1229. messageSends: ["timeout:", "delayMilliseconds:", "then:"]
  1230. }, function ($methodClass){ return function (){
  1231. var self=this,$self=this;
  1232. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1233. return $core.withContext(function($ctx1) {
  1234. //>>excludeEnd("ctx");
  1235. var $early={};
  1236. try {
  1237. $self.flag="bad";
  1238. $self._timeout_((30));
  1239. $self.flag=$recv($globals.Promise)._delayMilliseconds_((20));
  1240. return $recv($self.flag)._then_((function(){
  1241. $self.flag="ok";
  1242. throw $early=["non-lifo"];
  1243. }));
  1244. }
  1245. catch(e) {if(e===$early)return e[0]; throw e}
  1246. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1247. }, function($ctx1) {$ctx1.fill(self,"fakeNonLifoReturn",{})});
  1248. //>>excludeEnd("ctx");
  1249. }; }),
  1250. $globals.SUnitPromiseTest);
  1251. $core.addMethod(
  1252. $core.method({
  1253. selector: "fakePromiseWithoutTimeout",
  1254. protocol: "helpers",
  1255. //>>excludeStart("ide", pragmas.excludeIdeData);
  1256. args: [],
  1257. source: "fakePromiseWithoutTimeout\x0a\x09^ Promise delayMilliseconds: 10",
  1258. referencedClasses: ["Promise"],
  1259. //>>excludeEnd("ide");
  1260. pragmas: [],
  1261. messageSends: ["delayMilliseconds:"]
  1262. }, function ($methodClass){ return function (){
  1263. var self=this,$self=this;
  1264. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1265. return $core.withContext(function($ctx1) {
  1266. //>>excludeEnd("ctx");
  1267. return $recv($globals.Promise)._delayMilliseconds_((10));
  1268. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1269. }, function($ctx1) {$ctx1.fill(self,"fakePromiseWithoutTimeout",{})});
  1270. //>>excludeEnd("ctx");
  1271. }; }),
  1272. $globals.SUnitPromiseTest);
  1273. $core.addMethod(
  1274. $core.method({
  1275. selector: "fakeTimeout",
  1276. protocol: "helpers",
  1277. //>>excludeStart("ide", pragmas.excludeIdeData);
  1278. args: [],
  1279. source: "fakeTimeout\x0a\x09self timeout: 10.\x0a\x09^ Promise delayMilliseconds: 20",
  1280. referencedClasses: ["Promise"],
  1281. //>>excludeEnd("ide");
  1282. pragmas: [],
  1283. messageSends: ["timeout:", "delayMilliseconds:"]
  1284. }, function ($methodClass){ return function (){
  1285. var self=this,$self=this;
  1286. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1287. return $core.withContext(function($ctx1) {
  1288. //>>excludeEnd("ctx");
  1289. $self._timeout_((10));
  1290. return $recv($globals.Promise)._delayMilliseconds_((20));
  1291. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1292. }, function($ctx1) {$ctx1.fill(self,"fakeTimeout",{})});
  1293. //>>excludeEnd("ctx");
  1294. }; }),
  1295. $globals.SUnitPromiseTest);
  1296. $core.addMethod(
  1297. $core.method({
  1298. selector: "fakeTimeoutSendOnly",
  1299. protocol: "helpers",
  1300. //>>excludeStart("ide", pragmas.excludeIdeData);
  1301. args: [],
  1302. source: "fakeTimeoutSendOnly\x0a\x09self timeout: 10",
  1303. referencedClasses: [],
  1304. //>>excludeEnd("ide");
  1305. pragmas: [],
  1306. messageSends: ["timeout:"]
  1307. }, function ($methodClass){ return function (){
  1308. var self=this,$self=this;
  1309. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1310. return $core.withContext(function($ctx1) {
  1311. //>>excludeEnd("ctx");
  1312. $self._timeout_((10));
  1313. return self;
  1314. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1315. }, function($ctx1) {$ctx1.fill(self,"fakeTimeoutSendOnly",{})});
  1316. //>>excludeEnd("ctx");
  1317. }; }),
  1318. $globals.SUnitPromiseTest);
  1319. $core.addMethod(
  1320. $core.method({
  1321. selector: "selectorSetOf:",
  1322. protocol: "private",
  1323. //>>excludeStart("ide", pragmas.excludeIdeData);
  1324. args: ["aCollection"],
  1325. source: "selectorSetOf: aCollection\x0a\x09^ (aCollection collect: [ :each | each selector ]) asSet",
  1326. referencedClasses: [],
  1327. //>>excludeEnd("ide");
  1328. pragmas: [],
  1329. messageSends: ["asSet", "collect:", "selector"]
  1330. }, function ($methodClass){ return function (aCollection){
  1331. var self=this,$self=this;
  1332. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1333. return $core.withContext(function($ctx1) {
  1334. //>>excludeEnd("ctx");
  1335. return $recv($recv(aCollection)._collect_((function(each){
  1336. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1337. return $core.withContext(function($ctx2) {
  1338. //>>excludeEnd("ctx");
  1339. return $recv(each)._selector();
  1340. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1341. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  1342. //>>excludeEnd("ctx");
  1343. })))._asSet();
  1344. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1345. }, function($ctx1) {$ctx1.fill(self,"selectorSetOf:",{aCollection:aCollection})});
  1346. //>>excludeEnd("ctx");
  1347. }; }),
  1348. $globals.SUnitPromiseTest);
  1349. $core.addMethod(
  1350. $core.method({
  1351. selector: "setUp",
  1352. protocol: "running",
  1353. //>>excludeStart("ide", pragmas.excludeIdeData);
  1354. args: [],
  1355. source: "setUp\x0a\x09flag := 'ok'",
  1356. referencedClasses: [],
  1357. //>>excludeEnd("ide");
  1358. pragmas: [],
  1359. messageSends: []
  1360. }, function ($methodClass){ return function (){
  1361. var self=this,$self=this;
  1362. $self.flag="ok";
  1363. return self;
  1364. }; }),
  1365. $globals.SUnitPromiseTest);
  1366. $core.addMethod(
  1367. $core.method({
  1368. selector: "tearDown",
  1369. protocol: "running",
  1370. //>>excludeStart("ide", pragmas.excludeIdeData);
  1371. args: [],
  1372. source: "tearDown\x0a\x09self assert: 'ok' equals: flag",
  1373. referencedClasses: [],
  1374. //>>excludeEnd("ide");
  1375. pragmas: [],
  1376. messageSends: ["assert:equals:"]
  1377. }, function ($methodClass){ return function (){
  1378. var self=this,$self=this;
  1379. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1380. return $core.withContext(function($ctx1) {
  1381. //>>excludeEnd("ctx");
  1382. $self._assert_equals_("ok",$self.flag);
  1383. return self;
  1384. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1385. }, function($ctx1) {$ctx1.fill(self,"tearDown",{})});
  1386. //>>excludeEnd("ctx");
  1387. }; }),
  1388. $globals.SUnitPromiseTest);
  1389. $core.addMethod(
  1390. $core.method({
  1391. selector: "testIsAsyncReturnsCorrectValues",
  1392. protocol: "tests",
  1393. //>>excludeStart("ide", pragmas.excludeIdeData);
  1394. args: [],
  1395. source: "testIsAsyncReturnsCorrectValues\x0a\x09self deny: self isAsync.\x0a\x09self timeout: 0.\x0a\x09self assert: self isAsync.\x0a\x09\x22self finished.\x0a\x09self deny: self isAsync\x22\x0a\x09^ Promise new",
  1396. referencedClasses: ["Promise"],
  1397. //>>excludeEnd("ide");
  1398. pragmas: [],
  1399. messageSends: ["deny:", "isAsync", "timeout:", "assert:", "new"]
  1400. }, function ($methodClass){ return function (){
  1401. var self=this,$self=this;
  1402. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1403. return $core.withContext(function($ctx1) {
  1404. //>>excludeEnd("ctx");
  1405. $self._deny_([$self._isAsync()
  1406. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1407. ,$ctx1.sendIdx["isAsync"]=1
  1408. //>>excludeEnd("ctx");
  1409. ][0]);
  1410. $self._timeout_((0));
  1411. $self._assert_($self._isAsync());
  1412. return $recv($globals.Promise)._new();
  1413. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1414. }, function($ctx1) {$ctx1.fill(self,"testIsAsyncReturnsCorrectValues",{})});
  1415. //>>excludeEnd("ctx");
  1416. }; }),
  1417. $globals.SUnitPromiseTest);
  1418. $core.addMethod(
  1419. $core.method({
  1420. selector: "testNonLifo",
  1421. protocol: "tests",
  1422. //>>excludeStart("ide", pragmas.excludeIdeData);
  1423. args: [],
  1424. source: "testNonLifo\x0a\x09| suite runner result |\x0a\x09suite := #(fakeNonLifoReturn testPass) collect: [ :each | self class selector: each ].\x0a\x09runner := TestSuiteRunner on: suite.\x0a\x09self timeout: 200.\x0a\x09result := runner result.\x0a\x09^ Promise new: [ :model |\x0a\x09\x09runner announcer on: ResultAnnouncement do: [ :ann |\x0a\x09\x09\x09(ann result == result and: [ result runs = result total ]) ifTrue: [ model do: [\x0a\x09\x09\x09\x09self assert: (self selectorSetOf: result errors) equals: #(fakeNonLifoReturn) asSet.\x0a\x09\x09\x09\x09self assert: (self selectorSetOf: result failures) equals: Set new.\x0a\x09\x09\x09\x09\x22TODO check that error is indeed a correct NonLifoReturn\x22\x0a\x09\x09] ] ].\x0a\x09\x09runner run ]",
  1425. referencedClasses: ["TestSuiteRunner", "Promise", "ResultAnnouncement", "Set"],
  1426. //>>excludeEnd("ide");
  1427. pragmas: [],
  1428. messageSends: ["collect:", "selector:", "class", "on:", "timeout:", "result", "new:", "on:do:", "announcer", "ifTrue:", "and:", "==", "=", "runs", "total", "do:", "assert:equals:", "selectorSetOf:", "errors", "asSet", "failures", "new", "run"]
  1429. }, function ($methodClass){ return function (){
  1430. var self=this,$self=this;
  1431. var suite,runner,result;
  1432. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1433. return $core.withContext(function($ctx1) {
  1434. //>>excludeEnd("ctx");
  1435. var $1;
  1436. suite=["fakeNonLifoReturn", "testPass"]._collect_((function(each){
  1437. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1438. return $core.withContext(function($ctx2) {
  1439. //>>excludeEnd("ctx");
  1440. return $recv($self._class())._selector_(each);
  1441. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1442. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  1443. //>>excludeEnd("ctx");
  1444. }));
  1445. runner=$recv($globals.TestSuiteRunner)._on_(suite);
  1446. $self._timeout_((200));
  1447. result=[$recv(runner)._result()
  1448. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1449. ,$ctx1.sendIdx["result"]=1
  1450. //>>excludeEnd("ctx");
  1451. ][0];
  1452. return $recv($globals.Promise)._new_((function(model){
  1453. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1454. return $core.withContext(function($ctx2) {
  1455. //>>excludeEnd("ctx");
  1456. $recv($recv(runner)._announcer())._on_do_($globals.ResultAnnouncement,(function(ann){
  1457. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1458. return $core.withContext(function($ctx3) {
  1459. //>>excludeEnd("ctx");
  1460. if($core.assert($recv($recv(ann)._result()).__eq_eq(result))){
  1461. $1=$recv($recv(result)._runs()).__eq($recv(result)._total());
  1462. } else {
  1463. $1=false;
  1464. }
  1465. if($core.assert($1)){
  1466. return $recv(model)._do_((function(){
  1467. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1468. return $core.withContext(function($ctx4) {
  1469. //>>excludeEnd("ctx");
  1470. [$self._assert_equals_([$self._selectorSetOf_($recv(result)._errors())
  1471. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1472. ,$ctx4.sendIdx["selectorSetOf:"]=1
  1473. //>>excludeEnd("ctx");
  1474. ][0],["fakeNonLifoReturn"]._asSet())
  1475. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1476. ,$ctx4.sendIdx["assert:equals:"]=1
  1477. //>>excludeEnd("ctx");
  1478. ][0];
  1479. return $self._assert_equals_($self._selectorSetOf_($recv(result)._failures()),$recv($globals.Set)._new());
  1480. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1481. }, function($ctx4) {$ctx4.fillBlock({},$ctx3,6)});
  1482. //>>excludeEnd("ctx");
  1483. }));
  1484. }
  1485. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1486. }, function($ctx3) {$ctx3.fillBlock({ann:ann},$ctx2,3)});
  1487. //>>excludeEnd("ctx");
  1488. }));
  1489. return $recv(runner)._run();
  1490. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1491. }, function($ctx2) {$ctx2.fillBlock({model:model},$ctx1,2)});
  1492. //>>excludeEnd("ctx");
  1493. }));
  1494. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1495. }, function($ctx1) {$ctx1.fill(self,"testNonLifo",{suite:suite,runner:runner,result:result})});
  1496. //>>excludeEnd("ctx");
  1497. }; }),
  1498. $globals.SUnitPromiseTest);
  1499. $core.addMethod(
  1500. $core.method({
  1501. selector: "testPass",
  1502. protocol: "tests",
  1503. //>>excludeStart("ide", pragmas.excludeIdeData);
  1504. args: [],
  1505. source: "testPass\x0a\x09flag := 'bad'.\x0a\x09self timeout: 10.\x0a\x09flag := Promise delayMilliseconds: 5.\x0a\x09^ flag then: [ self assert: true. flag := 'ok' ]",
  1506. referencedClasses: ["Promise"],
  1507. //>>excludeEnd("ide");
  1508. pragmas: [],
  1509. messageSends: ["timeout:", "delayMilliseconds:", "then:", "assert:"]
  1510. }, function ($methodClass){ return function (){
  1511. var self=this,$self=this;
  1512. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1513. return $core.withContext(function($ctx1) {
  1514. //>>excludeEnd("ctx");
  1515. $self.flag="bad";
  1516. $self._timeout_((10));
  1517. $self.flag=$recv($globals.Promise)._delayMilliseconds_((5));
  1518. return $recv($self.flag)._then_((function(){
  1519. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1520. return $core.withContext(function($ctx2) {
  1521. //>>excludeEnd("ctx");
  1522. $self._assert_(true);
  1523. $self.flag="ok";
  1524. return $self.flag;
  1525. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1526. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  1527. //>>excludeEnd("ctx");
  1528. }));
  1529. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1530. }, function($ctx1) {$ctx1.fill(self,"testPass",{})});
  1531. //>>excludeEnd("ctx");
  1532. }; }),
  1533. $globals.SUnitPromiseTest);
  1534. $core.addMethod(
  1535. $core.method({
  1536. selector: "testPromiseErrorsAndFailures",
  1537. protocol: "tests",
  1538. //>>excludeStart("ide", pragmas.excludeIdeData);
  1539. args: [],
  1540. source: "testPromiseErrorsAndFailures\x0a\x09| suite runner result |\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\x09^ Promise new: [ :model |\x0a\x09\x09runner announcer on: ResultAnnouncement do: [ :ann |\x0a\x09\x09\x09(ann result == result and: [ result runs = result total ]) ifTrue: [ model do: [\x0a\x09\x09\x09\x09self assert: (self selectorSetOf: result errors) equals: #(fakeError) asSet.\x0a\x09\x09\x09\x09self assert: (self selectorSetOf: result failures) equals: #(fakeErrorFailingInTearDown fakeFailure) asSet ] ] ].\x0a\x09\x09runner run ]",
  1541. referencedClasses: ["TestSuiteRunner", "Promise", "ResultAnnouncement"],
  1542. //>>excludeEnd("ide");
  1543. pragmas: [],
  1544. messageSends: ["collect:", "selector:", "class", "on:", "timeout:", "result", "new:", "on:do:", "announcer", "ifTrue:", "and:", "==", "=", "runs", "total", "do:", "assert:equals:", "selectorSetOf:", "errors", "asSet", "failures", "run"]
  1545. }, function ($methodClass){ return function (){
  1546. var self=this,$self=this;
  1547. var suite,runner,result;
  1548. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1549. return $core.withContext(function($ctx1) {
  1550. //>>excludeEnd("ctx");
  1551. var $1;
  1552. suite=["fakeError", "fakeErrorFailingInTearDown", "fakeFailure", "testPass"]._collect_((function(each){
  1553. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1554. return $core.withContext(function($ctx2) {
  1555. //>>excludeEnd("ctx");
  1556. return $recv($self._class())._selector_(each);
  1557. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1558. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  1559. //>>excludeEnd("ctx");
  1560. }));
  1561. runner=$recv($globals.TestSuiteRunner)._on_(suite);
  1562. $self._timeout_((200));
  1563. result=[$recv(runner)._result()
  1564. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1565. ,$ctx1.sendIdx["result"]=1
  1566. //>>excludeEnd("ctx");
  1567. ][0];
  1568. return $recv($globals.Promise)._new_((function(model){
  1569. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1570. return $core.withContext(function($ctx2) {
  1571. //>>excludeEnd("ctx");
  1572. $recv($recv(runner)._announcer())._on_do_($globals.ResultAnnouncement,(function(ann){
  1573. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1574. return $core.withContext(function($ctx3) {
  1575. //>>excludeEnd("ctx");
  1576. if($core.assert($recv($recv(ann)._result()).__eq_eq(result))){
  1577. $1=$recv($recv(result)._runs()).__eq($recv(result)._total());
  1578. } else {
  1579. $1=false;
  1580. }
  1581. if($core.assert($1)){
  1582. return $recv(model)._do_((function(){
  1583. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1584. return $core.withContext(function($ctx4) {
  1585. //>>excludeEnd("ctx");
  1586. [$self._assert_equals_([$self._selectorSetOf_($recv(result)._errors())
  1587. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1588. ,$ctx4.sendIdx["selectorSetOf:"]=1
  1589. //>>excludeEnd("ctx");
  1590. ][0],[["fakeError"]._asSet()
  1591. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1592. ,$ctx4.sendIdx["asSet"]=1
  1593. //>>excludeEnd("ctx");
  1594. ][0])
  1595. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1596. ,$ctx4.sendIdx["assert:equals:"]=1
  1597. //>>excludeEnd("ctx");
  1598. ][0];
  1599. return $self._assert_equals_($self._selectorSetOf_($recv(result)._failures()),["fakeErrorFailingInTearDown", "fakeFailure"]._asSet());
  1600. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1601. }, function($ctx4) {$ctx4.fillBlock({},$ctx3,6)});
  1602. //>>excludeEnd("ctx");
  1603. }));
  1604. }
  1605. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1606. }, function($ctx3) {$ctx3.fillBlock({ann:ann},$ctx2,3)});
  1607. //>>excludeEnd("ctx");
  1608. }));
  1609. return $recv(runner)._run();
  1610. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1611. }, function($ctx2) {$ctx2.fillBlock({model:model},$ctx1,2)});
  1612. //>>excludeEnd("ctx");
  1613. }));
  1614. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1615. }, function($ctx1) {$ctx1.fill(self,"testPromiseErrorsAndFailures",{suite:suite,runner:runner,result:result})});
  1616. //>>excludeEnd("ctx");
  1617. }; }),
  1618. $globals.SUnitPromiseTest);
  1619. $core.addMethod(
  1620. $core.method({
  1621. selector: "testTimeouts",
  1622. protocol: "tests",
  1623. //>>excludeStart("ide", pragmas.excludeIdeData);
  1624. args: [],
  1625. source: "testTimeouts\x0a\x09| suite runner result |\x0a\x09suite := #(fakeTimeout fakeMultipleTimeoutFailing fakeMultipleTimeoutPassing fakeTimeoutSendOnly fakePromiseWithoutTimeout testPass) collect: [ :each | self class selector: each ].\x0a\x09runner := TestSuiteRunner on: suite.\x0a\x09self timeout: 200.\x0a\x09result := runner result.\x0a\x09^ Promise new: [ :model |\x0a\x09\x09runner announcer on: ResultAnnouncement do: [ :ann |\x0a\x09\x09\x09(ann result == result and: [ result runs = result total ]) ifTrue: [ model do: [\x0a\x09\x09\x09\x09self assert: (self selectorSetOf: result errors) equals: #() asSet.\x0a\x09\x09\x09\x09self assert: (self selectorSetOf: result failures) equals: #(fakeMultipleTimeoutFailing fakeTimeout fakeTimeoutSendOnly fakePromiseWithoutTimeout) asSet ] ] ].\x0a\x09\x09runner run ]",
  1626. referencedClasses: ["TestSuiteRunner", "Promise", "ResultAnnouncement"],
  1627. //>>excludeEnd("ide");
  1628. pragmas: [],
  1629. messageSends: ["collect:", "selector:", "class", "on:", "timeout:", "result", "new:", "on:do:", "announcer", "ifTrue:", "and:", "==", "=", "runs", "total", "do:", "assert:equals:", "selectorSetOf:", "errors", "asSet", "failures", "run"]
  1630. }, function ($methodClass){ return function (){
  1631. var self=this,$self=this;
  1632. var suite,runner,result;
  1633. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1634. return $core.withContext(function($ctx1) {
  1635. //>>excludeEnd("ctx");
  1636. var $1;
  1637. suite=["fakeTimeout", "fakeMultipleTimeoutFailing", "fakeMultipleTimeoutPassing", "fakeTimeoutSendOnly", "fakePromiseWithoutTimeout", "testPass"]._collect_((function(each){
  1638. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1639. return $core.withContext(function($ctx2) {
  1640. //>>excludeEnd("ctx");
  1641. return $recv($self._class())._selector_(each);
  1642. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1643. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  1644. //>>excludeEnd("ctx");
  1645. }));
  1646. runner=$recv($globals.TestSuiteRunner)._on_(suite);
  1647. $self._timeout_((200));
  1648. result=[$recv(runner)._result()
  1649. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1650. ,$ctx1.sendIdx["result"]=1
  1651. //>>excludeEnd("ctx");
  1652. ][0];
  1653. return $recv($globals.Promise)._new_((function(model){
  1654. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1655. return $core.withContext(function($ctx2) {
  1656. //>>excludeEnd("ctx");
  1657. $recv($recv(runner)._announcer())._on_do_($globals.ResultAnnouncement,(function(ann){
  1658. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1659. return $core.withContext(function($ctx3) {
  1660. //>>excludeEnd("ctx");
  1661. if($core.assert($recv($recv(ann)._result()).__eq_eq(result))){
  1662. $1=$recv($recv(result)._runs()).__eq($recv(result)._total());
  1663. } else {
  1664. $1=false;
  1665. }
  1666. if($core.assert($1)){
  1667. return $recv(model)._do_((function(){
  1668. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1669. return $core.withContext(function($ctx4) {
  1670. //>>excludeEnd("ctx");
  1671. [$self._assert_equals_([$self._selectorSetOf_($recv(result)._errors())
  1672. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1673. ,$ctx4.sendIdx["selectorSetOf:"]=1
  1674. //>>excludeEnd("ctx");
  1675. ][0],[[]._asSet()
  1676. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1677. ,$ctx4.sendIdx["asSet"]=1
  1678. //>>excludeEnd("ctx");
  1679. ][0])
  1680. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1681. ,$ctx4.sendIdx["assert:equals:"]=1
  1682. //>>excludeEnd("ctx");
  1683. ][0];
  1684. return $self._assert_equals_($self._selectorSetOf_($recv(result)._failures()),["fakeMultipleTimeoutFailing", "fakeTimeout", "fakeTimeoutSendOnly", "fakePromiseWithoutTimeout"]._asSet());
  1685. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1686. }, function($ctx4) {$ctx4.fillBlock({},$ctx3,6)});
  1687. //>>excludeEnd("ctx");
  1688. }));
  1689. }
  1690. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1691. }, function($ctx3) {$ctx3.fillBlock({ann:ann},$ctx2,3)});
  1692. //>>excludeEnd("ctx");
  1693. }));
  1694. return $recv(runner)._run();
  1695. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1696. }, function($ctx2) {$ctx2.fillBlock({model:model},$ctx1,2)});
  1697. //>>excludeEnd("ctx");
  1698. }));
  1699. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1700. }, function($ctx1) {$ctx1.fill(self,"testTimeouts",{suite:suite,runner:runner,result:result})});
  1701. //>>excludeEnd("ctx");
  1702. }; }),
  1703. $globals.SUnitPromiseTest);
  1704. });