Browse Source

Tests for insertion behaviour. Fix #1.

Herbert Vojčík 9 years ago
parent
commit
4dbb95db65
2 changed files with 631 additions and 2 deletions
  1. 530 1
      src/DOMite-Tests.js
  2. 101 1
      src/DOMite-Tests.st

+ 530 - 1
src/DOMite-Tests.js

@@ -4,6 +4,535 @@ $core.addPackage('DOMite-Tests');
 $core.packages["DOMite-Tests"].innerEval = function (expr) { return eval(expr); };
 $core.packages["DOMite-Tests"].transport = {"type":"amd","amdNamespace":"domite"};
 
-$core.addClass('DOMiteTest', $globals.TestCase, [], 'DOMite-Tests');
+$core.addClass('DOMiteTest', $globals.TestCase, ['fixtureDiv'], 'DOMite-Tests');
+$core.addMethod(
+$core.method({
+selector: "setUp",
+protocol: 'fixture',
+fn: function (){
+var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+self["@fixtureDiv"]=$recv(document)._createElement_("div");
+$recv($recv(document)._body())._appendChild_(self["@fixtureDiv"]);
+$recv(self["@fixtureDiv"])._setAttribute_to_("id","fixture");
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"setUp",{},$globals.DOMiteTest)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: [],
+source: "setUp\x0a\x09fixtureDiv := document createElement: 'div'.\x0a\x09document body appendChild: fixtureDiv.\x0a\x09fixtureDiv setAttribute: 'id' to: 'fixture'",
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["createElement:", "appendChild:", "body", "setAttribute:to:"]
+}),
+$globals.DOMiteTest);
+
+$core.addMethod(
+$core.method({
+selector: "tearDown",
+protocol: 'fixture',
+fn: function (){
+var self=this;
+var lastChild;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+var $1;
+$1=$recv(document)._body();
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["body"]=1;
+//>>excludeEnd("ctx");
+lastChild=$recv($1)._lastChild();
+self._assert_equals_(lastChild,self["@fixtureDiv"]);
+$recv($recv(document)._body())._removeChild_(lastChild);
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"tearDown",{lastChild:lastChild},$globals.DOMiteTest)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: [],
+source: "tearDown\x0a\x09| lastChild |\x0a\x09lastChild := document body lastChild.\x0a\x09self assert: lastChild equals: fixtureDiv.\x0a\x09document body removeChild: lastChild",
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["lastChild", "body", "assert:equals:", "removeChild:"]
+}),
+$globals.DOMiteTest);
+
+$core.addMethod(
+$core.method({
+selector: "testDefaultInsertElement",
+protocol: 'testing',
+fn: function (){
+var self=this;
+function $Domite(){return $globals.Domite||(typeof Domite=="undefined"?nil:Domite)}
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+var $3,$2,$1,$4;
+$recv($recv($Domite())._new())._insertDomite_($recv($Domite())._newElement_("p"));
+$3=$recv(document)._body();
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["body"]=1;
+//>>excludeEnd("ctx");
+$2=$recv($3)._innerHTML();
+$1=$recv($2)._endsWith_("<p></p>");
+self._assert_($1);
+$4=$recv(document)._body();
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["body"]=2;
+//>>excludeEnd("ctx");
+$recv($4)._removeChild_($recv($recv(document)._body())._lastChild());
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"testDefaultInsertElement",{},$globals.DOMiteTest)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: [],
+source: "testDefaultInsertElement\x0a\x09Domite new insertDomite: (Domite newElement: 'p').\x0a\x09self assert: (document body innerHTML endsWith: '<p></p>').\x0a\x09document body removeChild: document body lastChild",
+referencedClasses: ["Domite"],
+//>>excludeEnd("ide");
+messageSends: ["insertDomite:", "new", "newElement:", "assert:", "endsWith:", "innerHTML", "body", "removeChild:", "lastChild"]
+}),
+$globals.DOMiteTest);
+
+$core.addMethod(
+$core.method({
+selector: "testDefaultInsertString",
+protocol: 'testing',
+fn: function (){
+var self=this;
+function $Domite(){return $globals.Domite||(typeof Domite=="undefined"?nil:Domite)}
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+var $3,$2,$1,$4;
+$recv($recv($Domite())._new())._insertString_("a foo in a bar");
+$3=$recv(document)._body();
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["body"]=1;
+//>>excludeEnd("ctx");
+$2=$recv($3)._innerHTML();
+$1=$recv($2)._endsWith_("a foo in a bar");
+self._assert_($1);
+$4=$recv(document)._body();
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["body"]=2;
+//>>excludeEnd("ctx");
+$recv($4)._removeChild_($recv($recv(document)._body())._lastChild());
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"testDefaultInsertString",{},$globals.DOMiteTest)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: [],
+source: "testDefaultInsertString\x0a\x09Domite new insertString: 'a foo in a bar'.\x0a\x09self assert: (document body innerHTML endsWith: 'a foo in a bar').\x0a\x09document body removeChild: document body lastChild",
+referencedClasses: ["Domite"],
+//>>excludeEnd("ide");
+messageSends: ["insertString:", "new", "assert:", "endsWith:", "innerHTML", "body", "removeChild:", "lastChild"]
+}),
+$globals.DOMiteTest);
+
+$core.addMethod(
+$core.method({
+selector: "testDefaultInsertStringInFragment",
+protocol: 'testing',
+fn: function (){
+var self=this;
+function $Domite(){return $globals.Domite||(typeof Domite=="undefined"?nil:Domite)}
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+var $1,$2,$5,$4,$3,$6;
+$1=$recv($Domite())._open();
+$recv($1)._insertString_("a foo in a bar");
+$2=$recv($1)._yourself();
+$recv($recv($Domite())._new())._insertDomite_($2);
+$5=$recv(document)._body();
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["body"]=1;
+//>>excludeEnd("ctx");
+$4=$recv($5)._innerHTML();
+$3=$recv($4)._endsWith_("a foo in a bar");
+self._assert_($3);
+$6=$recv(document)._body();
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["body"]=2;
+//>>excludeEnd("ctx");
+$recv($6)._removeChild_($recv($recv(document)._body())._lastChild());
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"testDefaultInsertStringInFragment",{},$globals.DOMiteTest)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: [],
+source: "testDefaultInsertStringInFragment\x0a\x09Domite new insertDomite: (Domite open insertString: 'a foo in a bar'; yourself).\x0a\x09self assert: (document body innerHTML endsWith: 'a foo in a bar').\x0a\x09document body removeChild: document body lastChild",
+referencedClasses: ["Domite"],
+//>>excludeEnd("ide");
+messageSends: ["insertDomite:", "new", "insertString:", "open", "yourself", "assert:", "endsWith:", "innerHTML", "body", "removeChild:", "lastChild"]
+}),
+$globals.DOMiteTest);
+
+$core.addMethod(
+$core.method({
+selector: "testInsertElement",
+protocol: 'testing',
+fn: function (){
+var self=this;
+var d;
+function $Domite(){return $globals.Domite||(typeof Domite=="undefined"?nil:Domite)}
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+d=$recv($Domite())._fromElement_(self["@fixtureDiv"]);
+$recv(d)._insertDomite_($recv($Domite())._newElement_("p"));
+self._assert_($recv($recv($recv(document)._body())._innerHTML())._endsWith_("><p></p></div>"));
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"testInsertElement",{d:d},$globals.DOMiteTest)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: [],
+source: "testInsertElement\x0a\x09| d |\x0a\x09d := Domite fromElement: fixtureDiv.\x0a\x09d insertDomite: (Domite newElement: 'p').\x0a\x09self assert: (document body innerHTML endsWith: '><p></p></div>')",
+referencedClasses: ["Domite"],
+//>>excludeEnd("ide");
+messageSends: ["fromElement:", "insertDomite:", "newElement:", "assert:", "endsWith:", "innerHTML", "body"]
+}),
+$globals.DOMiteTest);
+
+$core.addMethod(
+$core.method({
+selector: "testInsertElementTwoLevel",
+protocol: 'testing',
+fn: function (){
+var self=this;
+var d,p,s;
+function $Domite(){return $globals.Domite||(typeof Domite=="undefined"?nil:Domite)}
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+d=$recv($Domite())._fromElement_(self["@fixtureDiv"]);
+p=$recv($Domite())._newElement_("p");
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["newElement:"]=1;
+//>>excludeEnd("ctx");
+$recv(d)._insertDomite_(p);
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["insertDomite:"]=1;
+//>>excludeEnd("ctx");
+s=$recv($Domite())._newElement_("span");
+$recv(p)._insertDomite_(s);
+$recv(s)._insertString_("dom-mite");
+self._assert_($recv($recv($recv(document)._body())._innerHTML())._endsWith_("><p><span>dom-mite</span></p></div>"));
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"testInsertElementTwoLevel",{d:d,p:p,s:s},$globals.DOMiteTest)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: [],
+source: "testInsertElementTwoLevel\x0a\x09| d p s |\x0a\x09d := Domite fromElement: fixtureDiv.\x0a\x09p := Domite newElement: 'p'.\x0a\x09d insertDomite: p.\x0a\x09s := Domite newElement: 'span'.\x0a\x09p insertDomite: s.\x0a\x09s insertString: 'dom-mite'.\x0a\x09self assert: (document body innerHTML endsWith: '><p><span>dom-mite</span></p></div>')",
+referencedClasses: ["Domite"],
+//>>excludeEnd("ide");
+messageSends: ["fromElement:", "newElement:", "insertDomite:", "insertString:", "assert:", "endsWith:", "innerHTML", "body"]
+}),
+$globals.DOMiteTest);
+
+$core.addMethod(
+$core.method({
+selector: "testInsertElementTwoLevelViaFragments",
+protocol: 'testing',
+fn: function (){
+var self=this;
+var d,p,s;
+function $Domite(){return $globals.Domite||(typeof Domite=="undefined"?nil:Domite)}
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+var $1,$3,$4,$2,$5,$7,$8,$6,$9,$10;
+d=$recv($Domite())._fromElement_(self["@fixtureDiv"]);
+p=$recv($Domite())._newElement_("p");
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["newElement:"]=1;
+//>>excludeEnd("ctx");
+$1=d;
+$3=$recv($Domite())._open();
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["open"]=1;
+//>>excludeEnd("ctx");
+$recv($3)._insertDomite_(p);
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["insertDomite:"]=2;
+//>>excludeEnd("ctx");
+$4=$recv($3)._yourself();
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["yourself"]=1;
+//>>excludeEnd("ctx");
+$2=$4;
+$recv($1)._insertDomite_($2);
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["insertDomite:"]=1;
+//>>excludeEnd("ctx");
+s=$recv($Domite())._newElement_("span");
+$5=p;
+$7=$recv($Domite())._open();
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["open"]=2;
+//>>excludeEnd("ctx");
+$recv($7)._insertDomite_(s);
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["insertDomite:"]=4;
+//>>excludeEnd("ctx");
+$8=$recv($7)._yourself();
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["yourself"]=2;
+//>>excludeEnd("ctx");
+$6=$8;
+$recv($5)._insertDomite_($6);
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["insertDomite:"]=3;
+//>>excludeEnd("ctx");
+$9=$recv($Domite())._open();
+$recv($9)._insertString_("dom-mite");
+$10=$recv($9)._yourself();
+$recv(s)._insertDomite_($10);
+self._assert_($recv($recv($recv(document)._body())._innerHTML())._endsWith_("><p><span>dom-mite</span></p></div>"));
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"testInsertElementTwoLevelViaFragments",{d:d,p:p,s:s},$globals.DOMiteTest)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: [],
+source: "testInsertElementTwoLevelViaFragments\x0a\x09| d p s |\x0a\x09d := Domite fromElement: fixtureDiv.\x0a\x09p := Domite newElement: 'p'.\x0a\x09d insertDomite: (Domite open insertDomite: p; yourself).\x0a\x09s := Domite newElement: 'span'.\x0a\x09p insertDomite: (Domite open insertDomite: s; yourself).\x0a\x09s insertDomite: (Domite open insertString: 'dom-mite'; yourself).\x0a\x09self assert: (document body innerHTML endsWith: '><p><span>dom-mite</span></p></div>')",
+referencedClasses: ["Domite"],
+//>>excludeEnd("ide");
+messageSends: ["fromElement:", "newElement:", "insertDomite:", "open", "yourself", "insertString:", "assert:", "endsWith:", "innerHTML", "body"]
+}),
+$globals.DOMiteTest);
+
+$core.addMethod(
+$core.method({
+selector: "testInsertElementTwoLevelViaTwoLevelFragments",
+protocol: 'testing',
+fn: function (){
+var self=this;
+var d,p,s;
+function $Domite(){return $globals.Domite||(typeof Domite=="undefined"?nil:Domite)}
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+var $1,$3,$4,$6,$7,$5,$8,$2,$9,$11,$12,$14,$15,$13,$16,$10,$17,$19,$20,$22,$23,$21,$24,$18;
+d=$recv($Domite())._fromElement_(self["@fixtureDiv"]);
+p=$recv($Domite())._newElement_("p");
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["newElement:"]=1;
+//>>excludeEnd("ctx");
+$1=d;
+$3=$recv($Domite())._open();
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["open"]=1;
+//>>excludeEnd("ctx");
+$4=$3;
+$6=$recv($Domite())._open();
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["open"]=2;
+//>>excludeEnd("ctx");
+$recv($6)._insertDomite_(p);
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["insertDomite:"]=3;
+//>>excludeEnd("ctx");
+$7=$recv($6)._yourself();
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["yourself"]=1;
+//>>excludeEnd("ctx");
+$5=$7;
+$recv($4)._insertDomite_($5);
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["insertDomite:"]=2;
+//>>excludeEnd("ctx");
+$8=$recv($3)._yourself();
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["yourself"]=2;
+//>>excludeEnd("ctx");
+$2=$8;
+$recv($1)._insertDomite_($2);
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["insertDomite:"]=1;
+//>>excludeEnd("ctx");
+s=$recv($Domite())._newElement_("span");
+$9=p;
+$11=$recv($Domite())._open();
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["open"]=3;
+//>>excludeEnd("ctx");
+$12=$11;
+$14=$recv($Domite())._open();
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["open"]=4;
+//>>excludeEnd("ctx");
+$recv($14)._insertDomite_(s);
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["insertDomite:"]=6;
+//>>excludeEnd("ctx");
+$15=$recv($14)._yourself();
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["yourself"]=3;
+//>>excludeEnd("ctx");
+$13=$15;
+$recv($12)._insertDomite_($13);
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["insertDomite:"]=5;
+//>>excludeEnd("ctx");
+$16=$recv($11)._yourself();
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["yourself"]=4;
+//>>excludeEnd("ctx");
+$10=$16;
+$recv($9)._insertDomite_($10);
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["insertDomite:"]=4;
+//>>excludeEnd("ctx");
+$17=s;
+$19=$recv($Domite())._open();
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["open"]=5;
+//>>excludeEnd("ctx");
+$20=$19;
+$22=$recv($Domite())._open();
+$recv($22)._insertString_("dom-mite");
+$23=$recv($22)._yourself();
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["yourself"]=5;
+//>>excludeEnd("ctx");
+$21=$23;
+$recv($20)._insertDomite_($21);
+$24=$recv($19)._yourself();
+$18=$24;
+$recv($17)._insertDomite_($18);
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["insertDomite:"]=7;
+//>>excludeEnd("ctx");
+self._assert_($recv($recv($recv(document)._body())._innerHTML())._endsWith_("><p><span>dom-mite</span></p></div>"));
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"testInsertElementTwoLevelViaTwoLevelFragments",{d:d,p:p,s:s},$globals.DOMiteTest)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: [],
+source: "testInsertElementTwoLevelViaTwoLevelFragments\x0a\x09| d p s |\x0a\x09d := Domite fromElement: fixtureDiv.\x0a\x09p := Domite newElement: 'p'.\x0a\x09d insertDomite: (Domite open insertDomite: (Domite open insertDomite: p; yourself); yourself).\x0a\x09s := Domite newElement: 'span'.\x0a\x09p insertDomite: (Domite open insertDomite: (Domite open insertDomite: s; yourself); yourself).\x0a\x09s insertDomite: (Domite open insertDomite: (Domite open insertString: 'dom-mite'; yourself); yourself).\x0a\x09self assert: (document body innerHTML endsWith: '><p><span>dom-mite</span></p></div>')",
+referencedClasses: ["Domite"],
+//>>excludeEnd("ide");
+messageSends: ["fromElement:", "newElement:", "insertDomite:", "open", "yourself", "insertString:", "assert:", "endsWith:", "innerHTML", "body"]
+}),
+$globals.DOMiteTest);
+
+$core.addMethod(
+$core.method({
+selector: "testInsertString",
+protocol: 'testing',
+fn: function (){
+var self=this;
+var d;
+function $Domite(){return $globals.Domite||(typeof Domite=="undefined"?nil:Domite)}
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+d=$recv($Domite())._fromElement_(self["@fixtureDiv"]);
+$recv(d)._insertString_("a foo in a bar");
+self._assert_($recv($recv($recv(document)._body())._innerHTML())._endsWith_(">a foo in a bar</div>"));
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"testInsertString",{d:d},$globals.DOMiteTest)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: [],
+source: "testInsertString\x0a\x09| d |\x0a\x09d := Domite fromElement: fixtureDiv.\x0a\x09d insertString: 'a foo in a bar'.\x0a\x09self assert: (document body innerHTML endsWith: '>a foo in a bar</div>')",
+referencedClasses: ["Domite"],
+//>>excludeEnd("ide");
+messageSends: ["fromElement:", "insertString:", "assert:", "endsWith:", "innerHTML", "body"]
+}),
+$globals.DOMiteTest);
+
+$core.addMethod(
+$core.method({
+selector: "testInsertStringInFragment",
+protocol: 'testing',
+fn: function (){
+var self=this;
+var d;
+function $Domite(){return $globals.Domite||(typeof Domite=="undefined"?nil:Domite)}
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+var $1,$2;
+d=$recv($Domite())._fromElement_(self["@fixtureDiv"]);
+$1=$recv($Domite())._open();
+$recv($1)._insertString_("a foo in a bar");
+$2=$recv($1)._yourself();
+$recv(d)._insertDomite_($2);
+self._assert_($recv($recv($recv(document)._body())._innerHTML())._endsWith_(">a foo in a bar</div>"));
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"testInsertStringInFragment",{d:d},$globals.DOMiteTest)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: [],
+source: "testInsertStringInFragment\x0a\x09| d |\x0a\x09d := Domite fromElement: fixtureDiv.\x0a\x09d insertDomite: (Domite open insertString: 'a foo in a bar'; yourself).\x0a\x09self assert: (document body innerHTML endsWith: '>a foo in a bar</div>')",
+referencedClasses: ["Domite"],
+//>>excludeEnd("ide");
+messageSends: ["fromElement:", "insertDomite:", "insertString:", "open", "yourself", "assert:", "endsWith:", "innerHTML", "body"]
+}),
+$globals.DOMiteTest);
+
+$core.addMethod(
+$core.method({
+selector: "testMultipleInserts",
+protocol: 'testing',
+fn: function (){
+var self=this;
+var d,p,s;
+function $Domite(){return $globals.Domite||(typeof Domite=="undefined"?nil:Domite)}
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+d=$recv($Domite())._fromElement_(self["@fixtureDiv"]);
+p=$recv($Domite())._newElement_("p");
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["newElement:"]=1;
+//>>excludeEnd("ctx");
+$recv(d)._insertDomite_(p);
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["insertDomite:"]=1;
+//>>excludeEnd("ctx");
+s=$recv($Domite())._newElement_("span");
+$recv(d)._insertDomite_(s);
+$recv(d)._insertString_("dom-mite");
+self._assert_($recv($recv($recv(document)._body())._innerHTML())._endsWith_("><p></p><span></span>dom-mite</div>"));
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"testMultipleInserts",{d:d,p:p,s:s},$globals.DOMiteTest)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: [],
+source: "testMultipleInserts\x0a\x09| d p s |\x0a\x09d := Domite fromElement: fixtureDiv.\x0a\x09p := Domite newElement: 'p'.\x0a\x09d insertDomite: p.\x0a\x09s := Domite newElement: 'span'.\x0a\x09d insertDomite: s.\x0a\x09d insertString: 'dom-mite'.\x0a\x09self assert: (document body innerHTML endsWith: '><p></p><span></span>dom-mite</div>')",
+referencedClasses: ["Domite"],
+//>>excludeEnd("ide");
+messageSends: ["fromElement:", "newElement:", "insertDomite:", "insertString:", "assert:", "endsWith:", "innerHTML", "body"]
+}),
+$globals.DOMiteTest);
+
 
 });

