diff --git a/line_string.go b/line_string.go index 6f48939..bebe271 100644 --- a/line_string.go +++ b/line_string.go @@ -17,6 +17,11 @@ func (ls LineString) Dimensions() int { // This is done inplace, ie. it modifies the original data. func (ls LineString) Reverse() { l := len(ls) - 1 + + if l < 1 { + return + } + for i := 0; i <= l/2; i++ { ls[i], ls[l-i] = ls[l-i], ls[i] } diff --git a/line_string_test.go b/line_string_test.go index 4f9f729..7bb6f11 100644 --- a/line_string_test.go +++ b/line_string_test.go @@ -20,6 +20,16 @@ func TestLineStringReverse(t *testing.T) { input LineString output LineString }{ + { + name: "0 point line", + input: LineString{}, + output: LineString{}, + }, + { + name: "1 point line", + input: LineString{{1, 2}}, + output: LineString{{1, 2}}, + }, { name: "2 point line", input: LineString{{1, 2}, {3, 4}},