package xpc

import (
	"reflect"
	"testing"
)

func CheckUUID(t *testing.T, v interface{}) UUID {
	if uuid, ok := v.(UUID); ok {
		return uuid
	} else {
		t.Errorf("not a UUID: %#v\n", v)
		return uuid
	}
}

func TestConvertUUID(t *testing.T) {
	uuid := MakeUUID("00112233445566778899aabbccddeeff")

	xv := goToXpc(uuid)
	v := xpcToGo(xv)

	xpc_release(xv)

	uuid2 := CheckUUID(t, v)

	if !reflect.DeepEqual(uuid, uuid2) {
		t.Errorf("expected %#v got %#v\n", uuid, uuid2)
	}
}

func TestConvertSlice(t *testing.T) {
	arr := []string{"one", "two", "three"}

	xv := goToXpc(arr)
	v := xpcToGo(xv)

	xpc_release(xv)

	if arr2, ok := v.(Array); !ok {
		t.Errorf("not an array: %#v\n", v)
	} else if len(arr) != len(arr2) {
		t.Errorf("expected %#v got %#v\n", arr, arr2)
	} else {
		for i := range arr {
			if arr[i] != arr2[i] {
				t.Errorf("expected array[%d]: %#v got %#v\n", i, arr[i], arr2[i])
			}
		}
	}
}

func TestConvertSliceUUID(t *testing.T) {
	arr := []UUID{MakeUUID("0000000000000000"), MakeUUID("1111111111111111"), MakeUUID("2222222222222222")}

	xv := goToXpc(arr)
	v := xpcToGo(xv)

	xpc_release(xv)

	if arr2, ok := v.(Array); !ok {
		t.Errorf("not an array: %#v\n", v)
	} else if len(arr) != len(arr2) {
		t.Errorf("expected %#v got %#v\n", arr, arr2)
	} else {
		for i := range arr {
			uuid1 := CheckUUID(t, arr[i])
			uuid2 := CheckUUID(t, arr2[i])

			if !reflect.DeepEqual(uuid1, uuid2) {
				t.Errorf("expected array[%d]: %#v got %#v\n", i, arr[i], arr2[i])
			}
		}
	}
}

func TestConvertMap(t *testing.T) {
	d := Dict{
		"number": int64(42),
		"text":   "hello gopher",
		"uuid":   MakeUUID("aabbccddeeff00112233445566778899"),
	}

	xv := goToXpc(d)
	v := xpcToGo(xv)

	xpc_release(xv)

	if d2, ok := v.(Dict); !ok {
		t.Errorf("not a map: %#v", v)
	} else if len(d) != len(d2) {
		t.Errorf("expected %#v got %#v\n", d, d2)
	} else {
		fail := false

		for k, v := range d {
			if !reflect.DeepEqual(v, d2[k]) {
				t.Logf("expected map[%s]: %#v got %#v\n", k, v, d2[k])
				fail = true
			}
		}

		if fail {
			t.Error("test failed")
		}
	}
}