+ 101 - 1
src/DOMite-Tests.st

@@ -1,5 +1,105 @@
 Smalltalk createPackage: 'DOMite-Tests'!
 TestCase subclass: #DOMiteTest
-	instanceVariableNames: ''
+	instanceVariableNames: 'fixtureDiv'
 	package: 'DOMite-Tests'!
 
+!DOMiteTest methodsFor: 'fixture'!
+
+setUp
+	fixtureDiv := document createElement: 'div'.
+	document body appendChild: fixtureDiv.
+	fixtureDiv setAttribute: 'id' to: 'fixture'
+!
+
+tearDown
+	| lastChild |
+	lastChild := document body lastChild.
+	self assert: lastChild equals: fixtureDiv.
+	document body removeChild: lastChild
+! !
+
+!DOMiteTest methodsFor: 'testing'!
+
+testDefaultInsertElement
+	Domite new insertDomite: (Domite newElement: 'p').
+	self assert: (document body innerHTML endsWith: '<p></p>').
+	document body removeChild: document body lastChild
+!
+
+testDefaultInsertString
+	Domite new insertString: 'a foo in a bar'.
+	self assert: (document body innerHTML endsWith: 'a foo in a bar').
+	document body removeChild: document body lastChild
+!
+
+testDefaultInsertStringInFragment
+	Domite new insertDomite: (Domite open insertString: 'a foo in a bar'; yourself).
+	self assert: (document body innerHTML endsWith: 'a foo in a bar').
+	document body removeChild: document body lastChild
+!
+
+testInsertElement
+	| d |
+	d := Domite fromElement: fixtureDiv.
+	d insertDomite: (Domite newElement: 'p').
+	self assert: (document body innerHTML endsWith: '><p></p></div>')
+!
+
+testInsertElementTwoLevel
+	| d p s |
+	d := Domite fromElement: fixtureDiv.
+	p := Domite newElement: 'p'.
+	d insertDomite: p.
+	s := Domite newElement: 'span'.
+	p insertDomite: s.
+	s insertString: 'dom-mite'.
+	self assert: (document body innerHTML endsWith: '><p><span>dom-mite</span></p></div>')
+!
+
+testInsertElementTwoLevelViaFragments
+	| d p s |
+	d := Domite fromElement: fixtureDiv.
+	p := Domite newElement: 'p'.
+	d insertDomite: (Domite open insertDomite: p; yourself).
+	s := Domite newElement: 'span'.
+	p insertDomite: (Domite open insertDomite: s; yourself).
+	s insertDomite: (Domite open insertString: 'dom-mite'; yourself).
+	self assert: (document body innerHTML endsWith: '><p><span>dom-mite</span></p></div>')
+!
+
+testInsertElementTwoLevelViaTwoLevelFragments
+	| d p s |
+	d := Domite fromElement: fixtureDiv.
+	p := Domite newElement: 'p'.
+	d insertDomite: (Domite open insertDomite: (Domite open insertDomite: p; yourself); yourself).
+	s := Domite newElement: 'span'.
+	p insertDomite: (Domite open insertDomite: (Domite open insertDomite: s; yourself); yourself).
+	s insertDomite: (Domite open insertDomite: (Domite open insertString: 'dom-mite'; yourself); yourself).
+	self assert: (document body innerHTML endsWith: '><p><span>dom-mite</span></p></div>')
+!
+
+testInsertString
+	| d |
+	d := Domite fromElement: fixtureDiv.
+	d insertString: 'a foo in a bar'.
+	self assert: (document body innerHTML endsWith: '>a foo in a bar</div>')
+!
+
+testInsertStringInFragment
+	| d |
+	d := Domite fromElement: fixtureDiv.
+	d insertDomite: (Domite open insertString: 'a foo in a bar'; yourself).
+	self assert: (document body innerHTML endsWith: '>a foo in a bar</div>')
+!
+
+testMultipleInserts
+	| d p s |
+	d := Domite fromElement: fixtureDiv.
+	p := Domite newElement: 'p'.
+	d insertDomite: p.
+	s := Domite newElement: 'span'.
+	d insertDomite: s.
+	d insertString: 'dom-mite'.
+	self assert: (document body innerHTML endsWith: '><p></p><span></span>dom-mite</div>')
+! !
+