From 0226f8f5f430d34b3cead40c4eb7b458933d16c6 Mon Sep 17 00:00:00 2001 From: wei <> Date: Wed, 18 Jan 2006 04:20:26 +0000 Subject: update javascript library and usage in web controls --- .../framework/Web/UI/utJavascriptSerializer.php | 181 +++++++++++++++++++++ 1 file changed, 181 insertions(+) create mode 100644 tests/UnitTests/framework/Web/UI/utJavascriptSerializer.php (limited to 'tests') 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 @@ +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 -- cgit v1.2.3