package main import ( "encoding/json" "fmt" "reflect" "swigtests/go_inout" ) type S struct { A int B string C float64 } func (p *S) MarshalJSON() ([]byte, error) { return json.Marshal(*p) } func main() { v := &S{12, "hi", 34.5} m := go_inout.Same(v) want := map[string]interface{}{ // The type of A changes from int to float64 because // JSON has no ints. "A": float64(12), "B": "hi", "C": 34.5, } if !reflect.DeepEqual(m, want) { fmt.Println("got", m, "want", want) panic(m) } a := []string{"a", "bc", "def"} go_inout.DoubleArray(&a) dwant := []string{"a", "bc", "def", "aa", "bcbc", "defdef"} if !reflect.DeepEqual(a, dwant) { fmt.Println("got", a, "want", dwant) panic(a) } c2 := go_inout.NewC2() pm := c2.M() want = map[string]interface{}{ "ID": float64(1), } if !reflect.DeepEqual(*pm, want) { fmt.Println("for c2.M got", pm, "want", want) panic(pm) } c1 := go_inout.NewC1() c2.M2(c1) c2.M2(nil) if !go_inout.Strings([]string{"1", "2"}) { panic("Strings failed") } }