Browse Source

{coll,sel,det}ect tests, nonValue merged w/ newValue

Herbert Vojčík 11 years ago
parent
commit
ce2745fbf0
2 changed files with 338 additions and 187 deletions
  1. 285 136
      js/Kernel-Tests.js
  2. 53 51
      st/Kernel-Tests.st

+ 285 - 136
js/Kernel-Tests.js

@@ -1302,6 +1302,22 @@ referencedClasses: []
 }),
 smalltalk.CollectionTest);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "collectionOfPrintStrings",
+protocol: 'fixture',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+self._subclassResponsibility();
+return self}, function($ctx1) {$ctx1.fill(self,"collectionOfPrintStrings",{},smalltalk.CollectionTest)})},
+args: [],
+source: "collectionOfPrintStrings\x0a\x09\x22Answers self collection but with values\x0a\x09changed to their printStrings\x22\x0a\x0a\x09self subclassResponsibility",
+messageSends: ["subclassResponsibility"],
+referencedClasses: []
+}),
+smalltalk.CollectionTest);
+
 smalltalk.addMethod(
 smalltalk.method({
 selector: "collectionSize",
@@ -1384,22 +1400,6 @@ referencedClasses: []
 }),
 smalltalk.CollectionTest);
 
-smalltalk.addMethod(
-smalltalk.method({
-selector: "sampleNonValue",
-protocol: 'fixture',
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return (999);
-}, function($ctx1) {$ctx1.fill(self,"sampleNonValue",{},smalltalk.CollectionTest)})},
-args: [],
-source: "sampleNonValue\x0a\x09\x22Answer value that is guaranteed\x0a\x09not to be contained by self collection\x22\x0a\x09\x0a\x09^ 999",
-messageSends: [],
-referencedClasses: []
-}),
-smalltalk.CollectionTest);
-
 smalltalk.addMethod(
 smalltalk.method({
 selector: "testAddAll",
@@ -1637,17 +1637,62 @@ selector: "testCollect",
 protocol: 'tests',
 fn: function (){
 var self=this;
-var newCollection;
 return smalltalk.withContext(function($ctx1) { 
-newCollection=[(1), (2), (3), (4)];
-self._assertSameContents_as_(_st(self._collection())._collect_((function(each){
+var $2,$1,$3,$5,$4,$8,$7,$6,$11,$10,$9;
+$2=self._collection();
+$ctx1.sendIdx["collection"]=1;
+$1=_st($2)._collect_((function(each){
 return smalltalk.withContext(function($ctx2) {
-return _st(each)._abs();
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})})),newCollection);
-return self}, function($ctx1) {$ctx1.fill(self,"testCollect",{newCollection:newCollection},smalltalk.CollectionTest)})},
+return each;
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
+$ctx1.sendIdx["collect:"]=1;
+$3=self._collection();
+$ctx1.sendIdx["collection"]=2;
+self._assert_equals_($1,$3);
+$ctx1.sendIdx["assert:equals:"]=1;
+$5=self._collectionWithNewValue();
+$ctx1.sendIdx["collectionWithNewValue"]=1;
+$4=_st($5)._collect_((function(each){
+return smalltalk.withContext(function($ctx2) {
+return each;
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}));
+$ctx1.sendIdx["collect:"]=2;
+self._assert_equals_($4,self._collectionWithNewValue());
+$ctx1.sendIdx["assert:equals:"]=2;
+$8=self._collectionClass();
+$ctx1.sendIdx["collectionClass"]=1;
+$7=_st($8)._new();
+$ctx1.sendIdx["new"]=1;
+$6=_st($7)._collect_((function(each){
+return smalltalk.withContext(function($ctx2) {
+return _st(each)._printString();
+$ctx2.sendIdx["printString"]=1;
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)})}));
+$ctx1.sendIdx["collect:"]=3;
+self._assert_equals_($6,_st(self._collectionClass())._new());
+$ctx1.sendIdx["assert:equals:"]=3;
+$11=self._collection();
+$ctx1.sendIdx["collection"]=3;
+$10=_st($11)._collect_((function(){
+return smalltalk.withContext(function($ctx2) {
+return self._sampleNewValue();
+$ctx2.sendIdx["sampleNewValue"]=1;
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,4)})}));
+$ctx1.sendIdx["collect:"]=4;
+$9=_st($10)._detect_((function(){
+return smalltalk.withContext(function($ctx2) {
+return true;
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,5)})}));
+self._assert_equals_($9,self._sampleNewValue());
+$ctx1.sendIdx["assert:equals:"]=4;
+self._assert_equals_(_st(self._collection())._collect_((function(each){
+return smalltalk.withContext(function($ctx2) {
+return _st(each)._printString();
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,6)})})),self._collectionOfPrintStrings());
+return self}, function($ctx1) {$ctx1.fill(self,"testCollect",{},smalltalk.CollectionTest)})},
 args: [],
-source: "testCollect\x0a\x09| newCollection |\x0a\x09newCollection := #(1 2 3 4).\x0a\x09self\x0a\x09\x09assertSameContents: (self collection collect: [ :each |\x0a\x09\x09\x09each abs ])\x0a\x09\x09as: newCollection",
-messageSends: ["assertSameContents:as:", "collect:", "collection", "abs"],
+source: "testCollect\x0a\x09self assert: (self collection collect: [ :each | each ]) equals: self collection.\x0a\x09self assert: (self collectionWithNewValue collect: [ :each | each ]) equals: self collectionWithNewValue.\x0a\x09self assert: (self collectionClass new collect: [ :each | each printString ]) equals: self collectionClass new.\x0a\x09self assert: ((self collection collect: [ self sampleNewValue ]) detect: [ true ]) equals: self sampleNewValue.\x0a\x09self assert: (self collection collect: [ :each | each printString ]) equals: self collectionOfPrintStrings",
+messageSends: ["assert:equals:", "collect:", "collection", "collectionWithNewValue", "new", "collectionClass", "printString", "detect:", "sampleNewValue", "collectionOfPrintStrings"],
 referencedClasses: []
 }),
 smalltalk.CollectionTest);
