Exemple #1
0
func init() {
	types.Insert(True{})
	types.Insert(False{})
	types.Insert(If{})
	gob.Register(True{})
	gob.Register(False{})
	gob.Register(If{})
}
Exemple #2
0
func init() {
	gob.Register(&TestExportClient{})
	types.Insert(&TestExportClient{})
}
Exemple #3
0
func init() {
	gob.Register(&ResultClient{})
	types.Insert(&ResultClient{})
}
Exemple #4
0
func init() {
	types.Insert(&Error{})
	gob.Register(&Error{})
}
Exemple #5
0
func TestRegisterPhoto(t *testing.T) {
	types.Insert(&photo{})
}
Exemple #6
0
func init() {
	types.Insert(&reqCall{})
}
Exemple #7
0
func init() {
	types.Insert(&Tags{})
}
Exemple #8
0
func init() {
	gob.Register(&status{})
	types.Insert(&status{})
}
Exemple #9
0
func init() {
	gob.Register(&log{})
	types.Insert(&log{})
}
Exemple #10
0
func init() {
	gob.Register(&Disk{})
	gob.Register(&Process{})
	types.Insert(&Disk{})
	types.Insert(&Process{})
}
Exemple #11
0
func init() {
	types.Insert(&markedImage{})
}
Exemple #12
0
func init() {
	types.Insert(Calculator{})
}
Exemple #13
0
func init() {
	types.Insert(foo(""))
}
Exemple #14
0
func init() {
	types.Insert(&Time{})
	types.Insert(&timehold{})
	types.Insert(timehold{})
}
Exemple #15
0
func init() {
	gob.Register(&TestChannelClient{})
	types.Insert(&TestChannelClient{})
}
Exemple #16
0
func init() {
	types.Insert(&ChannelDescriptor{})
}
Exemple #17
0
func init() {
	gob.Register(&CacheClient{})
	types.Insert(&CacheClient{})
}
Exemple #18
0
func init() {
	types.Insert(&TestStruct{})
}
Exemple #19
0
func init() {
	types.Insert(&PlainText{})
	types.Insert(&Hashed{})
}
func TestReqCall(t *testing.T) {
	var nilstruct *reqCall
	var err error
	str := "string"
	//var inil interface{} = nilstruct
	var istr interface{} = str
	var ipstr interface{} = &str
	emptySlice := make([]int, 0)
	types.Insert(make([]int, 0))
	s := &strct{}
	types.Insert(s)
	tests := []*reqCall{
		{"", nil},
		{"oi", []reflect.Value{}},
		{"oi", []reflect.Value{reflect.ValueOf(nilstruct)}},
		{"oi", []reflect.Value{reflect.ValueOf(err)}},
		{"oi", []reflect.Value{reflect.ValueOf(e.New("oi"))}},
		{"oi", []reflect.Value{reflect.ValueOf(errors.New("oi"))}},
		{"oi", []reflect.Value{reflect.ValueOf(1)}},
		{"oi", []reflect.Value{reflect.ValueOf("string")}},
		//{"oi", []reflect.Value{reflect.ValueOf(&str)}},
		//{"oi", []reflect.Value{reflect.ValueOf(inil)}},
		{"oi", []reflect.Value{reflect.ValueOf(istr)}},
		{"oi", []reflect.Value{reflect.ValueOf(ipstr)}},
		{"oi", []reflect.Value{reflect.ValueOf(s)}},
		{"oi", []reflect.Value{reflect.ValueOf(emptySlice)}},
	}

	for i, test := range tests {
		buf := bytes.NewBuffer([]byte{})
		enc := msgpack.NewEncoder(buf)
		dec := msgpack.NewDecoder(buf)
		err := enc.Encode(test)
		if err != nil {
			t.Fatal(i, e.Trace(e.Forward(err)))
		}
		var req reqCall
		err = dec.Decode(&req)
		if err != nil {
			t.Fatal(i, e.Trace(e.Forward(err)))
		}
		if req.Method != test.Method {
			t.Fatal("method not equal")
		}
		if len(req.Args) != len(test.Args) {
			t.Fatal("num of args not equal")
		}
		for ii, arg := range req.Args {
			if zero.IsZero(arg) != zero.IsZero(test.Args[ii]) {
				t.Fatal("arg differ", i, ii, zero.IsZero(arg), zero.IsZero(test.Args[ii]))
			}
			if zero.IsZero(arg) {
				continue
			}

			if arg.IsValid() != test.Args[ii].IsValid() {
				t.Fatal("valid differ")
			}
			if !arg.IsValid() {
				continue
			}

			if test.Args[ii].Kind() == reflect.Interface || test.Args[ii].Kind() == reflect.Map || test.Args[ii].Kind() == reflect.Ptr || test.Args[ii].Kind() == reflect.Slice {
				if arg.IsNil() != test.Args[ii].IsNil() {
					t.Fatal("arg differ", i, arg.IsNil(), test.Args[ii].IsNil())
				}
				if arg.IsNil() {
					continue
				}
			}
			if _, ok := arg.Interface().(*e.Error); !ok && !reflect.DeepEqual(arg.Interface(), test.Args[ii].Interface()) {
				t.Fatalf("Fail to encode and decode %v %#v %#v", i, arg.Interface(), test.Args[ii].Interface())
			}
		}
	}
}
Exemple #21
0
func init() {
	types.Insert(Calc{})
}