|
@@ -2273,6 +2273,192 @@ $globals.ClassBuilderTest);
|
|
|
|
|
|
|
|
|
|
|
|
+$core.addClass('ClassTest', $globals.TestCase, ['builder', 'theClass'], 'Kernel-Tests');
|
|
|
+$core.addMethod(
|
|
|
+$core.method({
|
|
|
+selector: "jsConstructor",
|
|
|
+protocol: 'running',
|
|
|
+fn: function (){
|
|
|
+var self=this;
|
|
|
+
|
|
|
+return $core.withContext(function($ctx1) {
|
|
|
+
|
|
|
+
|
|
|
+ function Foo(){}
|
|
|
+ Foo.prototype.valueOf = function () {return 4;};
|
|
|
+ return Foo;
|
|
|
+ ;
|
|
|
+return self;
|
|
|
+
|
|
|
+}, function($ctx1) {$ctx1.fill(self,"jsConstructor",{},$globals.ClassTest)});
|
|
|
+
|
|
|
+},
|
|
|
+
|
|
|
+args: [],
|
|
|
+source: "jsConstructor\x0a\x09<\x0a\x09\x09function Foo(){}\x0a\x09\x09Foo.prototype.valueOf = function () {return 4;};\x0a\x09\x09return Foo;\x0a\x09>",
|
|
|
+referencedClasses: [],
|
|
|
+
|
|
|
+messageSends: []
|
|
|
+}),
|
|
|
+$globals.ClassTest);
|
|
|
+
|
|
|
+$core.addMethod(
|
|
|
+$core.method({
|
|
|
+selector: "setUp",
|
|
|
+protocol: 'running',
|
|
|
+fn: function (){
|
|
|
+var self=this;
|
|
|
+function $ClassBuilder(){return $globals.ClassBuilder||(typeof ClassBuilder=="undefined"?nil:ClassBuilder)}
|
|
|
+
|
|
|
+return $core.withContext(function($ctx1) {
|
|
|
+
|
|
|
+self["@builder"]=$recv($ClassBuilder())._new();
|
|
|
+return self;
|
|
|
+
|
|
|
+}, function($ctx1) {$ctx1.fill(self,"setUp",{},$globals.ClassTest)});
|
|
|
+
|
|
|
+},
|
|
|
+
|
|
|
+args: [],
|
|
|
+source: "setUp\x0a\x09builder := ClassBuilder new",
|
|
|
+referencedClasses: ["ClassBuilder"],
|
|
|
+
|
|
|
+messageSends: ["new"]
|
|
|
+}),
|
|
|
+$globals.ClassTest);
|
|
|
+
|
|
|
+$core.addMethod(
|
|
|
+$core.method({
|
|
|
+selector: "tearDown",
|
|
|
+protocol: 'running',
|
|
|
+fn: function (){
|
|
|
+var self=this;
|
|
|
+function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
|
|
|
+
|
|
|
+return $core.withContext(function($ctx1) {
|
|
|
+
|
|
|
+var $1,$receiver;
|
|
|
+$1=self["@theClass"];
|
|
|
+if(($receiver = $1) == null || $receiver.isNil){
|
|
|
+$1;
|
|
|
+} else {
|
|
|
+$recv($Smalltalk())._removeClass_(self["@theClass"]);
|
|
|
+self["@theClass"]=nil;
|
|
|
+self["@theClass"];
|
|
|
+};
|
|
|
+return self;
|
|
|
+
|
|
|
+}, function($ctx1) {$ctx1.fill(self,"tearDown",{},$globals.ClassTest)});
|
|
|
+
|
|
|
+},
|
|
|
+
|
|
|
+args: [],
|
|
|
+source: "tearDown\x0a\x09theClass ifNotNil: [ Smalltalk removeClass: theClass. theClass := nil ]",
|
|
|
+referencedClasses: ["Smalltalk"],
|
|
|
+
|
|
|
+messageSends: ["ifNotNil:", "removeClass:"]
|
|
|
+}),
|
|
|
+$globals.ClassTest);
|
|
|
+
|
|
|
+$core.addMethod(
|
|
|
+$core.method({
|
|
|
+selector: "testSetJavaScriptConstructor",
|
|
|
+protocol: 'tests',
|
|
|
+fn: function (){
|
|
|
+var self=this;
|
|
|
+var instance;
|
|
|
+function $ObjectMock(){return $globals.ObjectMock||(typeof ObjectMock=="undefined"?nil:ObjectMock)}
|
|
|
+function $Error(){return $globals.Error||(typeof Error=="undefined"?nil:Error)}
|
|
|
+
|
|
|
+return $core.withContext(function($ctx1) {
|
|
|
+
|
|
|
+var $2,$1,$4,$3,$6,$5,$8,$7;
|
|
|
+self["@theClass"]=$recv(self["@builder"])._copyClass_named_($ObjectMock(),"ObjectMock2");
|
|
|
+$recv(self["@theClass"])._javascriptConstructor_(self._jsConstructor());
|
|
|
+$2=$recv(self["@theClass"])._superclass();
|
|
|
+
|
|
|
+$ctx1.sendIdx["superclass"]=1;
|
|
|
+
|
|
|
+$1=$recv($2).__eq_eq($recv($ObjectMock())._superclass());
|
|
|
+
|
|
|
+$ctx1.sendIdx["=="]=1;
|
|
|
+
|
|
|
+self._assert_($1);
|
|
|
+
|
|
|
+$ctx1.sendIdx["assert:"]=1;
|
|
|
+
|
|
|
+$4=$recv(self["@theClass"])._instanceVariableNames();
|
|
|
+
|
|
|
+$ctx1.sendIdx["instanceVariableNames"]=1;
|
|
|
+
|
|
|
+$3=$recv($4).__eq_eq($recv($ObjectMock())._instanceVariableNames());
|
|
|
+
|
|
|
+$ctx1.sendIdx["=="]=2;
|
|
|
+
|
|
|
+self._assert_($3);
|
|
|
+
|
|
|
+$ctx1.sendIdx["assert:"]=2;
|
|
|
+
|
|
|
+self._assert_equals_($recv(self["@theClass"])._name(),"ObjectMock2");
|
|
|
+
|
|
|
+$ctx1.sendIdx["assert:equals:"]=1;
|
|
|
+
|
|
|
+$6=$recv(self["@theClass"])._package();
|
|
|
+
|
|
|
+$ctx1.sendIdx["package"]=1;
|
|
|
+
|
|
|
+$5=$recv($6).__eq_eq($recv($ObjectMock())._package());
|
|
|
+
|
|
|
+$ctx1.sendIdx["=="]=3;
|
|
|
+
|
|
|
+self._assert_($5);
|
|
|
+
|
|
|
+$ctx1.sendIdx["assert:"]=3;
|
|
|
+
|
|
|
+$8=$recv(self["@theClass"])._methodDictionary();
|
|
|
+
|
|
|
+$ctx1.sendIdx["methodDictionary"]=1;
|
|
|
+
|
|
|
+$7=$recv($8)._keys();
|
|
|
+
|
|
|
+$ctx1.sendIdx["keys"]=1;
|
|
|
+
|
|
|
+self._assert_equals_($7,$recv($recv($ObjectMock())._methodDictionary())._keys());
|
|
|
+
|
|
|
+$ctx1.sendIdx["assert:equals:"]=2;
|
|
|
+
|
|
|
+instance=$recv(self["@theClass"])._new();
|
|
|
+self._assert_($recv($recv(instance)._class()).__eq_eq(self["@theClass"]));
|
|
|
+self._assert_equals_($recv(instance)._value(),(4));
|
|
|
+
|
|
|
+$ctx1.sendIdx["assert:equals:"]=3;
|
|
|
+
|
|
|
+self._shouldnt_raise_((function(){
|
|
|
+
|
|
|
+return $core.withContext(function($ctx2) {
|
|
|
+
|
|
|
+return $recv(instance)._foo_((9));
|
|
|
+
|
|
|
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
|
|
|
+
|
|
|
+}),$Error());
|
|
|
+self._assert_equals_($recv(instance)._foo(),(9));
|
|
|
+return self;
|
|
|
+
|
|
|
+}, function($ctx1) {$ctx1.fill(self,"testSetJavaScriptConstructor",{instance:instance},$globals.ClassTest)});
|
|
|
+
|
|
|
+},
|
|
|
+
|
|
|
+args: [],
|
|
|
+source: "testSetJavaScriptConstructor\x0a\x09| instance |\x0a\x09theClass := builder copyClass: ObjectMock named: 'ObjectMock2'.\x0a\x09theClass javascriptConstructor: self jsConstructor.\x0a\x09\x22part took from copy class test\x22\x0a\x09self assert: theClass superclass == ObjectMock superclass.\x0a\x09self assert: theClass instanceVariableNames == ObjectMock instanceVariableNames.\x0a\x09self assert: theClass name equals: 'ObjectMock2'.\x0a\x09self assert: theClass package == ObjectMock package.\x0a\x09self assert: theClass methodDictionary keys equals: ObjectMock methodDictionary keys.\x0a\x09\x22testing specific to late-wrapped class\x22\x0a\x09instance := theClass new.\x0a\x09self assert: instance class == theClass.\x0a\x09self assert: instance value equals: 4.\x0a\x09self shouldnt: [ instance foo: 9 ] raise: Error.\x0a\x09self assert: instance foo equals: 9",
|
|
|
+referencedClasses: ["ObjectMock", "Error"],
|
|
|
+
|
|
|
+messageSends: ["copyClass:named:", "javascriptConstructor:", "jsConstructor", "assert:", "==", "superclass", "instanceVariableNames", "assert:equals:", "name", "package", "keys", "methodDictionary", "new", "class", "value", "shouldnt:raise:", "foo:", "foo"]
|
|
|
+}),
|
|
|
+$globals.ClassTest);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
$core.addClass('CollectionTest', $globals.TestCase, [], 'Kernel-Tests');
|
|
|
$core.addMethod(
|
|
|
$core.method({
|