@@ -1722,26 +1767,59 @@ fn: function (){
 var self=this;
 function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
 return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
+var $1,$2,$3,$4,$6,$5,$7;
+self._shouldnt_raise_((function(){
+return smalltalk.withContext(function($ctx2) {
+$1=self._collection();
+$ctx2.sendIdx["collection"]=1;
+return _st($1)._detect_((function(){
+return smalltalk.withContext(function($ctx3) {
+return true;
+}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
+$ctx2.sendIdx["detect:"]=1;
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),$Error());
+self._should_raise_((function(){
+return smalltalk.withContext(function($ctx2) {
 $2=self._collection();
-$ctx1.sendIdx["collection"]=1;
-$1=_st($2)._detect_((function(each){
+$ctx2.sendIdx["collection"]=2;
+return _st($2)._detect_((function(){
+return smalltalk.withContext(function($ctx3) {
+return false;
+}, function($ctx3) {$ctx3.fillBlock({},$ctx2,4)})}));
+$ctx2.sendIdx["detect:"]=2;
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}),$Error());
+$ctx1.sendIdx["should:raise:"]=1;
+$3=_st(self._sampleNewValueAsCollection())._detect_((function(){
 return smalltalk.withContext(function($ctx2) {
-return _st(each).__lt((0));
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-$ctx1.sendIdx["detect:"]=1;
-self._assert_equals_($1,(-4));
+return true;
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,5)})}));
+$ctx1.sendIdx["detect:"]=3;
+$4=self._sampleNewValue();
+$ctx1.sendIdx["sampleNewValue"]=1;
+self._assert_equals_($3,$4);
+$ctx1.sendIdx["assert:equals:"]=1;
+$5=_st(self._collectionWithNewValue())._detect_((function(each){
+return smalltalk.withContext(function($ctx2) {
+$6=self._sampleNewValue();
+$ctx2.sendIdx["sampleNewValue"]=2;
+return _st(each).__eq($6);
+$ctx2.sendIdx["="]=1;
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,6)})}));
+$ctx1.sendIdx["detect:"]=4;
+$7=self._sampleNewValue();
+$ctx1.sendIdx["sampleNewValue"]=3;
+self._assert_equals_($5,$7);
 self._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
 return _st(self._collection())._detect_((function(each){
 return smalltalk.withContext(function($ctx3) {
-return _st(each).__eq((6));
-}, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,3)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}),$Error());
+return _st(each).__eq(self._sampleNewValue());
+}, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,8)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,7)})}),$Error());
 return self}, function($ctx1) {$ctx1.fill(self,"testDetect",{},smalltalk.CollectionTest)})},
 args: [],
-source: "testDetect\x0a\x09self assert: (self collection detect: [ :each | each < 0 ]) equals: -4.\x0a\x09self\x0a\x09\x09should: [ self collection detect: [ :each | each = 6 ] ]\x0a\x09\x09raise: Error",
-messageSends: ["assert:equals:", "detect:", "collection", "<", "should:raise:", "="],
+source: "testDetect\x0a\x09self\x0a\x09\x09shouldnt: [ self collection detect: [ true ] ]\x0a\x09\x09raise: Error.\x0a\x09self\x0a\x09\x09should: [ self collection detect: [ false ] ]\x0a\x09\x09raise: Error.\x0a\x09self assert: (self sampleNewValueAsCollection detect: [ true ]) equals: self sampleNewValue.\x0a\x09self assert: (self collectionWithNewValue detect: [ :each | each = self sampleNewValue  ]) equals: self sampleNewValue.\x0a\x09self\x0a\x09\x09should: [ self collection detect: [ :each | each = self sampleNewValue ] ]\x0a\x09\x09raise: Error",
+messageSends: ["shouldnt:raise:", "detect:", "collection", "should:raise:", "assert:equals:", "sampleNewValueAsCollection", "sampleNewValue", "collectionWithNewValue", "="],
 referencedClasses: ["Error"]
 }),
 smalltalk.CollectionTest);
