package variables

import "testing"

type testFieldInStructData struct {
	f1 string
	f2 bool
	f3 int
	f4 func()
}

type testFieldInStruct struct {
	data   interface{}
	field  string
	result bool
}

var testFieldInStructCases = []testFieldInStruct{
	{testFieldInStructData{}, "f1", true},
	{testFieldInStructData{}, "f2", true},
	{testFieldInStructData{}, "f3", true},
	{testFieldInStructData{}, "f4", true},
	{testFieldInStructData{}, "f5", false},
	{[]string{}, "", false},
	{map[string]int{"oi": 4}, "", false},
	{"asa", "", false},
	{"int", "", false},
}

func TestFieldInStruct(t *testing.T) {
	for _, pair := range testFieldInStructCases {
		v := FieldInStruct(pair.data, pair.field)
		if v != pair.result {
			t.Error(
				"For", pair.data,
				"expected", pair.result,
				"got", v,
			)
		}
	}
}