aboutsummaryrefslogtreecommitdiffstats
path: root/plumbing/format/config/section_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'plumbing/format/config/section_test.go')
-rw-r--r--plumbing/format/config/section_test.go253
1 files changed, 244 insertions, 9 deletions
diff --git a/plumbing/format/config/section_test.go b/plumbing/format/config/section_test.go
index 0290386..c7cc4a9 100644
--- a/plumbing/format/config/section_test.go
+++ b/plumbing/format/config/section_test.go
@@ -8,6 +8,115 @@ type SectionSuite struct{}
var _ = Suite(&SectionSuite{})
+func (s *SectionSuite) TestSections_GoString(c *C) {
+ sects := Sections{
+ &Section{
+ Options: []*Option{
+ {Key: "key1", Value: "value1"},
+ {Key: "key2", Value: "value2"},
+ },
+ },
+ &Section{
+ Options: []*Option{
+ {Key: "key1", Value: "value3"},
+ {Key: "key2", Value: "value4"},
+ },
+ },
+ }
+
+ expected := "&config.Section{Name:\"\", Options:&config.Option{Key:\"key1\", Value:\"value1\"}, &config.Option{Key:\"key2\", Value:\"value2\"}, Subsections:}, &config.Section{Name:\"\", Options:&config.Option{Key:\"key1\", Value:\"value3\"}, &config.Option{Key:\"key2\", Value:\"value4\"}, Subsections:}"
+ c.Assert(sects.GoString(), Equals, expected)
+}
+
+func (s *SectionSuite) TestSubsections_GoString(c *C) {
+ sects := Subsections{
+ &Subsection{
+ Options: []*Option{
+ {Key: "key1", Value: "value1"},
+ {Key: "key2", Value: "value2"},
+ {Key: "key1", Value: "value3"},
+ },
+ },
+ &Subsection{
+ Options: []*Option{
+ {Key: "key1", Value: "value1"},
+ {Key: "key2", Value: "value2"},
+ {Key: "key1", Value: "value3"},
+ },
+ },
+ }
+
+ expected := "&config.Subsection{Name:\"\", Options:&config.Option{Key:\"key1\", Value:\"value1\"}, &config.Option{Key:\"key2\", Value:\"value2\"}, &config.Option{Key:\"key1\", Value:\"value3\"}}, &config.Subsection{Name:\"\", Options:&config.Option{Key:\"key1\", Value:\"value1\"}, &config.Option{Key:\"key2\", Value:\"value2\"}, &config.Option{Key:\"key1\", Value:\"value3\"}}"
+ c.Assert(sects.GoString(), Equals, expected)
+}
+
+func (s *SectionSuite) TestSection_IsName(c *C) {
+ sect := &Section{
+ Name: "name1",
+ }
+
+ c.Assert(sect.IsName("name1"), Equals, true)
+ c.Assert(sect.IsName("Name1"), Equals, true)
+}
+
+func (s *SectionSuite) TestSection_Subsection(c *C) {
+ subSect1 := &Subsection{
+ Name: "name1",
+ Options: Options{
+ &Option{Key: "key1", Value: "value1"},
+ },
+ }
+ sect := &Section{
+ Subsections: Subsections{
+ subSect1,
+ },
+ }
+
+ c.Assert(sect.Subsection("name1"), DeepEquals, subSect1)
+
+ subSect2 := &Subsection{
+ Name: "name2",
+ }
+ c.Assert(sect.Subsection("name2"), DeepEquals, subSect2)
+}
+
+func (s *SectionSuite) TestSection_HasSubsection(c *C) {
+ sect := &Section{
+ Subsections: Subsections{
+ &Subsection{
+ Name: "name1",
+ },
+ },
+ }
+
+ c.Assert(sect.HasSubsection("name1"), Equals, true)
+ c.Assert(sect.HasSubsection("name2"), Equals, false)
+}
+
+func (s *SectionSuite) TestSection_RemoveSubsection(c *C) {
+ sect := &Section{
+ Subsections: Subsections{
+ &Subsection{
+ Name: "name1",
+ },
+ &Subsection{
+ Name: "name2",
+ },
+ },
+ }
+
+ expected := &Section{
+ Subsections: Subsections{
+ &Subsection{
+ Name: "name2",
+ },
+ },
+ }
+ c.Assert(sect.RemoveSubsection("name1"), DeepEquals, expected)
+ c.Assert(sect.HasSubsection("name1"), Equals, false)
+ c.Assert(sect.HasSubsection("name2"), Equals, true)
+}
+
func (s *SectionSuite) TestSection_Option(c *C) {
sect := &Section{
Options: []*Option{
@@ -21,17 +130,71 @@ func (s *SectionSuite) TestSection_Option(c *C) {
c.Assert(sect.Option("key1"), Equals, "value3")
}
-func (s *SectionSuite) TestSubsection_Option(c *C) {
- sect := &Subsection{
+func (s *SectionSuite) TestSection_OptionAll(c *C) {
+ sect := &Section{
Options: []*Option{
{Key: "key1", Value: "value1"},
{Key: "key2", Value: "value2"},
{Key: "key1", Value: "value3"},
},
}
- c.Assert(sect.Option("otherkey"), Equals, "")
- c.Assert(sect.Option("key2"), Equals, "value2")
- c.Assert(sect.Option("key1"), Equals, "value3")
+ c.Assert(sect.OptionAll("otherkey"), DeepEquals, []string{})
+ c.Assert(sect.OptionAll("key2"), DeepEquals, []string{"value2"})
+ c.Assert(sect.OptionAll("key1"), DeepEquals, []string{"value1", "value3"})
+}
+
+func (s *SectionSuite) TestSection_HasOption(c *C) {
+ sect := &Section{
+ Options: []*Option{
+ {Key: "key1", Value: "value1"},
+ {Key: "key2", Value: "value2"},
+ {Key: "key1", Value: "value3"},
+ },
+ }
+ c.Assert(sect.HasOption("otherkey"), Equals, false)
+ c.Assert(sect.HasOption("key2"), Equals, true)
+ c.Assert(sect.HasOption("key1"), Equals, true)
+}
+
+func (s *SectionSuite) TestSection_AddOption(c *C) {
+ sect := &Section{
+ Options: []*Option{
+ {"key1", "value1"},
+ },
+ }
+ sect1 := &Section{
+ Options: []*Option{
+ {"key1", "value1"},
+ {"key2", "value2"},
+ },
+ }
+ c.Assert(sect.AddOption("key2", "value2"), DeepEquals, sect1)
+
+ sect2 := &Section{
+ Options: []*Option{
+ {"key1", "value1"},
+ {"key2", "value2"},
+ {"key1", "value3"},
+ },
+ }
+ c.Assert(sect.AddOption("key1", "value3"), DeepEquals, sect2)
+}
+
+func (s *SectionSuite) TestSection_SetOption(c *C) {
+ sect := &Section{
+ Options: []*Option{
+ {Key: "key1", Value: "value1"},
+ {Key: "key2", Value: "value2"},
+ },
+ }
+
+ expected := &Section{
+ Options: []*Option{
+ {Key: "key2", Value: "value2"},
+ {Key: "key1", Value: "value4"},
+ },
+ }
+ c.Assert(sect.SetOption("key1", "value4"), DeepEquals, expected)
}
func (s *SectionSuite) TestSection_RemoveOption(c *C) {
@@ -52,7 +215,16 @@ func (s *SectionSuite) TestSection_RemoveOption(c *C) {
c.Assert(sect.RemoveOption("key1"), DeepEquals, expected)
}
-func (s *SectionSuite) TestSubsection_RemoveOption(c *C) {
+func (s *SectionSuite) TestSubsection_IsName(c *C) {
+ sect := &Subsection{
+ Name: "name1",
+ }
+
+ c.Assert(sect.IsName("name1"), Equals, true)
+ c.Assert(sect.IsName("Name1"), Equals, false)
+}
+
+func (s *SectionSuite) TestSubsection_Option(c *C) {
sect := &Subsection{
Options: []*Option{
{Key: "key1", Value: "value1"},
@@ -60,14 +232,59 @@ func (s *SectionSuite) TestSubsection_RemoveOption(c *C) {
{Key: "key1", Value: "value3"},
},
}
- c.Assert(sect.RemoveOption("otherkey"), DeepEquals, sect)
+ c.Assert(sect.Option("otherkey"), Equals, "")
+ c.Assert(sect.Option("key2"), Equals, "value2")
+ c.Assert(sect.Option("key1"), Equals, "value3")
+}
- expected := &Subsection{
+func (s *SectionSuite) TestSubsection_OptionAll(c *C) {
+ sect := &Subsection{
Options: []*Option{
+ {Key: "key1", Value: "value1"},
{Key: "key2", Value: "value2"},
+ {Key: "key1", Value: "value3"},
},
}
- c.Assert(sect.RemoveOption("key1"), DeepEquals, expected)
+ c.Assert(sect.OptionAll("otherkey"), DeepEquals, []string{})
+ c.Assert(sect.OptionAll("key2"), DeepEquals, []string{"value2"})
+ c.Assert(sect.OptionAll("key1"), DeepEquals, []string{"value1", "value3"})
+}
+
+func (s *SectionSuite) TestSubsection_HasOption(c *C) {
+ sect := &Subsection{
+ Options: []*Option{
+ {Key: "key1", Value: "value1"},
+ {Key: "key2", Value: "value2"},
+ {Key: "key1", Value: "value3"},
+ },
+ }
+ c.Assert(sect.HasOption("otherkey"), Equals, false)
+ c.Assert(sect.HasOption("key2"), Equals, true)
+ c.Assert(sect.HasOption("key1"), Equals, true)
+}
+
+func (s *SectionSuite) TestSubsection_AddOption(c *C) {
+ sect := &Subsection{
+ Options: []*Option{
+ {"key1", "value1"},
+ },
+ }
+ sect1 := &Subsection{
+ Options: []*Option{
+ {"key1", "value1"},
+ {"key2", "value2"},
+ },
+ }
+ c.Assert(sect.AddOption("key2", "value2"), DeepEquals, sect1)
+
+ sect2 := &Subsection{
+ Options: []*Option{
+ {"key1", "value1"},
+ {"key2", "value2"},
+ {"key1", "value3"},
+ },
+ }
+ c.Assert(sect.AddOption("key1", "value3"), DeepEquals, sect2)
}
func (s *SectionSuite) TestSubsection_SetOption(c *C) {
@@ -88,3 +305,21 @@ func (s *SectionSuite) TestSubsection_SetOption(c *C) {
}
c.Assert(sect.SetOption("key1", "value1", "value4"), DeepEquals, expected)
}
+
+func (s *SectionSuite) TestSubsection_RemoveOption(c *C) {
+ sect := &Subsection{
+ Options: []*Option{
+ {Key: "key1", Value: "value1"},
+ {Key: "key2", Value: "value2"},
+ {Key: "key1", Value: "value3"},
+ },
+ }
+ c.Assert(sect.RemoveOption("otherkey"), DeepEquals, sect)
+
+ expected := &Subsection{
+ Options: []*Option{
+ {Key: "key2", Value: "value2"},
+ },
+ }
+ c.Assert(sect.RemoveOption("key1"), DeepEquals, expected)
+}