@@ -1966,17 +2044,77 @@ selector: "testSelect",
 protocol: 'tests',
 fn: function (){
 var self=this;
-var newCollection;
 return smalltalk.withContext(function($ctx1) { 
-newCollection=[(2), (-4)];
-self._assertSameContents_as_(_st(self._collection())._select_((function(each){
+var $2,$1,$4,$3,$6,$5,$7,$9,$10,$8,$12,$13,$11,$14,$16,$17,$15;
+$2=self._collection();
+$ctx1.sendIdx["collection"]=1;
+$1=_st($2)._select_((function(){
+return smalltalk.withContext(function($ctx2) {
+return false;
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
+$ctx1.sendIdx["select:"]=1;
+$4=self._collectionClass();
+$ctx1.sendIdx["collectionClass"]=1;
+$3=_st($4)._new();
+$ctx1.sendIdx["new"]=1;
+self._assert_equals_($1,$3);
+$ctx1.sendIdx["assert:equals:"]=1;
+$6=self._collection();
+$ctx1.sendIdx["collection"]=2;
+$5=_st($6)._select_((function(){
+return smalltalk.withContext(function($ctx2) {
+return true;
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
+$ctx1.sendIdx["select:"]=2;
+$7=self._collection();
+$ctx1.sendIdx["collection"]=3;
+self._assert_equals_($5,$7);
+$ctx1.sendIdx["assert:equals:"]=2;
+$9=self._collectionWithNewValue();
+$ctx1.sendIdx["collectionWithNewValue"]=1;
+$8=_st($9)._select_((function(each){
+return smalltalk.withContext(function($ctx2) {
+$10=self._sampleNewValue();
+$ctx2.sendIdx["sampleNewValue"]=1;
+return _st(each).__eq($10);
+$ctx2.sendIdx["="]=1;
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)})}));
+$ctx1.sendIdx["select:"]=3;
+self._assert_equals_($8,self._sampleNewValueAsCollection());
+$ctx1.sendIdx["assert:equals:"]=3;
+$12=self._collectionWithNewValue();
+$ctx1.sendIdx["collectionWithNewValue"]=2;
+$11=_st($12)._select_((function(each){
+return smalltalk.withContext(function($ctx2) {
+$13=self._sampleNewValue();
+$ctx2.sendIdx["sampleNewValue"]=2;
+return _st(each).__tild_eq($13);
+$ctx2.sendIdx["~="]=1;
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,4)})}));
+$ctx1.sendIdx["select:"]=4;
+$14=self._collection();
+$ctx1.sendIdx["collection"]=4;
+self._assert_equals_($11,$14);
+$ctx1.sendIdx["assert:equals:"]=4;
+$16=self._collection();
+$ctx1.sendIdx["collection"]=5;
+$15=_st($16)._select_((function(each){
 return smalltalk.withContext(function($ctx2) {
-return _st(each)._even();
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})})),newCollection);
-return self}, function($ctx1) {$ctx1.fill(self,"testSelect",{newCollection:newCollection},smalltalk.CollectionTest)})},
+$17=self._sampleNewValue();
+$ctx2.sendIdx["sampleNewValue"]=3;
+return _st(each).__eq($17);
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,5)})}));
+$ctx1.sendIdx["select:"]=5;
+self._assert_equals_($15,_st(self._collectionClass())._new());
+$ctx1.sendIdx["assert:equals:"]=5;
+self._assert_equals_(_st(self._collectionWithNewValue())._select_((function(each){
+return smalltalk.withContext(function($ctx2) {
+return _st(each).__tild_eq(self._sampleNewValue());
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,6)})})),self._collection());
+return self}, function($ctx1) {$ctx1.fill(self,"testSelect",{},smalltalk.CollectionTest)})},
 args: [],
-source: "testSelect\x0a\x09| newCollection |\x0a\x09newCollection := #(2 -4).\x0a\x09self\x0a\x09\x09assertSameContents: (self collection select: [ :each |\x0a\x09\x09\x09each even ])\x0a\x09\x09as: newCollection",
-messageSends: ["assertSameContents:as:", "select:", "collection", "even"],
+source: "testSelect\x0a\x09self assert: (self collection select: [ false ]) equals: self collectionClass new.\x0a\x09self assert: (self collection select: [ true ]) equals: self collection.\x0a\x09self assert: (self collectionWithNewValue select: [ :each | each = self sampleNewValue ]) equals: self sampleNewValueAsCollection.\x0a\x09self assert: (self collectionWithNewValue select: [ :each | each ~= self sampleNewValue ]) equals: self collection.\x0a\x09self assert: (self collection select: [ :each | each = self sampleNewValue ]) equals: self collectionClass new.\x0a\x09self assert: (self collectionWithNewValue select: [ :each | each ~= self sampleNewValue ]) equals: self collection",
+messageSends: ["assert:equals:", "select:", "collection", "new", "collectionClass", "collectionWithNewValue", "=", "sampleNewValue", "sampleNewValueAsCollection", "~="],
 referencedClasses: []
 }),
 smalltalk.CollectionTest);
