package config import ( "testing" . "gopkg.in/check.v1" ) func Test(t *testing.T) { TestingT(t) } type CommonSuite struct{} var _ = Suite(&CommonSuite{}) func (s *CommonSuite) TestConfig_SetOption(c *C) { obtained := New().SetOption("section", "", "key1", "value1") expected := &Config{ Sections: []*Section{ { Name: "section", Options: []*Option{ {Key: "key1", Value: "value1"}, }, }, }, } c.Assert(obtained, DeepEquals, expected) obtained = obtained.SetOption("section", "", "key1", "value1") c.Assert(obtained, DeepEquals, expected) obtained = New().SetOption("section", "subsection", "key1", "value1") expected = &Config{ Sections: []*Section{ { Name: "section", Subsections: []*Subsection{ { Name: "subsection", Options: []*Option{ {Key: "key1", Value: "value1"}, }, }, }, }, }, } c.Assert(obtained, DeepEquals, expected) obtained = obtained.SetOption("section", "subsection", "key1", "value1") c.Assert(obtained, DeepEquals, expected) } func (s *CommonSuite) TestConfig_AddOption(c *C) { obtained := New().AddOption("section", "", "key1", "value1") expected := &Config{ Sections: []*Section{ { Name: "section", Options: []*Option{ {Key: "key1", Value: "value1"}, }, }, }, } c.Assert(obtained, DeepEquals, expected) } func (s *CommonSuite) TestConfig_RemoveSection(c *C) { sect := New(). AddOption("section1", "", "key1", "value1"). AddOption("section2", "", "key1", "value1") expected := New(). AddOption("section1", "", "key1", "value1") c.Assert(sect.RemoveSection("other"), DeepEquals, sect) c.Assert(sect.RemoveSection("section2"), DeepEquals, expected) } func (s *CommonSuite) TestConfig_RemoveSubsection(c *C) { sect := New(). AddOption("section1", "sub1", "key1", "value1"). AddOption("section1", "sub2", "key1", "value1") expected := New(). AddOption("section1", "sub1", "key1", "value1") c.Assert(sect.RemoveSubsection("section1", "other"), DeepEquals, sect) c.Assert(sect.RemoveSubsection("other", "other"), DeepEquals, sect) c.Assert(sect.RemoveSubsection("section1", "sub2"), DeepEquals, expected) }