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)
	}
}
