define(["amber/boot", "amber_core/SUnit", "axxord/Axxord"], function($boot){"use strict"; if(!$boot.nilAsReceiver)$boot.nilAsReceiver=$boot.nil; if(!("nilAsValue" in $boot))$boot.nilAsValue=$boot.nilAsReceiver; var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals; if(!$boot.nilAsClass)$boot.nilAsClass=$boot.dnu; $core.addPackage("Axxord-Tests"); $core.packages["Axxord-Tests"].innerEval = function (expr) { return eval(expr); }; $core.packages["Axxord-Tests"].transport = {"type":"amd","amdNamespace":"axxord"}; $core.addClass("PlainConsumeTransformTest", $globals.TestCase, [], "Axxord-Tests"); $core.addMethod( $core.method({ selector: "testModelTransformSentToAxon", protocol: "tests", fn: function (){ var self=this,$self=this; var model,result,axon; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); result=nil; model=$globals.HashedCollection._newFromPairs_(["foo",["bar", [(1), [(2), (3)]], "baz"],"moo","zoo"]); axon=$recv($globals.TestSpyAxon)._new(); $recv(axon)._registerIn_(model); $recv(model)._axes_transform_(["foo", (2)],(function(r){ return "new"; })); $self._assert_equals_($recv(axon)._changedAspectLog(),[["foo", (2)]]); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testModelTransformSentToAxon",{model:model,result:result,axon:axon},$globals.PlainConsumeTransformTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], 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))", referencedClasses: ["TestSpyAxon"], //>>excludeEnd("ide"); messageSends: ["new", "registerIn:", "axes:transform:", "assert:equals:", "changedAspectLog"] }), $globals.PlainConsumeTransformTest); $core.addMethod( $core.method({ selector: "testNontrivialModelGetsAppropriateValueForTransform", protocol: "tests", fn: function (){ var self=this,$self=this; var model,result; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); result=nil; model=$globals.HashedCollection._newFromPairs_(["foo",["bar", [(1), [(2), (5)]], "baz"],"moo","zoo"]); $recv(model)._axes_transform_(["foo", (2)],(function(r){ result=r; return result; })); $self._assert_equals_([(1), [(2), (5)]],result); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testNontrivialModelGetsAppropriateValueForTransform",{model:model,result:result},$globals.PlainConsumeTransformTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], 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", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["axes:transform:", "assert:equals:"] }), $globals.PlainConsumeTransformTest); $core.addMethod( $core.method({ selector: "testNontrivialModelReturnsAppropriateValue", protocol: "tests", fn: function (){ var self=this,$self=this; var model,result; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); result=nil; model=$globals.HashedCollection._newFromPairs_(["foo",["bar", [(1), [(2), (3)]], "baz"],"moo","zoo"]); $recv(model)._axes_consume_(["foo", (2)],(function(r){ result=r; return result; })); $self._assert_equals_([(1), [(2), (3)]],result); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testNontrivialModelReturnsAppropriateValue",{model:model,result:result},$globals.PlainConsumeTransformTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], 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", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["axes:consume:", "assert:equals:"] }), $globals.PlainConsumeTransformTest); $core.addMethod( $core.method({ selector: "testNontrivialModelTransformsAppropriateValue", protocol: "tests", fn: function (){ var self=this,$self=this; var model,result; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); result=nil; model=$globals.HashedCollection._newFromPairs_(["foo",["bar", [(1), [(2), (3)]], "baz"],"moo","zoo"]); $recv(model)._axes_transform_(["foo", (2)],(function(r){ return "new"; })); $recv(model)._axes_consume_(["foo", (2)],(function(r){ result=r; return result; })); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["axes:consume:"]=1; //>>excludeEnd("ctx"); $self._assert_equals_("new",result); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["assert:equals:"]=1; //>>excludeEnd("ctx"); $recv(model)._axes_consume_([],(function(r){ result=r; return result; })); $self._assert_equals_($globals.HashedCollection._newFromPairs_(["foo",["bar", "new", "baz"],"moo","zoo"]),result); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testNontrivialModelTransformsAppropriateValue",{model:model,result:result},$globals.PlainConsumeTransformTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], 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", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["axes:transform:", "axes:consume:", "assert:equals:"] }), $globals.PlainConsumeTransformTest); $core.addMethod( $core.method({ selector: "testRootModelCannotTransform", protocol: "tests", fn: function (){ var self=this,$self=this; var model,result; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); result=nil; model=[(1), [(2), (3)]]; $self._should_raise_((function(){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); return $recv(model)._axes_transform_([],(function(r){ return $globals.HashedCollection._newFromPairs_(["foo",[(4), (5), (6)]]); })); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)}); //>>excludeEnd("ctx"); }),$globals.Error); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testRootModelCannotTransform",{model:model,result:result},$globals.PlainConsumeTransformTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testRootModelCannotTransform\x0a| model result |\x0aresult := nil.\x0amodel := #(1 #(2 3)).\x0aself should: [ model axes: #() transform: [:r | #{'foo'->#(4 5 6)}] ] raise: Error", referencedClasses: ["Error"], //>>excludeEnd("ide"); messageSends: ["should:raise:", "axes:transform:"] }), $globals.PlainConsumeTransformTest); $core.addMethod( $core.method({ selector: "testRootModelReturnsDirectRoot", protocol: "tests", fn: function (){ var self=this,$self=this; var model,result; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); result=nil; model=[(1), [(2), (4)]]; $recv(model)._axes_consume_([],(function(r){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); return $recv(r)._at_put_((2),nil); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx2) {$ctx2.fillBlock({r:r},$ctx1,1)}); //>>excludeEnd("ctx"); })); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["axes:consume:"]=1; //>>excludeEnd("ctx"); $recv(model)._axes_consume_([],(function(r){ result=r; return result; })); $self._assert_equals_([(1), nil],result); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testRootModelReturnsDirectRoot",{model:model,result:result},$globals.PlainConsumeTransformTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], 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", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["axes:consume:", "at:put:", "assert:equals:"] }), $globals.PlainConsumeTransformTest); $core.addMethod( $core.method({ selector: "testRootModelReturnsRoot", protocol: "tests", fn: function (){ var self=this,$self=this; var model,result; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); result=nil; model=[(1), [(2), (3)]]; $recv(model)._axes_consume_([],(function(r){ result=r; return result; })); $self._assert_equals_([(1), [(2), (3)]],result); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testRootModelReturnsRoot",{model:model,result:result},$globals.PlainConsumeTransformTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testRootModelReturnsRoot\x0a| model result |\x0aresult := nil.\x0amodel := #(1 #(2 3)).\x0amodel axes: #() consume: [:r | result := r].\x0aself assert: #(1 #(2 3)) equals: result", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["axes:consume:", "assert:equals:"] }), $globals.PlainConsumeTransformTest); $core.addMethod( $core.method({ selector: "testRootTransformBlockIsNotRun", protocol: "tests", fn: function (){ var self=this,$self=this; var model,result; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); result=nil; model=[(2), [(1), (0)]]; $recv((function(){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); return $recv(model)._axes_transform_([],(function(r){ result=r; return result; })); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)}); //>>excludeEnd("ctx"); }))._on_do_($globals.Error,(function(){ })); $self._assert_($recv(result)._isNil()); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testRootTransformBlockIsNotRun",{model:model,result:result},$globals.PlainConsumeTransformTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], 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", referencedClasses: ["Error"], //>>excludeEnd("ide"); messageSends: ["on:do:", "axes:transform:", "assert:", "isNil"] }), $globals.PlainConsumeTransformTest); $core.addClass("TestSpyAxon", $globals.DumbAxon, ["changedAspectLog"], "Axxord-Tests"); //>>excludeStart("ide", pragmas.excludeIdeData); $globals.TestSpyAxon.comment="I am an axon that logs changed aspects. I am useful in tests."; //>>excludeEnd("ide"); $core.addMethod( $core.method({ selector: "changed:", protocol: "action", fn: function (anAspect){ var self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $recv(self["@changedAspectLog"])._add_(anAspect); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"changed:",{anAspect:anAspect},$globals.TestSpyAxon)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: ["anAspect"], source: "changed: anAspect\x0a\x09changedAspectLog add: anAspect", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["add:"] }), $globals.TestSpyAxon); $core.addMethod( $core.method({ selector: "changedAspectLog", protocol: "accessing", fn: function (){ var self=this; var $1; $1=self["@changedAspectLog"]; return $1; }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "changedAspectLog\x0a\x09^ changedAspectLog", referencedClasses: [], //>>excludeEnd("ide"); messageSends: [] }), $globals.TestSpyAxon); $core.addMethod( $core.method({ selector: "changedAspectLog:", protocol: "accessing", fn: function (anObject){ var self=this; self["@changedAspectLog"]=anObject; return self; }, //>>excludeStart("ide", pragmas.excludeIdeData); args: ["anObject"], source: "changedAspectLog: anObject\x0a\x09changedAspectLog := anObject", referencedClasses: [], //>>excludeEnd("ide"); messageSends: [] }), $globals.TestSpyAxon); $core.addMethod( $core.method({ selector: "initialize", protocol: "initialization", fn: function (){ var self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); ( //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.supercall = true, //>>excludeEnd("ctx"); $globals.TestSpyAxon.superclass.fn.prototype._initialize.apply($recv(self), [])); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.supercall = false; //>>excludeEnd("ctx");; self["@changedAspectLog"]=[]; return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"initialize",{},$globals.TestSpyAxon)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "initialize\x0a\x09super initialize.\x0a\x0a\x09changedAspectLog := #()", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["initialize"] }), $globals.TestSpyAxon); });