SUnit-Tests.js 56 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534
  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\x09(ann result == result and: [ 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:", "and:", "==", "=", "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. var $1;
  558. suite=["fakeError", "fakeErrorFailingInTearDown", "fakeFailure", "testPass"]._collect_((function(each){
  559. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  560. return $core.withContext(function($ctx2) {
  561. //>>excludeEnd("ctx");
  562. return $recv($self._class())._selector_(each);
  563. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  564. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  565. //>>excludeEnd("ctx");
  566. }));
  567. runner=$recv($globals.TestSuiteRunner)._on_(suite);
  568. $self._timeout_((200));
  569. result=[$recv(runner)._result()
  570. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  571. ,$ctx1.sendIdx["result"]=1
  572. //>>excludeEnd("ctx");
  573. ][0];
  574. assertBlock=$self._async_((function(){
  575. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  576. return $core.withContext(function($ctx2) {
  577. //>>excludeEnd("ctx");
  578. [$self._assert_equals_([$self._selectorSetOf_($recv(result)._errors())
  579. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  580. ,$ctx2.sendIdx["selectorSetOf:"]=1
  581. //>>excludeEnd("ctx");
  582. ][0],[["fakeError"]._asSet()
  583. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  584. ,$ctx2.sendIdx["asSet"]=1
  585. //>>excludeEnd("ctx");
  586. ][0])
  587. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  588. ,$ctx2.sendIdx["assert:equals:"]=1
  589. //>>excludeEnd("ctx");
  590. ][0];
  591. $self._assert_equals_($self._selectorSetOf_($recv(result)._failures()),["fakeErrorFailingInTearDown", "fakeFailure"]._asSet());
  592. return $self._finished();
  593. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  594. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  595. //>>excludeEnd("ctx");
  596. }));
  597. $recv($recv(runner)._announcer())._on_do_($globals.ResultAnnouncement,(function(ann){
  598. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  599. return $core.withContext(function($ctx2) {
  600. //>>excludeEnd("ctx");
  601. if($core.assert($recv($recv(ann)._result()).__eq_eq(result))){
  602. $1=$recv($recv(result)._runs()).__eq($recv(result)._total());
  603. } else {
  604. $1=false;
  605. }
  606. return $recv($1)._ifTrue_(assertBlock);
  607. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  608. }, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1,3)});
  609. //>>excludeEnd("ctx");
  610. }));
  611. $recv(runner)._run();
  612. return self;
  613. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  614. }, function($ctx1) {$ctx1.fill(self,"testAsyncErrorsAndFailures",{suite:suite,runner:runner,result:result,assertBlock:assertBlock})});
  615. //>>excludeEnd("ctx");
  616. }; }),
  617. $globals.SUnitAsyncTest);
  618. $core.addMethod(
  619. $core.method({
  620. selector: "testAsyncNeedsTimeout",
  621. protocol: "tests",
  622. //>>excludeStart("ide", pragmas.excludeIdeData);
  623. args: [],
  624. source: "testAsyncNeedsTimeout\x0a\x09self should: [ self async: [ ] ] raise: Error.\x0a\x09self timeout: 0.\x0a\x09self shouldnt: [ self async: [ ] ] raise: Error.\x0a\x09self finished",
  625. referencedClasses: ["Error"],
  626. //>>excludeEnd("ide");
  627. pragmas: [],
  628. messageSends: ["should:raise:", "async:", "timeout:", "shouldnt:raise:", "finished"]
  629. }, function ($methodClass){ return function (){
  630. var self=this,$self=this;
  631. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  632. return $core.withContext(function($ctx1) {
  633. //>>excludeEnd("ctx");
  634. $self._should_raise_((function(){
  635. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  636. return $core.withContext(function($ctx2) {
  637. //>>excludeEnd("ctx");
  638. return [$self._async_((function(){
  639. }))
  640. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  641. ,$ctx2.sendIdx["async:"]=1
  642. //>>excludeEnd("ctx");
  643. ][0];
  644. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  645. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  646. //>>excludeEnd("ctx");
  647. }),$globals.Error);
  648. $self._timeout_((0));
  649. $self._shouldnt_raise_((function(){
  650. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  651. return $core.withContext(function($ctx2) {
  652. //>>excludeEnd("ctx");
  653. return $self._async_((function(){
  654. }));
  655. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  656. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  657. //>>excludeEnd("ctx");
  658. }),$globals.Error);
  659. $self._finished();
  660. return self;
  661. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  662. }, function($ctx1) {$ctx1.fill(self,"testAsyncNeedsTimeout",{})});
  663. //>>excludeEnd("ctx");
  664. }; }),
  665. $globals.SUnitAsyncTest);
  666. $core.addMethod(
  667. $core.method({
  668. selector: "testFinishedNeedsTimeout",
  669. protocol: "tests",
  670. //>>excludeStart("ide", pragmas.excludeIdeData);
  671. args: [],
  672. source: "testFinishedNeedsTimeout\x0a\x09self should: [ self finished ] raise: Error.\x0a\x09self timeout: 0.\x0a\x09self shouldnt: [ self finished ] raise: Error.",
  673. referencedClasses: ["Error"],
  674. //>>excludeEnd("ide");
  675. pragmas: [],
  676. messageSends: ["should:raise:", "finished", "timeout:", "shouldnt:raise:"]
  677. }, function ($methodClass){ return function (){
  678. var self=this,$self=this;
  679. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  680. return $core.withContext(function($ctx1) {
  681. //>>excludeEnd("ctx");
  682. $self._should_raise_((function(){
  683. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  684. return $core.withContext(function($ctx2) {
  685. //>>excludeEnd("ctx");
  686. return [$self._finished()
  687. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  688. ,$ctx2.sendIdx["finished"]=1
  689. //>>excludeEnd("ctx");
  690. ][0];
  691. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  692. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  693. //>>excludeEnd("ctx");
  694. }),$globals.Error);
  695. $self._timeout_((0));
  696. $self._shouldnt_raise_((function(){
  697. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  698. return $core.withContext(function($ctx2) {
  699. //>>excludeEnd("ctx");
  700. return $self._finished();
  701. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  702. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  703. //>>excludeEnd("ctx");
  704. }),$globals.Error);
  705. return self;
  706. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  707. }, function($ctx1) {$ctx1.fill(self,"testFinishedNeedsTimeout",{})});
  708. //>>excludeEnd("ctx");
  709. }; }),
  710. $globals.SUnitAsyncTest);
  711. $core.addMethod(
  712. $core.method({
  713. selector: "testIsAsyncReturnsCorrectValues",
  714. protocol: "tests",
  715. //>>excludeStart("ide", pragmas.excludeIdeData);
  716. args: [],
  717. source: "testIsAsyncReturnsCorrectValues\x0a\x09self deny: self isAsync.\x0a\x09self timeout: 0.\x0a\x09self assert: self isAsync.\x0a\x09self finished.\x0a\x09self deny: self isAsync",
  718. referencedClasses: [],
  719. //>>excludeEnd("ide");
  720. pragmas: [],
  721. messageSends: ["deny:", "isAsync", "timeout:", "assert:", "finished"]
  722. }, function ($methodClass){ return function (){
  723. var self=this,$self=this;
  724. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  725. return $core.withContext(function($ctx1) {
  726. //>>excludeEnd("ctx");
  727. [$self._deny_([$self._isAsync()
  728. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  729. ,$ctx1.sendIdx["isAsync"]=1
  730. //>>excludeEnd("ctx");
  731. ][0])
  732. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  733. ,$ctx1.sendIdx["deny:"]=1
  734. //>>excludeEnd("ctx");
  735. ][0];
  736. $self._timeout_((0));
  737. $self._assert_([$self._isAsync()
  738. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  739. ,$ctx1.sendIdx["isAsync"]=2
  740. //>>excludeEnd("ctx");
  741. ][0]);
  742. $self._finished();
  743. $self._deny_($self._isAsync());
  744. return self;
  745. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  746. }, function($ctx1) {$ctx1.fill(self,"testIsAsyncReturnsCorrectValues",{})});
  747. //>>excludeEnd("ctx");
  748. }; }),
  749. $globals.SUnitAsyncTest);
  750. $core.addMethod(
  751. $core.method({
  752. selector: "testPass",
  753. protocol: "tests",
  754. //>>excludeStart("ide", pragmas.excludeIdeData);
  755. args: [],
  756. source: "testPass\x0a\x09flag := 'bad'.\x0a\x09self timeout: 10.\x0a\x09flag := (self async: [ self assert: true. self finished. flag := 'ok' ]) valueWithTimeout: 5",
  757. referencedClasses: [],
  758. //>>excludeEnd("ide");
  759. pragmas: [],
  760. messageSends: ["timeout:", "valueWithTimeout:", "async:", "assert:", "finished"]
  761. }, function ($methodClass){ return function (){
  762. var self=this,$self=this;
  763. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  764. return $core.withContext(function($ctx1) {
  765. //>>excludeEnd("ctx");
  766. $self.flag="bad";
  767. $self._timeout_((10));
  768. $self.flag=$recv($self._async_((function(){
  769. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  770. return $core.withContext(function($ctx2) {
  771. //>>excludeEnd("ctx");
  772. $self._assert_(true);
  773. $self._finished();
  774. $self.flag="ok";
  775. return $self.flag;
  776. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  777. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  778. //>>excludeEnd("ctx");
  779. })))._valueWithTimeout_((5));
  780. return self;
  781. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  782. }, function($ctx1) {$ctx1.fill(self,"testPass",{})});
  783. //>>excludeEnd("ctx");
  784. }; }),
  785. $globals.SUnitAsyncTest);
  786. $core.addMethod(
  787. $core.method({
  788. selector: "testTimeouts",
  789. protocol: "tests",
  790. //>>excludeStart("ide", pragmas.excludeIdeData);
  791. args: [],
  792. 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",
  793. referencedClasses: ["TestSuiteRunner", "Set", "ResultAnnouncement"],
  794. //>>excludeEnd("ide");
  795. pragmas: [],
  796. messageSends: ["collect:", "selector:", "class", "on:", "timeout:", "result", "async:", "assert:equals:", "selectorSetOf:", "errors", "new", "failures", "asSet", "finished", "on:do:", "announcer", "ifTrue:", "and:", "==", "=", "runs", "total", "run"]
  797. }, function ($methodClass){ return function (){
  798. var self=this,$self=this;
  799. var suite,runner,result,assertBlock;
  800. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  801. return $core.withContext(function($ctx1) {
  802. //>>excludeEnd("ctx");
  803. var $1;
  804. suite=["fakeTimeout", "fakeMultipleTimeoutFailing", "fakeMultipleTimeoutPassing", "testPass"]._collect_((function(each){
  805. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  806. return $core.withContext(function($ctx2) {
  807. //>>excludeEnd("ctx");
  808. return $recv($self._class())._selector_(each);
  809. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  810. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  811. //>>excludeEnd("ctx");
  812. }));
  813. runner=$recv($globals.TestSuiteRunner)._on_(suite);
  814. $self._timeout_((200));
  815. result=[$recv(runner)._result()
  816. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  817. ,$ctx1.sendIdx["result"]=1
  818. //>>excludeEnd("ctx");
  819. ][0];
  820. assertBlock=$self._async_((function(){
  821. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  822. return $core.withContext(function($ctx2) {
  823. //>>excludeEnd("ctx");
  824. [$self._assert_equals_([$self._selectorSetOf_($recv(result)._errors())
  825. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  826. ,$ctx2.sendIdx["selectorSetOf:"]=1
  827. //>>excludeEnd("ctx");
  828. ][0],$recv($globals.Set)._new())
  829. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  830. ,$ctx2.sendIdx["assert:equals:"]=1
  831. //>>excludeEnd("ctx");
  832. ][0];
  833. $self._assert_equals_($self._selectorSetOf_($recv(result)._failures()),["fakeMultipleTimeoutFailing", "fakeTimeout"]._asSet());
  834. return $self._finished();
  835. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  836. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  837. //>>excludeEnd("ctx");
  838. }));
  839. $recv($recv(runner)._announcer())._on_do_($globals.ResultAnnouncement,(function(ann){
  840. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  841. return $core.withContext(function($ctx2) {
  842. //>>excludeEnd("ctx");
  843. if($core.assert($recv($recv(ann)._result()).__eq_eq(result))){
  844. $1=$recv($recv(result)._runs()).__eq($recv(result)._total());
  845. } else {
  846. $1=false;
  847. }
  848. return $recv($1)._ifTrue_(assertBlock);
  849. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  850. }, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1,3)});
  851. //>>excludeEnd("ctx");
  852. }));
  853. $recv(runner)._run();
  854. return self;
  855. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  856. }, function($ctx1) {$ctx1.fill(self,"testTimeouts",{suite:suite,runner:runner,result:result,assertBlock:assertBlock})});
  857. //>>excludeEnd("ctx");
  858. }; }),
  859. $globals.SUnitAsyncTest);
  860. $core.addMethod(
  861. $core.method({
  862. selector: "testTwoAsyncPassesWithFinishedOnlyOneIsRun",
  863. protocol: "tests",
  864. //>>excludeStart("ide", pragmas.excludeIdeData);
  865. args: [],
  866. 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.",
  867. referencedClasses: [],
  868. //>>excludeEnd("ide");
  869. pragmas: [],
  870. messageSends: ["timeout:", "valueWithTimeout:", "async:", "finished", "+", "assert:equals:"]
  871. }, function ($methodClass){ return function (){
  872. var self=this,$self=this;
  873. var x;
  874. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  875. return $core.withContext(function($ctx1) {
  876. //>>excludeEnd("ctx");
  877. $self.flag="bad";
  878. $self._timeout_((10));
  879. x=(0);
  880. $self.flag=[$recv([$self._async_((function(){
  881. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  882. return $core.withContext(function($ctx2) {
  883. //>>excludeEnd("ctx");
  884. [$self._finished()
  885. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  886. ,$ctx2.sendIdx["finished"]=1
  887. //>>excludeEnd("ctx");
  888. ][0];
  889. $self.flag="ok";
  890. x=[$recv(x).__plus((1))
  891. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  892. ,$ctx2.sendIdx["+"]=1
  893. //>>excludeEnd("ctx");
  894. ][0];
  895. return [$self._assert_equals_(x,(1))
  896. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  897. ,$ctx2.sendIdx["assert:equals:"]=1
  898. //>>excludeEnd("ctx");
  899. ][0];
  900. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  901. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  902. //>>excludeEnd("ctx");
  903. }))
  904. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  905. ,$ctx1.sendIdx["async:"]=1
  906. //>>excludeEnd("ctx");
  907. ][0])._valueWithTimeout_((0))
  908. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  909. ,$ctx1.sendIdx["valueWithTimeout:"]=1
  910. //>>excludeEnd("ctx");
  911. ][0];
  912. $self.flag=$recv($self._async_((function(){
  913. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  914. return $core.withContext(function($ctx2) {
  915. //>>excludeEnd("ctx");
  916. $self._finished();
  917. $self.flag="ok";
  918. x=$recv(x).__plus((1));
  919. return $self._assert_equals_(x,(1));
  920. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  921. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  922. //>>excludeEnd("ctx");
  923. })))._valueWithTimeout_((0));
  924. return self;
  925. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  926. }, function($ctx1) {$ctx1.fill(self,"testTwoAsyncPassesWithFinishedOnlyOneIsRun",{x:x})});
  927. //>>excludeEnd("ctx");
  928. }; }),
  929. $globals.SUnitAsyncTest);
  930. $core.addClass("SUnitPromiseTest", $globals.TestCase, "SUnit-Tests");
  931. $core.setSlots($globals.SUnitPromiseTest, ["flag"]);
  932. $core.addMethod(
  933. $core.method({
  934. selector: "fakeError",
  935. protocol: "helpers",
  936. //>>excludeStart("ide", pragmas.excludeIdeData);
  937. args: [],
  938. source: "fakeError\x0a\x09flag := 'bad'.\x0a\x09self timeout: 30.\x0a\x09flag := Promise delayMilliseconds: 20.\x0a\x09^ flag then: [ flag := 'ok'. self error: 'Intentional' ]",
  939. referencedClasses: ["Promise"],
  940. //>>excludeEnd("ide");
  941. pragmas: [],
  942. messageSends: ["timeout:", "delayMilliseconds:", "then:", "error:"]
  943. }, function ($methodClass){ return function (){
  944. var self=this,$self=this;
  945. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  946. return $core.withContext(function($ctx1) {
  947. //>>excludeEnd("ctx");
  948. $self.flag="bad";
  949. $self._timeout_((30));
  950. $self.flag=$recv($globals.Promise)._delayMilliseconds_((20));
  951. return $recv($self.flag)._then_((function(){
  952. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  953. return $core.withContext(function($ctx2) {
  954. //>>excludeEnd("ctx");
  955. $self.flag="ok";
  956. return $self._error_("Intentional");
  957. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  958. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  959. //>>excludeEnd("ctx");
  960. }));
  961. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  962. }, function($ctx1) {$ctx1.fill(self,"fakeError",{})});
  963. //>>excludeEnd("ctx");
  964. }; }),
  965. $globals.SUnitPromiseTest);
  966. $core.addMethod(
  967. $core.method({
  968. selector: "fakeErrorFailingInTearDown",
  969. protocol: "helpers",
  970. //>>excludeStart("ide", pragmas.excludeIdeData);
  971. args: [],
  972. source: "fakeErrorFailingInTearDown\x0a\x09flag := 'bad'.\x0a\x09self timeout: 30.\x0a\x09flag := Promise delayMilliseconds: 20.\x0a\x09^ flag then: [ self error: 'Intentional' ]",
  973. referencedClasses: ["Promise"],
  974. //>>excludeEnd("ide");
  975. pragmas: [],
  976. messageSends: ["timeout:", "delayMilliseconds:", "then:", "error:"]
  977. }, function ($methodClass){ return function (){
  978. var self=this,$self=this;
  979. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  980. return $core.withContext(function($ctx1) {
  981. //>>excludeEnd("ctx");
  982. $self.flag="bad";
  983. $self._timeout_((30));
  984. $self.flag=$recv($globals.Promise)._delayMilliseconds_((20));
  985. return $recv($self.flag)._then_((function(){
  986. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  987. return $core.withContext(function($ctx2) {
  988. //>>excludeEnd("ctx");
  989. return $self._error_("Intentional");
  990. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  991. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  992. //>>excludeEnd("ctx");
  993. }));
  994. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  995. }, function($ctx1) {$ctx1.fill(self,"fakeErrorFailingInTearDown",{})});
  996. //>>excludeEnd("ctx");
  997. }; }),
  998. $globals.SUnitPromiseTest);
  999. $core.addMethod(
  1000. $core.method({
  1001. selector: "fakeFailure",
  1002. protocol: "helpers",
  1003. //>>excludeStart("ide", pragmas.excludeIdeData);
  1004. args: [],
  1005. source: "fakeFailure\x0a\x09flag := 'bad'.\x0a\x09self timeout: 30.\x0a\x09flag := Promise delayMilliseconds: 20.\x0a\x09^ flag then: [ flag := 'ok'. self assert: false ]",
  1006. referencedClasses: ["Promise"],
  1007. //>>excludeEnd("ide");
  1008. pragmas: [],
  1009. messageSends: ["timeout:", "delayMilliseconds:", "then:", "assert:"]
  1010. }, function ($methodClass){ return function (){
  1011. var self=this,$self=this;
  1012. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1013. return $core.withContext(function($ctx1) {
  1014. //>>excludeEnd("ctx");
  1015. $self.flag="bad";
  1016. $self._timeout_((30));
  1017. $self.flag=$recv($globals.Promise)._delayMilliseconds_((20));
  1018. return $recv($self.flag)._then_((function(){
  1019. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1020. return $core.withContext(function($ctx2) {
  1021. //>>excludeEnd("ctx");
  1022. $self.flag="ok";
  1023. return $self._assert_(false);
  1024. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1025. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  1026. //>>excludeEnd("ctx");
  1027. }));
  1028. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1029. }, function($ctx1) {$ctx1.fill(self,"fakeFailure",{})});
  1030. //>>excludeEnd("ctx");
  1031. }; }),
  1032. $globals.SUnitPromiseTest);
  1033. $core.addMethod(
  1034. $core.method({
  1035. selector: "fakeMultipleTimeoutFailing",
  1036. protocol: "helpers",
  1037. //>>excludeStart("ide", pragmas.excludeIdeData);
  1038. args: [],
  1039. source: "fakeMultipleTimeoutFailing\x0a\x09self timeout: 100.\x0a\x09^ (Promise delayMilliseconds: 20) then: [ self timeout: 20. Promise delayMilliseconds: 30 ]",
  1040. referencedClasses: ["Promise"],
  1041. //>>excludeEnd("ide");
  1042. pragmas: [],
  1043. messageSends: ["timeout:", "then:", "delayMilliseconds:"]
  1044. }, function ($methodClass){ return function (){
  1045. var self=this,$self=this;
  1046. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1047. return $core.withContext(function($ctx1) {
  1048. //>>excludeEnd("ctx");
  1049. [$self._timeout_((100))
  1050. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1051. ,$ctx1.sendIdx["timeout:"]=1
  1052. //>>excludeEnd("ctx");
  1053. ][0];
  1054. return $recv([$recv($globals.Promise)._delayMilliseconds_((20))
  1055. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1056. ,$ctx1.sendIdx["delayMilliseconds:"]=1
  1057. //>>excludeEnd("ctx");
  1058. ][0])._then_((function(){
  1059. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1060. return $core.withContext(function($ctx2) {
  1061. //>>excludeEnd("ctx");
  1062. $self._timeout_((20));
  1063. return $recv($globals.Promise)._delayMilliseconds_((30));
  1064. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1065. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  1066. //>>excludeEnd("ctx");
  1067. }));
  1068. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1069. }, function($ctx1) {$ctx1.fill(self,"fakeMultipleTimeoutFailing",{})});
  1070. //>>excludeEnd("ctx");
  1071. }; }),
  1072. $globals.SUnitPromiseTest);
  1073. $core.addMethod(
  1074. $core.method({
  1075. selector: "fakeMultipleTimeoutPassing",
  1076. protocol: "helpers",
  1077. //>>excludeStart("ide", pragmas.excludeIdeData);
  1078. args: [],
  1079. source: "fakeMultipleTimeoutPassing\x0a\x09self timeout: 20.\x0a\x09^ (Promise delayMilliseconds: 10) then: [ self timeout: 40. Promise delayMilliseconds: 20 ]",
  1080. referencedClasses: ["Promise"],
  1081. //>>excludeEnd("ide");
  1082. pragmas: [],
  1083. messageSends: ["timeout:", "then:", "delayMilliseconds:"]
  1084. }, function ($methodClass){ return function (){
  1085. var self=this,$self=this;
  1086. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1087. return $core.withContext(function($ctx1) {
  1088. //>>excludeEnd("ctx");
  1089. [$self._timeout_((20))
  1090. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1091. ,$ctx1.sendIdx["timeout:"]=1
  1092. //>>excludeEnd("ctx");
  1093. ][0];
  1094. return $recv([$recv($globals.Promise)._delayMilliseconds_((10))
  1095. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1096. ,$ctx1.sendIdx["delayMilliseconds:"]=1
  1097. //>>excludeEnd("ctx");
  1098. ][0])._then_((function(){
  1099. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1100. return $core.withContext(function($ctx2) {
  1101. //>>excludeEnd("ctx");
  1102. $self._timeout_((40));
  1103. return $recv($globals.Promise)._delayMilliseconds_((20));
  1104. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1105. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  1106. //>>excludeEnd("ctx");
  1107. }));
  1108. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1109. }, function($ctx1) {$ctx1.fill(self,"fakeMultipleTimeoutPassing",{})});
  1110. //>>excludeEnd("ctx");
  1111. }; }),
  1112. $globals.SUnitPromiseTest);
  1113. $core.addMethod(
  1114. $core.method({
  1115. selector: "fakePromiseWithoutTimeout",
  1116. protocol: "helpers",
  1117. //>>excludeStart("ide", pragmas.excludeIdeData);
  1118. args: [],
  1119. source: "fakePromiseWithoutTimeout\x0a\x09^ Promise delayMilliseconds: 10",
  1120. referencedClasses: ["Promise"],
  1121. //>>excludeEnd("ide");
  1122. pragmas: [],
  1123. messageSends: ["delayMilliseconds:"]
  1124. }, function ($methodClass){ return function (){
  1125. var self=this,$self=this;
  1126. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1127. return $core.withContext(function($ctx1) {
  1128. //>>excludeEnd("ctx");
  1129. return $recv($globals.Promise)._delayMilliseconds_((10));
  1130. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1131. }, function($ctx1) {$ctx1.fill(self,"fakePromiseWithoutTimeout",{})});
  1132. //>>excludeEnd("ctx");
  1133. }; }),
  1134. $globals.SUnitPromiseTest);
  1135. $core.addMethod(
  1136. $core.method({
  1137. selector: "fakeTimeout",
  1138. protocol: "helpers",
  1139. //>>excludeStart("ide", pragmas.excludeIdeData);
  1140. args: [],
  1141. source: "fakeTimeout\x0a\x09self timeout: 10.\x0a\x09^ Promise delayMilliseconds: 20",
  1142. referencedClasses: ["Promise"],
  1143. //>>excludeEnd("ide");
  1144. pragmas: [],
  1145. messageSends: ["timeout:", "delayMilliseconds:"]
  1146. }, function ($methodClass){ return function (){
  1147. var self=this,$self=this;
  1148. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1149. return $core.withContext(function($ctx1) {
  1150. //>>excludeEnd("ctx");
  1151. $self._timeout_((10));
  1152. return $recv($globals.Promise)._delayMilliseconds_((20));
  1153. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1154. }, function($ctx1) {$ctx1.fill(self,"fakeTimeout",{})});
  1155. //>>excludeEnd("ctx");
  1156. }; }),
  1157. $globals.SUnitPromiseTest);
  1158. $core.addMethod(
  1159. $core.method({
  1160. selector: "fakeTimeoutSendOnly",
  1161. protocol: "helpers",
  1162. //>>excludeStart("ide", pragmas.excludeIdeData);
  1163. args: [],
  1164. source: "fakeTimeoutSendOnly\x0a\x09self timeout: 10",
  1165. referencedClasses: [],
  1166. //>>excludeEnd("ide");
  1167. pragmas: [],
  1168. messageSends: ["timeout:"]
  1169. }, function ($methodClass){ return function (){
  1170. var self=this,$self=this;
  1171. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1172. return $core.withContext(function($ctx1) {
  1173. //>>excludeEnd("ctx");
  1174. $self._timeout_((10));
  1175. return self;
  1176. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1177. }, function($ctx1) {$ctx1.fill(self,"fakeTimeoutSendOnly",{})});
  1178. //>>excludeEnd("ctx");
  1179. }; }),
  1180. $globals.SUnitPromiseTest);
  1181. $core.addMethod(
  1182. $core.method({
  1183. selector: "selectorSetOf:",
  1184. protocol: "private",
  1185. //>>excludeStart("ide", pragmas.excludeIdeData);
  1186. args: ["aCollection"],
  1187. source: "selectorSetOf: aCollection\x0a\x09^ (aCollection collect: [ :each | each selector ]) asSet",
  1188. referencedClasses: [],
  1189. //>>excludeEnd("ide");
  1190. pragmas: [],
  1191. messageSends: ["asSet", "collect:", "selector"]
  1192. }, function ($methodClass){ return function (aCollection){
  1193. var self=this,$self=this;
  1194. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1195. return $core.withContext(function($ctx1) {
  1196. //>>excludeEnd("ctx");
  1197. return $recv($recv(aCollection)._collect_((function(each){
  1198. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1199. return $core.withContext(function($ctx2) {
  1200. //>>excludeEnd("ctx");
  1201. return $recv(each)._selector();
  1202. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1203. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  1204. //>>excludeEnd("ctx");
  1205. })))._asSet();
  1206. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1207. }, function($ctx1) {$ctx1.fill(self,"selectorSetOf:",{aCollection:aCollection})});
  1208. //>>excludeEnd("ctx");
  1209. }; }),
  1210. $globals.SUnitPromiseTest);
  1211. $core.addMethod(
  1212. $core.method({
  1213. selector: "setUp",
  1214. protocol: "running",
  1215. //>>excludeStart("ide", pragmas.excludeIdeData);
  1216. args: [],
  1217. source: "setUp\x0a\x09flag := 'ok'",
  1218. referencedClasses: [],
  1219. //>>excludeEnd("ide");
  1220. pragmas: [],
  1221. messageSends: []
  1222. }, function ($methodClass){ return function (){
  1223. var self=this,$self=this;
  1224. $self.flag="ok";
  1225. return self;
  1226. }; }),
  1227. $globals.SUnitPromiseTest);
  1228. $core.addMethod(
  1229. $core.method({
  1230. selector: "tearDown",
  1231. protocol: "running",
  1232. //>>excludeStart("ide", pragmas.excludeIdeData);
  1233. args: [],
  1234. source: "tearDown\x0a\x09self assert: 'ok' equals: flag",
  1235. referencedClasses: [],
  1236. //>>excludeEnd("ide");
  1237. pragmas: [],
  1238. messageSends: ["assert:equals:"]
  1239. }, function ($methodClass){ return function (){
  1240. var self=this,$self=this;
  1241. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1242. return $core.withContext(function($ctx1) {
  1243. //>>excludeEnd("ctx");
  1244. $self._assert_equals_("ok",$self.flag);
  1245. return self;
  1246. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1247. }, function($ctx1) {$ctx1.fill(self,"tearDown",{})});
  1248. //>>excludeEnd("ctx");
  1249. }; }),
  1250. $globals.SUnitPromiseTest);
  1251. $core.addMethod(
  1252. $core.method({
  1253. selector: "testIsAsyncReturnsCorrectValues",
  1254. protocol: "tests",
  1255. //>>excludeStart("ide", pragmas.excludeIdeData);
  1256. args: [],
  1257. 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",
  1258. referencedClasses: ["Promise"],
  1259. //>>excludeEnd("ide");
  1260. pragmas: [],
  1261. messageSends: ["deny:", "isAsync", "timeout:", "assert:", "new"]
  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. $self._deny_([$self._isAsync()
  1268. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1269. ,$ctx1.sendIdx["isAsync"]=1
  1270. //>>excludeEnd("ctx");
  1271. ][0]);
  1272. $self._timeout_((0));
  1273. $self._assert_($self._isAsync());
  1274. return $recv($globals.Promise)._new();
  1275. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1276. }, function($ctx1) {$ctx1.fill(self,"testIsAsyncReturnsCorrectValues",{})});
  1277. //>>excludeEnd("ctx");
  1278. }; }),
  1279. $globals.SUnitPromiseTest);
  1280. $core.addMethod(
  1281. $core.method({
  1282. selector: "testPass",
  1283. protocol: "tests",
  1284. //>>excludeStart("ide", pragmas.excludeIdeData);
  1285. args: [],
  1286. source: "testPass\x0a\x09flag := 'bad'.\x0a\x09self timeout: 10.\x0a\x09flag := Promise delayMilliseconds: 5.\x0a\x09^ flag then: [ self assert: true. flag := 'ok' ]",
  1287. referencedClasses: ["Promise"],
  1288. //>>excludeEnd("ide");
  1289. pragmas: [],
  1290. messageSends: ["timeout:", "delayMilliseconds:", "then:", "assert:"]
  1291. }, function ($methodClass){ return function (){
  1292. var self=this,$self=this;
  1293. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1294. return $core.withContext(function($ctx1) {
  1295. //>>excludeEnd("ctx");
  1296. $self.flag="bad";
  1297. $self._timeout_((10));
  1298. $self.flag=$recv($globals.Promise)._delayMilliseconds_((5));
  1299. return $recv($self.flag)._then_((function(){
  1300. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1301. return $core.withContext(function($ctx2) {
  1302. //>>excludeEnd("ctx");
  1303. $self._assert_(true);
  1304. $self.flag="ok";
  1305. return $self.flag;
  1306. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1307. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  1308. //>>excludeEnd("ctx");
  1309. }));
  1310. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1311. }, function($ctx1) {$ctx1.fill(self,"testPass",{})});
  1312. //>>excludeEnd("ctx");
  1313. }; }),
  1314. $globals.SUnitPromiseTest);
  1315. $core.addMethod(
  1316. $core.method({
  1317. selector: "testPromiseErrorsAndFailures",
  1318. protocol: "tests",
  1319. //>>excludeStart("ide", pragmas.excludeIdeData);
  1320. args: [],
  1321. 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: [\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\x09\x09\x09model value: nil ] ].\x0a\x09\x09runner run ]",
  1322. referencedClasses: ["TestSuiteRunner", "Promise", "ResultAnnouncement"],
  1323. //>>excludeEnd("ide");
  1324. pragmas: [],
  1325. messageSends: ["collect:", "selector:", "class", "on:", "timeout:", "result", "new:", "on:do:", "announcer", "ifTrue:", "and:", "==", "=", "runs", "total", "assert:equals:", "selectorSetOf:", "errors", "asSet", "failures", "value:", "run"]
  1326. }, function ($methodClass){ return function (){
  1327. var self=this,$self=this;
  1328. var suite,runner,result;
  1329. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1330. return $core.withContext(function($ctx1) {
  1331. //>>excludeEnd("ctx");
  1332. var $1;
  1333. suite=["fakeError", "fakeErrorFailingInTearDown", "fakeFailure", "testPass"]._collect_((function(each){
  1334. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1335. return $core.withContext(function($ctx2) {
  1336. //>>excludeEnd("ctx");
  1337. return $recv($self._class())._selector_(each);
  1338. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1339. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  1340. //>>excludeEnd("ctx");
  1341. }));
  1342. runner=$recv($globals.TestSuiteRunner)._on_(suite);
  1343. $self._timeout_((200));
  1344. result=[$recv(runner)._result()
  1345. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1346. ,$ctx1.sendIdx["result"]=1
  1347. //>>excludeEnd("ctx");
  1348. ][0];
  1349. return $recv($globals.Promise)._new_((function(model){
  1350. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1351. return $core.withContext(function($ctx2) {
  1352. //>>excludeEnd("ctx");
  1353. $recv($recv(runner)._announcer())._on_do_($globals.ResultAnnouncement,(function(ann){
  1354. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1355. return $core.withContext(function($ctx3) {
  1356. //>>excludeEnd("ctx");
  1357. if($core.assert($recv($recv(ann)._result()).__eq_eq(result))){
  1358. $1=$recv($recv(result)._runs()).__eq($recv(result)._total());
  1359. } else {
  1360. $1=false;
  1361. }
  1362. if($core.assert($1)){
  1363. [$self._assert_equals_([$self._selectorSetOf_($recv(result)._errors())
  1364. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1365. ,$ctx3.sendIdx["selectorSetOf:"]=1
  1366. //>>excludeEnd("ctx");
  1367. ][0],[["fakeError"]._asSet()
  1368. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1369. ,$ctx3.sendIdx["asSet"]=1
  1370. //>>excludeEnd("ctx");
  1371. ][0])
  1372. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1373. ,$ctx3.sendIdx["assert:equals:"]=1
  1374. //>>excludeEnd("ctx");
  1375. ][0];
  1376. $self._assert_equals_($self._selectorSetOf_($recv(result)._failures()),["fakeErrorFailingInTearDown", "fakeFailure"]._asSet());
  1377. return $recv(model)._value_(nil);
  1378. }
  1379. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1380. }, function($ctx3) {$ctx3.fillBlock({ann:ann},$ctx2,3)});
  1381. //>>excludeEnd("ctx");
  1382. }));
  1383. return $recv(runner)._run();
  1384. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1385. }, function($ctx2) {$ctx2.fillBlock({model:model},$ctx1,2)});
  1386. //>>excludeEnd("ctx");
  1387. }));
  1388. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1389. }, function($ctx1) {$ctx1.fill(self,"testPromiseErrorsAndFailures",{suite:suite,runner:runner,result:result})});
  1390. //>>excludeEnd("ctx");
  1391. }; }),
  1392. $globals.SUnitPromiseTest);
  1393. $core.addMethod(
  1394. $core.method({
  1395. selector: "testTimeouts",
  1396. protocol: "tests",
  1397. //>>excludeStart("ide", pragmas.excludeIdeData);
  1398. args: [],
  1399. 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\x09console log: ann; log: ann result runs.\x0a\x09\x09\x09(ann result == result and: [ result runs = result total ]) ifTrue: [\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\x09\x09\x09model value: nil ] ].\x0a\x09\x09runner run ]",
  1400. referencedClasses: ["TestSuiteRunner", "Promise", "ResultAnnouncement"],
  1401. //>>excludeEnd("ide");
  1402. pragmas: [],
  1403. messageSends: ["collect:", "selector:", "class", "on:", "timeout:", "result", "new:", "on:do:", "announcer", "log:", "runs", "ifTrue:", "and:", "==", "=", "total", "assert:equals:", "selectorSetOf:", "errors", "asSet", "failures", "value:", "run"]
  1404. }, function ($methodClass){ return function (){
  1405. var self=this,$self=this;
  1406. var suite,runner,result;
  1407. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1408. return $core.withContext(function($ctx1) {
  1409. //>>excludeEnd("ctx");
  1410. var $1,$2;
  1411. suite=["fakeTimeout", "fakeMultipleTimeoutFailing", "fakeMultipleTimeoutPassing", "fakeTimeoutSendOnly", "fakePromiseWithoutTimeout", "testPass"]._collect_((function(each){
  1412. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1413. return $core.withContext(function($ctx2) {
  1414. //>>excludeEnd("ctx");
  1415. return $recv($self._class())._selector_(each);
  1416. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1417. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  1418. //>>excludeEnd("ctx");
  1419. }));
  1420. runner=$recv($globals.TestSuiteRunner)._on_(suite);
  1421. $self._timeout_((200));
  1422. result=[$recv(runner)._result()
  1423. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1424. ,$ctx1.sendIdx["result"]=1
  1425. //>>excludeEnd("ctx");
  1426. ][0];
  1427. return $recv($globals.Promise)._new_((function(model){
  1428. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1429. return $core.withContext(function($ctx2) {
  1430. //>>excludeEnd("ctx");
  1431. $recv($recv(runner)._announcer())._on_do_($globals.ResultAnnouncement,(function(ann){
  1432. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1433. return $core.withContext(function($ctx3) {
  1434. //>>excludeEnd("ctx");
  1435. $1=console;
  1436. [$recv($1)._log_(ann)
  1437. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1438. ,$ctx3.sendIdx["log:"]=1
  1439. //>>excludeEnd("ctx");
  1440. ][0];
  1441. $recv($1)._log_([$recv([$recv(ann)._result()
  1442. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1443. ,$ctx3.sendIdx["result"]=2
  1444. //>>excludeEnd("ctx");
  1445. ][0])._runs()
  1446. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1447. ,$ctx3.sendIdx["runs"]=1
  1448. //>>excludeEnd("ctx");
  1449. ][0]);
  1450. if($core.assert($recv($recv(ann)._result()).__eq_eq(result))){
  1451. $2=$recv($recv(result)._runs()).__eq($recv(result)._total());
  1452. } else {
  1453. $2=false;
  1454. }
  1455. if($core.assert($2)){
  1456. [$self._assert_equals_([$self._selectorSetOf_($recv(result)._errors())
  1457. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1458. ,$ctx3.sendIdx["selectorSetOf:"]=1
  1459. //>>excludeEnd("ctx");
  1460. ][0],[[]._asSet()
  1461. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1462. ,$ctx3.sendIdx["asSet"]=1
  1463. //>>excludeEnd("ctx");
  1464. ][0])
  1465. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1466. ,$ctx3.sendIdx["assert:equals:"]=1
  1467. //>>excludeEnd("ctx");
  1468. ][0];
  1469. $self._assert_equals_($self._selectorSetOf_($recv(result)._failures()),["fakeMultipleTimeoutFailing", "fakeTimeout", "fakeTimeoutSendOnly", "fakePromiseWithoutTimeout"]._asSet());
  1470. return $recv(model)._value_(nil);
  1471. }
  1472. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1473. }, function($ctx3) {$ctx3.fillBlock({ann:ann},$ctx2,3)});
  1474. //>>excludeEnd("ctx");
  1475. }));
  1476. return $recv(runner)._run();
  1477. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1478. }, function($ctx2) {$ctx2.fillBlock({model:model},$ctx1,2)});
  1479. //>>excludeEnd("ctx");
  1480. }));
  1481. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1482. }, function($ctx1) {$ctx1.fill(self,"testTimeouts",{suite:suite,runner:runner,result:result})});
  1483. //>>excludeEnd("ctx");
  1484. }; }),
  1485. $globals.SUnitPromiseTest);
  1486. });