Axxord-Tests.js 39 KB

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