You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							69 lines
						
					
					
						
							1.5 KiB
						
					
					
				
			
		
		
	
	
							69 lines
						
					
					
						
							1.5 KiB
						
					
					
				| <?php | |
|  | |
|  | |
| namespace yiiunit\framework\helpers; | |
|  | |
| use yii\helpers\Json; | |
| use yiiunit\TestCase; | |
| use yii\web\JsExpression; | |
|  | |
| /** | |
|  * @group helpers | |
|  */ | |
| class JsonTest extends TestCase | |
| { | |
| 	public function testEncode() | |
| 	{ | |
| 		// basic data encoding | |
| 		$data = '1'; | |
| 		$this->assertSame('"1"', Json::encode($data)); | |
|  | |
| 		// simple array encoding | |
| 		$data = [1, 2]; | |
| 		$this->assertSame('[1,2]', Json::encode($data)); | |
| 		$data = ['a' => 1, 'b' => 2]; | |
| 		$this->assertSame('{"a":1,"b":2}', Json::encode($data)); | |
|  | |
| 		// simple object encoding | |
| 		$data = new \stdClass(); | |
| 		$data->a = 1; | |
| 		$data->b = 2; | |
| 		$this->assertSame('{"a":1,"b":2}', Json::encode($data)); | |
|  | |
| 		// expression encoding | |
| 		$expression = 'function () {}'; | |
| 		$data = new JsExpression($expression); | |
| 		$this->assertSame($expression, Json::encode($data)); | |
|  | |
| 		// complex data | |
| 		$expression1 = 'function (a) {}'; | |
| 		$expression2 = 'function (b) {}'; | |
| 		$data = [ | |
| 			'a' => [ | |
| 				1, new JsExpression($expression1) | |
| 			], | |
| 			'b' => new JsExpression($expression2), | |
| 		]; | |
| 		$this->assertSame("{\"a\":[1,$expression1],\"b\":$expression2}", Json::encode($data)); | |
|  | |
| 		// https://github.com/yiisoft/yii2/issues/957 | |
| 		$data = (object)null; | |
| 		$this->assertSame('{}', Json::encode($data)); | |
| 	} | |
|  | |
| 	public function testDecode() | |
| 	{ | |
| 		// basic data decoding | |
| 		$json = '"1"'; | |
| 		$this->assertSame('1', Json::decode($json)); | |
|  | |
| 		// array decoding | |
| 		$json = '{"a":1,"b":2}'; | |
| 		$this->assertSame(['a' => 1, 'b' => 2], Json::decode($json)); | |
|  | |
| 		// exception | |
| 		$json = '{"a":1,"b":2'; | |
| 		$this->setExpectedException('yii\base\InvalidParamException'); | |
| 		Json::decode($json); | |
| 	} | |
| }
 | |
| 
 |