12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- package rule
- import (
- "ehang.io/nps/core/action"
- "ehang.io/nps/core/handler"
- "ehang.io/nps/core/process"
- "ehang.io/nps/core/server"
- "encoding/json"
- "github.com/stretchr/testify/assert"
- "reflect"
- "testing"
- )
- func TestClone(t *testing.T) {
- type person struct {
- Name string
- Age int
- }
- a := &person{
- Name: "ALice",
- Age: 20,
- }
- b := clone(a).(*person)
- assert.Equal(t, a.Name, b.Name)
- assert.Equal(t, a.Age, b.Age)
- a.Name = "Bob"
- a.Age = 21
- assert.NotEqual(t, a.Name, b.Name)
- assert.NotEqual(t, a.Age, b.Age)
- assert.NotEqual(t, reflect.ValueOf(a).Pointer(), reflect.ValueOf(b).Pointer())
- }
- func getJson(t *testing.T, i interface{}) string {
- b, err := json.Marshal(i)
- assert.NoError(t, err)
- assert.NotEmpty(t, string(b))
- return string(b)
- }
- func TestJsonRule(t *testing.T) {
- s := &server.TcpServer{ ServerAddr: "127.0.0.1:0"}
- h := &handler.HttpHandler{}
- p := &process.HttpServeProcess{}
- a := &action.LocalAction{}
- js := JsonRule{
- Uuid: "",
- Server: JsonData{s.GetName(), getJson(t, s)},
- Handler: JsonData{h.GetName(), getJson(t, h)},
- Process: JsonData{p.GetName(), getJson(t, p)},
- Action: JsonData{a.GetName(), getJson(t, a)},
- Limiters: make([]JsonData, 0),
- }
- rl, err := js.ToRule()
- assert.NoError(t, err)
- err = rl.Init()
- assert.NoError(t, err)
- assert.Equal(t, rl.Server.(*server.TcpServer).ServerAddr, "127.0.0.1:0")
- }
|