@@ -2152,12 +2290,12 @@ $2=self._collection();
 $ctx2.sendIdx["collection"]=1;
 $1=_st($2)._at_ifAbsent_(each,(function(){
 return smalltalk.withContext(function($ctx3) {
-return self._sampleNonValue();
-$ctx3.sendIdx["sampleNonValue"]=1;
+return self._sampleNewValue();
+$ctx3.sendIdx["sampleNewValue"]=1;
 }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
 $ctx2.sendIdx["at:ifAbsent:"]=1;
-$3=self._sampleNonValue();
-$ctx2.sendIdx["sampleNonValue"]=2;
+$3=self._sampleNewValue();
+$ctx2.sendIdx["sampleNewValue"]=2;
 return self._assert_equals_($1,$3);
 $ctx2.sendIdx["assert:equals:"]=1;
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
@@ -2165,13 +2303,13 @@ self._samplesDo_((function(index,value){
 return smalltalk.withContext(function($ctx2) {
 return self._assert_equals_(_st(self._collection())._at_ifAbsent_(index,(function(){
 return smalltalk.withContext(function($ctx3) {
-return self._sampleNonValue();
+return self._sampleNewValue();
 }, function($ctx3) {$ctx3.fillBlock({},$ctx2,4)})})),value);
 }, function($ctx2) {$ctx2.fillBlock({index:index,value:value},$ctx1,3)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"testAtIfAbsent",{},smalltalk.IndexableCollectionTest)})},
 args: [],
-source: "testAtIfAbsent\x0a\x09self nonIndexesDo: [ :each |\x0a\x09\x09self assert: (self collection at: each ifAbsent: [ self sampleNonValue ]) equals: self sampleNonValue ].\x0a\x09self samplesDo: [ :index :value |\x0a\x09\x09self assert: (self collection at: index ifAbsent: [ self sampleNonValue ]) equals: value ].",
-messageSends: ["nonIndexesDo:", "assert:equals:", "at:ifAbsent:", "collection", "sampleNonValue", "samplesDo:"],
+source: "testAtIfAbsent\x0a\x09self nonIndexesDo: [ :each |\x0a\x09\x09self assert: (self collection at: each ifAbsent: [ self sampleNewValue ]) equals: self sampleNewValue ].\x0a\x09self samplesDo: [ :index :value |\x0a\x09\x09self assert: (self collection at: index ifAbsent: [ self sampleNewValue ]) equals: value ].",
+messageSends: ["nonIndexesDo:", "assert:equals:", "at:ifAbsent:", "collection", "sampleNewValue", "samplesDo:"],
 referencedClasses: []
 }),
 smalltalk.IndexableCollectionTest);
@@ -2252,12 +2390,12 @@ visited;
 return sentinel;
 }, function($ctx3) {$ctx3.fillBlock({value1:value1},$ctx2,2)})}),(function(){
 return smalltalk.withContext(function($ctx3) {
-return self._sampleNonValue();
-$ctx3.sendIdx["sampleNonValue"]=1;
+return self._sampleNewValue();
+$ctx3.sendIdx["sampleNewValue"]=1;
 }, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)})}));
 $ctx2.sendIdx["at:ifPresent:ifAbsent:"]=1;
-$3=self._sampleNonValue();
-$ctx2.sendIdx["sampleNonValue"]=2;
+$3=self._sampleNewValue();
+$ctx2.sendIdx["sampleNewValue"]=2;
 self._assert_equals_($1,$3);
 $ctx2.sendIdx["assert:equals:"]=1;
 return self._assert_(_st(visited)._isNil());
@@ -2275,7 +2413,7 @@ visited;
 return sentinel;
 }, function($ctx3) {$ctx3.fillBlock({value2:value2},$ctx2,5)})}),(function(){
 return smalltalk.withContext(function($ctx3) {
-return self._sampleNonValue();
+return self._sampleNewValue();
 }, function($ctx3) {$ctx3.fillBlock({},$ctx2,6)})}));
 self._assert_equals_($4,sentinel);
 $ctx2.sendIdx["assert:equals:"]=2;
