summaryrefslogtreecommitdiff
path: root/tests/UnitTests/framework
diff options
context:
space:
mode:
Diffstat (limited to 'tests/UnitTests/framework')
-rw-r--r--tests/UnitTests/framework/Web/UI/utJavascriptSerializer.php181
1 files changed, 181 insertions, 0 deletions
diff --git a/tests/UnitTests/framework/Web/UI/utJavascriptSerializer.php b/tests/UnitTests/framework/Web/UI/utJavascriptSerializer.php
new file mode 100644
index 00000000..89a54820
--- /dev/null
+++ b/tests/UnitTests/framework/Web/UI/utJavascriptSerializer.php
@@ -0,0 +1,181 @@
+<?php
+
+require_once(PRADO_DIR.'/Web/Javascripts/TJavascriptSerializer.php');
+
+class testSerializerObject
+{
+ public $public = 'public data';
+ protected $protected = 'protected data';
+ private $private = 'private !';
+}
+
+class testComponentObject extends TComponent
+{
+ public $public = 'public data';
+ protected $protected = 'protected data';
+ private $private = 'private !';
+
+ public function getData()
+ {
+ return "component data";
+ }
+}
+
+class utJavascriptSerializer extends UnitTestCase
+{
+ function testString()
+ {
+ $string = "Stan's world!";
+ $expect = "'Stan\\'s world!'";
+ $js = new TJavascriptSerializer($string);
+ $this->assertEqual($expect, $js->toJavascript());
+
+ $string = "";
+ $expect = "''";
+ $js = new TJavascriptSerializer($string);
+ $this->assertEqual($expect, $js->toJavascript());
+ }
+
+ function testInteger()
+ {
+ $int = 10;
+ $expect = "10";
+ $js = new TJavascriptSerializer($int);
+ $this->assertEqual($expect, $js->toJavascript());
+ }
+
+ function testFloat()
+ {
+ $float = 10.2;
+ $expect = "10.2";
+ $js = new TJavascriptSerializer($float);
+ $this->assertEqual($expect, $js->toJavascript());
+
+ $float = INF;
+ $expect = "Number.POSITIVE_INFINITY";
+ $js = new TJavascriptSerializer($float);
+ $this->assertEqual($expect, $js->toJavascript());
+
+ $expect = "Number.NEGATIVE_INFINITY";
+ $js = new TJavascriptSerializer(-$float);
+ $this->assertEqual($expect, $js->toJavascript());
+ }
+
+ function testBoolean()
+ {
+ $bool = false;
+ $expect = "false";
+ $js = new TJavascriptSerializer($bool);
+ $this->assertEqual($expect, $js->toJavascript());
+
+ $expect = "true";
+ $js = new TJavascriptSerializer(!$bool);
+ $this->assertEqual($expect, $js->toJavascript());
+ }
+
+ function testNull()
+ {
+ $null = null;
+ $expect = "null";
+ $js = new TJavascriptSerializer($null);
+ $this->assertEqual($expect, $js->toJavascript());
+ }
+
+ function testArray()
+ {
+ $data[0] = 1;
+ $data[1] = "hello";
+ $data[2] = 1.20;
+ $data[3] = true;
+ $data[4] = false;
+ $data[5] = null;
+ $data[6] = array("one");
+
+ $expect = "[1,'hello',1.2,true,false,null,['one']]";
+ $js = new TJavascriptSerializer($data);
+ $this->assertEqual($expect, $js->toJavascript());
+
+ $data = array();
+ $expect = "[]";
+ $js = new TJavascriptSerializer($data);
+ $this->assertEqual($expect, $js->toJavascript(true));
+ }
+
+ function testMap()
+ {
+ $data['hello'] = 'world';
+ $data['more'] = array('yes' => 'yah!');
+ $expect = "{'hello':'world','more':{'yes':'yah!'}}";
+ $js = new TJavascriptSerializer($data);
+ $this->assertEqual($expect, $js->toMap());
+ }
+
+ function testObject()
+ {
+ $data = new testSerializerObject;
+ $expect = "{'public':'public data'}";
+ $js = new TJavascriptSerializer($data);
+ $this->assertEqual($expect, $js->toJavascript());
+ }
+
+ //should not serialize components!
+ function testComponent()
+ {
+ $data = new testComponentObject;
+ $expect = "{'public':'public data','Data':'component data'}";
+ $js = new TJavascriptSerializer($data);
+ try
+ {
+ $js->toJavascript();
+ $this->fail();
+ }
+ catch(TException $e)
+ {
+ $this->pass();
+ }
+ }
+
+ function testComplexStrings()
+ {
+ $data[] = "\"It's slash \/ wonderful\"";
+ $expect = "['\\\"It\'s slash \\\\/ wonderful\\\"']";
+ $js = new TJavascriptSerializer($data);
+ $this->assertEqual($expect, $js->toJavascript());
+ }
+
+
+ function testArrayString()
+ {
+ $data[] = "['hello', 1]";
+ $data[] = "{'asd':'asdasd'}";
+ $data[] = "[hasdkj}";
+ $expect = "[['hello', 1],{'asd':'asdasd'},'[hasdkj}']";
+ $js = new TJavascriptSerializer($data);
+ $this->assertEqual($expect, $js->toJavascript());
+ }
+
+ function testArrayComplex()
+ {
+ $data = array("hello", 1, 2.12, array("world", null, "", array()));
+ $expect = "['hello',1,2.12,['world',null]]";
+ $js = new TJavascriptSerializer($data);
+ $this->assertEqual($expect, $js->toJavascript());
+
+ $expect = "['hello',1,2.12,['world',null,'',[]]]";
+ $this->assertEqual($expect, $js->toJavascript(true));
+ }
+
+ function testListComplex()
+ {
+ $data = array("hello"=>"world", 1, 2.12);
+ $data["more"] = array("the" => "world", null, "good"=>"", array());
+ $expect = "{'hello':'world','0':1,'1':2.12,'more':{'the':'world','0':null}}";
+ $js = new TJavascriptSerializer($data);
+ $this->assertEqual($expect, $js->toMap());
+
+ $expect = "{'hello':'world','0':1,'1':2.12,'more':{'the':'world','0':null,'good':'','1':{}}}";
+ $this->assertEqual($expect, $js->toMap(true));
+ }
+}
+
+?> \ No newline at end of file