diff --git a/lib/OpenLayers/Format/XML.js b/lib/OpenLayers/Format/XML.js index 0c0a2cbcae..0c2c1b02b3 100644 --- a/lib/OpenLayers/Format/XML.js +++ b/lib/OpenLayers/Format/XML.js @@ -243,6 +243,9 @@ OpenLayers.Format.XML = OpenLayers.Class(OpenLayers.Format, { */ createTextNode: function(text) { var node; + if (typeof text !== "string") { + text = String(text); + } if(this.xmldom) { node = this.xmldom.createTextNode(text); } else { @@ -568,9 +571,6 @@ OpenLayers.Format.XML = OpenLayers.Class(OpenLayers.Format, { } var value = options.value; if(value != null) { - if(typeof value == "boolean") { - value = String(value); - } node.appendChild(this.createTextNode(value)); } return node; diff --git a/tests/Format/XML.html b/tests/Format/XML.html index ebd984c917..a85b6fbab7 100644 --- a/tests/Format/XML.html +++ b/tests/Format/XML.html @@ -167,18 +167,38 @@ } function test_Format_XML_createTextNode(t) { - t.plan(4); + t.plan(10); var format = new OpenLayers.Format.XML(); - var value = Math.random().toString(); - var node = format.createTextNode(value); + var value, node; + + value = "string"; + node = format.createTextNode(value); t.eq(node.nodeType, 3, - "node has correct type"); + "[string] node has correct type"); t.eq(node.nodeName, "#text", - "node has correct name"); - t.eq(node.nodeValue, value, - "node has correct value"); + "[string] node has correct name"); + t.eq(node.nodeValue, "string", + "[string] node has correct value"); + value = 0.42; + node = format.createTextNode(value); + t.eq(node.nodeType, 3, + "[number] node has correct type"); + t.eq(node.nodeName, "#text", + "[number] node has correct name"); + t.eq(node.nodeValue, "0.42", + "[number] node has correct value"); + + value = false; + node = format.createTextNode(value); + t.eq(node.nodeType, 3, + "[boolean] node has correct type"); + t.eq(node.nodeName, "#text", + "[boolean] node has correct name"); + t.eq(node.nodeValue, "false", + "[boolean] node has correct value"); + var doc = format.read(text); if (doc.importNode) { node = doc.importNode(node, true); @@ -595,6 +615,10 @@ description: "value of 0 gets appended as a text node", node: format.createElementNSPlus("foo:bar", {value: 0}), expect: "0" + }, { + description: "value of 0.42 gets appended as a text node", + node: format.createElementNSPlus("foo:bar", {value: 0.42}), + expect: "0.42" }, { description: "value of true gets appended as a text node", node: format.createElementNSPlus("foo:bar", {value: true}),