@@ -2283,8 +2421,8 @@ return self._assert_equals_(visited,_st(self._collection())._at_(index));
 }, function($ctx2) {$ctx2.fillBlock({index:index,value:value},$ctx1,4)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"testAtIfPresentIfAbsent",{visited:visited,sentinel:sentinel},smalltalk.IndexableCollectionTest)})},
 args: [],
-source: "testAtIfPresentIfAbsent\x0a\x09| visited sentinel |\x0a\x09sentinel := Object new.\x0a\x09self nonIndexesDo: [ :each |\x0a\x09\x09visited := nil.\x0a\x09\x09self assert: (self collection at: each ifPresent: [ :value1 | visited := value1. sentinel ] ifAbsent: [ self sampleNonValue ] ) equals: self sampleNonValue.\x0a\x09\x09self assert: visited isNil ].\x0a\x09self samplesDo: [ :index :value |\x0a\x09\x09visited := nil.\x0a\x09\x09self assert: (self collection at: index ifPresent: [ :value2 | visited := value2. sentinel ] ifAbsent: [ self sampleNonValue ]) equals: sentinel.\x0a\x09\x09self assert: visited equals: (self collection at: index) ]",
-messageSends: ["new", "nonIndexesDo:", "assert:equals:", "at:ifPresent:ifAbsent:", "collection", "sampleNonValue", "assert:", "isNil", "samplesDo:", "at:"],
+source: "testAtIfPresentIfAbsent\x0a\x09| visited sentinel |\x0a\x09sentinel := Object new.\x0a\x09self nonIndexesDo: [ :each |\x0a\x09\x09visited := nil.\x0a\x09\x09self assert: (self collection at: each ifPresent: [ :value1 | visited := value1. sentinel ] ifAbsent: [ self sampleNewValue ] ) equals: self sampleNewValue.\x0a\x09\x09self assert: visited isNil ].\x0a\x09self samplesDo: [ :index :value |\x0a\x09\x09visited := nil.\x0a\x09\x09self assert: (self collection at: index ifPresent: [ :value2 | visited := value2. sentinel ] ifAbsent: [ self sampleNewValue ]) equals: sentinel.\x0a\x09\x09self assert: visited equals: (self collection at: index) ]",
+messageSends: ["new", "nonIndexesDo:", "assert:equals:", "at:ifPresent:ifAbsent:", "collection", "sampleNewValue", "assert:", "isNil", "samplesDo:", "at:"],
 referencedClasses: ["Object"]
 }),
 smalltalk.IndexableCollectionTest);
@@ -2329,7 +2467,7 @@ self._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
 $1=self._collection();
 $ctx2.sendIdx["collection"]=1;
-return _st($1)._indexOf_(self._sampleNonValue());
+return _st($1)._indexOf_(self._sampleNewValue());
 $ctx2.sendIdx["indexOf:"]=1;
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),$Error());
 self._samplesDo_((function(index,value){
@@ -2338,8 +2476,8 @@ return self._assert_equals_(_st(self._collection())._indexOf_(value),index);
 }, function($ctx2) {$ctx2.fillBlock({index:index,value:value},$ctx1,2)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"testIndexOf",{},smalltalk.IndexableCollectionTest)})},
 args: [],
-source: "testIndexOf\x0a\x09self should: [ self collection indexOf: self sampleNonValue ] raise: Error.\x0a\x09self samplesDo: [ :index :value |\x0a\x09\x09self assert: (self collection indexOf: value) equals: index ]",
-messageSends: ["should:raise:", "indexOf:", "collection", "sampleNonValue", "samplesDo:", "assert:equals:"],
+source: "testIndexOf\x0a\x09self should: [ self collection indexOf: self sampleNewValue ] raise: Error.\x0a\x09self samplesDo: [ :index :value |\x0a\x09\x09self assert: (self collection indexOf: value) equals: index ]",
+messageSends: ["should:raise:", "indexOf:", "collection", "sampleNewValue", "samplesDo:", "assert:equals:"],
 referencedClasses: ["Error"]
 }),
 smalltalk.IndexableCollectionTest);
@@ -2393,6 +2531,30 @@ referencedClasses: []
 }),
 smalltalk.HashedCollectionTest);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "collectionOfPrintStrings",
