github.com/pavlo67/common@v0.5.3/common/mathlib/plane/segments_test.go (about) 1 package plane 2 3 import ( 4 "reflect" 5 "testing" 6 ) 7 8 func TestSegmentGoOutCircle(t *testing.T) { 9 tests := []struct { 10 name string 11 s Segment 12 p Point2 13 r float64 14 want *Point2 15 }{ 16 { 17 name: "", 18 s: Segment{{3, 0}, {3, 10}}, 19 p: Point2{0, 0}, 20 r: 5, 21 want: &Point2{3, 4}, 22 }, 23 } 24 for _, tt := range tests { 25 t.Run(tt.name, func(t *testing.T) { 26 if got := SegmentGoOutCircle(tt.s, tt.p, tt.r); !reflect.DeepEqual(got, tt.want) { 27 t.Errorf("SegmentGoOutCircle() = %v, want %v", got, tt.want) 28 } 29 }) 30 } 31 } 32 33 func TestSegmentsIntersection(t *testing.T) { 34 tests := []struct { 35 name string 36 s Segment 37 s1 Segment 38 want *Point2 39 }{ 40 {"", Segment{{1, 0}, {1, 1}}, Segment{{0, 1.5}, {2, 1.5}}, nil}, 41 {"", Segment{{1, 2}, {1, 1}}, Segment{{1.25, 1.5}, {2, 1.5}}, nil}, 42 {"", Segment{{1, 1}, {1, 2}}, Segment{{3, 0}, {2, 1}}, nil}, 43 {"", Segment{{2, 2}, {-1, -1}}, Segment{{-3, 1}, {3, -1}}, &Point2{0, 0}}, 44 {"", Segment{{2, 2}, {3, 3}}, Segment{{-3, 1}, {3, -1}}, nil}, 45 {"", Segment{{3, 3}, {2, 2}}, Segment{{-3, 1}, {3, -1}}, nil}, 46 {"", Segment{{0, 0}, {1, 1}}, Segment{{1, 1}, {2, 2}}, nil}, 47 {"", Segment{{0, 0}, {0, 1}}, Segment{{0, 0.1}, {0, 2}}, &Point2{0, 0.1}}, 48 {"", Segment{{0, 0}, {1, 0}}, Segment{{-2, 0}, {-1, 0}}, nil}, 49 {"", Segment{{1, 1}, {1, 2}}, Segment{{1, 1}, {2, 1}}, &Point2{1, 1}}, 50 {"", Segment{{1, 1}, {1, 2}}, Segment{{2, 1}, {2, 2}}, nil}, 51 {"", Segment{{1, 1}, {1, 2}}, Segment{{0, 1.5}, {2, 1.5}}, &Point2{1, 1.5}}, 52 } 53 for _, tt := range tests { 54 t.Run(tt.name, func(t *testing.T) { 55 gotPCross := SegmentsIntersection(tt.s, tt.s1) 56 if !reflect.DeepEqual(gotPCross, tt.want) { 57 t.Errorf("SegmentsIntersection() gotPCross = %v, want %v", gotPCross, tt.want) 58 } 59 }) 60 } 61 }