Axxord-Tests.js 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414
  1. define(["amber/boot", "amber_core/SUnit", "axxord/Axxord"], function($boot){"use strict";
  2. if(!$boot.nilAsReceiver)$boot.nilAsReceiver=$boot.nil;
  3. if(!("nilAsValue" in $boot))$boot.nilAsValue=$boot.nilAsReceiver;
  4. var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
  5. if(!$boot.nilAsClass)$boot.nilAsClass=$boot.dnu;
  6. $core.addPackage("Axxord-Tests");
  7. $core.packages["Axxord-Tests"].innerEval = function (expr) { return eval(expr); };
  8. $core.packages["Axxord-Tests"].transport = {"type":"amd","amdNamespace":"axxord"};
  9. $core.addClass("PlainConsumeTransformTest", $globals.TestCase, [], "Axxord-Tests");
  10. $core.addMethod(
  11. $core.method({
  12. selector: "testModelTransformSentToAxon",
  13. protocol: "tests",
  14. fn: function (){
  15. var self=this,$self=this;
  16. var model,result,axon;
  17. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18. return $core.withContext(function($ctx1) {
  19. //>>excludeEnd("ctx");
  20. result=nil;
  21. model=$globals.HashedCollection._newFromPairs_(["foo",["bar", [(1), [(2), (3)]], "baz"],"moo","zoo"]);
  22. axon=$recv($globals.TestSpyAxon)._new();
  23. $recv(axon)._registerIn_(model);
  24. $recv(model)._axes_transform_(["foo", (2)],(function(r){
  25. return "new";
  26. }));
  27. $self._assert_equals_($recv(axon)._changedAspectLog(),[["foo", (2)]]);
  28. return self;
  29. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30. }, function($ctx1) {$ctx1.fill(self,"testModelTransformSentToAxon",{model:model,result:result,axon:axon},$globals.PlainConsumeTransformTest)});
  31. //>>excludeEnd("ctx");
  32. },
  33. //>>excludeStart("ide", pragmas.excludeIdeData);
  34. args: [],
  35. source: "testModelTransformSentToAxon\x0a| model result axon |\x0aresult := nil.\x0amodel := #{ 'foo' -> #('bar' #(1 #(2 3)) 'baz'). 'moo' -> 'zoo' }.\x0aaxon := TestSpyAxon new.\x0aaxon registerIn: model.\x0amodel axes: #(foo 2) transform: [:r | #new].\x0aself assert: axon changedAspectLog equals: #((foo 2))",
  36. referencedClasses: ["TestSpyAxon"],
  37. //>>excludeEnd("ide");
  38. messageSends: ["new", "registerIn:", "axes:transform:", "assert:equals:", "changedAspectLog"]
  39. }),
  40. $globals.PlainConsumeTransformTest);
  41. $core.addMethod(
  42. $core.method({
  43. selector: "testNontrivialModelGetsAppropriateValueForTransform",
  44. protocol: "tests",
  45. fn: function (){
  46. var self=this,$self=this;
  47. var model,result;
  48. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49. return $core.withContext(function($ctx1) {
  50. //>>excludeEnd("ctx");
  51. result=nil;
  52. model=$globals.HashedCollection._newFromPairs_(["foo",["bar", [(1), [(2), (5)]], "baz"],"moo","zoo"]);
  53. $recv(model)._axes_transform_(["foo", (2)],(function(r){
  54. result=r;
  55. return result;
  56. }));
  57. $self._assert_equals_([(1), [(2), (5)]],result);
  58. return self;
  59. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60. }, function($ctx1) {$ctx1.fill(self,"testNontrivialModelGetsAppropriateValueForTransform",{model:model,result:result},$globals.PlainConsumeTransformTest)});
  61. //>>excludeEnd("ctx");
  62. },
  63. //>>excludeStart("ide", pragmas.excludeIdeData);
  64. args: [],
  65. source: "testNontrivialModelGetsAppropriateValueForTransform\x0a| model result |\x0aresult := nil.\x0amodel := #{ 'foo' -> #('bar' #(1 #(2 5)) 'baz'). 'moo' -> 'zoo' }.\x0amodel axes: #(foo 2) transform: [:r | result := r].\x0aself assert: #(1 #(2 5)) equals: result",
  66. referencedClasses: [],
  67. //>>excludeEnd("ide");
  68. messageSends: ["axes:transform:", "assert:equals:"]
  69. }),
  70. $globals.PlainConsumeTransformTest);
  71. $core.addMethod(
  72. $core.method({
  73. selector: "testNontrivialModelReturnsAppropriateValue",
  74. protocol: "tests",
  75. fn: function (){
  76. var self=this,$self=this;
  77. var model,result;
  78. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79. return $core.withContext(function($ctx1) {
  80. //>>excludeEnd("ctx");
  81. result=nil;
  82. model=$globals.HashedCollection._newFromPairs_(["foo",["bar", [(1), [(2), (3)]], "baz"],"moo","zoo"]);
  83. $recv(model)._axes_consume_(["foo", (2)],(function(r){
  84. result=r;
  85. return result;
  86. }));
  87. $self._assert_equals_([(1), [(2), (3)]],result);
  88. return self;
  89. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90. }, function($ctx1) {$ctx1.fill(self,"testNontrivialModelReturnsAppropriateValue",{model:model,result:result},$globals.PlainConsumeTransformTest)});
  91. //>>excludeEnd("ctx");
  92. },
  93. //>>excludeStart("ide", pragmas.excludeIdeData);
  94. args: [],
  95. source: "testNontrivialModelReturnsAppropriateValue\x0a| model result |\x0aresult := nil.\x0amodel := #{ 'foo' -> #('bar' #(1 #(2 3)) 'baz'). 'moo' -> 'zoo' }.\x0amodel axes: #(foo 2) consume: [:r | result := r].\x0aself assert: #(1 #(2 3)) equals: result",
  96. referencedClasses: [],
  97. //>>excludeEnd("ide");
  98. messageSends: ["axes:consume:", "assert:equals:"]
  99. }),
  100. $globals.PlainConsumeTransformTest);
  101. $core.addMethod(
  102. $core.method({
  103. selector: "testNontrivialModelTransformsAppropriateValue",
  104. protocol: "tests",
  105. fn: function (){
  106. var self=this,$self=this;
  107. var model,result;
  108. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  109. return $core.withContext(function($ctx1) {
  110. //>>excludeEnd("ctx");
  111. result=nil;
  112. model=$globals.HashedCollection._newFromPairs_(["foo",["bar", [(1), [(2), (3)]], "baz"],"moo","zoo"]);
  113. $recv(model)._axes_transform_(["foo", (2)],(function(r){
  114. return "new";
  115. }));
  116. $recv(model)._axes_consume_(["foo", (2)],(function(r){
  117. result=r;
  118. return result;
  119. }));
  120. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  121. $ctx1.sendIdx["axes:consume:"]=1;
  122. //>>excludeEnd("ctx");
  123. $self._assert_equals_("new",result);
  124. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  125. $ctx1.sendIdx["assert:equals:"]=1;
  126. //>>excludeEnd("ctx");
  127. $recv(model)._axes_consume_([],(function(r){
  128. result=r;
  129. return result;
  130. }));
  131. $self._assert_equals_($globals.HashedCollection._newFromPairs_(["foo",["bar", "new", "baz"],"moo","zoo"]),result);
  132. return self;
  133. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  134. }, function($ctx1) {$ctx1.fill(self,"testNontrivialModelTransformsAppropriateValue",{model:model,result:result},$globals.PlainConsumeTransformTest)});
  135. //>>excludeEnd("ctx");
  136. },
  137. //>>excludeStart("ide", pragmas.excludeIdeData);
  138. args: [],
  139. source: "testNontrivialModelTransformsAppropriateValue\x0a| model result |\x0aresult := nil.\x0amodel := #{ 'foo' -> #('bar' #(1 #(2 3)) 'baz'). 'moo' -> 'zoo' }.\x0amodel axes: #(foo 2) transform: [:r | #new].\x0amodel axes: #(foo 2) consume: [:r | result := r].\x0aself assert: #new equals: result.\x0amodel axes: #() consume: [:r | result := r].\x0aself assert: #{ 'foo' -> #('bar' #new 'baz'). 'moo' -> 'zoo' } equals: result",
  140. referencedClasses: [],
  141. //>>excludeEnd("ide");
  142. messageSends: ["axes:transform:", "axes:consume:", "assert:equals:"]
  143. }),
  144. $globals.PlainConsumeTransformTest);
  145. $core.addMethod(
  146. $core.method({
  147. selector: "testRootModelCannotTransform",
  148. protocol: "tests",
  149. fn: function (){
  150. var self=this,$self=this;
  151. var model,result;
  152. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  153. return $core.withContext(function($ctx1) {
  154. //>>excludeEnd("ctx");
  155. result=nil;
  156. model=[(1), [(2), (3)]];
  157. $self._should_raise_((function(){
  158. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  159. return $core.withContext(function($ctx2) {
  160. //>>excludeEnd("ctx");
  161. return $recv(model)._axes_transform_([],(function(r){
  162. return $globals.HashedCollection._newFromPairs_(["foo",[(4), (5), (6)]]);
  163. }));
  164. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  165. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  166. //>>excludeEnd("ctx");
  167. }),$globals.Error);
  168. return self;
  169. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  170. }, function($ctx1) {$ctx1.fill(self,"testRootModelCannotTransform",{model:model,result:result},$globals.PlainConsumeTransformTest)});
  171. //>>excludeEnd("ctx");
  172. },
  173. //>>excludeStart("ide", pragmas.excludeIdeData);
  174. args: [],
  175. source: "testRootModelCannotTransform\x0a| model result |\x0aresult := nil.\x0amodel := #(1 #(2 3)).\x0aself should: [ model axes: #() transform: [:r | #{'foo'->#(4 5 6)}] ] raise: Error",
  176. referencedClasses: ["Error"],
  177. //>>excludeEnd("ide");
  178. messageSends: ["should:raise:", "axes:transform:"]
  179. }),
  180. $globals.PlainConsumeTransformTest);
  181. $core.addMethod(
  182. $core.method({
  183. selector: "testRootModelReturnsDirectRoot",
  184. protocol: "tests",
  185. fn: function (){
  186. var self=this,$self=this;
  187. var model,result;
  188. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  189. return $core.withContext(function($ctx1) {
  190. //>>excludeEnd("ctx");
  191. result=nil;
  192. model=[(1), [(2), (4)]];
  193. $recv(model)._axes_consume_([],(function(r){
  194. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  195. return $core.withContext(function($ctx2) {
  196. //>>excludeEnd("ctx");
  197. return $recv(r)._at_put_((2),nil);
  198. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  199. }, function($ctx2) {$ctx2.fillBlock({r:r},$ctx1,1)});
  200. //>>excludeEnd("ctx");
  201. }));
  202. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  203. $ctx1.sendIdx["axes:consume:"]=1;
  204. //>>excludeEnd("ctx");
  205. $recv(model)._axes_consume_([],(function(r){
  206. result=r;
  207. return result;
  208. }));
  209. $self._assert_equals_([(1), nil],result);
  210. return self;
  211. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  212. }, function($ctx1) {$ctx1.fill(self,"testRootModelReturnsDirectRoot",{model:model,result:result},$globals.PlainConsumeTransformTest)});
  213. //>>excludeEnd("ctx");
  214. },
  215. //>>excludeStart("ide", pragmas.excludeIdeData);
  216. args: [],
  217. source: "testRootModelReturnsDirectRoot\x0a| model result |\x0aresult := nil.\x0amodel := #(1 #(2 4)).\x0amodel axes: #() consume: [:r | r at: 2 put: nil].\x0amodel axes: #() consume: [:r | result := r].\x0aself assert: #(1 nil) equals: result",
  218. referencedClasses: [],
  219. //>>excludeEnd("ide");
  220. messageSends: ["axes:consume:", "at:put:", "assert:equals:"]
  221. }),
  222. $globals.PlainConsumeTransformTest);
  223. $core.addMethod(
  224. $core.method({
  225. selector: "testRootModelReturnsRoot",
  226. protocol: "tests",
  227. fn: function (){
  228. var self=this,$self=this;
  229. var model,result;
  230. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  231. return $core.withContext(function($ctx1) {
  232. //>>excludeEnd("ctx");
  233. result=nil;
  234. model=[(1), [(2), (3)]];
  235. $recv(model)._axes_consume_([],(function(r){
  236. result=r;
  237. return result;
  238. }));
  239. $self._assert_equals_([(1), [(2), (3)]],result);
  240. return self;
  241. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  242. }, function($ctx1) {$ctx1.fill(self,"testRootModelReturnsRoot",{model:model,result:result},$globals.PlainConsumeTransformTest)});
  243. //>>excludeEnd("ctx");
  244. },
  245. //>>excludeStart("ide", pragmas.excludeIdeData);
  246. args: [],
  247. source: "testRootModelReturnsRoot\x0a| model result |\x0aresult := nil.\x0amodel := #(1 #(2 3)).\x0amodel axes: #() consume: [:r | result := r].\x0aself assert: #(1 #(2 3)) equals: result",
  248. referencedClasses: [],
  249. //>>excludeEnd("ide");
  250. messageSends: ["axes:consume:", "assert:equals:"]
  251. }),
  252. $globals.PlainConsumeTransformTest);
  253. $core.addMethod(
  254. $core.method({
  255. selector: "testRootTransformBlockIsNotRun",
  256. protocol: "tests",
  257. fn: function (){
  258. var self=this,$self=this;
  259. var model,result;
  260. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  261. return $core.withContext(function($ctx1) {
  262. //>>excludeEnd("ctx");
  263. result=nil;
  264. model=[(2), [(1), (0)]];
  265. $recv((function(){
  266. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  267. return $core.withContext(function($ctx2) {
  268. //>>excludeEnd("ctx");
  269. return $recv(model)._axes_transform_([],(function(r){
  270. result=r;
  271. return result;
  272. }));
  273. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  274. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  275. //>>excludeEnd("ctx");
  276. }))._on_do_($globals.Error,(function(){
  277. }));
  278. $self._assert_($recv(result)._isNil());
  279. return self;
  280. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  281. }, function($ctx1) {$ctx1.fill(self,"testRootTransformBlockIsNotRun",{model:model,result:result},$globals.PlainConsumeTransformTest)});
  282. //>>excludeEnd("ctx");
  283. },
  284. //>>excludeStart("ide", pragmas.excludeIdeData);
  285. args: [],
  286. source: "testRootTransformBlockIsNotRun\x0a| model result |\x0aresult := nil.\x0amodel := #(2 #(1 0)).\x0a[model axes: #() transform: [:r | result := r]] on: Error do: [].\x0aself assert: result isNil",
  287. referencedClasses: ["Error"],
  288. //>>excludeEnd("ide");
  289. messageSends: ["on:do:", "axes:transform:", "assert:", "isNil"]
  290. }),
  291. $globals.PlainConsumeTransformTest);
  292. $core.addClass("TestSpyAxon", $globals.DumbAxon, ["changedAspectLog"], "Axxord-Tests");
  293. //>>excludeStart("ide", pragmas.excludeIdeData);
  294. $globals.TestSpyAxon.comment="I am an axon that logs changed aspects. I am useful in tests.";
  295. //>>excludeEnd("ide");
  296. $core.addMethod(
  297. $core.method({
  298. selector: "changed:",
  299. protocol: "action",
  300. fn: function (anAspect){
  301. var self=this;
  302. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  303. return $core.withContext(function($ctx1) {
  304. //>>excludeEnd("ctx");
  305. $recv(self["@changedAspectLog"])._add_(anAspect);
  306. return self;
  307. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  308. }, function($ctx1) {$ctx1.fill(self,"changed:",{anAspect:anAspect},$globals.TestSpyAxon)});
  309. //>>excludeEnd("ctx");
  310. },
  311. //>>excludeStart("ide", pragmas.excludeIdeData);
  312. args: ["anAspect"],
  313. source: "changed: anAspect\x0a\x09changedAspectLog add: anAspect",
  314. referencedClasses: [],
  315. //>>excludeEnd("ide");
  316. messageSends: ["add:"]
  317. }),
  318. $globals.TestSpyAxon);
  319. $core.addMethod(
  320. $core.method({
  321. selector: "changedAspectLog",
  322. protocol: "accessing",
  323. fn: function (){
  324. var self=this;
  325. var $1;
  326. $1=self["@changedAspectLog"];
  327. return $1;
  328. },
  329. //>>excludeStart("ide", pragmas.excludeIdeData);
  330. args: [],
  331. source: "changedAspectLog\x0a\x09^ changedAspectLog",
  332. referencedClasses: [],
  333. //>>excludeEnd("ide");
  334. messageSends: []
  335. }),
  336. $globals.TestSpyAxon);
  337. $core.addMethod(
  338. $core.method({
  339. selector: "changedAspectLog:",
  340. protocol: "accessing",
  341. fn: function (anObject){
  342. var self=this;
  343. self["@changedAspectLog"]=anObject;
  344. return self;
  345. },
  346. //>>excludeStart("ide", pragmas.excludeIdeData);
  347. args: ["anObject"],
  348. source: "changedAspectLog: anObject\x0a\x09changedAspectLog := anObject",
  349. referencedClasses: [],
  350. //>>excludeEnd("ide");
  351. messageSends: []
  352. }),
  353. $globals.TestSpyAxon);
  354. $core.addMethod(
  355. $core.method({
  356. selector: "initialize",
  357. protocol: "initialization",
  358. fn: function (){
  359. var self=this;
  360. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  361. return $core.withContext(function($ctx1) {
  362. //>>excludeEnd("ctx");
  363. (
  364. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  365. $ctx1.supercall = true,
  366. //>>excludeEnd("ctx");
  367. $globals.TestSpyAxon.superclass.fn.prototype._initialize.apply($recv(self), []));
  368. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  369. $ctx1.supercall = false;
  370. //>>excludeEnd("ctx");;
  371. self["@changedAspectLog"]=[];
  372. return self;
  373. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  374. }, function($ctx1) {$ctx1.fill(self,"initialize",{},$globals.TestSpyAxon)});
  375. //>>excludeEnd("ctx");
  376. },
  377. //>>excludeStart("ide", pragmas.excludeIdeData);
  378. args: [],
  379. source: "initialize\x0a\x09super initialize.\x0a\x0a\x09changedAspectLog := #()",
  380. referencedClasses: [],
  381. //>>excludeEnd("ide");
  382. messageSends: ["initialize"]
  383. }),
  384. $globals.TestSpyAxon);
  385. });