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  }