package utini import ( "testing" "github.com/stretchr/testify/assert" "opslag.de/schobers/ut/utio" ) func AssertLoadMapString(t *testing.T, s string, v interface{}) { file := AssertLoadString(t, s) err := MapFromFile(file, v) assert.Nil(t, err) } func AssertLoadString(t *testing.T, s string) *File { lines := utio.Lines() utio.DecodeFromString(s, lines) file, err := load(lines.Lines) assert.Nil(t, err) return file } type testData struct { NoSection string Primitives testDataSectionPrimitives OnlySub testDataSectionOnlySub NoSection2 string } type testDataSectionPrimitives struct { DelimitedString string Integer int SingleQuotes string UnsignedByte uint8 } type testDataSectionOnlySub struct { Sub testDataSectionSub } type testDataSectionSub struct { Test string } type testDataDefault struct { Integer int `ini:"default=12345678"` String string `ini:"default=default"` } var testData1IniFile = `no_section = "no section" no_section2 = "no section 2" [only_sub.sub] test = "value" [primitives] delimited_string = "value" integer = 12345678 single_quotes = 'single quote delimited"' unsigned_byte = 101 ` var testData1Struct = testData{ NoSection: "no section", NoSection2: "no section 2", Primitives: testDataSectionPrimitives{ DelimitedString: "value", Integer: 12345678, SingleQuotes: "single quote delimited\"", UnsignedByte: 101, }, OnlySub: testDataSectionOnlySub{ Sub: testDataSectionSub{ Test: "value", }, }, } func TestMapFromFile(t *testing.T) { file := AssertLoadString(t, testData1IniFile) data := &testData{} err := MapFromFile(file, data) assert.Nil(t, err) assert.Equal(t, testData1Struct, *data) } func TestLoadDefaultValues(t *testing.T) { data := &testDataDefault{} AssertLoadMapString(t, ``, data) assert.Equal(t, 12345678, data.Integer) assert.Equal(t, `default`, data.String) }