UNPKG

amber

Version:

An implementation of the Smalltalk language that runs on top of the JS runtime.

1,254 lines (1,205 loc) 118 kB
define(["amber/boot", "amber_core/SUnit"], function($boot){"use strict"; if(!("nilAsValue" in $boot))$boot.nilAsValue=$boot.nilAsReceiver; var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals; $core.addPackage("Compiler-Tests"); ($core.packageDescriptors||$core.packages)["Compiler-Tests"].innerEval = function (expr) { return eval(expr); }; ($core.packageDescriptors||$core.packages)["Compiler-Tests"].transport = {"type":"amd","amdNamespace":"amber_core"}; $core.addClass("ASTParsingTest", $globals.TestCase, [], "Compiler-Tests"); $core.addMethod( $core.method({ selector: "parse:forClass:", protocol: "parsing", fn: function (aString,aClass){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return $recv($recv($globals.Compiler)._new())._ast_forClass_protocol_(aString,aClass,"test"); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"parse:forClass:",{aString:aString,aClass:aClass},$globals.ASTParsingTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aString", "aClass"], source: "parse: aString forClass: aClass\x0a\x09^ Compiler new\x0a\x09\x09ast: aString\x0a\x09\x09forClass: aClass\x0a\x09\x09protocol: 'test'", referencedClasses: ["Compiler"], //>>excludeEnd("ide"); messageSends: ["ast:forClass:protocol:", "new"] }), $globals.ASTParsingTest); $core.addClass("ASTPCNodeVisitorTest", $globals.ASTParsingTest, [], "Compiler-Tests"); $core.addMethod( $core.method({ selector: "astPCNodeVisitor", protocol: "factory", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); var $1; $1=$recv($globals.ASTPCNodeVisitor)._new(); $recv($1)._index_((0)); return $recv($1)._yourself(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"astPCNodeVisitor",{},$globals.ASTPCNodeVisitorTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "astPCNodeVisitor\x0a\x09^ ASTPCNodeVisitor new\x0a\x09\x09index: 0;\x0a\x09\x09yourself", referencedClasses: ["ASTPCNodeVisitor"], //>>excludeEnd("ide"); messageSends: ["index:", "new", "yourself"] }), $globals.ASTPCNodeVisitorTest); $core.addMethod( $core.method({ selector: "astPCNodeVisitorForSelector:", protocol: "factory", fn: function (aString){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); var $1; $1=$recv($globals.ASTPCNodeVisitor)._new(); $recv($1)._selector_(aString); $recv($1)._index_((0)); return $recv($1)._yourself(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"astPCNodeVisitorForSelector:",{aString:aString},$globals.ASTPCNodeVisitorTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aString"], source: "astPCNodeVisitorForSelector: aString\x0a\x09^ ASTPCNodeVisitor new\x0a\x09\x09selector: aString;\x0a\x09\x09index: 0;\x0a\x09\x09yourself", referencedClasses: ["ASTPCNodeVisitor"], //>>excludeEnd("ide"); messageSends: ["selector:", "new", "index:", "yourself"] }), $globals.ASTPCNodeVisitorTest); $core.addMethod( $core.method({ selector: "testJSStatementNode", protocol: "tests", fn: function (){ var self=this,$self=this; var ast,visitor; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); var $3,$2,$1; ast=$self._parse_forClass_("foo <inlineJS: 'consolee.log(1)'>",$globals.Object); $3=$self._astPCNodeVisitor(); $recv($3)._visit_(ast); $2=$recv($3)._currentNode(); $1=$recv($2)._isJSStatementNode(); $self._assert_($1); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testJSStatementNode",{ast:ast,visitor:visitor},$globals.ASTPCNodeVisitorTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testJSStatementNode\x0a\x09| ast visitor |\x0a\x09\x0a\x09ast := self parse: 'foo <inlineJS: ''consolee.log(1)''>' forClass: Object.\x0a\x09self assert: (self astPCNodeVisitor\x0a\x09\x09visit: ast;\x0a\x09\x09currentNode) isJSStatementNode", referencedClasses: ["Object"], //>>excludeEnd("ide"); messageSends: ["parse:forClass:", "assert:", "isJSStatementNode", "visit:", "astPCNodeVisitor", "currentNode"] }), $globals.ASTPCNodeVisitorTest); $core.addMethod( $core.method({ selector: "testMessageSend", protocol: "tests", fn: function (){ var self=this,$self=this; var ast; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); var $3,$2,$1; ast=$self._parse_forClass_("foo self asString yourself. ^ self asBoolean",$globals.Object); $3=$self._astPCNodeVisitorForSelector_("yourself"); $recv($3)._visit_(ast); $2=$recv($3)._currentNode(); $1=$recv($2)._selector(); $self._assert_equals_($1,"yourself"); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testMessageSend",{ast:ast},$globals.ASTPCNodeVisitorTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testMessageSend\x0a\x09| ast |\x0a\x09\x0a\x09ast := self parse: 'foo self asString yourself. ^ self asBoolean' forClass: Object.\x0a\x09self assert: ((self astPCNodeVisitorForSelector: 'yourself')\x0a\x09\x09visit: ast;\x0a\x09\x09currentNode) selector equals: 'yourself'", referencedClasses: ["Object"], //>>excludeEnd("ide"); messageSends: ["parse:forClass:", "assert:equals:", "selector", "visit:", "astPCNodeVisitorForSelector:", "currentNode"] }), $globals.ASTPCNodeVisitorTest); $core.addMethod( $core.method({ selector: "testMessageSendWithBlocks", protocol: "tests", fn: function (){ var self=this,$self=this; var ast; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); var $3,$2,$1; ast=$self._parse_forClass_("foo true ifTrue: [ [ self asString yourself ] value. ]. ^ self asBoolean",$globals.Object); $3=$self._astPCNodeVisitorForSelector_("yourself"); $recv($3)._visit_(ast); $2=$recv($3)._currentNode(); $1=$recv($2)._selector(); $self._assert_equals_($1,"yourself"); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testMessageSendWithBlocks",{ast:ast},$globals.ASTPCNodeVisitorTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testMessageSendWithBlocks\x0a\x09| ast |\x0a\x09\x0a\x09ast := self parse: 'foo true ifTrue: [ [ self asString yourself ] value. ]. ^ self asBoolean' forClass: Object.\x0a\x09self assert: ((self astPCNodeVisitorForSelector: 'yourself')\x0a\x09\x09visit: ast;\x0a\x09\x09currentNode) selector equals: 'yourself'", referencedClasses: ["Object"], //>>excludeEnd("ide"); messageSends: ["parse:forClass:", "assert:equals:", "selector", "visit:", "astPCNodeVisitorForSelector:", "currentNode"] }), $globals.ASTPCNodeVisitorTest); $core.addMethod( $core.method({ selector: "testMessageSendWithInlining", protocol: "tests", fn: function (){ var self=this,$self=this; var ast; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); var $3,$4,$2,$1,$7,$6,$5; ast=$self._parse_forClass_("foo true ifTrue: [ self asString yourself ]. ^ self asBoolean",$globals.Object); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["parse:forClass:"]=1; //>>excludeEnd("ctx"); $3=$self._astPCNodeVisitorForSelector_("yourself"); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["astPCNodeVisitorForSelector:"]=1; //>>excludeEnd("ctx"); $recv($3)._visit_(ast); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["visit:"]=1; //>>excludeEnd("ctx"); $4=$recv($3)._currentNode(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["currentNode"]=1; //>>excludeEnd("ctx"); $2=$4; $1=$recv($2)._selector(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["selector"]=1; //>>excludeEnd("ctx"); $self._assert_equals_($1,"yourself"); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["assert:equals:"]=1; //>>excludeEnd("ctx"); ast=$self._parse_forClass_("foo true ifTrue: [ self asString yourself ]. ^ self asBoolean",$globals.Object); $7=$self._astPCNodeVisitorForSelector_("asBoolean"); $recv($7)._visit_(ast); $6=$recv($7)._currentNode(); $5=$recv($6)._selector(); $self._assert_equals_($5,"asBoolean"); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testMessageSendWithInlining",{ast:ast},$globals.ASTPCNodeVisitorTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testMessageSendWithInlining\x0a\x09| ast |\x0a\x09\x0a\x09ast := self parse: 'foo true ifTrue: [ self asString yourself ]. ^ self asBoolean' forClass: Object.\x0a\x09self assert: ((self astPCNodeVisitorForSelector: 'yourself')\x0a\x09\x09visit: ast;\x0a\x09\x09currentNode) selector equals: 'yourself'.\x0a\x09\x09\x0a\x09ast := self parse: 'foo true ifTrue: [ self asString yourself ]. ^ self asBoolean' forClass: Object.\x0a\x09self assert: ((self astPCNodeVisitorForSelector: 'asBoolean')\x0a\x09\x09visit: ast;\x0a\x09\x09currentNode) selector equals: 'asBoolean'", referencedClasses: ["Object"], //>>excludeEnd("ide"); messageSends: ["parse:forClass:", "assert:equals:", "selector", "visit:", "astPCNodeVisitorForSelector:", "currentNode"] }), $globals.ASTPCNodeVisitorTest); $core.addMethod( $core.method({ selector: "testNoMessageSend", protocol: "tests", fn: function (){ var self=this,$self=this; var ast; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); var $3,$2,$1; ast=$self._parse_forClass_("foo ^ self",$globals.Object); $3=$self._astPCNodeVisitor(); $recv($3)._visit_(ast); $2=$recv($3)._currentNode(); $1=$recv($2)._isNil(); $self._assert_($1); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testNoMessageSend",{ast:ast},$globals.ASTPCNodeVisitorTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testNoMessageSend\x0a\x09| ast |\x0a\x09\x0a\x09ast := self parse: 'foo ^ self' forClass: Object.\x0a\x09self assert: (self astPCNodeVisitor\x0a\x09\x09visit: ast;\x0a\x09\x09currentNode) isNil", referencedClasses: ["Object"], //>>excludeEnd("ide"); messageSends: ["parse:forClass:", "assert:", "isNil", "visit:", "astPCNodeVisitor", "currentNode"] }), $globals.ASTPCNodeVisitorTest); $core.addClass("ASTPositionTest", $globals.ASTParsingTest, [], "Compiler-Tests"); $core.addMethod( $core.method({ selector: "testNodeAtPosition", protocol: "tests", fn: function (){ var self=this,$self=this; var node; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); var $3,$4,$2,$1,$7,$8,$6,$5; node=$self._parse_forClass_("yourself\x0a\x09^ self",$globals.Object); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["parse:forClass:"]=1; //>>excludeEnd("ctx"); $3=node; $4=(2).__at((4)); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["@"]=1; //>>excludeEnd("ctx"); $2=$recv($3)._navigationNodeAt_ifAbsent_($4,(function(){ return nil; })); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["navigationNodeAt:ifAbsent:"]=1; //>>excludeEnd("ctx"); $1=$recv($2)._source(); $self._assert_equals_($1,"self"); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["assert:equals:"]=1; //>>excludeEnd("ctx"); node=$self._parse_forClass_("foo\x0a\x09true ifTrue: [ 1 ]",$globals.Object); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["parse:forClass:"]=2; //>>excludeEnd("ctx"); $7=node; $8=(2).__at((7)); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["@"]=2; //>>excludeEnd("ctx"); $6=$recv($7)._navigationNodeAt_ifAbsent_($8,(function(){ return nil; })); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["navigationNodeAt:ifAbsent:"]=2; //>>excludeEnd("ctx"); $5=$recv($6)._selector(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["selector"]=1; //>>excludeEnd("ctx"); $self._assert_equals_($5,"ifTrue:"); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["assert:equals:"]=2; //>>excludeEnd("ctx"); node=$self._parse_forClass_("foo\x0a\x09self foo; bar; baz",$globals.Object); $self._assert_equals_($recv($recv(node)._navigationNodeAt_ifAbsent_((2).__at((8)),(function(){ return nil; })))._selector(),"foo"); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testNodeAtPosition",{node:node},$globals.ASTPositionTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testNodeAtPosition\x0a\x09| node |\x0a\x09\x0a\x09node := self parse: 'yourself\x0a\x09^ self' forClass: Object.\x0a\x09\x0a\x09self assert: (node navigationNodeAt: 2@4 ifAbsent: [ nil ]) source equals: 'self'.\x0a\x09\x0a\x09node := self parse: 'foo\x0a\x09true ifTrue: [ 1 ]' forClass: Object.\x0a\x09\x0a\x09self assert: (node navigationNodeAt: 2@7 ifAbsent: [ nil ]) selector equals: 'ifTrue:'.\x0a\x09\x0a\x09node := self parse: 'foo\x0a\x09self foo; bar; baz' forClass: Object.\x0a\x09\x0a\x09self assert: (node navigationNodeAt: 2@8 ifAbsent: [ nil ]) selector equals: 'foo'", referencedClasses: ["Object"], //>>excludeEnd("ide"); messageSends: ["parse:forClass:", "assert:equals:", "source", "navigationNodeAt:ifAbsent:", "@", "selector"] }), $globals.ASTPositionTest); $core.addClass("CodeGeneratorTest", $globals.ASTParsingTest, ["receiver"], "Compiler-Tests"); $core.addMethod( $core.method({ selector: "codeGeneratorClass", protocol: "accessing", fn: function (){ var self=this,$self=this; return $globals.CodeGenerator; }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "codeGeneratorClass\x0a\x09^ CodeGenerator", referencedClasses: ["CodeGenerator"], //>>excludeEnd("ide"); messageSends: [] }), $globals.CodeGeneratorTest); $core.addMethod( $core.method({ selector: "compiler", protocol: "factory", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); var $1; $1=$recv($globals.Compiler)._new(); $recv($1)._codeGeneratorClass_($self._codeGeneratorClass()); return $recv($1)._yourself(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"compiler",{},$globals.CodeGeneratorTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "compiler\x0a\x09^ Compiler new\x0a\x09\x09codeGeneratorClass: self codeGeneratorClass;\x0a\x09\x09yourself", referencedClasses: ["Compiler"], //>>excludeEnd("ide"); messageSends: ["codeGeneratorClass:", "new", "codeGeneratorClass", "yourself"] }), $globals.CodeGeneratorTest); $core.addMethod( $core.method({ selector: "setUp", protocol: "initialization", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $self["@receiver"]=$recv($globals.DoIt)._new(); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"setUp",{},$globals.CodeGeneratorTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "setUp\x0a\x09receiver := DoIt new", referencedClasses: ["DoIt"], //>>excludeEnd("ide"); messageSends: ["new"] }), $globals.CodeGeneratorTest); $core.addMethod( $core.method({ selector: "should:receiver:raise:", protocol: "testing", fn: function (aString,anObject,anErrorClass){ var self=this,$self=this; var method,result; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); var $1,$2,$3,$receiver; $self["@receiver"]=anObject; $recv((function(){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); return $self._should_raise_((function(){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx3) { //>>excludeEnd("ctx"); $1=$self._compiler(); $2=$recv(anObject)._class(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx3.sendIdx["class"]=1; //>>excludeEnd("ctx"); method=$recv($1)._install_forClass_protocol_(aString,$2,"tests"); return $recv($self["@receiver"])._perform_($recv(method)._selector()); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)}); //>>excludeEnd("ctx"); }),anErrorClass); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)}); //>>excludeEnd("ctx"); }))._ensure_((function(){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); $3=method; if(($receiver = $3) == null || $receiver.a$nil){ return $3; } else { return $recv($recv(anObject)._class())._removeCompiledMethod_(method); } //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)}); //>>excludeEnd("ctx"); })); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"should:receiver:raise:",{aString:aString,anObject:anObject,anErrorClass:anErrorClass,method:method,result:result},$globals.CodeGeneratorTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aString", "anObject", "anErrorClass"], source: "should: aString receiver: anObject raise: anErrorClass\x0a\x09| method result |\x0a\x0a\x09receiver := anObject.\x0a\x09[ self should: [\x0a\x09\x09method := self compiler install: aString forClass: anObject class protocol: 'tests'.\x0a\x09\x09receiver perform: method selector ] raise: anErrorClass ]\x0a\x09ensure: [ method ifNotNil: [ anObject class removeCompiledMethod: method ] ]", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["ensure:", "should:raise:", "install:forClass:protocol:", "compiler", "class", "perform:", "selector", "ifNotNil:", "removeCompiledMethod:"] }), $globals.CodeGeneratorTest); $core.addMethod( $core.method({ selector: "should:receiver:return:", protocol: "testing", fn: function (aString,anObject,aResult){ var self=this,$self=this; var method,result; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); var $1,$2; $self["@receiver"]=anObject; $1=$self._compiler(); $2=$recv(anObject)._class(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["class"]=1; //>>excludeEnd("ctx"); method=$recv($1)._install_forClass_protocol_(aString,$2,"tests"); result=$recv($self["@receiver"])._perform_($recv(method)._selector()); $recv($recv(anObject)._class())._removeCompiledMethod_(method); $self._assert_equals_(aResult,result); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"should:receiver:return:",{aString:aString,anObject:anObject,aResult:aResult,method:method,result:result},$globals.CodeGeneratorTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aString", "anObject", "aResult"], source: "should: aString receiver: anObject return: aResult\x0a\x09| method result |\x0a\x0a\x09receiver := anObject.\x0a\x09method := self compiler install: aString forClass: anObject class protocol: 'tests'.\x0a\x09result := receiver perform: method selector.\x0a\x09anObject class removeCompiledMethod: method.\x0a\x09self assert: aResult equals: result", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["install:forClass:protocol:", "compiler", "class", "perform:", "selector", "removeCompiledMethod:", "assert:equals:"] }), $globals.CodeGeneratorTest); $core.addMethod( $core.method({ selector: "should:return:", protocol: "testing", fn: function (aString,anObject){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return $self._should_receiver_return_(aString,$self["@receiver"],anObject); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"should:return:",{aString:aString,anObject:anObject},$globals.CodeGeneratorTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aString", "anObject"], source: "should: aString return: anObject\x0a\x09^ self \x0a\x09\x09should: aString \x0a\x09\x09receiver: receiver \x0a\x09\x09return: anObject", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["should:receiver:return:"] }), $globals.CodeGeneratorTest); $core.addMethod( $core.method({ selector: "tearDown", protocol: "initialization", fn: function (){ var self=this,$self=this; return self; }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "tearDown\x0a\x09\x22receiver := nil\x22", referencedClasses: [], //>>excludeEnd("ide"); messageSends: [] }), $globals.CodeGeneratorTest); $core.addMethod( $core.method({ selector: "testAssignment", protocol: "tests", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $self._should_return_("foo | a | a := true ifTrue: [ 1 ]. ^ a",(1)); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["should:return:"]=1; //>>excludeEnd("ctx"); $self._should_return_("foo | a | a := false ifTrue: [ 1 ]. ^ a",nil); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["should:return:"]=2; //>>excludeEnd("ctx"); $self._should_return_("foo | a | ^ a := true ifTrue: [ 1 ]",(1)); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testAssignment",{},$globals.CodeGeneratorTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testAssignment\x0a\x09self should: 'foo | a | a := true ifTrue: [ 1 ]. ^ a' return: 1.\x0a\x09self should: 'foo | a | a := false ifTrue: [ 1 ]. ^ a' return: nil.\x0a\x0a\x09self should: 'foo | a | ^ a := true ifTrue: [ 1 ]' return: 1", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["should:return:"] }), $globals.CodeGeneratorTest); $core.addMethod( $core.method({ selector: "testBackslashSelectors", protocol: "tests", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $self._should_return_("\x5c arg ^ 4",(4)); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["should:return:"]=1; //>>excludeEnd("ctx"); $self._should_return_("\x5c\x5c arg ^ 42",(42)); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testBackslashSelectors",{},$globals.CodeGeneratorTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testBackslashSelectors\x0a\x09\x0a\x09self should: '\x5c arg ^ 4' return: 4.\x0a\x09self should: '\x5c\x5c arg ^ 42' return: 42", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["should:return:"] }), $globals.CodeGeneratorTest); $core.addMethod( $core.method({ selector: "testBlockReturn", protocol: "tests", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $self._should_return_("foo ^ #(1 2 3) collect: [ :each | true ifTrue: [ each + 1 ] ]",[(2), (3), (4)]); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["should:return:"]=1; //>>excludeEnd("ctx"); $self._should_return_("foo ^ #(1 2 3) collect: [ :each | false ifFalse: [ each + 1 ] ]",[(2), (3), (4)]); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["should:return:"]=2; //>>excludeEnd("ctx"); $self._should_return_("foo ^ #(1 2 3) collect: [ :each | each odd ifTrue: [ each + 1 ] ifFalse: [ each - 1 ] ]",[(2), (1), (4)]); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testBlockReturn",{},$globals.CodeGeneratorTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testBlockReturn\x0a\x09self should: 'foo ^ #(1 2 3) collect: [ :each | true ifTrue: [ each + 1 ] ]' return: #(2 3 4).\x0a\x09self should: 'foo ^ #(1 2 3) collect: [ :each | false ifFalse: [ each + 1 ] ]' return: #(2 3 4).\x0a\x09self should: 'foo ^ #(1 2 3) collect: [ :each | each odd ifTrue: [ each + 1 ] ifFalse: [ each - 1 ] ]' return: #(2 1 4).", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["should:return:"] }), $globals.CodeGeneratorTest); $core.addMethod( $core.method({ selector: "testCascades", protocol: "tests", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $self._should_return_("foo ^ Array new add: 3; add: 4; yourself",[(3), (4)]); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testCascades",{},$globals.CodeGeneratorTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testCascades\x0a\x09\x0a\x09self should: 'foo ^ Array new add: 3; add: 4; yourself' return: #(3 4)", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["should:return:"] }), $globals.CodeGeneratorTest); $core.addMethod( $core.method({ selector: "testCascadesInDynamicArray", protocol: "tests", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $self._should_return_("foo | x | x := 1. ^ {x. [x:=2] value; in: [x]}",[(1), (2)]); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testCascadesInDynamicArray",{},$globals.CodeGeneratorTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testCascadesInDynamicArray\x0a\x09self should: 'foo | x | x := 1. ^ {x. [x:=2] value; in: [x]}' return: #(1 2)", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["should:return:"] }), $globals.CodeGeneratorTest); $core.addMethod( $core.method({ selector: "testCascadesInDynamicDictioary", protocol: "tests", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $self._should_return_("foo | x | x := 1. ^ #{'one' -> x. 'two' -> ([x:=2] value; in: [x])}",$globals.HashedCollection._newFromPairs_(["one",(1),"two",(2)])); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testCascadesInDynamicDictioary",{},$globals.CodeGeneratorTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testCascadesInDynamicDictioary\x0a\x09self should: 'foo | x | x := 1. ^ #{''one'' -> x. ''two'' -> ([x:=2] value; in: [x])}' return: #{'one' -> 1. 'two' -> 2}", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["should:return:"] }), $globals.CodeGeneratorTest); $core.addMethod( $core.method({ selector: "testCascadesInSend", protocol: "tests", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $self._should_return_("foo | x | x := 1. ^ Array with: x with: ([x:=2] value; in: [x])",[(1), (2)]); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testCascadesInSend",{},$globals.CodeGeneratorTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testCascadesInSend\x0a\x09self should: 'foo | x | x := 1. ^ Array with: x with: ([x:=2] value; in: [x])' return: #(1 2)", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["should:return:"] }), $globals.CodeGeneratorTest); $core.addMethod( $core.method({ selector: "testCascadesWithInlining", protocol: "tests", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $self._should_return_("foo ^ true class; ifTrue: [ 1 ] ifFalse: [ 2 ]",(1)); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["should:return:"]=1; //>>excludeEnd("ctx"); $self._should_return_("foo ^ false class; ifTrue: [ 1 ] ifFalse: [ 2 ]",(2)); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testCascadesWithInlining",{},$globals.CodeGeneratorTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testCascadesWithInlining\x0a\x09\x0a\x09self should: 'foo ^ true class; ifTrue: [ 1 ] ifFalse: [ 2 ]' return: 1.\x0a\x09self should: 'foo ^ false class; ifTrue: [ 1 ] ifFalse: [ 2 ]' return: 2", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["should:return:"] }), $globals.CodeGeneratorTest); $core.addMethod( $core.method({ selector: "testDynamicArrayElementsOrdered", protocol: "tests", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $self._should_return_("foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ { x. x := 2 }\x0a",[(1), (2)]); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["should:return:"]=1; //>>excludeEnd("ctx"); $self._should_return_("foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ { x. true ifTrue: [ x := 2 ] }\x0a",[(1), (2)]); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testDynamicArrayElementsOrdered",{},$globals.CodeGeneratorTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testDynamicArrayElementsOrdered\x0a\x09self should: 'foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ { x. x := 2 }\x0a' return: #(1 2).\x0a\x0a\x09self should: 'foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ { x. true ifTrue: [ x := 2 ] }\x0a' return: #(1 2).", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["should:return:"] }), $globals.CodeGeneratorTest); $core.addMethod( $core.method({ selector: "testDynamicDictionaryElementsOrdered", protocol: "tests", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $self._should_return_("foo\x0a\x09| x |\x0a\x09x := 'foo'.\x0a\x09^ #{ x->1. 'bar'->(true ifTrue: [ 2 ]) }\x0a",$globals.HashedCollection._newFromPairs_(["foo",(1),"bar",(2)])); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testDynamicDictionaryElementsOrdered",{},$globals.CodeGeneratorTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testDynamicDictionaryElementsOrdered\x0a\x09self should: 'foo\x0a\x09| x |\x0a\x09x := ''foo''.\x0a\x09^ #{ x->1. ''bar''->(true ifTrue: [ 2 ]) }\x0a' return: #{'foo'->1. 'bar'->2}.", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["should:return:"] }), $globals.CodeGeneratorTest); $core.addMethod( $core.method({ selector: "testDynamicDictionaryWithMoreArrows", protocol: "tests", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); var $2,$1; $2=$recv((1).__minus_gt((2))).__minus_gt((3)); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["->"]=1; //>>excludeEnd("ctx"); $1=$recv($globals.HashedCollection)._with_($2); $self._should_return_("foo ^ #{1->2->3}",$1); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testDynamicDictionaryWithMoreArrows",{},$globals.CodeGeneratorTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testDynamicDictionaryWithMoreArrows\x0a\x09self should: 'foo ^ #{1->2->3}' return: (HashedCollection with: 1->2->3)", referencedClasses: ["HashedCollection"], //>>excludeEnd("ide"); messageSends: ["should:return:", "with:", "->"] }), $globals.CodeGeneratorTest); $core.addMethod( $core.method({ selector: "testGlobalVar", protocol: "tests", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $self._should_return_("foo ^ eval class",$globals.BlockClosure); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["should:return:"]=1; //>>excludeEnd("ctx"); $self._should_return_("foo ^ Math cos: 0",(1)); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["should:return:"]=2; //>>excludeEnd("ctx"); $self._should_return_("foo ^ NonExistingVar",nil); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testGlobalVar",{},$globals.CodeGeneratorTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testGlobalVar\x0a\x09self should: 'foo ^ eval class' return: BlockClosure.\x0a\x09self should: 'foo ^ Math cos: 0' return: 1.\x0a\x09self should: 'foo ^ NonExistingVar' return: nil", referencedClasses: ["BlockClosure"], //>>excludeEnd("ide"); messageSends: ["should:return:"] }), $globals.CodeGeneratorTest); $core.addMethod( $core.method({ selector: "testInnerTemporalDependentElementsOrdered", protocol: "tests", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); var $2,$3,$1,$5,$6,$4,$8,$9,$7,$11,$10; $2="foo".__minus_gt($globals.Array); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["->"]=1; //>>excludeEnd("ctx"); $3="bar".__minus_gt((2)); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["->"]=2; //>>excludeEnd("ctx"); $1=[$2,$3]; $self._should_return_("foo\x0a\x09| x |\x0a\x09x := Array.\x0a\x09^ x with: 'foo'->x with: 'bar'->(x := 2)\x0a",$1); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["should:return:"]=1; //>>excludeEnd("ctx"); $5="foo".__minus_gt($globals.Array); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["->"]=3; //>>excludeEnd("ctx"); $6="bar".__minus_gt((2)); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["->"]=4; //>>excludeEnd("ctx"); $4=[$5,$6]; $self._should_return_("foo\x0a\x09| x |\x0a\x09x := Array.\x0a\x09^ x with: 'foo'->x with: 'bar'->(true ifTrue: [ x := 2 ])\x0a",$4); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["should:return:"]=2; //>>excludeEnd("ctx"); $8="foo".__minus_gt((1)); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["->"]=5; //>>excludeEnd("ctx"); $9="bar".__minus_gt((2)); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["->"]=6; //>>excludeEnd("ctx"); $7=[$8,$9]; $self._should_return_("foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ Array with: 'foo'->x with: 'bar'->(true ifTrue: [ x := 2 ])\x0a",$7); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["should:return:"]=3; //>>excludeEnd("ctx"); $11="foo".__minus_gt((1)); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["->"]=7; //>>excludeEnd("ctx"); $10=[$11,"bar".__minus_gt((2))]; $self._should_return_("foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ { 'foo'->x. 'bar'->(true ifTrue: [ x := 2 ]) }\x0a",$10); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["should:return:"]=4; //>>excludeEnd("ctx"); $self._should_return_("foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ #{ 'foo'->x. 'bar'->(true ifTrue: [ x := 2 ]) }\x0a",$globals.HashedCollection._newFromPairs_(["foo",(1),"bar",(2)])); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testInnerTemporalDependentElementsOrdered",{},$globals.CodeGeneratorTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testInnerTemporalDependentElementsOrdered\x0a\x09self should: 'foo\x0a\x09| x |\x0a\x09x := Array.\x0a\x09^ x with: ''foo''->x with: ''bar''->(x := 2)\x0a' return: {'foo'->Array. 'bar'->2}.\x0a\x0a\x09self should: 'foo\x0a\x09| x |\x0a\x09x := Array.\x0a\x09^ x with: ''foo''->x with: ''bar''->(true ifTrue: [ x := 2 ])\x0a' return: {'foo'->Array. 'bar'->2}.\x0a\x0a\x09self should: 'foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ Array with: ''foo''->x with: ''bar''->(true ifTrue: [ x := 2 ])\x0a' return: {'foo'->1. 'bar'->2}.\x0a\x0a\x09self should: 'foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ { ''foo''->x. ''bar''->(true ifTrue: [ x := 2 ]) }\x0a' return: {'foo'->1. 'bar'->2}.\x0a\x0a\x09self should: 'foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ #{ ''foo''->x. ''bar''->(true ifTrue: [ x := 2 ]) }\x0a' return: #{'foo'->1. 'bar'->2}.", referencedClasses: ["Array"], //>>excludeEnd("ide"); messageSends: ["should:return:", "->"] }), $globals.CodeGeneratorTest); $core.addMethod( $core.method({ selector: "testLexicalScope", protocol: "tests", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $self._should_return_("foo | a | a := 1. [ a := 2 ] value. ^ a",(2)); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testLexicalScope",{},$globals.CodeGeneratorTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testLexicalScope\x0a\x09self should: 'foo | a | a := 1. [ a := 2 ] value. ^ a' return: 2", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["should:return:"] }), $globals.CodeGeneratorTest); $core.addMethod( $core.method({ selector: "testLiterals", protocol: "tests", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $self._should_return_("foo ^ 1",(1)); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["should:return:"]=1; //>>excludeEnd("ctx"); $self._should_return_("foo ^ 'hello'","hello"); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["should:return:"]=2; //>>excludeEnd("ctx"); $self._should_return_("foo ^ #(1 2 3 4)",[(1), (2), (3), (4)]); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["should:return:"]=3; //>>excludeEnd("ctx"); $self._should_return_("foo ^ {1. [:x | x ] value: 2. 3. [4] value}",[(1), (2), (3), (4)]); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["should:return:"]=4; //>>excludeEnd("ctx"); $self._should_return_("foo ^ true",true); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["should:return:"]=5; //>>excludeEnd("ctx"); $self._should_return_("foo ^ false",false); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["should:return:"]=6; //>>excludeEnd("ctx"); $self._should_return_("foo ^ #{1->2. 3->4}",$globals.HashedCollection._newFromPairs_([(1),(2),(3),(4)])); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["should:return:"]=7; //>>excludeEnd("ctx"); $self._should_return_("foo ^ #hello","hello"); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["should:return:"]=8; //>>excludeEnd("ctx"); $self._should_return_("foo ^ $h","h"); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["should:return:"]=9; //>>excludeEnd("ctx"); $self._should_return_("foo ^ -123.456",(-123.456)); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["should:return:"]=10; //>>excludeEnd("ctx"); $self._should_return_("foo ^ -2.5e4",(-25000)); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testLiterals",{},$globals.CodeGeneratorTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testLiterals\x0a\x09self should: 'foo ^ 1' return: 1.\x0a\x09self should: 'foo ^ ''hello''' return: 'hello'.\x0a\x09self should: 'foo ^ #(1 2 3 4)' return: #(1 2 3 4).\x0a\x09self should: 'foo ^ {1. [:x | x ] value: 2. 3. [4] value}' return: #(1 2 3 4).\x0a\x09self should: 'foo ^ true' return: true.\x0a\x09self should: 'foo ^ false' return: false.\x0a\x09self should: 'foo ^ #{1->2. 3->4}' return: #{1->2. 3->4}.\x0a\x09self should: 'foo ^ #hello' return: #hello.\x0a\x09self should: 'foo ^ $h' return: 'h'.\x0a\x09self should: 'foo ^ -123.456' return: -123.456.\x0a\x09self should: 'foo ^ -2.5e4' return: -25000.", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["should:return:"] }), $globals.CodeGeneratorTest); $core.addMethod( $core.method({ selector: "testLocalReturn", protocol: "tests", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $self._should_return_("foo ^ 1",(1)); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["should:return:"]=1; //>>excludeEnd("ctx"); $self._should_return_("foo ^ 1 + 1",(2)); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["should:return:"]=2; //>>excludeEnd("ctx"); $self._should_return_("foo ",$self["@receiver"]); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["should:return:"]=3; //>>excludeEnd("ctx"); $self._should_return_("foo self asString",$self["@receiver"]); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["should:return:"]=4; //>>excludeEnd("ctx"); $self._should_return_("foo | a b | a := 1. b := 2. ^ a + b",(3)); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testLocalReturn",{},$globals.CodeGeneratorTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testLocalReturn\x0a\x09self should: 'foo ^ 1' return: 1.\x0a\x09self should: 'foo ^ 1 + 1' return: 2.\x0a\x09self should: 'foo ' return: receiver.\x0a\x09self should: 'foo self asString' return: receiver.\x0a\x09self should: 'foo | a b | a := 1. b := 2. ^ a + b' return: 3", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["should:return:"] }), $globals.CodeGeneratorTest); $core.addMethod( $core.method({ selector: "testMessageSends", protocol: "tests", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $self._should_return_("foo ^ 1 asString","1"); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["should:return:"]=1; //>>excludeEnd("ctx"); $self._should_return_("foo ^ 1 + 1",(2)); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["should:return:"]=2; //>>excludeEnd("ctx"); $self._should_return_("foo ^ 1 + 2 * 3",(9)); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["should:return:"]=3; //>>excludeEnd("ctx"); $self._should_return_("foo ^ 1 to: 3",[(1), (2), (3)]); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["should:return:"]=4; //>>excludeEnd("ctx"); $self._should_return_("foo ^ 1 to: 5 by: 2",[(1), (3), (5)]); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testMessageSends",{},$globals.CodeGeneratorTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testMessageSends\x0a\x09self should: 'foo ^ 1 asString' return: '1'.\x0a\x0a\x09self should: 'foo ^ 1 + 1' return: 2.\x0a\x09self should: 'foo ^ 1 + 2 * 3' return: 9.\x0a\x0a\x09self should: 'foo ^ 1 to: 3' return: #(1 2 3).\x0a\x09self should: 'foo ^ 1 to: 5 by: 2' return: #(1 3 5)", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["should:return:"] }), $globals.CodeGeneratorTest); $core.addMethod( $core.method({ selector: "testMistypedPragmaJSStatement", protocol: "tests", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $self._should_receiver_raise_("foo < inlineJS: 'return 'foo'' >",$self["@receiver"],$globals.ParseError); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testMistypedPragmaJSStatement",{},$globals.CodeGeneratorTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testMistypedPragmaJSStatement\x0a\x09self should: 'foo < inlineJS: ''return ''foo'''' >' receiver: receiver raise: ParseError", referencedClasses: ["ParseError"], //>>excludeEnd("ide"); messageSends: ["should:receiver:raise:"] }), $globals.CodeGeneratorTest); $core.addMethod( $core.method({ selector: "testMultipleSequences", protocol: "tests", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $self._should_return_("foo | a b c | a := 2. b := 3. c := a + b. ^ c * 6",(30)); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testMultipleSequences",{},$globals.CodeGeneratorTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testMultipleSequences\x0a\x09self should: 'foo | a b c | a := 2. b := 3. c := a + b. ^ c * 6' return: 30", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["should:return:"] }), $globals.CodeGeneratorTest); $core.addMethod( $core.method({ selector: "testMutableLiterals", protocol: "tests", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $self._should_return_("foo ^ #( 1 2 ) at: 1 put: 3; yourself",[(3), (2)]); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testMutableLiterals",{},$globals.CodeGeneratorTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testMutableLiterals\x0a\x09\x22Mutable literals must be aliased in cascades.\x0a\x09See https://lolg.it/amber/amber/issues/428\x22\x0a\x09\x0a\x09self \x0a\x09\x09should: 'foo ^ #( 1 2 ) at: 1 put: 3; yourself' \x0a\x09\x09return: #(3 2)", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["should:return:"] }), $globals.CodeGeneratorTest); $core.addMethod( $core.method({ selector: "testNestedIfTrue", protocol: "tests", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $self._should_return_("foo ^ true ifTrue: [ false ifFalse: [ 1 ] ]",(1)); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["should:return:"]=1; //>>excludeEnd("ctx"); $self._should_return_("foo ^ true ifTrue: [ false ifTrue: [ 1 ] ]",nil); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["should:return:"]=2; //>>excludeEnd("ctx"); $self._should_return_("foo true ifTrue: [ false ifFalse: [ ^ 1 ] ]",(1)); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["should:return:"]=3; //>>excludeEnd("ctx"); $self._should_return_("foo true ifTrue: [ false ifTrue: [ ^ 1 ] ]",$self["@receiver"]); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testNestedIfTrue",{},$globals.CodeGeneratorTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testNestedIfTrue\x0a\x09self should: 'foo ^ true ifTrue: [ false ifFalse: [ 1 ] ]' return: 1.\x0a\x09self should: 'foo ^ true ifTrue: [ false ifTrue: [ 1 ] ]' return: nil.\x0a\x0a\x09self should: 'foo true ifTrue: [ false ifFalse: [ ^ 1 ] ]' return: 1.\x0a\x09self should: 'foo true ifTrue: [ false ifTrue: [ ^ 1 ] ]' return: receiver.", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["should:return:"] }), $globals.CodeGeneratorTest); $core.addMethod( $core.method({ selector: "testNestedSends", protocol: "tests", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $self._should_return_("foo ^ (Point x: (Point x: 2 y: 3) y: 4) asString",$recv($recv($globals.Point)._x_y_((2).__at((3)),(4)))._asString()); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testNestedSends",{},$globals.CodeGeneratorTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testNestedSends\x0a\x09self should: 'foo ^ (Point x: (Point x: 2 y: 3) y: 4) asString' return: (Point x: (2@3) y: 4) asString", referencedClasses: ["Point"], //>>excludeEnd("ide"); messageSend