Browse Source

assertBodyEndsWith: can be passed string w/ whitespaces

Herbert Vojčík 9 years ago
parent
commit
c5ed4c3294
2 changed files with 31 additions and 12 deletions
  1. 23 8
      src/DOMite-Tests.js
  2. 8 4
      src/DOMite-Tests.st

+ 23 - 8
src/DOMite-Tests.js

@@ -11,23 +11,38 @@ selector: "assertBodyEndsWith:",
 protocol: 'testing',
 fn: function (aString){
 var self=this;
-var sanitizedBody;
+var sanitizedBody,sanitizedAssertion;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
+var $2,$3,$1;
 sanitizedBody=$recv($recv($recv(document)._body())._innerHTML())._replace_with_("\x5cs*","");
-self._assert_($recv(sanitizedBody)._endsWith_(aString));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["replace:with:"]=1;
+//>>excludeEnd("ctx");
+sanitizedAssertion=$recv(aString)._replace_with_("\x5cs*","");
+$2=$recv(sanitizedBody)._size();
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["size"]=1;
+//>>excludeEnd("ctx");
+$3=$recv(sanitizedAssertion)._size();
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["size"]=2;
+//>>excludeEnd("ctx");
+$1=$recv($2).__gt_eq($3);
+self._assert_($1);
+self._assert_equals_($recv(sanitizedBody)._last_($recv(sanitizedAssertion)._size()),sanitizedAssertion);
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"assertBodyEndsWith:",{aString:aString,sanitizedBody:sanitizedBody},$globals.DOMiteTest)});
+}, function($ctx1) {$ctx1.fill(self,"assertBodyEndsWith:",{aString:aString,sanitizedBody:sanitizedBody,sanitizedAssertion:sanitizedAssertion},$globals.DOMiteTest)});
 //>>excludeEnd("ctx");
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aString"],
-source: "assertBodyEndsWith: aString\x0a\x09| sanitizedBody |\x0a\x09sanitizedBody := document body innerHTML replace: '\x5cs*' with: ''.\x0a\x09self assert: (sanitizedBody endsWith: aString)",
+source: "assertBodyEndsWith: aString\x0a\x09| sanitizedBody sanitizedAssertion |\x0a\x09sanitizedBody := document body innerHTML replace: '\x5cs*' with: ''.\x0a\x09sanitizedAssertion := aString replace: '\x5cs*' with: ''.\x0a\x09self assert: sanitizedBody size >= sanitizedAssertion size.\x0a\x09self\x0a\x09\x09assert: (sanitizedBody last: sanitizedAssertion size)\x0a\x09\x09equals: sanitizedAssertion",
 referencedClasses: [],
 //>>excludeEnd("ide");
-messageSends: ["replace:with:", "innerHTML", "body", "assert:", "endsWith:"]
+messageSends: ["replace:with:", "innerHTML", "body", "assert:", ">=", "size", "assert:equals:", "last:"]
 }),
 $globals.DOMiteTest);
 
@@ -786,7 +801,7 @@ $recv(tbl).__lt_lt(tr);
 $ctx1.sendIdx["<<"]=14;
 //>>excludeEnd("ctx");
 $recv(d).__lt_lt(tbl);