+protocol: 'fixture',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$3,$4,$1;
+$2="b".__minus_gt("1");
+$ctx1.sendIdx["->"]=1;
+$3="a".__minus_gt("2");
+$ctx1.sendIdx["->"]=2;
+$4="c".__minus_gt("3");
+$ctx1.sendIdx["->"]=3;
+$1=smalltalk.HashedCollection._from_([$2,$3,$4,"d".__minus_gt("-4")]);
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"collectionOfPrintStrings",{},smalltalk.HashedCollectionTest)})},
+args: [],
+source: "collectionOfPrintStrings\x0a\x09^ #{ 'b' -> '1'. 'a' -> '2'. 'c' -> '3'. 'd' -> '-4' }",
+messageSends: ["->"],
+referencedClasses: []
+}),
+smalltalk.HashedCollectionTest);
+
 smalltalk.addMethod(
 smalltalk.method({
 selector: "collectionSize",
@@ -2722,6 +2884,34 @@ referencedClasses: ["Dictionary"]
 }),
 smalltalk.DictionaryTest);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "collectionOfPrintStrings",
+protocol: 'fixture',
+fn: function (){
+var self=this;
+function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
+return smalltalk.withContext(function($ctx1) { 
+var $2,$3,$1;
+$2=_st($Dictionary())._new();
+_st($2)._at_put_((1),"1");
+$ctx1.sendIdx["at:put:"]=1;
+_st($2)._at_put_("a","2");
+$ctx1.sendIdx["at:put:"]=2;
+_st($2)._at_put_(true,"3");
+$ctx1.sendIdx["at:put:"]=3;
+_st($2)._at_put_((1).__at((3)),"-4");
+$3=_st($2)._yourself();
+$1=$3;
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"collectionOfPrintStrings",{},smalltalk.DictionaryTest)})},
+args: [],
+source: "collectionOfPrintStrings\x0a\x09^ Dictionary new\x0a\x09\x09at: 1 put: '1';\x0a\x09\x09at: 'a' put: '2';\x0a\x09\x09at: true put: '3';\x0a\x09\x09at: 1@3 put: '-4';\x0a\x09\x09yourself",
+messageSends: ["at:put:", "new", "@", "yourself"],
+referencedClasses: ["Dictionary"]
+}),
+smalltalk.DictionaryTest);
+
 smalltalk.addMethod(
 smalltalk.method({
 selector: "collectionSize",
@@ -3682,6 +3872,24 @@ referencedClasses: []
 }),
 smalltalk.ArrayTest);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "collectionOfPrintStrings",
+protocol: 'fixture',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=["1", "2", "3", "-4"];
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"collectionOfPrintStrings",{},smalltalk.ArrayTest)})},
+args: [],
+source: "collectionOfPrintStrings\x0a\x09^ #('1' '2' '3' '-4')",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.ArrayTest);
+
 smalltalk.addMethod(
 smalltalk.method({
 selector: "collectionSize",
@@ -4090,6 +4298,22 @@ referencedClasses: []
 }),
 smalltalk.StringTest);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "collectionOfPrintStrings",
