SUnit-Tests.js 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  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. smalltalk.send(self,"_error_",["Intentional"]);
  14. smalltalk.send(self,"_finished",[]);
  15. self["@flag"]="ok";
  16. return self["@flag"];
  17. })]),"_valueWithTimeout_",[(5)]);
  18. return self},
  19. args: [],
  20. source: "fakeError\x0a\x09flag := 'bad'.\x0a\x09self graceTime: 10.\x0a flag := (self async: [ self error: 'Intentional'. self finished. flag := 'ok' ]) valueWithTimeout: 5\x0a",
  21. messageSends: ["graceTime:", "valueWithTimeout:", "async:", "error:", "finished"],
  22. referencedClasses: []
  23. }),
  24. smalltalk.SUnitAsyncTest);
  25. smalltalk.addMethod(
  26. "_fakeFailure",
  27. smalltalk.method({
  28. selector: "fakeFailure",
  29. category: 'tests',
  30. fn: function (){
  31. var self=this;
  32. self["@flag"]="bad";
  33. smalltalk.send(self,"_graceTime_",[(10)]);
  34. self["@flag"]=smalltalk.send(smalltalk.send(self,"_async_",[(function(){
  35. smalltalk.send(self,"_assert_",[false]);
  36. smalltalk.send(self,"_finished",[]);
  37. self["@flag"]="ok";
  38. return self["@flag"];
  39. })]),"_valueWithTimeout_",[(5)]);
  40. return self},
  41. args: [],
  42. source: "fakeFailure\x0a\x09flag := 'bad'.\x0a\x09self graceTime: 10.\x0a flag := (self async: [ self assert: false. self finished. flag := 'ok' ]) valueWithTimeout: 5\x0a",
  43. messageSends: ["graceTime:", "valueWithTimeout:", "async:", "assert:", "finished"],
  44. referencedClasses: []
  45. }),
  46. smalltalk.SUnitAsyncTest);
  47. smalltalk.addMethod(
  48. "_setUp",
  49. smalltalk.method({
  50. selector: "setUp",
  51. category: 'running',
  52. fn: function (){
  53. var self=this;
  54. self["@flag"]="ok";
  55. return self},
  56. args: [],
  57. source: "setUp\x0a\x09flag := 'ok'\x0a",
  58. messageSends: [],
  59. referencedClasses: []
  60. }),
  61. smalltalk.SUnitAsyncTest);
  62. smalltalk.addMethod(
  63. "_tearDown",
  64. smalltalk.method({
  65. selector: "tearDown",
  66. category: 'running',
  67. fn: function (){
  68. var self=this;
  69. smalltalk.send(self,"_assert_equals_",["ok",self["@flag"]]);
  70. return self},
  71. args: [],
  72. source: "tearDown\x0a\x09self assert: 'ok' equals: flag\x0a",
  73. messageSends: ["assert:equals:"],
  74. referencedClasses: []
  75. }),
  76. smalltalk.SUnitAsyncTest);
  77. smalltalk.addMethod(
  78. "_testAsyncErrorsAndFailuresWork",
  79. smalltalk.method({
  80. selector: "testAsyncErrorsAndFailuresWork",
  81. category: 'tests',
  82. fn: function (){
  83. var self=this;
  84. var $1,$2;
  85. var suite;
  86. var runner;
  87. var result;
  88. var assertBlock;
  89. suite=[smalltalk.send(smalltalk.send(self,"_class",[]),"_selector_",["fakeError"]),smalltalk.send(smalltalk.send(self,"_class",[]),"_selector_",["fakeFailure"]),smalltalk.send(smalltalk.send(self,"_class",[]),"_selector_",["testPass"])];
  90. runner=smalltalk.send((smalltalk.TestSuiteRunner || TestSuiteRunner),"_on_",[suite]);
  91. smalltalk.send(self,"_graceTime_",[(200)]);
  92. result=smalltalk.send(runner,"_result",[]);
  93. assertBlock=smalltalk.send(self,"_async_",[(function(){
  94. smalltalk.send(self,"_assert_equals_",[(1),smalltalk.send(smalltalk.send(result,"_errors",[]),"_size",[])]);
  95. smalltalk.send(self,"_assert_equals_",["fakeError",smalltalk.send(smalltalk.send(smalltalk.send(result,"_errors",[]),"_first",[]),"_selector",[])]);
  96. smalltalk.send(self,"_assert_equals_",[(1),smalltalk.send(smalltalk.send(result,"_failures",[]),"_size",[])]);
  97. smalltalk.send(self,"_assert_equals_",["fakeFailure",smalltalk.send(smalltalk.send(smalltalk.send(result,"_failures",[]),"_first",[]),"_selector",[])]);
  98. return smalltalk.send(self,"_finished",[]);
  99. })]);
  100. smalltalk.send(smalltalk.send(runner,"_announcer",[]),"_on_do_",[(smalltalk.ResultAnnouncement || ResultAnnouncement),(function(ann){
  101. $1=smalltalk.send(smalltalk.send(ann,"_result",[]),"__eq_eq",[result]);
  102. if(smalltalk.assert($1)){
  103. $2=smalltalk.send(smalltalk.send(result,"_runs",[]),"__eq",[smalltalk.send(result,"_total",[])]);
  104. return smalltalk.send($2,"_ifTrue_",[assertBlock]);
  105. };
  106. })]);
  107. smalltalk.send(runner,"_run",[]);
  108. return self},
  109. args: [],
  110. source: "testAsyncErrorsAndFailuresWork\x0a\x09| suite runner result assertBlock |\x0a\x09suite := { self class selector: 'fakeError'. self class selector: 'fakeFailure'. self class selector: 'testPass' }.\x0a runner := TestSuiteRunner on: suite.\x0a self graceTime: 200.\x0a\x09result := runner result.\x0a assertBlock := self async: [\x0a\x09\x09self assert: 1 equals: result errors size.\x0a\x09\x09self assert: 'fakeError' equals: result errors first selector.\x0a\x09\x09self assert: 1 equals: result failures size.\x0a\x09\x09self assert: 'fakeFailure' equals: result failures first selector.\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",
  111. messageSends: ["selector:", "class", "on:", "graceTime:", "result", "async:", "assert:equals:", "size", "errors", "selector", "first", "failures", "finished", "on:do:", "ifTrue:", "=", "total", "runs", "==", "announcer", "run"],
  112. referencedClasses: ["TestSuiteRunner", "ResultAnnouncement"]
  113. }),
  114. smalltalk.SUnitAsyncTest);
  115. smalltalk.addMethod(
  116. "_testAsyncNeedsGraceTime",
  117. smalltalk.method({
  118. selector: "testAsyncNeedsGraceTime",
  119. category: 'tests',
  120. fn: function (){
  121. var self=this;
  122. smalltalk.send(self,"_should_raise_",[(function(){
  123. return smalltalk.send(self,"_async_",[(function(){
  124. })]);
  125. }),(smalltalk.Error || Error)]);
  126. smalltalk.send(self,"_graceTime_",[(0)]);
  127. smalltalk.send(self,"_shouldnt_raise_",[(function(){
  128. return smalltalk.send(self,"_async_",[(function(){
  129. })]);
  130. }),(smalltalk.Error || Error)]);
  131. smalltalk.send(self,"_finished",[]);
  132. return self},
  133. args: [],
  134. source: "testAsyncNeedsGraceTime\x0a self should: [ self async: [ ] ] raise: Error.\x0a self graceTime: 0.\x0a self shouldnt: [ self async: [ ] ] raise: Error.\x0a self finished\x0a",
  135. messageSends: ["should:raise:", "async:", "graceTime:", "shouldnt:raise:", "finished"],
  136. referencedClasses: ["Error"]
  137. }),
  138. smalltalk.SUnitAsyncTest);
  139. smalltalk.addMethod(
  140. "_testFinishedNeedsGraceTime",
  141. smalltalk.method({
  142. selector: "testFinishedNeedsGraceTime",
  143. category: 'tests',
  144. fn: function (){
  145. var self=this;
  146. smalltalk.send(self,"_should_raise_",[(function(){
  147. return smalltalk.send(self,"_finished",[]);
  148. }),(smalltalk.Error || Error)]);
  149. smalltalk.send(self,"_graceTime_",[(0)]);
  150. smalltalk.send(self,"_shouldnt_raise_",[(function(){
  151. return smalltalk.send(self,"_finished",[]);
  152. }),(smalltalk.Error || Error)]);
  153. return self},
  154. args: [],
  155. source: "testFinishedNeedsGraceTime\x0a self should: [ self finished ] raise: Error.\x0a self graceTime: 0.\x0a self shouldnt: [ self finished ] raise: Error.\x0a",
  156. messageSends: ["should:raise:", "finished", "graceTime:", "shouldnt:raise:"],
  157. referencedClasses: ["Error"]
  158. }),
  159. smalltalk.SUnitAsyncTest);
  160. smalltalk.addMethod(
  161. "_testIsAsyncReturnsCorrectValues",
  162. smalltalk.method({
  163. selector: "testIsAsyncReturnsCorrectValues",
  164. category: 'tests',
  165. fn: function (){
  166. var self=this;
  167. smalltalk.send(self,"_deny_",[smalltalk.send(self,"_isAsync",[])]);
  168. smalltalk.send(self,"_graceTime_",[(0)]);
  169. smalltalk.send(self,"_assert_",[smalltalk.send(self,"_isAsync",[])]);
  170. smalltalk.send(self,"_finished",[]);
  171. smalltalk.send(self,"_deny_",[smalltalk.send(self,"_isAsync",[])]);
  172. return self},
  173. args: [],
  174. 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",
  175. messageSends: ["deny:", "isAsync", "graceTime:", "assert:", "finished"],
  176. referencedClasses: []
  177. }),
  178. smalltalk.SUnitAsyncTest);
  179. smalltalk.addMethod(
  180. "_testPass",
  181. smalltalk.method({
  182. selector: "testPass",
  183. category: 'tests',
  184. fn: function (){
  185. var self=this;
  186. self["@flag"]="bad";
  187. smalltalk.send(self,"_graceTime_",[(10)]);
  188. self["@flag"]=smalltalk.send(smalltalk.send(self,"_async_",[(function(){
  189. smalltalk.send(self,"_assert_",[true]);
  190. smalltalk.send(self,"_finished",[]);
  191. self["@flag"]="ok";
  192. return self["@flag"];
  193. })]),"_valueWithTimeout_",[(5)]);
  194. return self},
  195. args: [],
  196. source: "testPass\x0a\x09flag := 'bad'.\x0a\x09self graceTime: 10.\x0a flag := (self async: [ self assert: true. self finished. flag := 'ok' ]) valueWithTimeout: 5\x0a",
  197. messageSends: ["graceTime:", "valueWithTimeout:", "async:", "assert:", "finished"],
  198. referencedClasses: []
  199. }),
  200. smalltalk.SUnitAsyncTest);