github.com/sixexorg/magnetic-ring@v0.0.0-20191119090307-31705a21e419/vm/cvm/ast/ast_test.go (about)

     1  package ast_test
     2  
     3  import (
     4  	"fmt"
     5  	"github.com/magiconair/properties/assert"
     6  	"github.com/sixexorg/magnetic-ring/vm/cvm/ast"
     7  	"github.com/sixexorg/magnetic-ring/vm/cvm/parse"
     8  	"os"
     9  	"testing"
    10  )
    11  
    12  func init() {
    13  
    14  }
    15  
    16  func TestStmtsSerialize(t *testing.T) {
    17  	fp, err := os.Open("ast_test.lua")
    18  	if err != nil {
    19  		fmt.Printf("open file failed. casue: %v\n", err)
    20  		return
    21  	}
    22  	defer fp.Close()
    23  
    24  	chunk, err := parse.Parse(fp, "")
    25  	if err != nil {
    26  		fmt.Printf("Abstract syntax tree: %v\n", err)
    27  		return
    28  	}
    29  
    30  	data := ast.Serialize(chunk)
    31  	if err != nil {
    32  		fmt.Printf("contrace serializion failed. cause: %v\n", err)
    33  		return
    34  	}
    35  
    36  	dChunk := ast.Deserizlize(data)
    37  
    38  	for index, value := range dChunk {
    39  		fmt.Printf("%#v\n", chunk[index])
    40  		fmt.Printf("%#v\n\n", value)
    41  	}
    42  	assert.Equal(t, dChunk, chunk)
    43  }