SUnit-Tests.js 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284
  1. smalltalk.addPackage('SUnit-Tests', {});
  2. smalltalk.addClass('SUnitAsyncTest', smalltalk.TestCase, ['flag'], 'SUnit-Tests');
  3. smalltalk.addMethod(
  4. "_fakeError",
  5. smalltalk.method({
  6. selector: "fakeError",
  7. category: 'tests',
  8. fn: function (){
  9. var self=this;
  10. self["@flag"]="bad";
  11. smalltalk.send(self,"_graceTime_",[(10)]);
  12. self["@flag"]=smalltalk.send(smalltalk.send(self,"_async_",[(function(){
  13. self["@flag"]="ok";
  14. self["@flag"];
  15. return smalltalk.send(self,"_error_",["Intentional"]);
  16. })]),"_valueWithTimeout_",[(5)]);
  17. return self},
  18. args: [],
  19. source: "fakeError\x0a\x09flag := 'bad'.\x0a\x09self graceTime: 10.\x0a flag := (self async: [ flag := 'ok'. self error: 'Intentional' ]) valueWithTimeout: 5\x0a",
  20. messageSends: ["graceTime:", "valueWithTimeout:", "async:", "error:"],
  21. referencedClasses: []
  22. }),
  23. smalltalk.SUnitAsyncTest);
  24. smalltalk.addMethod(
  25. "_fakeErrorFailingInTearDown",
  26. smalltalk.method({
  27. selector: "fakeErrorFailingInTearDown",
  28. category: 'tests',
  29. fn: function (){
  30. var self=this;
  31. self["@flag"]="bad";
  32. smalltalk.send(self,"_graceTime_",[(10)]);
  33. self["@flag"]=smalltalk.send(smalltalk.send(self,"_async_",[(function(){
  34. return smalltalk.send(self,"_error_",["Intentional"]);
  35. })]),"_valueWithTimeout_",[(5)]);
  36. return self},
  37. args: [],
  38. source: "fakeErrorFailingInTearDown\x0a\x09flag := 'bad'.\x0a\x09self graceTime: 10.\x0a flag := (self async: [ self error: 'Intentional' ]) valueWithTimeout: 5\x0a",
  39. messageSends: ["graceTime:", "valueWithTimeout:", "async:", "error:"],
  40. referencedClasses: []
  41. }),
  42. smalltalk.SUnitAsyncTest);
  43. smalltalk.addMethod(
  44. "_fakeFailure",
  45. smalltalk.method({
  46. selector: "fakeFailure",
  47. category: 'tests',
  48. fn: function (){
  49. var self=this;
  50. self["@flag"]="bad";
  51. smalltalk.send(self,"_graceTime_",[(10)]);
  52. self["@flag"]=smalltalk.send(smalltalk.send(self,"_async_",[(function(){
  53. self["@flag"]="ok";
  54. self["@flag"];
  55. return smalltalk.send(self,"_assert_",[false]);
  56. })]),"_valueWithTimeout_",[(5)]);
  57. return self},
  58. args: [],
  59. source: "fakeFailure\x0a\x09flag := 'bad'.\x0a\x09self graceTime: 10.\x0a flag := (self async: [ flag := 'ok'. self assert: false ]) valueWithTimeout: 5\x0a",
  60. messageSends: ["graceTime:", "valueWithTimeout:", "async:", "assert:"],
  61. referencedClasses: []
  62. }),
  63. smalltalk.SUnitAsyncTest);
  64. smalltalk.addMethod(
  65. "_setUp",
  66. smalltalk.method({
  67. selector: "setUp",
  68. category: 'running',
  69. fn: function (){
  70. var self=this;
  71. self["@flag"]="ok";
  72. return self},
  73. args: [],
  74. source: "setUp\x0a\x09flag := 'ok'\x0a",
  75. messageSends: [],
  76. referencedClasses: []
  77. }),
  78. smalltalk.SUnitAsyncTest);
  79. smalltalk.addMethod(
  80. "_sortedSelectors_",
  81. smalltalk.method({
  82. selector: "sortedSelectors:",
  83. category: 'private',
  84. fn: function (aCollection){
  85. var self=this;
  86. var $1;
  87. $1=smalltalk.send(smalltalk.send(aCollection,"_collect_",[(function(each){
  88. return smalltalk.send(each,"_selector",[]);
  89. })]),"_sorted",[]);
  90. return $1;
  91. },
  92. args: ["aCollection"],
  93. source: "sortedSelectors: aCollection\x0a\x09^(aCollection collect: [:each | each selector]) sorted",
  94. messageSends: ["sorted", "collect:", "selector"],
  95. referencedClasses: []
  96. }),
  97. smalltalk.SUnitAsyncTest);
  98. smalltalk.addMethod(
  99. "_tearDown",
  100. smalltalk.method({
  101. selector: "tearDown",
  102. category: 'running',
  103. fn: function (){
  104. var self=this;
  105. smalltalk.send(self,"_assert_equals_",["ok",self["@flag"]]);
  106. return self},
  107. args: [],
  108. source: "tearDown\x0a\x09self assert: 'ok' equals: flag\x0a",
  109. messageSends: ["assert:equals:"],
  110. referencedClasses: []
  111. }),
  112. smalltalk.SUnitAsyncTest);
  113. smalltalk.addMethod(
  114. "_testAsyncErrorsAndFailuresWork",
  115. smalltalk.method({
  116. selector: "testAsyncErrorsAndFailuresWork",
  117. category: 'tests',
  118. fn: function (){
  119. var self=this;
  120. var $1,$2;
  121. var suite;
  122. var runner;
  123. var result;
  124. var assertBlock;
  125. suite=smalltalk.send(["fakeError", "fakeErrorFailingInTearDown", "fakeFailure", "testPass"],"_collect_",[(function(each){
  126. return smalltalk.send(smalltalk.send(self,"_class",[]),"_selector_",[each]);
  127. })]);
  128. runner=smalltalk.send((smalltalk.TestSuiteRunner || TestSuiteRunner),"_on_",[suite]);
  129. smalltalk.send(self,"_graceTime_",[(200)]);
  130. result=smalltalk.send(runner,"_result",[]);
  131. assertBlock=smalltalk.send(self,"_async_",[(function(){
  132. smalltalk.send(self,"_assert_equals_",[["fakeError"],smalltalk.send(self,"_sortedSelectors_",[smalltalk.send(result,"_errors",[])])]);
  133. smalltalk.send(self,"_assert_equals_",[["fakeErrorFailingInTearDown", "fakeFailure"],smalltalk.send(self,"_sortedSelectors_",[smalltalk.send(result,"_failures",[])])]);
  134. return smalltalk.send(self,"_finished",[]);
  135. })]);
  136. smalltalk.send(smalltalk.send(runner,"_announcer",[]),"_on_do_",[(smalltalk.ResultAnnouncement || ResultAnnouncement),(function(ann){
  137. $1=smalltalk.send(smalltalk.send(ann,"_result",[]),"__eq_eq",[result]);
  138. if(smalltalk.assert($1)){
  139. $2=smalltalk.send(smalltalk.send(result,"_runs",[]),"__eq",[smalltalk.send(result,"_total",[])]);
  140. return smalltalk.send($2,"_ifTrue_",[assertBlock]);
  141. };
  142. })]);
  143. smalltalk.send(runner,"_run",[]);
  144. return self},
  145. args: [],
  146. source: "testAsyncErrorsAndFailuresWork\x0a\x09| suite runner result assertBlock |\x0a\x09suite := #('fakeError' 'fakeErrorFailingInTearDown' 'fakeFailure' 'testPass') collect: [ :each | self class selector: each ].\x0a runner := TestSuiteRunner on: suite.\x0a self graceTime: 200.\x0a\x09result := runner result.\x0a assertBlock := self async: [\x0a\x09\x09self assert: #('fakeError') equals: (self sortedSelectors: result errors).\x0a\x09\x09self assert: #('fakeErrorFailingInTearDown' 'fakeFailure') equals: (self sortedSelectors: result failures).\x0a\x09\x09self finished\x0a \x09].\x0a runner announcer on: ResultAnnouncement do: [:ann |\x0a \x09ann result == result ifTrue: [ result runs = result total ifTrue: assertBlock ]].\x0a\x09runner run",
  147. messageSends: ["collect:", "selector:", "class", "on:", "graceTime:", "result", "async:", "assert:equals:", "sortedSelectors:", "errors", "failures", "finished", "on:do:", "ifTrue:", "=", "total", "runs", "==", "announcer", "run"],
  148. referencedClasses: ["TestSuiteRunner", "ResultAnnouncement"]
  149. }),
  150. smalltalk.SUnitAsyncTest);
  151. smalltalk.addMethod(
  152. "_testAsyncNeedsGraceTime",
  153. smalltalk.method({
  154. selector: "testAsyncNeedsGraceTime",
  155. category: 'tests',
  156. fn: function (){
  157. var self=this;
  158. smalltalk.send(self,"_should_raise_",[(function(){
  159. return smalltalk.send(self,"_async_",[(function(){
  160. })]);
  161. }),(smalltalk.Error || Error)]);
  162. smalltalk.send(self,"_graceTime_",[(0)]);
  163. smalltalk.send(self,"_shouldnt_raise_",[(function(){
  164. return smalltalk.send(self,"_async_",[(function(){
  165. })]);
  166. }),(smalltalk.Error || Error)]);
  167. smalltalk.send(self,"_finished",[]);
  168. return self},
  169. args: [],
  170. source: "testAsyncNeedsGraceTime\x0a self should: [ self async: [ ] ] raise: Error.\x0a self graceTime: 0.\x0a self shouldnt: [ self async: [ ] ] raise: Error.\x0a self finished\x0a",
  171. messageSends: ["should:raise:", "async:", "graceTime:", "shouldnt:raise:", "finished"],
  172. referencedClasses: ["Error"]
  173. }),
  174. smalltalk.SUnitAsyncTest);
  175. smalltalk.addMethod(
  176. "_testFinishedNeedsGraceTime",
  177. smalltalk.method({
  178. selector: "testFinishedNeedsGraceTime",
  179. category: 'tests',
  180. fn: function (){
  181. var self=this;
  182. smalltalk.send(self,"_should_raise_",[(function(){
  183. return smalltalk.send(self,"_finished",[]);
  184. }),(smalltalk.Error || Error)]);
  185. smalltalk.send(self,"_graceTime_",[(0)]);
  186. smalltalk.send(self,"_shouldnt_raise_",[(function(){
  187. return smalltalk.send(self,"_finished",[]);
  188. }),(smalltalk.Error || Error)]);
  189. return self},
  190. args: [],
  191. source: "testFinishedNeedsGraceTime\x0a self should: [ self finished ] raise: Error.\x0a self graceTime: 0.\x0a self shouldnt: [ self finished ] raise: Error.\x0a",
  192. messageSends: ["should:raise:", "finished", "graceTime:", "shouldnt:raise:"],
  193. referencedClasses: ["Error"]
  194. }),
  195. smalltalk.SUnitAsyncTest);
  196. smalltalk.addMethod(
  197. "_testIsAsyncReturnsCorrectValues",
  198. smalltalk.method({
  199. selector: "testIsAsyncReturnsCorrectValues",
  200. category: 'tests',
  201. fn: function (){
  202. var self=this;
  203. smalltalk.send(self,"_deny_",[smalltalk.send(self,"_isAsync",[])]);
  204. smalltalk.send(self,"_graceTime_",[(0)]);
  205. smalltalk.send(self,"_assert_",[smalltalk.send(self,"_isAsync",[])]);
  206. smalltalk.send(self,"_finished",[]);
  207. smalltalk.send(self,"_deny_",[smalltalk.send(self,"_isAsync",[])]);
  208. return self},
  209. args: [],
  210. source: "testIsAsyncReturnsCorrectValues\x0a self deny: self isAsync.\x0a self graceTime: 0.\x0a self assert: self isAsync.\x0a self finished.\x0a self deny: self isAsync\x0a",
  211. messageSends: ["deny:", "isAsync", "graceTime:", "assert:", "finished"],
  212. referencedClasses: []
  213. }),
  214. smalltalk.SUnitAsyncTest);
  215. smalltalk.addMethod(
  216. "_testPass",
  217. smalltalk.method({
  218. selector: "testPass",
  219. category: 'tests',
  220. fn: function (){
  221. var self=this;
  222. self["@flag"]="bad";
  223. smalltalk.send(self,"_graceTime_",[(10)]);
  224. self["@flag"]=smalltalk.send(smalltalk.send(self,"_async_",[(function(){
  225. smalltalk.send(self,"_assert_",[true]);
  226. smalltalk.send(self,"_finished",[]);
  227. self["@flag"]="ok";
  228. return self["@flag"];
  229. })]),"_valueWithTimeout_",[(5)]);
  230. return self},
  231. args: [],
  232. source: "testPass\x0a\x09flag := 'bad'.\x0a\x09self graceTime: 10.\x0a flag := (self async: [ self assert: true. self finished. flag := 'ok' ]) valueWithTimeout: 5\x0a",
  233. messageSends: ["graceTime:", "valueWithTimeout:", "async:", "assert:", "finished"],
  234. referencedClasses: []
  235. }),
  236. smalltalk.SUnitAsyncTest);
  237. smalltalk.addMethod(
  238. "_testTwoAsyncPassesWithFinishedOnlyOneIsRun",
  239. smalltalk.method({
  240. selector: "testTwoAsyncPassesWithFinishedOnlyOneIsRun",
  241. category: 'tests',
  242. fn: function (){
  243. var self=this;
  244. var x;
  245. self["@flag"]="bad";
  246. smalltalk.send(self,"_graceTime_",[(10)]);
  247. x=(0);
  248. self["@flag"]=smalltalk.send(smalltalk.send(self,"_async_",[(function(){
  249. smalltalk.send(self,"_finished",[]);
  250. self["@flag"]="ok";
  251. self["@flag"];
  252. x=smalltalk.send(x,"__plus",[(1)]);
  253. x;
  254. return smalltalk.send(self,"_assert_equals_",[(1),x]);
  255. })]),"_valueWithTimeout_",[(0)]);
  256. self["@flag"]=smalltalk.send(smalltalk.send(self,"_async_",[(function(){
  257. smalltalk.send(self,"_finished",[]);
  258. self["@flag"]="ok";
  259. self["@flag"];
  260. x=smalltalk.send(x,"__plus",[(1)]);
  261. x;
  262. return smalltalk.send(self,"_assert_equals_",[(1),x]);
  263. })]),"_valueWithTimeout_",[(0)]);
  264. return self},
  265. args: [],
  266. source: "testTwoAsyncPassesWithFinishedOnlyOneIsRun\x0a\x09| x |\x0a\x09flag := 'bad'.\x0a\x09self graceTime: 10.\x0a x := 0.\x0a flag := (self async: [ self finished. flag := 'ok'. x := x+1. self assert: 1 equals: x ]) valueWithTimeout: 0.\x0a flag := (self async: [ self finished. flag := 'ok'. x := x+1. self assert: 1 equals: x ]) valueWithTimeout: 0.\x0a",
  267. messageSends: ["graceTime:", "valueWithTimeout:", "async:", "finished", "+", "assert:equals:"],
  268. referencedClasses: []
  269. }),
  270. smalltalk.SUnitAsyncTest);