+protocol: 'fixture',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return "'h''e''l''l''o'";
+}, function($ctx1) {$ctx1.fill(self,"collectionOfPrintStrings",{},smalltalk.StringTest)})},
+args: [],
+source: "collectionOfPrintStrings\x0a\x09^ '''h''''e''''l''''l''''o'''",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.StringTest);
+
 smalltalk.addMethod(
 smalltalk.method({
 selector: "collectionSize",
@@ -4404,27 +4628,6 @@ referencedClasses: []
 }),
 smalltalk.StringTest);
 
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testCollect",
-protocol: 'tests',
-fn: function (){
-var self=this;
-var newCollection;
-return smalltalk.withContext(function($ctx1) { 
-newCollection="hheelllloo";
-self._assertSameContents_as_(_st(self._collection())._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each).__comma(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})})),newCollection);
-return self}, function($ctx1) {$ctx1.fill(self,"testCollect",{newCollection:newCollection},smalltalk.StringTest)})},
-args: [],
-source: "testCollect\x0a\x09| newCollection |\x0a\x09newCollection := 'hheelllloo'.\x0a\x09self\x0a\x09\x09assertSameContents: (self collection collect: [ :each |\x0a\x09\x09\x09each, each ])\x0a\x09\x09as: newCollection",
-messageSends: ["assertSameContents:as:", "collect:", "collection", ","],
-referencedClasses: []
-}),
-smalltalk.StringTest);
-
 smalltalk.addMethod(
 smalltalk.method({
 selector: "testCopyFromTo",
@@ -4462,39 +4665,6 @@ referencedClasses: []
 }),
 smalltalk.StringTest);
 
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testDetect",
-protocol: 'tests',
-fn: function (){
-var self=this;
-function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self._collection();
-$ctx1.sendIdx["collection"]=1;
-$1=_st($2)._detect_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each).__eq("h");
-$ctx2.sendIdx["="]=1;
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-$ctx1.sendIdx["detect:"]=1;
-self._assert_equals_($1,"h");
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._collection())._detect_((function(each){
-return smalltalk.withContext(function($ctx3) {
-return _st(each).__eq((6));
-}, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,3)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}),$Error());
-return self}, function($ctx1) {$ctx1.fill(self,"testDetect",{},smalltalk.StringTest)})},
-args: [],
-source: "testDetect\x0a\x09self assert: (self collection detect: [ :each | each = 'h' ]) equals: 'h'.\x0a\x09self\x0a\x09\x09should: [ self collection detect: [ :each | each = 6 ] ]\x0a\x09\x09raise: Error",
-messageSends: ["assert:equals:", "detect:", "collection", "=", "should:raise:"],
-referencedClasses: ["Error"]
-}),
-smalltalk.StringTest);
-
 smalltalk.addMethod(
 smalltalk.method({
 selector: "testEquality",
@@ -4684,27 +4854,6 @@ referencedClasses: []
 }),
 smalltalk.StringTest);
 
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testSelect",
-protocol: 'tests',
-fn: function (){
-var self=this;
-var newCollection;
-return smalltalk.withContext(function($ctx1) { 
-newCollection="o";
-self._assertSameContents_as_(_st(self._collection())._select_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each).__eq("o");
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})})),newCollection);
-return self}, function($ctx1) {$ctx1.fill(self,"testSelect",{newCollection:newCollection},smalltalk.StringTest)})},
-args: [],
-source: "testSelect\x0a\x09| newCollection |\x0a\x09newCollection := 'o'.\x0a\x09self\x0a\x09\x09assertSameContents: (self collection select: [ :each |\x0a\x09\x09\x09each = 'o' ])\x0a\x09\x09as: newCollection",
-messageSends: ["assertSameContents:as:", "select:", "collection", "="],
-referencedClasses: []
-}),
-smalltalk.StringTest);
-
 smalltalk.addMethod(
 smalltalk.method({
 selector: "testStreamContents",

+ 53 - 51
st/Kernel-Tests.st

@@ -404,6 +404,13 @@ collectionClass
 	^ self class collectionClass
 !
 
+collectionOfPrintStrings
+	"Answers self collection but with values
+	changed to their printStrings"
+
+	self subclassResponsibility
+!
+
 collectionSize
 	"Answers size of self collection."
 
@@ -432,13 +439,6 @@ sampleNewValueAsCollection
 	of tested type"
 	
 	^ self collectionClass with: self sampleNewValue
-!
-
-sampleNonValue
-	"Answer value that is guaranteed
-	not to be contained by self collection"
-	
-	^ 999
 ! !
 
 !CollectionTest methodsFor: 'testing'!
@@ -499,12 +499,11 @@ testAsSet
 !
 
 testCollect
-	| newCollection |
-	newCollection := #(1 2 3 4).
-	self
-		assertSameContents: (self collection collect: [ :each |
-			each abs ])
-		as: newCollection
+	self assert: (self collection collect: [ :each | each ]) equals: self collection.
+	self assert: (self collectionWithNewValue collect: [ :each | each ]) equals: self collectionWithNewValue.
+	self assert: (self collectionClass new collect: [ :each | each printString ]) equals: self collectionClass new.
+	self assert: ((self collection collect: [ self sampleNewValue ]) detect: [ true ]) equals: self sampleNewValue.
+	self assert: (self collection collect: [ :each | each printString ]) equals: self collectionOfPrintStrings
 !
 
 testComma
@@ -516,9 +515,16 @@ testComma
 !
 
 testDetect
-	self assert: (self collection detect: [ :each | each < 0 ]) equals: -4.
 	self
-		should: [ self collection detect: [ :each | each = 6 ] ]
+		shouldnt: [ self collection detect: [ true ] ]
+		raise: Error.
+	self
+		should: [ self collection detect: [ false ] ]
+		raise: Error.
+	self assert: (self sampleNewValueAsCollection detect: [ true ]) equals: self sampleNewValue.
+	self assert: (self collectionWithNewValue detect: [ :each | each = self sampleNewValue  ]) equals: self sampleNewValue.
+	self
+		should: [ self collection detect: [ :each | each = self sampleNewValue ] ]
 		raise: Error
 !
 
@@ -569,12 +575,12 @@ testRemoveAll
 !
 
 testSelect
-	| newCollection |
-	newCollection := #(2 -4).
-	self
-		assertSameContents: (self collection select: [ :each |
-			each even ])
-		as: newCollection
+	self assert: (self collection select: [ false ]) equals: self collectionClass new.
+	self assert: (self collection select: [ true ]) equals: self collection.
+	self assert: (self collectionWithNewValue select: [ :each | each = self sampleNewValue ]) equals: self sampleNewValueAsCollection.
+	self assert: (self collectionWithNewValue select: [ :each | each ~= self sampleNewValue ]) equals: self collection.
+	self assert: (self collection select: [ :each | each = self sampleNewValue ]) equals: self collectionClass new.
+	self assert: (self collectionWithNewValue select: [ :each | each ~= self sampleNewValue ]) equals: self collection
 !
 
 testSize
@@ -645,9 +651,9 @@ testAt
 
 testAtIfAbsent
 	self nonIndexesDo: [ :each |
-		self assert: (self collection at: each ifAbsent: [ self sampleNonValue ]) equals: self sampleNonValue ].
+		self assert: (self collection at: each ifAbsent: [ self sampleNewValue ]) equals: self sampleNewValue ].
 	self samplesDo: [ :index :value |
-		self assert: (self collection at: index ifAbsent: [ self sampleNonValue ]) equals: value ].
+		self assert: (self collection at: index ifAbsent: [ self sampleNewValue ]) equals: value ].
 !
 
 testAtIfPresent
@@ -668,11 +674,11 @@ testAtIfPresentIfAbsent
 	sentinel := Object new.
 	self nonIndexesDo: [ :each |
 		visited := nil.
-		self assert: (self collection at: each ifPresent: [ :value1 | visited := value1. sentinel ] ifAbsent: [ self sampleNonValue ] ) equals: self sampleNonValue.
+		self assert: (self collection at: each ifPresent: [ :value1 | visited := value1. sentinel ] ifAbsent: [ self sampleNewValue ] ) equals: self sampleNewValue.
 		self assert: visited isNil ].
 	self samplesDo: [ :index :value |
 		visited := nil.
-		self assert: (self collection at: index ifPresent: [ :value2 | visited := value2. sentinel ] ifAbsent: [ self sampleNonValue ]) equals: sentinel.
+		self assert: (self collection at: index ifPresent: [ :value2 | visited := value2. sentinel ] ifAbsent: [ self sampleNewValue ]) equals: sentinel.
 		self assert: visited equals: (self collection at: index) ]
 !
 
@@ -687,7 +693,7 @@ testAtPut
 !
 
 testIndexOf
-	self should: [ self collection indexOf: self sampleNonValue ] raise: Error.
+	self should: [ self collection indexOf: self sampleNewValue ] raise: Error.
 	self samplesDo: [ :index :value |
 		self assert: (self collection indexOf: value) equals: index ]
 !
@@ -710,6 +716,10 @@ collection
 	^ #{ 'b' -> 1. 'a' -> 2. 'c' -> 3. 'd' -> -4 }
 !
 
+collectionOfPrintStrings
+	^ #{ 'b' -> '1'. 'a' -> '2'. 'c' -> '3'. 'd' -> '-4' }
+!
+
 collectionSize
 	^ 4
 !
@@ -791,6 +801,15 @@ collection
 		yourself
 !
 
+collectionOfPrintStrings
+	^ Dictionary new
+		at: 1 put: '1';
+		at: 'a' put: '2';
+		at: true put: '3';
+		at: 1@3 put: '-4';
+		yourself
+!
+
 collectionSize
 	^ 4
 !
@@ -1095,6 +1114,10 @@ collectionLastTwo
 	^ #(3 -4)
 !
 
+collectionOfPrintStrings
+	^ #('1' '2' '3' '-4')
+!
+
 collectionSize
 	^ 4
 !
@@ -1222,6 +1245,10 @@ collectionLastTwo
 	^ 'lo'
 !
 
+collectionOfPrintStrings
+	^ '''h''''e''''l''''l''''o'''
+!
+
 collectionSize
 	^ 5
 !
@@ -1304,15 +1331,6 @@ testCharCodeAt
 	self assert: ('jackie' charCodeAt:6) equals: 101
 !
 
-testCollect
-	| newCollection |
-	newCollection := 'hheelllloo'.
-	self
-		assertSameContents: (self collection collect: [ :each |
-			each, each ])
-		as: newCollection
-!
-
 testCopyFromTo
 	self assert: ('jackie' copyFrom: 1 to: 3) equals: 'jac'.
 	self assert: ('jackie' copyFrom: 4 to: 6) equals: 'kie'.
@@ -1324,13 +1342,6 @@ testCopyWithoutAll
 		equals: 'hello world'
 !
 
-testDetect
-	self assert: (self collection detect: [ :each | each = 'h' ]) equals: 'h'.
-	self
-		should: [ self collection detect: [ :each | each = 6 ] ]
-		raise: Error
-!
-
 testEquality
 	self assert: 'hello' equals: 'hello'.
 	self deny: 'hello' = 'world'.
@@ -1386,15 +1397,6 @@ testReversed
 	self assert: 'jackiechan' reversed equals: 'nahceikcaj'.
 !
 
-testSelect
-	| newCollection |
-	newCollection := 'o'.
-	self
-		assertSameContents: (self collection select: [ :each |
-			each = 'o' ])
-		as: newCollection
-!
-
 testStreamContents
 	self
 		assert: (String streamContents: [ :aStream |