try catch finally tests
This commit is contained in:
		
							parent
							
								
									9590f43442
								
							
						
					
					
						commit
						47e365658a
					
				
							
								
								
									
										192
									
								
								node/stmt/t_try_catch_finnaly_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										192
									
								
								node/stmt/t_try_catch_finnaly_test.go
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,192 @@ | ||||
| package stmt_test | ||||
| 
 | ||||
| import ( | ||||
| 	"github.com/z7zmey/php-parser/node/expr" | ||||
| 	"github.com/z7zmey/php-parser/node/name" | ||||
| 	"bytes" | ||||
| 	"testing" | ||||
| 
 | ||||
| 	"github.com/z7zmey/php-parser/node" | ||||
| 	"github.com/z7zmey/php-parser/node/stmt" | ||||
| 	"github.com/z7zmey/php-parser/php5" | ||||
| 	"github.com/z7zmey/php-parser/php7" | ||||
| ) | ||||
| 
 | ||||
| func TestTry(t *testing.T) { | ||||
| 	src := `<?  | ||||
| 		try {} | ||||
| 	` | ||||
| 
 | ||||
| 	expected := &stmt.StmtList{ | ||||
| 		Stmts: []node.Node{ | ||||
| 			&stmt.Try{ | ||||
| 				Stmts: []node.Node{}, | ||||
| 				Catches: []node.Node{}, | ||||
| 			}, | ||||
| 		}, | ||||
| 	} | ||||
| 
 | ||||
| 	actual, _, _ := php7.Parse(bytes.NewBufferString(src), "test.php") | ||||
| 	assertEqual(t, expected, actual) | ||||
| 
 | ||||
| 	actual, _, _ = php5.Parse(bytes.NewBufferString(src), "test.php") | ||||
| 	assertEqual(t, expected, actual) | ||||
| } | ||||
| 
 | ||||
| func TestTryCatch(t *testing.T) { | ||||
| 	src := `<?  | ||||
| 		try {} catch (Exception $e) {} | ||||
| 	` | ||||
| 
 | ||||
| 	expected := &stmt.StmtList{ | ||||
| 		Stmts: []node.Node{ | ||||
| 			&stmt.Try{ | ||||
| 				Stmts: []node.Node{}, | ||||
| 				Catches: []node.Node{ | ||||
| 					&stmt.Catch{ | ||||
| 						Types: []node.Node{ | ||||
| 							&name.Name{ | ||||
| 								Parts: []node.Node{ | ||||
| 									&name.NamePart{Value: "Exception"}, | ||||
| 								}, | ||||
| 							}, | ||||
| 						}, | ||||
| 						Variable: &expr.Variable{ | ||||
| 							VarName: &node.Identifier{Value: "$e"}, | ||||
| 						}, | ||||
| 						Stmts: []node.Node{}, | ||||
| 					}, | ||||
| 				}, | ||||
| 			}, | ||||
| 		}, | ||||
| 	} | ||||
| 
 | ||||
| 	actual, _, _ := php7.Parse(bytes.NewBufferString(src), "test.php") | ||||
| 	assertEqual(t, expected, actual) | ||||
| 
 | ||||
| 	actual, _, _ = php5.Parse(bytes.NewBufferString(src), "test.php") | ||||
| 	assertEqual(t, expected, actual) | ||||
| } | ||||
| 
 | ||||
| func TestPhp7TryCatch(t *testing.T) { | ||||
| 	src := `<?  | ||||
| 		try {} catch (Exception|RuntimeException $e) {} | ||||
| 	` | ||||
| 
 | ||||
| 	expected := &stmt.StmtList{ | ||||
| 		Stmts: []node.Node{ | ||||
| 			&stmt.Try{ | ||||
| 				Stmts: []node.Node{}, | ||||
| 				Catches: []node.Node{ | ||||
| 					&stmt.Catch{ | ||||
| 						Types: []node.Node{ | ||||
| 							&name.Name{ | ||||
| 								Parts: []node.Node{ | ||||
| 									&name.NamePart{Value: "Exception"}, | ||||
| 								}, | ||||
| 							}, | ||||
| 							&name.Name{ | ||||
| 								Parts: []node.Node{ | ||||
| 									&name.NamePart{Value: "RuntimeException"}, | ||||
| 								}, | ||||
| 							}, | ||||
| 						}, | ||||
| 						Variable: &expr.Variable{ | ||||
| 							VarName: &node.Identifier{Value: "$e"}, | ||||
| 						}, | ||||
| 						Stmts: []node.Node{}, | ||||
| 					}, | ||||
| 				}, | ||||
| 			}, | ||||
| 		}, | ||||
| 	} | ||||
| 
 | ||||
| 	actual, _, _ := php7.Parse(bytes.NewBufferString(src), "test.php") | ||||
| 	assertEqual(t, expected, actual) | ||||
| } | ||||
| 
 | ||||