-self._assertBodyEndsWith_("table><tr><td>A</td><td>B</td><td>C</td></tr><tr><td>D</td><td>E</td><td>F</td></tr></table></div>");
+self._assertBodyEndsWith_(">sentinel<table><tr><td>A</td><td>B</td><td>C</td></tr><tr><td>D</td><td>E</td><td>F</td></tr></table></div>");
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"testInsertTable",{d:d,tbl:tbl,tr:tr},$globals.DOMiteTest)});
@@ -794,7 +809,7 @@ return self;
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
-source: "testInsertTable\x0a\x09| d tbl tr |\x0a\x09d := self testedClass at: 'html body div#fixture'.\x0a\x09tbl := self testedClass newElement: 'table'.\x0a\x09\x0a\x09tr := self testedClass newElement: 'tr'.\x0a\x09tr << ((self testedClass newElement: 'td') << 'A').\x0a\x09tr << ((self testedClass newElement: 'td') << 'B').\x0a\x09tr << ((self testedClass newElement: 'td') << 'C').\x0a\x09\x0a\x09tbl << tr.\x0a\x09\x0a\x09tr := Domite newElement: 'tr'.\x0a\x09tr << ((Domite newElement: 'td') << 'D').\x0a\x09tr << ((Domite newElement: 'td') << 'E').\x0a\x09tr << ((Domite newElement: 'td') << 'F').\x0a\x09\x0a\x09tbl << tr.\x0a\x09d << tbl.\x0a\x09 \x0a\x09self assertBodyEndsWith: 'table><tr><td>A</td><td>B</td><td>C</td></tr><tr><td>D</td><td>E</td><td>F</td></tr></table></div>'",
+source: "testInsertTable\x0a\x09| d tbl tr |\x0a\x09d := self testedClass at: 'html body div#fixture'.\x0a\x09tbl := self testedClass newElement: 'table'.\x0a\x09\x0a\x09tr := self testedClass newElement: 'tr'.\x0a\x09tr << ((self testedClass newElement: 'td') << 'A').\x0a\x09tr << ((self testedClass newElement: 'td') << 'B').\x0a\x09tr << ((self testedClass newElement: 'td') << 'C').\x0a\x09\x0a\x09tbl << tr.\x0a\x09\x0a\x09tr := Domite newElement: 'tr'.\x0a\x09tr << ((Domite newElement: 'td') << 'D').\x0a\x09tr << ((Domite newElement: 'td') << 'E').\x0a\x09tr << ((Domite newElement: 'td') << 'F').\x0a\x09\x0a\x09tbl << tr.\x0a\x09d << tbl.\x0a\x09 \x0a\x09self assertBodyEndsWith: '>sentinel<table><tr><td>A</td><td>B</td><td>C</td></tr><tr><td>D</td><td>E</td><td>F</td></tr></table></div>'",
 referencedClasses: ["Domite"],
 //>>excludeEnd("ide");
 messageSends: ["at:", "testedClass", "newElement:", "<<", "assertBodyEndsWith:"]
@@ -970,7 +985,7 @@ return $Domite();
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
-source: "testedClass\x0a\x0a ^Domite",
+source: "testedClass\x0a\x0a\x09^ Domite",
 referencedClasses: ["Domite"],
 //>>excludeEnd("ide");
 messageSends: []

+ 8 - 4
src/DOMite-Tests.st

@@ -21,15 +21,19 @@ tearDown
 
 testedClass
 
- ^Domite
+	^ Domite
 ! !
 
 !DOMiteTest methodsFor: 'testing'!
 
 assertBodyEndsWith: aString
-	| sanitizedBody |
+	| sanitizedBody sanitizedAssertion |
 	sanitizedBody := document body innerHTML replace: '\s*' with: ''.
-	self assert: (sanitizedBody endsWith: aString)
+	sanitizedAssertion := aString replace: '\s*' with: ''.
+	self assert: sanitizedBody size >= sanitizedAssertion size.
+	self
+		assert: (sanitizedBody last: sanitizedAssertion size)
+		equals: sanitizedAssertion
 !
 
 testDefaultInsertElement
@@ -149,7 +153,7 @@ testInsertTable
 	tbl << tr.
 	d << tbl.
 	 
-	self assertBodyEndsWith: 'table><tr><td>A</td><td>B</td><td>C</td></tr><tr><td>D</td><td>E</td><td>F</td></tr></table></div>'
+	self assertBodyEndsWith: '>sentinel<table><tr><td>A</td><td>B</td><td>C</td></tr><tr><td>D</td><td>E</td><td>F</td></tr></table></div>'
 !
 
 testMultipleInserts