/*TESTS
  Tests not for production
*/
request_basics_tests = [
	// MSIE doesn't support getXMLHttpRequest != false
	function () {return !(!getXMLHttpRequest())},
	function () {	 
		var req = new Request("data/test.xml")
		req.requestMethod="GET"
		req.process()
		return true;
	},
	function () {	
		try {
	nb="This test will come up failed, because it tests "
	nb="asynchronious behaviour. The actual result of the "
	nb="test is only known after it\'s evaluated and will be "
        nb="displayed in a little alert box..."
			
			var req = new Request("index.html", null,
				function(){alert("async test passed")})
			req.requestMethod="GET"
			req.onnetworkerror = function () {
				alert("async test failed")
			}
			req.process()
		} catch (e) {
			return false
		}
	},

	function () {	
		try {
	nb="This test will come up failed, because it tests "
	nb="asynchronious behaviour. The actual result of the "
	nb="test is only known after it\'s evaluated and will be "
        nb="displayed in a little alert box..."
			
			var req = new Request("non_existant_file", null,
				function(){alert("onnetworkerror test failed")})
			req.requestMethod="GET"
			req.onnetworkerror = function () {
				alert("onnetworkerror test passed")
			}
			req.process()
		} catch (e) {
			alert ("AM I HERE?")
			return false
		}
	}

]

/*TESTS
	Tests, not for production
*/
type_basics_tests = [
		function() { return isA("hallo",String)},
		function() { x=1; return isInt(x)},
		function() { x=1.5; return isFloat(x)},
		function() { x=1; return !isFloat(x)},
		function() { x=1.5; return !isInt(x)},
		function() { return isA([],Array)}
	]

/*TESTS
 * Tests, not for production
 */

// requires request_basics.js
var req
var xml
var myParent

xml_basics_tests = [
	function () {
		// initializes
		req = new Request("data/test.xml")
		req.requestMethod="GET" // static file
		req.process()
		xml = req.responseXML
		return xml!=null
	},
	function () { return makeTag("name","value")=="<name>value</name>"},
	function () {
		myParent = getNamedChild(xml, "parent")
		count = 0
		visitChildren(myParent, function (){++count}, Node.ELEMENT_NODE)
		return count==3
	},
	function () {
		
		child = getNamedChild(myParent, "child")
		child_a = getNamedChild(child, "child_a")
		return child_a.nodeName == "child_a"
	},
	function () {
		children = getNamedChildren(myParent, "child_two")
		return children.length==2
	},
	function () {
		child = getNamedChild(myParent, "child")
		child_a = getNamedChild(child, "child_a")
		return "Child A Text"==getTextValueOfChild(child_a)
		//print (getTextValueOfChild(child_a))
		//return true;
	}

]
/*TESTS
* Tests
*/


xml_rpc_basics_tests = [
	function () {
		return ( encodeXmlRpc ("test")=="<string>test</string>"
			  &&
			encodeXmlRpc (true)=="<boolean>1</boolean>"
			  &&
			encodeXmlRpc (100) == "<int>100</int>"
			  &&
			encodeXmlRpc (3.14) == "<double>3.14</double>"
		)
	},
	function () {
		return encodeXmlRpc ([1,2,3])=="<array><data><value><int>1</int></value><value><int>2</int></value><value><int>3</int></value></data></array>"
	},
	function () {
		test2 = new Object ()
		test2.one="hallo"
		test2.two=2
		return encodeXmlRpc (test2) == "<struct><member><name>one</name><value><string>hallo</string></value></member><member><name>two</name><value><int>2</int></value></member></struct>"
	}	
]
/*TESTS
* Tests/
*/

var req
var xml
var xmlstring = '<?xml version="1.0"?><methodResponse><params><param><value><struct><member><name>containsArray</name><value><array><data><value><struct><member><name>crap</name><value><string>bullshit</string></value></member></struct></value></data></array></value></member><member><name>str</name><value><string>anothStr</string></value></member></struct></value></param></params></methodResponse>'

var xmlstring2 = '<?xml version="1.0"?><methodResponse><params><param><value> <int>2</int></value></param></params></methodResponse>'

xml_rpc_response_tests = [
	function () {
		// initializes
		req = new Request("data/test_rpc.xml")
		req.requestMethod="GET"
		req.process()
		xml = req.responseXML
		return xml!=null
	},
	function () {
		arrayNode = (xml.getElementsByTagName("array"))[0]
				
		arr = getArray(arrayNode)
		return (isA(arr, Array) && arr.length==4)
		
	},
	function () {
		var rpc = new XmlRpc();
		var parser=new DOMParser();
		var xml=parser.parseFromString(xmlstring,"text/xml");
		result = rpc.handleAnswer(xml);
		return (result.containsArray && result.str == "anothStr")
	},

	function () {
		var rpc = new XmlRpc();
		var parser=new DOMParser();
		var xml=parser.parseFromString(xmlstring2,"text/xml");
		result = rpc.handleAnswer(xml);
		return (2 == result)
	}
	
]


/*TESTS
*/

xml_rpc_tests = [
	function(){
		obj = XmlRpc.getObject("ws/helloWorld.rb", ["helloWorld"])
		str = obj.helloWorld()	
		return str == "hello, world"
	},
	function(){
		obj = XmlRpc.getObject("ws/helloWorld.rb", ["hello.World"])
		str = obj.hello_World()
		return str == "hello, world"
	},
	function() {
		return true	
	}
	
]
