33 lines
978 B
Go
33 lines
978 B
Go
package geo
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestSegmentIntersections(t *testing.T) {
|
|
// mid intersection
|
|
s1 := NewSegment(NewPoint(0, 0), NewPoint(10, 10))
|
|
s2 := NewSegment(NewPoint(0, 10), NewPoint(10, 0))
|
|
intersections := s1.Intersections(*s2)
|
|
assert.Equal(t, len(intersections), 1)
|
|
assert.True(t, intersections[0].Equals(NewPoint(5, 5)))
|
|
|
|
// intersection at the end
|
|
s3 := NewSegment(NewPoint(10, 10), NewPoint(10, 0))
|
|
intersections = s1.Intersections(*s3)
|
|
assert.Equal(t, len(intersections), 1)
|
|
assert.True(t, intersections[0].Equals(NewPoint(10, 10)))
|
|
|
|
// intersection at the beginning
|
|
s4 := NewSegment(NewPoint(0, 0), NewPoint(0, 10))
|
|
intersections = s1.Intersections(*s4)
|
|
assert.Equal(t, len(intersections), 1)
|
|
assert.True(t, intersections[0].Equals(NewPoint(0, 0)))
|
|
|
|
// no intersection
|
|
s5 := NewSegment(NewPoint(3, 8), NewPoint(2, 15))
|
|
intersections = s1.Intersections(*s5)
|
|
assert.Equal(t, len(intersections), 0)
|
|
}
|