Derek McQuay
d6e76ef26b
also includes lineOnLine to determine if a line is on another line. Added a new type line struct which consists of two points.
53 lines
1.1 KiB
Go
53 lines
1.1 KiB
Go
package rect
|
|
|
|
import (
|
|
"math"
|
|
"testing"
|
|
)
|
|
|
|
func TestDistance(t *testing.T) {
|
|
var distanceTest = []struct {
|
|
p []Point
|
|
expected float64
|
|
}{
|
|
{[]Point{Point{1, 1}, Point{4, 5}}, 5},
|
|
{[]Point{Point{-1, -1}, Point{2, 3}}, 5},
|
|
{[]Point{Point{1, 1}, Point{2, 2}}, math.Sqrt(2)},
|
|
{[]Point{Point{1, 1}, Point{40, 20}}, math.Sqrt(1882)},
|
|
}
|
|
for _, rt := range distanceTest {
|
|
actual := distance(rt.p[0], rt.p[1])
|
|
if actual != rt.expected {
|
|
t.Errorf(
|
|
"failed spiral:\n\texpected: %d\n\t actual: %d",
|
|
rt.expected,
|
|
actual,
|
|
)
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
func TestOnLine(t *testing.T) {
|
|
var onLineTest = []struct {
|
|
p []Point
|
|
expected bool
|
|
}{
|
|
{[]Point{Point{1, 1}, Point{3, 3}, Point{2, 2}}, true},
|
|
{[]Point{Point{1, 1}, Point{3, 3}, Point{4, 4}}, false},
|
|
{[]Point{Point{-1, -1}, Point{-3, -3}, Point{-4, -4}}, false},
|
|
{[]Point{Point{-1, -1}, Point{-3, -3}, Point{-2, -2}}, true},
|
|
}
|
|
for _, rt := range onLineTest {
|
|
actual := onLine(rt.p[0], rt.p[1], rt.p[2])
|
|
if actual != rt.expected {
|
|
t.Errorf(
|
|
"failed spiral:\n\texpected: %d\n\t actual: %d",
|
|
rt.expected,
|
|
actual,
|
|
)
|
|
}
|
|
|
|
}
|
|
}
|