diff --git a/tree/testdata/TestTreeOffset/equal.golden b/tree/testdata/TestTreeOffset/equal.golden new file mode 100644 index 00000000..97a5889e --- /dev/null +++ b/tree/testdata/TestTreeOffset/equal.golden @@ -0,0 +1,4 @@ +Root +├── B +├── C +└── D \ No newline at end of file diff --git a/tree/testdata/TestTreeOffset/start_greater_than_end.golden b/tree/testdata/TestTreeOffset/start_greater_than_end.golden new file mode 100644 index 00000000..0963b6a9 --- /dev/null +++ b/tree/testdata/TestTreeOffset/start_greater_than_end.golden @@ -0,0 +1,3 @@ +Root +├── C +└── D \ No newline at end of file diff --git a/tree/testdata/TestTreeOffset/zero.golden b/tree/testdata/TestTreeOffset/zero.golden new file mode 100644 index 00000000..0e2f58e5 --- /dev/null +++ b/tree/testdata/TestTreeOffset/zero.golden @@ -0,0 +1,6 @@ +Root +├── A +├── B +├── C +├── D +└── E \ No newline at end of file diff --git a/tree/tree.go b/tree/tree.go index 3992971c..59c90296 100644 --- a/tree/tree.go +++ b/tree/tree.go @@ -119,12 +119,6 @@ func (t *Tree) SetHidden(hidden bool) { t.Hide(hidden) } // Offset sets the Tree children offsets. func (t *Tree) Offset(start, end int) *Tree { - if start > end { - _start := start - start = end - end = _start - } - if start < 0 { start = 0 } diff --git a/tree/tree_test.go b/tree/tree_test.go index 8e0d9291..359cfaeb 100644 --- a/tree/tree_test.go +++ b/tree/tree_test.go @@ -318,6 +318,30 @@ func TestAt(t *testing.T) { } } +func TestTreeOffset(t *testing.T) { + tr := tree.New(). + Root("Root"). + Child("A", "B", "C", "D", "E") + + t.Run("start_greater_than_end", func(t *testing.T) { + // Offset(2,1) should skip 2 from start, 1 from end. + o := tree.New().Root("Root").Child("A", "B", "C", "D", "E") + o.Offset(2, 1) + golden.RequireEqual(t, []byte(o.String())) + }) + + t.Run("equal", func(t *testing.T) { + o := tree.New().Root("Root").Child("A", "B", "C", "D", "E") + o.Offset(1, 1) + golden.RequireEqual(t, []byte(o.String())) + }) + + t.Run("zero", func(t *testing.T) { + tr.Offset(0, 0) + golden.RequireEqual(t, []byte(tr.String())) + }) +} + func TestFilter(t *testing.T) { data := tree.NewFilter(tree.NewStringData( "Foo",