SUnit-Tests.js 35 KB

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