UNPKG

amber

Version:

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

1,342 lines (1,295 loc) 594 kB
define(["amber/boot", "amber_core/Kernel-Objects", "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("Kernel-Tests"); ($core.packageDescriptors||$core.packages)["Kernel-Tests"].innerEval = function (expr) { return eval(expr); }; ($core.packageDescriptors||$core.packages)["Kernel-Tests"].transport = {"type":"amd","amdNamespace":"amber_core"}; $core.addClass("AnnouncementSubscriptionTest", $globals.TestCase, [], "Kernel-Tests"); $core.addMethod( $core.method({ selector: "testAddExtensionMethod", protocol: "tests", fn: function (){ var self=this,$self=this; var method,dirty; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); var $2,$1,$4,$3,$5,$8,$7,$6,$9,$10; $2=$self._class(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["class"]=1; //>>excludeEnd("ctx"); $1=$recv($2)._package(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["package"]=1; //>>excludeEnd("ctx"); dirty=$recv($1)._isDirty(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["isDirty"]=1; //>>excludeEnd("ctx"); $4=$self._class(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["class"]=2; //>>excludeEnd("ctx"); $3=$recv($4)._package(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["package"]=2; //>>excludeEnd("ctx"); $recv($3)._beClean(); $5=$self._class(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["class"]=3; //>>excludeEnd("ctx"); method=$recv($5)._compile_protocol_("doNothing","**not-a-package"); $8=$self._class(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["class"]=4; //>>excludeEnd("ctx"); $7=$recv($8)._package(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["package"]=3; //>>excludeEnd("ctx"); $6=$recv($7)._isDirty(); $self._deny_($6); $9=$self._class(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["class"]=5; //>>excludeEnd("ctx"); $recv($9)._removeCompiledMethod_(method); $10=dirty; if($core.assert($10)){ $recv($recv($self._class())._package())._beDirty(); } return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testAddExtensionMethod",{method:method,dirty:dirty},$globals.AnnouncementSubscriptionTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testAddExtensionMethod\x0a\x09| method dirty |\x0a\x09dirty := self class package isDirty.\x0a\x09self class package beClean.\x0a\x09method := self class compile: 'doNothing' protocol: '**not-a-package'.\x0a\x09self deny: self class package isDirty.\x0a\x09\x0a\x09self class removeCompiledMethod: method.\x0a\x09dirty ifTrue: [ self class package beDirty ]", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["isDirty", "package", "class", "beClean", "compile:protocol:", "deny:", "removeCompiledMethod:", "ifTrue:", "beDirty"] }), $globals.AnnouncementSubscriptionTest); $core.addMethod( $core.method({ selector: "testHandlesAnnouncement", protocol: "tests", fn: function (){ var self=this,$self=this; var subscription,announcementClass1,announcementClass2,classBuilder; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); var $1,$2; classBuilder=$recv($globals.ClassBuilder)._new(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["new"]=1; //>>excludeEnd("ctx"); announcementClass1=$recv(classBuilder)._basicAddSubclassOf_named_instanceVariableNames_package_($globals.SystemAnnouncement,"TestAnnouncement1",[],"Kernel-Tests"); subscription=$recv($recv($globals.AnnouncementSubscription)._new())._announcementClass_($globals.SystemAnnouncement); $1=$recv(subscription)._handlesAnnouncement_($globals.SystemAnnouncement); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["handlesAnnouncement:"]=1; //>>excludeEnd("ctx"); $self._assert_equals_($1,true); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["assert:equals:"]=1; //>>excludeEnd("ctx"); $2=$recv(subscription)._handlesAnnouncement_(announcementClass1); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["handlesAnnouncement:"]=2; //>>excludeEnd("ctx"); $self._assert_equals_($2,true); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["assert:equals:"]=2; //>>excludeEnd("ctx"); $self._assert_equals_($recv(subscription)._handlesAnnouncement_($globals.Object),false); $recv(classBuilder)._basicRemoveClass_(announcementClass1); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testHandlesAnnouncement",{subscription:subscription,announcementClass1:announcementClass1,announcementClass2:announcementClass2,classBuilder:classBuilder},$globals.AnnouncementSubscriptionTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testHandlesAnnouncement\x0a\x09| subscription announcementClass1 announcementClass2 classBuilder |\x0a\x09\x0a\x09classBuilder := ClassBuilder new.\x0a\x09announcementClass1 := classBuilder basicAddSubclassOf: SystemAnnouncement named: 'TestAnnouncement1' instanceVariableNames: #() package: 'Kernel-Tests'.\x0a\x09\x0a\x09subscription := AnnouncementSubscription new announcementClass: SystemAnnouncement.\x0a\x09\x22Test whether the same class triggers the announcement\x22\x0a\x09self assert: (subscription handlesAnnouncement: SystemAnnouncement) equals: true.\x0a\x09\x22Test whether a subclass triggers the announcement\x22\x0a\x09self assert: (subscription handlesAnnouncement: announcementClass1) equals: true.\x0a\x09\x22Test whether an unrelated class does not trigger the announcement\x22\x0a\x09self assert: (subscription handlesAnnouncement: Object) equals: false.\x0a\x09\x0a\x09classBuilder basicRemoveClass: announcementClass1.", referencedClasses: ["ClassBuilder", "SystemAnnouncement", "AnnouncementSubscription", "Object"], //>>excludeEnd("ide"); messageSends: ["new", "basicAddSubclassOf:named:instanceVariableNames:package:", "announcementClass:", "assert:equals:", "handlesAnnouncement:", "basicRemoveClass:"] }), $globals.AnnouncementSubscriptionTest); $core.addClass("AnnouncerTest", $globals.TestCase, [], "Kernel-Tests"); $core.addMethod( $core.method({ selector: "testOnDo", protocol: "tests", fn: function (){ var self=this,$self=this; var counter,announcer; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); var $1,$2; counter=(0); announcer=$recv($globals.Announcer)._new(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["new"]=1; //>>excludeEnd("ctx"); $recv(announcer)._on_do_($globals.SystemAnnouncement,(function(){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); counter=$recv(counter).__plus((1)); return counter; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)}); //>>excludeEnd("ctx"); })); $1=announcer; $2=$recv($globals.SystemAnnouncement)._new(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["new"]=2; //>>excludeEnd("ctx"); $recv($1)._announce_($2); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["announce:"]=1; //>>excludeEnd("ctx"); $self._assert_equals_(counter,(1)); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["assert:equals:"]=1; //>>excludeEnd("ctx"); $recv(announcer)._announce_($recv($globals.SystemAnnouncement)._new()); $self._assert_equals_(counter,(2)); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testOnDo",{counter:counter,announcer:announcer},$globals.AnnouncerTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testOnDo\x0a\x09| counter announcer |\x0a\x09\x0a\x09counter := 0.\x0a\x09announcer := Announcer new.\x0a\x09announcer on: SystemAnnouncement do: [ counter := counter + 1 ].\x0a\x0a\x09announcer announce: (SystemAnnouncement new).\x0a\x09self assert: counter equals: 1.\x0a\x0a\x09announcer announce: (SystemAnnouncement new).\x0a\x09self assert: counter equals: 2.", referencedClasses: ["Announcer", "SystemAnnouncement"], //>>excludeEnd("ide"); messageSends: ["new", "on:do:", "+", "announce:", "assert:equals:"] }), $globals.AnnouncerTest); $core.addMethod( $core.method({ selector: "testOnDoFor", protocol: "tests", fn: function (){ var self=this,$self=this; var counter,announcer; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); var $1,$2,$3,$4; counter=(0); announcer=$recv($globals.Announcer)._new(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["new"]=1; //>>excludeEnd("ctx"); $recv(announcer)._on_do_for_($globals.SystemAnnouncement,(function(){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); counter=$recv(counter).__plus((1)); return counter; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)}); //>>excludeEnd("ctx"); }),self); $1=announcer; $2=$recv($globals.SystemAnnouncement)._new(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["new"]=2; //>>excludeEnd("ctx"); $recv($1)._announce_($2); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["announce:"]=1; //>>excludeEnd("ctx"); $self._assert_equals_(counter,(1)); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["assert:equals:"]=1; //>>excludeEnd("ctx"); $3=announcer; $4=$recv($globals.SystemAnnouncement)._new(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["new"]=3; //>>excludeEnd("ctx"); $recv($3)._announce_($4); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["announce:"]=2; //>>excludeEnd("ctx"); $self._assert_equals_(counter,(2)); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["assert:equals:"]=2; //>>excludeEnd("ctx"); $recv(announcer)._unsubscribe_(self); $recv(announcer)._announce_($recv($globals.SystemAnnouncement)._new()); $self._assert_equals_(counter,(2)); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testOnDoFor",{counter:counter,announcer:announcer},$globals.AnnouncerTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testOnDoFor\x0a\x09| counter announcer |\x0a\x09\x0a\x09counter := 0.\x0a\x09announcer := Announcer new.\x0a\x09announcer on: SystemAnnouncement do: [ counter := counter + 1 ] for: self.\x0a\x0a\x09announcer announce: (SystemAnnouncement new).\x0a\x09self assert: counter equals: 1.\x0a\x0a\x09announcer announce: (SystemAnnouncement new).\x0a\x09self assert: counter equals: 2.\x0a\x09\x0a\x09announcer unsubscribe: self.\x0a\x09\x0a\x09announcer announce: (SystemAnnouncement new).\x0a\x09self assert: counter equals: 2.", referencedClasses: ["Announcer", "SystemAnnouncement"], //>>excludeEnd("ide"); messageSends: ["new", "on:do:for:", "+", "announce:", "assert:equals:", "unsubscribe:"] }), $globals.AnnouncerTest); $core.addMethod( $core.method({ selector: "testOnDoOnce", protocol: "tests", fn: function (){ var self=this,$self=this; var counter,announcer; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); var $1,$2; counter=(0); announcer=$recv($globals.Announcer)._new(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["new"]=1; //>>excludeEnd("ctx"); $recv(announcer)._on_doOnce_($globals.SystemAnnouncement,(function(){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); counter=$recv(counter).__plus((1)); return counter; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)}); //>>excludeEnd("ctx"); })); $1=announcer; $2=$recv($globals.SystemAnnouncement)._new(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["new"]=2; //>>excludeEnd("ctx"); $recv($1)._announce_($2); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["announce:"]=1; //>>excludeEnd("ctx"); $self._assert_equals_(counter,(1)); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["assert:equals:"]=1; //>>excludeEnd("ctx"); $recv(announcer)._announce_($recv($globals.SystemAnnouncement)._new()); $self._assert_equals_(counter,(1)); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testOnDoOnce",{counter:counter,announcer:announcer},$globals.AnnouncerTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testOnDoOnce\x0a\x09| counter announcer |\x0a\x09\x0a\x09counter := 0.\x0a\x09announcer := Announcer new.\x0a\x09announcer on: SystemAnnouncement doOnce: [ counter := counter + 1 ].\x0a\x0a\x09announcer announce: (SystemAnnouncement new).\x0a\x09self assert: counter equals: 1.\x0a\x0a\x09announcer announce: (SystemAnnouncement new).\x0a\x09self assert: counter equals: 1.", referencedClasses: ["Announcer", "SystemAnnouncement"], //>>excludeEnd("ide"); messageSends: ["new", "on:doOnce:", "+", "announce:", "assert:equals:"] }), $globals.AnnouncerTest); $core.addClass("BlockClosureTest", $globals.TestCase, [], "Kernel-Tests"); $core.addMethod( $core.method({ selector: "localReturnOnDoCatch", protocol: "fixture", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); var $early={}; try { $recv((function(){ throw $early=[(2)]; }))._on_do_($globals.Error,(function(){ })); return (3); } catch(e) {if(e===$early)return e[0]; throw e} //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"localReturnOnDoCatch",{},$globals.BlockClosureTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "localReturnOnDoCatch\x0a [ ^ 2 ] on: Error do: [].\x0a ^ 3", referencedClasses: ["Error"], //>>excludeEnd("ide"); messageSends: ["on:do:"] }), $globals.BlockClosureTest); $core.addMethod( $core.method({ selector: "localReturnOnDoMiss", protocol: "fixture", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); var $early={}; try { $recv((function(){ throw $early=[(2)]; }))._on_do_($globals.Class,(function(){ })); return (3); } catch(e) {if(e===$early)return e[0]; throw e} //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"localReturnOnDoMiss",{},$globals.BlockClosureTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "localReturnOnDoMiss\x0a [ ^ 2 ] on: Class do: [].\x0a ^ 3", referencedClasses: ["Class"], //>>excludeEnd("ide"); messageSends: ["on:do:"] }), $globals.BlockClosureTest); $core.addMethod( $core.method({ selector: "testCanClearInterval", protocol: "tests", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $self._shouldnt_raise_((function(){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); return $recv($recv((function(){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx3) { //>>excludeEnd("ctx"); return $recv($recv($globals.Error)._new())._signal(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)}); //>>excludeEnd("ctx"); }))._valueWithInterval_((0)))._clearInterval(); //>>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,"testCanClearInterval",{},$globals.BlockClosureTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testCanClearInterval\x0a\x09self shouldnt: [ ([ Error new signal ] valueWithInterval: 0) clearInterval ] raise: Error", referencedClasses: ["Error"], //>>excludeEnd("ide"); messageSends: ["shouldnt:raise:", "clearInterval", "valueWithInterval:", "signal", "new"] }), $globals.BlockClosureTest); $core.addMethod( $core.method({ selector: "testCanClearTimeout", protocol: "tests", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $self._shouldnt_raise_((function(){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); return $recv($recv((function(){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx3) { //>>excludeEnd("ctx"); return $recv($recv($globals.Error)._new())._signal(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)}); //>>excludeEnd("ctx"); }))._valueWithTimeout_((0)))._clearTimeout(); //>>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,"testCanClearTimeout",{},$globals.BlockClosureTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testCanClearTimeout\x0a\x09self shouldnt: [ ([ Error new signal ] valueWithTimeout: 0) clearTimeout ] raise: Error", referencedClasses: ["Error"], //>>excludeEnd("ide"); messageSends: ["shouldnt:raise:", "clearTimeout", "valueWithTimeout:", "signal", "new"] }), $globals.BlockClosureTest); $core.addMethod( $core.method({ selector: "testCompiledSource", protocol: "tests", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $self._assert_($recv($recv((function(){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); return (1).__plus((1)); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)}); //>>excludeEnd("ctx"); }))._compiledSource())._includesSubString_("function")); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testCompiledSource",{},$globals.BlockClosureTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testCompiledSource\x0a\x09self assert: ([ 1+1 ] compiledSource includesSubString: 'function')", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["assert:", "includesSubString:", "compiledSource", "+"] }), $globals.BlockClosureTest); $core.addMethod( $core.method({ selector: "testCurrySelf", protocol: "tests", fn: function (){ var self=this,$self=this; var curriedMethod,array; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); curriedMethod=$recv($recv((function(selfarg,x){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); return $recv(selfarg)._at_(x); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx2) {$ctx2.fillBlock({selfarg:selfarg,x:x},$ctx1,1)}); //>>excludeEnd("ctx"); }))._currySelf())._asCompiledMethod_("foo:"); array=[(3), (1), (4)]; $recv($recv($globals.ClassBuilder)._new())._installMethod_forClass_protocol_(curriedMethod,$globals.Array,"**test helper"); $recv((function(){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); return $self._assert_equals_($recv(array)._foo_((2)),(1)); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)}); //>>excludeEnd("ctx"); }))._ensure_((function(){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); return $recv($globals.Array)._removeCompiledMethod_(curriedMethod); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)}); //>>excludeEnd("ctx"); })); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testCurrySelf",{curriedMethod:curriedMethod,array:array},$globals.BlockClosureTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testCurrySelf\x0a\x09| curriedMethod array |\x0a\x09curriedMethod := [ :selfarg :x | selfarg at: x ] currySelf asCompiledMethod: 'foo:'.\x0a\x09array := #(3 1 4).\x0a\x09ClassBuilder new installMethod: curriedMethod forClass: Array protocol: '**test helper'.\x0a\x09[ self assert: (array foo: 2) equals: 1 ]\x0a\x09ensure: [ Array removeCompiledMethod: curriedMethod ]", referencedClasses: ["ClassBuilder", "Array"], //>>excludeEnd("ide"); messageSends: ["asCompiledMethod:", "currySelf", "at:", "installMethod:forClass:protocol:", "new", "ensure:", "assert:equals:", "foo:", "removeCompiledMethod:"] }), $globals.BlockClosureTest); $core.addMethod( $core.method({ selector: "testEnsure", protocol: "tests", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $self._assert_equals_($recv((function(){ return (3); }))._ensure_((function(){ return (4); })),(3)); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testEnsure",{},$globals.BlockClosureTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testEnsure\x0a\x09self assert: ([ 3 ] ensure: [ 4 ]) equals: 3", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["assert:equals:", "ensure:"] }), $globals.BlockClosureTest); $core.addMethod( $core.method({ selector: "testEnsureRaises", protocol: "tests", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $self._should_raise_((function(){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); return $recv((function(){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx3) { //>>excludeEnd("ctx"); return $recv($recv($globals.Error)._new())._signal(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)}); //>>excludeEnd("ctx"); }))._ensure_((function(){ return true; })); //>>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,"testEnsureRaises",{},$globals.BlockClosureTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testEnsureRaises\x0a\x09self should: [ [Error new signal ] ensure: [ true ]] raise: Error", referencedClasses: ["Error"], //>>excludeEnd("ide"); messageSends: ["should:raise:", "ensure:", "signal", "new"] }), $globals.BlockClosureTest); $core.addMethod( $core.method({ selector: "testExceptionSemantics", protocol: "tests", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $self._timeout_((100)); $recv($self._async_((function(){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); return $recv((function(){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx3) { //>>excludeEnd("ctx"); $self._assert_(true); $recv($globals.Error)._signal(); $self._deny_(true); return $self._finished(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx3.sendIdx["finished"]=1; //>>excludeEnd("ctx"); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)}); //>>excludeEnd("ctx"); }))._on_do_($globals.Error,(function(ex){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx3) { //>>excludeEnd("ctx"); return $self._finished(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx3) {$ctx3.fillBlock({ex:ex},$ctx2,3)}); //>>excludeEnd("ctx"); })); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)}); //>>excludeEnd("ctx"); })))._valueWithTimeout_((0)); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testExceptionSemantics",{},$globals.BlockClosureTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testExceptionSemantics\x0a\x09\x22See https://lolg.it/amber/amber/issues/314\x22\x0a\x09self timeout: 100.\x0a\x09\x0a\x09(self async: [\x0a\x09\x09[\x0a\x09\x09\x09self assert: true.\x0a\x09\x09\x09Error signal.\x0a\x09\x09\x09\x22The following should *not* be run\x22\x0a\x09\x09\x09self deny: true.\x0a\x09\x09\x09self finished.\x0a\x09\x09] on: Error do: [ :ex | self finished ]\x0a\x09]) valueWithTimeout: 0", referencedClasses: ["Error"], //>>excludeEnd("ide"); messageSends: ["timeout:", "valueWithTimeout:", "async:", "on:do:", "assert:", "signal", "deny:", "finished"] }), $globals.BlockClosureTest); $core.addMethod( $core.method({ selector: "testLocalReturnOnDoCatch", protocol: "tests", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $self._assert_equals_($self._localReturnOnDoCatch(),(2)); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testLocalReturnOnDoCatch",{},$globals.BlockClosureTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testLocalReturnOnDoCatch\x0a\x09self assert: self localReturnOnDoCatch equals: 2", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["assert:equals:", "localReturnOnDoCatch"] }), $globals.BlockClosureTest); $core.addMethod( $core.method({ selector: "testLocalReturnOnDoMiss", protocol: "tests", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $self._assert_equals_($self._localReturnOnDoMiss(),(2)); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testLocalReturnOnDoMiss",{},$globals.BlockClosureTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testLocalReturnOnDoMiss\x0a\x09self assert: self localReturnOnDoMiss equals: 2", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["assert:equals:", "localReturnOnDoMiss"] }), $globals.BlockClosureTest); $core.addMethod( $core.method({ selector: "testNewWithValues", protocol: "tests", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); function TestConstructor(arg1, arg2, arg3) {} TestConstructor.prototype.name = "theTestPrototype"; var wrappedConstructor = $recv(TestConstructor); var result = wrappedConstructor._newWithValues_([1, 2, 3]); $self._assert_(result instanceof TestConstructor); $self._assert_equals_(result.name, "theTestPrototype"); /* newWithValues: cannot help if the argument list is wrong, and should warn that a mistake was made. */ $self._should_raise_(function () {wrappedConstructor._newWithValues_("single argument");}, $globals.Error);; return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testNewWithValues",{},$globals.BlockClosureTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testNewWithValues\x0a<inlineJS: '\x0a\x09function TestConstructor(arg1, arg2, arg3) {}\x0a\x09TestConstructor.prototype.name = \x22theTestPrototype\x22;\x0a\x0a\x09var wrappedConstructor = $recv(TestConstructor);\x0a\x09var result = wrappedConstructor._newWithValues_([1, 2, 3]);\x0a\x09$self._assert_(result instanceof TestConstructor);\x0a\x09$self._assert_equals_(result.name, \x22theTestPrototype\x22);\x0a\x0a\x09/* newWithValues: cannot help if the argument list is wrong, and should warn that a mistake was made. */\x0a\x09$self._should_raise_(function () {wrappedConstructor._newWithValues_(\x22single argument\x22);}, $globals.Error);\x0a'>", referencedClasses: [], //>>excludeEnd("ide"); messageSends: [] }), $globals.BlockClosureTest); $core.addMethod( $core.method({ selector: "testNumArgs", protocol: "tests", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); var $1; $1=$recv((function(){ }))._numArgs(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["numArgs"]=1; //>>excludeEnd("ctx"); $self._assert_equals_($1,(0)); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["assert:equals:"]=1; //>>excludeEnd("ctx"); $self._assert_equals_($recv((function(a,b){ }))._numArgs(),(2)); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testNumArgs",{},$globals.BlockClosureTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testNumArgs\x0a\x09self assert: [] numArgs equals: 0.\x0a\x09self assert: [ :a :b | ] numArgs equals: 2", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["assert:equals:", "numArgs"] }), $globals.BlockClosureTest); $core.addMethod( $core.method({ selector: "testOnDo", protocol: "tests", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $self._assert_($recv((function(){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); return $recv($recv($globals.Error)._new())._signal(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)}); //>>excludeEnd("ctx"); }))._on_do_($globals.Error,(function(ex){ return true; }))); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testOnDo",{},$globals.BlockClosureTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testOnDo\x0a\x09self assert: ([ Error new signal ] on: Error do: [ :ex | true ])", referencedClasses: ["Error"], //>>excludeEnd("ide"); messageSends: ["assert:", "on:do:", "signal", "new"] }), $globals.BlockClosureTest); $core.addMethod( $core.method({ selector: "testValue", protocol: "tests", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); var $1; $1=$recv((function(){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); return (1).__plus((1)); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx2.sendIdx["+"]=1; //>>excludeEnd("ctx"); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)}); //>>excludeEnd("ctx"); }))._value(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["value"]=1; //>>excludeEnd("ctx"); $self._assert_equals_($1,(2)); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["assert:equals:"]=1; //>>excludeEnd("ctx"); $self._assert_equals_($recv((function(x){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); return $recv(x).__plus((1)); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,2)}); //>>excludeEnd("ctx"); }))._value_((2)),(3)); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["assert:equals:"]=2; //>>excludeEnd("ctx"); $self._assert_equals_($recv((function(x,y){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); return $recv(x).__star(y); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx2) {$ctx2.fillBlock({x:x,y:y},$ctx1,3)}); //>>excludeEnd("ctx"); }))._value_value_((2),(4)),(8)); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["assert:equals:"]=3; //>>excludeEnd("ctx"); $self._assert_equals_($recv((function(a,b,c){ return (1); }))._value(),(1)); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testValue",{},$globals.BlockClosureTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testValue\x0a\x09self assert: ([ 1+1 ] value) equals: 2.\x0a\x09self assert: ([ :x | x +1 ] value: 2) equals: 3.\x0a\x09self assert: ([ :x :y | x*y ] value: 2 value: 4) equals: 8.\x0a\x0a\x09\x22Arguments are optional in Amber. This isn't ANSI compliant.\x22\x0a\x0a\x09self assert: ([ :a :b :c | 1 ] value) equals: 1", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["assert:equals:", "value", "+", "value:", "value:value:", "*"] }), $globals.BlockClosureTest); $core.addMethod( $core.method({ selector: "testValueWithPossibleArguments", protocol: "tests", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); var $1,$2; $1=$recv((function(){ return (1); }))._valueWithPossibleArguments_([(3), (4)]); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["valueWithPossibleArguments:"]=1; //>>excludeEnd("ctx"); $self._assert_equals_($1,(1)); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["assert:equals:"]=1; //>>excludeEnd("ctx"); $2=$recv((function(a){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); return $recv(a).__plus((4)); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx2.sendIdx["+"]=1; //>>excludeEnd("ctx"); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx2) {$ctx2.fillBlock({a:a},$ctx1,2)}); //>>excludeEnd("ctx"); }))._valueWithPossibleArguments_([(3), (4)]); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["valueWithPossibleArguments:"]=2; //>>excludeEnd("ctx"); $self._assert_equals_($2,(7)); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["assert:equals:"]=2; //>>excludeEnd("ctx"); $self._assert_equals_($recv((function(a,b){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); return $recv(a).__plus(b); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1,3)}); //>>excludeEnd("ctx"); }))._valueWithPossibleArguments_([(3), (4), (5)]),(7)); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testValueWithPossibleArguments",{},$globals.BlockClosureTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testValueWithPossibleArguments\x0a\x09self assert: ([ 1 ] valueWithPossibleArguments: #(3 4)) equals: 1.\x0a\x09self assert: ([ :a | a + 4 ] valueWithPossibleArguments: #(3 4)) equals: 7.\x0a\x09self assert: ([ :a :b | a + b ] valueWithPossibleArguments: #(3 4 5)) equals: 7.", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["assert:equals:", "valueWithPossibleArguments:", "+"] }), $globals.BlockClosureTest); $core.addMethod( $core.method({ selector: "testWhileFalse", protocol: "tests", fn: function (){ var self=this,$self=this; var i; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); i=(0); $recv((function(){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); return $recv(i).__gt((5)); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx2.sendIdx[">"]=1; //>>excludeEnd("ctx"); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)}); //>>excludeEnd("ctx"); }))._whileFalse_((function(){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); i=$recv(i).__plus((1)); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx2.sendIdx["+"]=1; //>>excludeEnd("ctx"); return i; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)}); //>>excludeEnd("ctx"); })); $self._assert_equals_(i,(6)); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["assert:equals:"]=1; //>>excludeEnd("ctx"); i=(0); $recv((function(){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); i=$recv(i).__plus((1)); return $recv(i).__gt((5)); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)}); //>>excludeEnd("ctx"); }))._whileFalse(); $self._assert_equals_(i,(6)); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testWhileFalse",{i:i},$globals.BlockClosureTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testWhileFalse\x0a\x09| i |\x0a\x09i := 0.\x0a\x09[ i > 5 ] whileFalse: [ i := i + 1 ].\x0a\x09self assert: i equals: 6.\x0a\x0a\x09i := 0.\x0a\x09[ i := i + 1. i > 5 ] whileFalse.\x0a\x09self assert: i equals: 6", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["whileFalse:", ">", "+", "assert:equals:", "whileFalse"] }), $globals.BlockClosureTest); $core.addMethod( $core.method({ selector: "testWhileTrue", protocol: "tests", fn: function (){ var self=this,$self=this; var i; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); i=(0); $recv((function(){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); return $recv(i).__lt((5)); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx2.sendIdx["<"]=1; //>>excludeEnd("ctx"); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)}); //>>excludeEnd("ctx"); }))._whileTrue_((function(){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); i=$recv(i).__plus((1)); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx2.sendIdx["+"]=1; //>>excludeEnd("ctx"); return i; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)}); //>>excludeEnd("ctx"); })); $self._assert_equals_(i,(5)); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["assert:equals:"]=1; //>>excludeEnd("ctx"); i=(0); $recv((function(){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); i=$recv(i).__plus((1)); return $recv(i).__lt((5)); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)}); //>>excludeEnd("ctx"); }))._whileTrue(); $self._assert_equals_(i,(5)); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testWhileTrue",{i:i},$globals.BlockClosureTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testWhileTrue\x0a\x09| i |\x0a\x09i := 0.\x0a\x09[ i < 5 ] whileTrue: [ i := i + 1 ].\x0a\x09self assert: i equals: 5.\x0a\x0a\x09i := 0.\x0a\x09[ i := i + 1. i < 5 ] whileTrue.\x0a\x09self assert: i equals: 5", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["whileTrue:", "<", "+", "assert:equals:", "whileTrue"] }), $globals.BlockClosureTest); $core.addClass("BooleanTest", $globals.TestCase, [], "Kernel-Tests"); $core.addMethod( $core.method({ selector: "testEquality", protocol: "tests", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); var $1,$2,$3,$4,$5,$6,$7,$8,$10,$9,$12,$11; $1=(0).__eq(false); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["="]=1; //>>excludeEnd("ctx"); $self._deny_($1); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["deny:"]=1; //>>excludeEnd("ctx"); $2=false.__eq((0)); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["="]=2; //>>excludeEnd("ctx"); $self._deny_($2); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["deny:"]=2; //>>excludeEnd("ctx"); $3="".__eq(false); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["="]=3; //>>excludeEnd("ctx"); $self._deny_($3); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["deny:"]=3; //>>excludeEnd("ctx"); $4=false.__eq(""); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["="]=4; //>>excludeEnd("ctx"); $self._deny_($4); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["deny:"]=4; //>>excludeEnd("ctx"); $5=true.__eq(true); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["="]=5; //>>excludeEnd("ctx"); $self._assert_($5); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["assert:"]=1; //>>excludeEnd("ctx"); $6=false.__eq(true); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["="]=6; //>>excludeEnd("ctx"); $self._deny_($6); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["deny:"]=5; //>>excludeEnd("ctx"); $7=true.__eq(false); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["="]=7; //>>excludeEnd("ctx"); $self._deny_($7); $8=false.__eq(false); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["="]=8; //>>excludeEnd("ctx"); $self._assert_($8); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["assert:"]=2; //>>excludeEnd("ctx"); $10=true._yourself(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["yourself"]=1; //>>excludeEnd("ctx"); $9=$recv($10).__eq(true); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["="]=9; //>>excludeEnd("ctx"); $self._assert_($9); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["assert:"]=3; //>>excludeEnd("ctx"); $12=true._yourself(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["yourself"]=2; //>>excludeEnd("ctx"); $11=$recv($12).__eq(true._yourself()); $self._assert_($11); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testEquality",{},$globals.BooleanTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testEquality\x0a\x09\x22We're on top of JS...just be sure to check the basics!\x22\x0a\x0a\x09self deny: 0 = false.\x0a\x09self deny: false = 0.\x0a\x09self deny: '' = false.\x0a\x09self deny: false = ''.\x0a\x0a\x09self assert: (true = true).\x0a\x09self deny: false = true.\x0a\x09self deny: true = false.\x0a\x09self assert: (false = false).\x0a\x0a\x09\x22JS may do some type coercing after sending a message\x22\x0a\x09self assert: (true yourself = true).\x0a\x09self assert: (true yourself = true yourself)", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["deny:", "=", "assert:", "yourself"] }), $globals.BooleanTest); $core.addMethod( $core.method({ selector: "testIdentity", protocol: "tests", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); var $1,$2,$3,$4,$5,$6,$7,$8,$10,$9,$12,$11; $1=(0).__eq_eq(false); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["=="]=1; //>>excludeEnd("ctx"); $self._deny_($1); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["deny:"]=1; //>>excludeEnd("ctx"); $2=false.__eq_eq((0)); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["=="]=2; //>>excludeEnd("ctx"); $self._deny_($2); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["deny:"]=2; //>>excludeEnd("ctx"); $3="".__eq_eq(false); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["=="]=3; //>>excludeEnd("ctx"); $self._deny_($3); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["deny:"]=3; //>>excludeEnd("ctx"); $4=false.__eq_eq(""); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["=="]=4; //>>excludeEnd("ctx"); $self._deny_($4); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["deny:"]=4; //>>excludeEnd("ctx"); $5=true.__eq_eq(true); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["=="]=5; //>>excludeEnd("ctx"); $self._assert_($5); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["assert:"]=1; //>>excludeEnd("ctx"); $6=false.__eq_eq(true); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["=="]=6; //>>excludeEnd("ctx"); $self._deny_($6); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["deny:"]=5; //>>excludeEnd("ctx"); $7=true.__eq_eq(false); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["=="]=7; //>>excludeEnd("ctx"); $self._deny_($7); $8=false.__eq_eq(false); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["=="]=8; //>>excludeEnd("ctx"); $self._assert_($8); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["assert:"]=2; //>>excludeEnd("ctx"); $10=true._yourself(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["yourself"]=1; //>>excludeEnd("ctx"); $9=$recv($10).__eq_eq(true); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["=="]=9; //>>excludeEnd("ctx"); $self._assert_($9); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["assert:"]=3; //>>excludeEnd("ctx"); $12=true._yourself(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["yourself"]=2; //>>excludeEnd("ctx"); $11=$recv($12).__eq_eq(true._yourself()); $self._assert_($11); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"testIdentity",{},$globals.BooleanTest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "testIdentity\x0a\x09\x22We're on top of JS...just be sure to check the basics!\x22\x0a\x0a\x09self deny: 0 == false.\x0a\x09self deny: false == 0.\x0a\x09self deny: '' == false.\x0a\x09self deny: false == ''.\x0a\x0a\x09self assert: true == true.\x0a\x09self deny: false == true.\x0a\x09self deny: true == false.\x0a\x09self assert: false == false.\x0a\x0a\x09\x22JS may do some type coercing after sending a message\x22\x0a\x09self assert: true yourself == true.\x0a\x09self assert: true yourself == true yourself", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["deny:", "==", "assert:", "yourself"] }), $globals.BooleanTest); $core.addMethod( $core.method({ selector: "testIfTrueIfFalse", protocol: "tests", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); var $1,$2,$3,$4,$5,$6,$7,$8; if($core.assert(true)){ $1="alternative block"; } $self._assert_equals_($1,"alternative block"); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["assert:equals:"]=1; //>>excludeEnd("ctx"); if(!$core.assert(true)){ $2="alternative block"; } $self._assert_equals_($2,nil); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["assert:equals:"]=2; //>>excludeEnd("ctx"); if($core.assert(false)){ $3="alternative block"; } $self._assert_equals_($3,nil); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["assert:equals:"]=3; //>>excludeEnd("ctx"); if(!$core.assert(false)){ $4="alternative block"; } $self._assert_equals_($4,"alternative block"); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.sendIdx["assert:equals:"]=4; //>>excludeEnd("ctx"); if($core.assert(false)){ $5="alternative block"; } else { $5="alternative block2"; } $self._assert_equals_($5,"alternative block2"); //>>excludeStart("ctx", pragmas.excludeDebugCon