| func TestTryCatchCatch(t *testing.T) { | ||||
| 	src := `<?  | ||||
| 		try {} catch (Exception $e) {} catch (RuntimeException $e) {} | ||||
| 	` | ||||
| 
 | ||||
| 	expected := &stmt.StmtList{ | ||||
| 		Stmts: []node.Node{ | ||||
| 			&stmt.Try{ | ||||
| 				Stmts: []node.Node{}, | ||||
| 				Catches: []node.Node{ | ||||
| 					&stmt.Catch{ | ||||
| 						Types: []node.Node{ | ||||
| 							&name.Name{ | ||||
| 								Parts: []node.Node{ | ||||
| 									&name.NamePart{Value: "Exception"}, | ||||
| 								}, | ||||
| 							}, | ||||
| 						}, | ||||
| 						Variable: &expr.Variable{ | ||||
| 							VarName: &node.Identifier{Value: "$e"}, | ||||
| 						}, | ||||
| 						Stmts: []node.Node{}, | ||||
| 					}, | ||||
| 					&stmt.Catch{ | ||||
| 						Types: []node.Node{ | ||||
| 							&name.Name{ | ||||
| 								Parts: []node.Node{ | ||||
| 									&name.NamePart{Value: "RuntimeException"}, | ||||
| 								}, | ||||
| 							}, | ||||
| 						}, | ||||
| 						Variable: &expr.Variable{ | ||||
| 							VarName: &node.Identifier{Value: "$e"}, | ||||
| 						}, | ||||
| 						Stmts: []node.Node{}, | ||||
| 					}, | ||||
| 				}, | ||||
| 			}, | ||||
| 		}, | ||||
| 	} | ||||
| 
 | ||||
| 	actual, _, _ := php7.Parse(bytes.NewBufferString(src), "test.php") | ||||
| 	assertEqual(t, expected, actual) | ||||
| 
 | ||||
| 	actual, _, _ = php5.Parse(bytes.NewBufferString(src), "test.php") | ||||
| 	assertEqual(t, expected, actual) | ||||
| } | ||||
| 
 | ||||
| func TestTryCatchFinally(t *testing.T) { | ||||
| 	src := `<?  | ||||
| 		try {} catch (Exception $e) {} finally {} | ||||
| 	` | ||||
| 
 | ||||
| 	expected := &stmt.StmtList{ | ||||
| 		Stmts: []node.Node{ | ||||
| 			&stmt.Try{ | ||||
| 				Stmts: []node.Node{}, | ||||
| 				Catches: []node.Node{ | ||||
| 					&stmt.Catch{ | ||||
| 						Types: []node.Node{ | ||||
| 							&name.Name{ | ||||
| 								Parts: []node.Node{ | ||||
| 									&name.NamePart{Value: "Exception"}, | ||||
| 								}, | ||||
| 							}, | ||||
| 						}, | ||||
| 						Variable: &expr.Variable{ | ||||
| 							VarName: &node.Identifier{Value: "$e"}, | ||||
| 						}, | ||||
| 						Stmts: []node.Node{}, | ||||
| 					}, | ||||
| 				}, | ||||
| 				Finally: &stmt.Finally{ | ||||
| 					Stmts: []node.Node{}, | ||||
| 				}, | ||||
| 			}, | ||||
| 		}, | ||||
| 	} | ||||
| 
 | ||||
| 	actual, _, _ := php7.Parse(bytes.NewBufferString(src), "test.php") | ||||
| 	assertEqual(t, expected, actual) | ||||
| 
 | ||||
| 	actual, _, _ = php5.Parse(bytes.NewBufferString(src), "test.php") | ||||
| 	assertEqual(t, expected, actual) | ||||
| } | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user