dojox
Version:
Dojo eXtensions, a rollup of many useful sub-projects and varying states of maturity – from very stable and robust, to alpha and experimental. See individual projects contain README files for details.
355 lines (350 loc) • 13 kB
JavaScript
dojo.provide("dojox.html.tests.format");
dojo.require("dojox.html.format");
doh.register("dojox.html.tests.format",
[
{
name: "Format: Basic HTML Format test",
runTest: function(t) {
// summary:
// Simple test of basic HTML formatting.
// description:
// Simple test of basic HTML formatting.
var txt = "<div><b>hello</b> this is some text.</div>";
var expected = "<div>\n" +
"\t<b>hello</b> this is some text.\n" +
"</div>\n";
var formattedTxt = dojox.html.format.prettyPrint(txt);
doh.assertEqual(expected, formattedTxt);
}
},
{
name: "Format: Basic HTML Format test with three space indent",
runTest: function(t) {
// summary:
// Simple test of basic HTML formatting with spaced indenting instead of tab
// description:
// Simple test of basic HTML formatting with spaced indenting instead of tab
var txt = "<div><b>hello</b> this is some text.</div>";
var expected = "<div>\n" +
" <b>hello</b> this is some text.\n" +
"</div>\n";
var formattedTxt = dojox.html.format.prettyPrint(txt, 3);
doh.assertEqual(expected, formattedTxt);
}
},
{
name: "Format: Basic HTML Format test with three space indent and custom encoding",
runTest: function(t) {
// summary:
// Simple test of basic HTML formatting with spaced indenting instead of tab
// description:
// Simple test of basic HTML formatting with spaced indenting instead of tab
var txt = "<div><b>hello</b> this is \"some\" entities & text.</div>";
var expected = "<div>\n" +
" <b>hello</b> this is \"some\" entities & text.\n" +
"</div>\n";
var formattedTxt = dojox.html.format.prettyPrint(txt, 3, -1, [["&", "amp"]]);
doh.assertEqual(expected, formattedTxt);
}
},
{
name: "Format: Basic HTML Format test with comment node",
runTest: function(t) {
// summary:
// Simple test of basic HTML formatting with a comment node"
// description:
// Simple test of basic HTML formatting with a comment node"
if(!dojo.isIE){
// Hurray for IE, it sometimes just strips comment nodes from the
// dom. So we can't test this reliably.
var txt = "<div><!-- This is a comment! --><br></div>";
var expected = "<div>\n" +
" <!--\n" +
" This is a comment!\n" +
" -->\n" +
" <br>\n" +
"</div>\n";
var formattedTxt = dojox.html.format.prettyPrint(txt, 3);
doh.assertEqual(expected, formattedTxt);
}
}
},
{
name: "Format: Basic HTML Format test with inline tags",
runTest: function(t) {
// summary:
// Simple test of basic HTML formatting with spaced indenting instead of tab
// description:
// Simple test of basic HTML formatting with spaced indenting instead of tab
var txt = "<div><b>hello</b> <a href=\"http://example.com/\">Example.com</a> this is some text after the link.</div>";
var expected = "<div>\n" +
" <b>hello</b> <a href=\"http://example.com/\">Example.com</a> this is some text after the link.\n" +
"</div>\n";
var formattedTxt = dojox.html.format.prettyPrint(txt, 3);
doh.assertEqual(expected, formattedTxt);
}
},
{
name: "Format: Basic HTML Format test with inline tags (2)",
runTest: function(t) {
// summary:
// Simple test of basic HTML formatting with spaced indenting instead of tab
// description:
// Simple test of basic HTML formatting with spaced indenting instead of tab
var txt = "<div><b>hello</b> <br> <a href=\"http://example.com/\">Example.com</a> this is some text after the link.</div>";
var expected = "<div>\n" +
" <b>hello</b>\n"+
" <br>\n" +
" <a href=\"http://example.com/\">Example.com</a> this is some text after the link.\n" +
"</div>\n";
var formattedTxt = dojox.html.format.prettyPrint(txt, 3);
doh.assertEqual(expected, formattedTxt);
}
},
{
name: "Format: Basic HTML Format test with id",
runTest: function(t) {
// summary:
// Simple test of basic HTML formatting with an id attr set.
// description:
// Simple test of basic HTML formatting with an id attr set.
var txt = "<div id=\"myID\"><b>hello</b> this is some text.</div>";
var expected = "<div id=\"myID\">\n" +
"\t<b>hello</b> this is some text.\n" +
"</div>\n";
var formattedTxt = dojox.html.format.prettyPrint(txt);
doh.assertEqual(expected, formattedTxt);
}
},
{
name: "Format: Basic HTML Format test with attributes (sorting attributes)",
runTest: function(t) {
// summary:
// Simple test of basic HTML formatting with an id attr set.
// description:
// Simple test of basic HTML formatting with an id attr set.
var txt = "<div id=\"myID\" style=\"font-weight: bold; font-style: italic;\" foo=\"bar\"><b>hello</b> this is some text.</div>";
var expected = "<div foo=\"bar\" id=\"myID\" style=\"font-style: italic; font-weight: bold;\">\n" +
"\t<b>hello</b> this is some text.\n" +
"</div>\n";
var formattedTxt = dojox.html.format.prettyPrint(txt);
doh.assertEqual(expected, formattedTxt);
}
},
{
name: "Format: Basic HTML Format test with attributes (multiple unquoted)",
runTest: function(t) {
// summary:
// Simple test of basic HTML formatting with an id attr set.
// description:
// Simple test of basic HTML formatting with an id attr set.
var txt = "<p><font id=\"myID\" size=\"6\"><b>hello</b> this is some text.</font></p>";
var expected = "<p>\n\t<font id=\"myID\" size=\"6\">" +
"<b>hello</b> this is some text." +
"</font>\n</p>\n";
var formattedTxt = dojox.html.format.prettyPrint(txt);
doh.assertEqual(expected, formattedTxt);
}
},
{
name: "Format: Basic HTML Format test with style",
runTest: function(t) {
// summary:
// Simple test of basic HTML formatting with an id attr set.
// description:
// Simple test of basic HTML formatting with an id attr set.
var txt = "<div style=\"font-weight: bold;\"><b>hello</b> this is some text.</div>";
var expected = "<div style=\"font-weight: bold;\">\n" +
"\t<b>hello</b> this is some text.\n" +
"</div>\n";
var formattedTxt = dojox.html.format.prettyPrint(txt);
doh.assertEqual(expected, formattedTxt);
}
},
{
name: "Format: Basic HTML Format test with multi style",
runTest: function(t) {
// summary:
// Simple test of basic HTML formatting with an id attr set.
// description:
// Simple test of basic HTML formatting with an id attr set.
var txt = "<div style=\"font-weight: bold; color: red\"><b>hello</b> this is some text.</div>";
var expected = "<div style=\"color: red; font-weight: bold;\">\n" +
"\t<b>hello</b> this is some text.\n" +
"</div>\n";
var formattedTxt = dojox.html.format.prettyPrint(txt);
doh.assertEqual(expected, formattedTxt);
}
},
{
name: "Format: Basic HTML Format with script test",
runTest: function(t) {
// summary:
// Simple test of basic HTML formatting with an embedded script tag.
// description:
// Simple test of basic HTML formatting with an embedded script tag.
var txt = "<div><div>hello</div>this is some text.<script>var foo=\"bar\";\nif(foo !== \"bar\"){\n alert(\"Should not be here!\");\n}</script></div>";
var expected = "<div>\n" +
"\t<div>\n" +
"\t\thello\n" +
"\t</div>\n"+
"\tthis is some text.\n" +
"\t<script>\n"+
"\t\tvar foo=\"bar\";\n" +
"\t\tif(foo !== \"bar\"){\n" +
"\t\t\talert(\"Should not be here!\");\n" +
"\t\t}\n" +
"\t</script>\n" +
"</div>\n";
var formattedTxt = dojox.html.format.prettyPrint(txt);
doh.assertEqual(dojo.trim(expected), dojo.trim(formattedTxt));
}
},
{
name: "Format: Basic HTML Format with script test and three space indent",
runTest: function(t) {
// summary:
// Simple test of basic HTML formatting with an embedded script tag.
// description:
// Simple test of basic HTML formatting with an embedded script tag.
var txt = "<div><div>hello</div>this is some text.<script>var foo=\"bar\";\nif(foo !== \"bar\"){\n alert(\"Should not be here!\");\n}</script></div>";
var expected = "<div>\n" +
" <div>\n" +
" hello\n" +
" </div>\n"+
" this is some text.\n" +
" <script>\n"+
" var foo=\"bar\";\n" +
" if(foo !== \"bar\"){\n" +
" alert(\"Should not be here!\");\n" +
" }\n" +
" </script>\n" +
"</div>\n";
var formattedTxt = dojox.html.format.prettyPrint(txt, 3);
doh.assertEqual(expected, formattedTxt);
}
},
{
name: "Format: Basic HTML Format with script test and three space indent, XHTML",
runTest: function(t) {
// summary:
// Simple test of basic HTML formatting with an embedded script tag.
// description:
// Simple test of basic HTML formatting with an embedded script tag.
var txt = "<div><div>hello<br><hr></div>this is some text.<script>var foo=\"bar\";\nif(foo !== \"bar\"){\n alert(\"Should not be here!\");\n}</script></div>";
var expected = "<div>\n" +
" <div>\n" +
" hello\n" +
" <br />\n" +
" <hr />\n" +
" </div>\n"+
" this is some text.\n" +
" <script>\n"+
" var foo=\"bar\";\n" +
" if(foo !== \"bar\"){\n" +
" alert(\"Should not be here!\");\n" +
" }\n" +
" </script>\n" +
"</div>\n";
var formattedTxt = dojox.html.format.prettyPrint(txt, 3, -1, null, true);
doh.assertEqual(expected, formattedTxt);
}
},
{
name: "Format: Basic HTML Format with <pre> tag",
runTest: function(t) {
// summary:
// Simple test of basic HTML formatting with an embedded pre tag.
// description:
// Simple test of basic HTML formatting with an embedded pre tag.
if(!dojo.isIE){
// IE generates good pre tags, but I think the endline chars differ
// so direct comparison fails. When I figure that out, I can enable
// this test.
var txt = "<div><pre>hello\nthis is spaced\nWhee!\n</pre></div>";
var expected = "<div>\n" +
"\t<pre>\n" +
"hello\n" +
"this is spaced\n" +
"Whee!\n" +
"\t</pre>\n"+
"</div>\n";
var formattedTxt = dojox.html.format.prettyPrint(txt);
doh.assertEqual(expected, formattedTxt);
}
}
},
{
name: "Format: Basic HTML Format with <pre> tag and three space indent",
runTest: function(t) {
// summary:
// Simple test of basic HTML formatting with an embedded pre tag.
// description:
// Simple test of basic HTML formatting with an embedded pre tag.
if(!dojo.isIE){
// IE generates good pre tags, but I think the endline chars differ
// so direct comparison fails. When I figure that out, I can enable
// this test.
var txt = "<div><pre>hello\nthis is spaced\nWhee!\n</pre></div>";
var expected = "<div>\n" +
" <pre>\n" +
"hello\n" +
"this is spaced\n" +
"Whee!\n" +
" </pre>\n"+
"</div>\n";
var formattedTxt = dojox.html.format.prettyPrint(txt, 3);
doh.assertEqual(expected, formattedTxt);
}
}
},
{
name: "Format: Semi-complex HTML format",
timeout: 10000,
runTest: function(t) {
// summary:
// Simple test of somewhat complex HTML in an external file getting formatted.
// description:
// Simple test of basic HTML formatting with an embedded pre tag.
if(!dojo.isIE){
// Still working out minor comparison issues on IE. Sigh.
// the output is pretty accurate, just need to fix a few things.
// Like I think the newlines differ or somesuch.
var deferred = new doh.Deferred();
var args = {
url: dojo.moduleUrl("dojox.html.tests", "unformatted.html").toString(),
handleAs: "text",
preventCache: true
}
var ufd = dojo.xhrGet(args);
ufd.addCallback(function(html){
html = dojox.html.format.prettyPrint(html, 3);
var fArgs = {
url: dojo.moduleUrl("dojox.html.tests", "formatted.html").toString(),
preventCache: true,
handleAs: "text"
}
var fd = dojo.xhrGet(fArgs);
fd.addCallback(function(fHtml){
try{
doh.assertEqual(fHtml, html);
deferred.callback(true);
}catch(e){
deferred.errback(e);
}
});
fd.addErrback(function(error){
deferred.errback(error);
});
});
ufd.addErrback(function(err){
console.log("Boom!");
deferred.errback(err);
});
return deferred;
}
return null;
}
}
]
);