SUnit-Tests.js 36 KB

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