@@ -78,4 +78,78 @@ void main() {
7878 expect (w3[i], [0 , 0 , 0 , 0 , 0 , 0 ]);
7979 }
8080 });
81+
82+ group ('closestPointOnLine tests' , () {
83+ test ('point on the line' , () {
84+ final lineStart = (0 , 0 );
85+ final lineEnd = (10 , 10 );
86+ final point = (5 , 5 );
87+ final closest = closestPointOnLine (lineStart, lineEnd, point);
88+ expect (closest, (5.0 , 5.0 ));
89+ });
90+
91+ test ('point before the line' , () {
92+ final lineStart = (0 , 0 );
93+ final lineEnd = (10 , 10 );
94+ final point = (- 2 , - 5 );
95+ final closest = closestPointOnLine (lineStart, lineEnd, point);
96+ expect (closest, (double .maxFinite, double .maxFinite));
97+ });
98+
99+ test ('point after the line' , () {
100+ final lineStart = (0 , 0 );
101+ final lineEnd = (10 , 10 );
102+ final point = (15 , 15 );
103+ final closest = closestPointOnLine (lineStart, lineEnd, point);
104+ expect (closest, (double .maxFinite, double .maxFinite));
105+ });
106+
107+ test ('point off the line' , () {
108+ final lineStart = (0 , 0 );
109+ final lineEnd = (10 , 10 );
110+ final point = (5 , 3 );
111+ final closest = closestPointOnLine (lineStart, lineEnd, point);
112+ expect (closest, (4.0 , 4.0 ));
113+ });
114+
115+ test ('vertical line' , () {
116+ final lineStart = (1 , 2 );
117+ final lineEnd = (1 , 10 );
118+ final point = (5 , 5 );
119+ final closest = closestPointOnLine (lineStart, lineEnd, point);
120+ expect (closest, (1.0 , 5.0 ));
121+ });
122+
123+ test ('horizontal line' , () {
124+ final lineStart = (2 , 1 );
125+ final lineEnd = (10 , 1 );
126+ final point = (5 , 5 );
127+ final closest = closestPointOnLine (lineStart, lineEnd, point);
128+ expect (closest, (5.0 , 1.0 ));
129+ });
130+
131+ test ('same start and end points' , () {
132+ final lineStart = (5 , 5 );
133+ final lineEnd = (5 , 5 );
134+ final point = (10 , 10 );
135+ final closest = closestPointOnLine (lineStart, lineEnd, point);
136+ expect (closest, (5.0 , 5.0 ));
137+ });
138+
139+ test ('line with negative coordinates' , () {
140+ final lineStart = (- 5 , - 5 );
141+ final lineEnd = (5 , 5 );
142+ final point = (0 , 10 );
143+ final closest = closestPointOnLine (lineStart, lineEnd, point);
144+ expect (closest, (5.0 , 5.0 ));
145+ });
146+
147+ test ('line with negative and positive coordinates' , () {
148+ final lineStart = (- 5 , 5 );
149+ final lineEnd = (5 , - 5 );
150+ final point = (0 , 0 );
151+ final closest = closestPointOnLine (lineStart, lineEnd, point);
152+ expect (closest, (0.0 , 0.0 ));
153+ });
154+ });
81155}
0 commit comments