1#[test]
2fn test_split_f64() {
3 {
4 let (lhs, rhs) = crate::f64::split(crate::f64::consts::RAD_TO_DEG);
5 assert_eq!(lhs, 57.0);
6 assert!(crate::f64::approx_equal_f64(rhs, 0.29577951308232, 13));
7 }
8 {
9 let (lhs, rhs) = crate::f64::split(-crate::f64::consts::RAD_TO_DEG);
10 assert_eq!(lhs, -57.0);
11 println!("rhs: {}", rhs);
12 assert!(crate::f64::approx_equal_f64(rhs, -0.29577951308232, 13));
13 }
14}
15
16#[test]
17fn test_split_f32() {
18 {
19 let (lhs, rhs) = crate::f32::split(crate::f32::consts::RAD_TO_DEG);
20 assert_eq!(lhs, 57.0);
21 assert!(crate::f32::approx_equal_f32(rhs, 0.29578, 5));
22 }
23 {
24 let (lhs, rhs) = crate::f32::split(-crate::f32::consts::RAD_TO_DEG);
25 assert_eq!(lhs, -57.0);
26 assert!(crate::f32::approx_equal_f32(rhs, -0.29578, 5));
27 }
28}
29
30#[test]
31fn test_split_abs_f64() {
32 {
33 let (lhs, rhs) = crate::f64::split_abs(crate::f64::consts::RAD_TO_DEG);
34 assert_eq!(lhs, 57.0);
35 assert!(crate::f64::approx_equal_f64(rhs, 0.29577951308232, 13));
36 }
37 {
38 let (lhs, rhs) = crate::f64::split_abs(-crate::f64::consts::RAD_TO_DEG);
39 assert_eq!(lhs, 57.0);
40 println!("{}", rhs);
41 assert!(crate::f64::approx_equal_f64(rhs, 0.29577951308232, 13));
42 }
43}
44
45#[test]
46fn test_split_abs_f32() {
47 {
48 let (lhs, rhs) = crate::f32::split_abs(crate::f32::consts::RAD_TO_DEG);
49 assert_eq!(lhs, 57.0);
50 assert!(crate::f32::approx_equal_f32(rhs, 0.29578, 5));
51 }
52 {
53 let (lhs, rhs) = crate::f32::split_abs(-crate::f32::consts::RAD_TO_DEG);
54 assert_eq!(lhs, 57.0);
55 assert!(crate::f32::approx_equal_f32(rhs, 0.29578, 5));
56 }
57}
58
59#[test]
60fn test_to_radians_f64() {
61 let input: f64 = 100.0; assert_eq!(input.to_radians(), crate::f64::to_radians(input));
63 assert_eq!(crate::f64::to_radians(input), 1.7453292519943295);
64 assert_eq!(crate::f64::to_radians(-input), -1.7453292519943295);
65}
66
67#[test]
68fn test_to_radians_f32() {
69 let input: f32 = 100.0; assert_eq!(crate::f32::to_radians(input), input.to_radians());
71 assert_eq!(crate::f32::to_radians(input), 1.7453293);
72 assert_eq!(crate::f32::to_radians(-input), -1.7453293);
73}
74
75#[test]
76fn test_to_degrees_f64() {
77 let num: f64 = 1.745329252;
78 assert_eq!(num.to_degrees(), crate::f64::to_degrees(num));
79 assert_eq!(crate::f64::to_degrees(num), 100.0000000003249);
80 assert_eq!(crate::f64::to_degrees(-num), -100.0000000003249);
81}
82
83#[test]
84fn test_to_degrees_f32() {
85 let num: f32 = 1.7453293;
86 assert_eq!(num.to_degrees(), crate::f32::to_degrees(num));
87 assert_eq!(crate::f32::to_degrees(num), 100.0000000003249);
88 assert_eq!(crate::f32::to_degrees(-num), -100.0000000003249);
89}
90
91#[test]
92fn test_normalise_f64() {
93 assert_eq!(
94 crate::f64::normalise(
95 crate::f64::consts::ARC_SECONDS_IN_360_DEGREES / 2.0,
96 0.0,
97 crate::f64::consts::ARC_SECONDS_IN_360_DEGREES
98 ),
99 0.5
100 );
101 assert_eq!(
102 crate::f64::normalise(
103 crate::f64::consts::ARC_SECONDS_IN_360_DEGREES,
104 0.0,
105 crate::f64::consts::ARC_SECONDS_IN_360_DEGREES
106 ),
107 1.0
108 );
109 assert_eq!(
110 crate::f64::normalise(0.0, 0.0, crate::f64::consts::ARC_SECONDS_IN_360_DEGREES),
111 0.0
112 );
113}
114
115#[test]
116fn test_normalise_f32() {
117 assert_eq!(
118 crate::f32::normalise(
119 crate::f32::consts::ARC_SECONDS_IN_360_DEGREES / 2.0,
120 0.0,
121 crate::f32::consts::ARC_SECONDS_IN_360_DEGREES
122 ),
123 0.5
124 );
125 assert_eq!(
126 crate::f32::normalise(
127 crate::f32::consts::ARC_SECONDS_IN_360_DEGREES,
128 0.0,
129 crate::f32::consts::ARC_SECONDS_IN_360_DEGREES
130 ),
131 1.0
132 );
133 assert_eq!(
134 crate::f32::normalise(0.0, 0.0, crate::f32::consts::ARC_SECONDS_IN_360_DEGREES),
135 0.0
136 );
137}
138
139#[test]
140fn test_normalised_to_index_f64() {
141 assert_eq!(
142 crate::f64::normalised_to_index(
143 crate::f64::normalise(
144 crate::f64::indexify_lat(-90.0) * 60.0 * 60.0,
145 0.0,
146 crate::f64::consts::ARC_SECONDS_IN_180_DEGREES
147 ),
148 crate::usize::consts::ARC_SECONDS_IN_180_DEGREES
149 ),
150 0
151 );
152 assert_eq!(
153 crate::f64::normalised_to_index(
154 crate::f64::normalise(
155 crate::f64::indexify_lat(0.0) * 60.0 * 60.0,
156 0.0,
157 crate::f64::consts::ARC_SECONDS_IN_180_DEGREES
158 ),
159 crate::usize::consts::ARC_SECONDS_IN_180_DEGREES
160 ),
161 crate::usize::consts::ARC_SECONDS_IN_180_DEGREES / 2
162 );
163 assert_eq!(
164 crate::f64::normalised_to_index(
165 crate::f64::normalise(
166 crate::f64::indexify_lat(90.0) * 60.0 * 60.0,
167 0.0,
168 crate::f64::consts::ARC_SECONDS_IN_180_DEGREES
169 ),
170 crate::usize::consts::ARC_SECONDS_IN_180_DEGREES
171 ),
172 crate::usize::consts::ARC_SECONDS_IN_180_DEGREES
173 );
174}
175
176#[test]
177fn test_normalised_to_index_f32() {
178 assert_eq!(
179 crate::f32::normalised_to_index(
180 crate::f32::normalise(
181 crate::f32::indexify_lat(-90.0) * 60.0 * 60.0,
182 0.0,
183 crate::f32::consts::ARC_SECONDS_IN_180_DEGREES
184 ),
185 crate::usize::consts::ARC_SECONDS_IN_180_DEGREES
186 ),
187 0
188 );
189 assert_eq!(
190 crate::f32::normalised_to_index(
191 crate::f32::normalise(
192 crate::f32::indexify_lat(0.0) * 60.0 * 60.0,
193 0.0,
194 crate::f32::consts::ARC_SECONDS_IN_180_DEGREES
195 ),
196 crate::usize::consts::ARC_SECONDS_IN_180_DEGREES
197 ),
198 crate::usize::consts::ARC_SECONDS_IN_180_DEGREES / 2
199 );
200 assert_eq!(
201 crate::f32::normalised_to_index(
202 crate::f32::normalise(
203 crate::f32::indexify_lat(90.0) * 60.0 * 60.0,
204 0.0,
205 crate::f32::consts::ARC_SECONDS_IN_180_DEGREES
206 ),
207 crate::usize::consts::ARC_SECONDS_IN_180_DEGREES
208 ),
209 crate::usize::consts::ARC_SECONDS_IN_180_DEGREES
210 );
211}
212
213#[test]
214fn test_indexify_lat_f64() {
215 assert_eq!(crate::f64::indexify_lat(-90.0), 0.0);
216 assert_eq!(crate::f64::indexify_lat(0.0), 90.0);
217 assert_eq!(crate::f64::indexify_lat(90.0), 180.0);
218}
219
220#[test]
221fn test_indexify_lat_f32() {
222 assert_eq!(crate::f32::indexify_lat(-90.0), 0.0);
223 assert_eq!(crate::f32::indexify_lat(0.0), 90.0);
224 assert_eq!(crate::f32::indexify_lat(90.0), 180.0);
225}
226
227#[test]
228fn test_indexify_long_f64() {
229 assert_eq!(crate::f64::indexify_long(-180.0), 0.0);
230 assert_eq!(crate::f64::indexify_long(0.0), 180.0);
231 assert_eq!(crate::f64::indexify_long(180.0), 360.0);
232}
233
234#[test]
235fn test_indexify_long_f32() {
236 assert_eq!(crate::f32::indexify_long(-180.0), 0.0);
237 assert_eq!(crate::f32::indexify_long(0.0), 180.0);
238 assert_eq!(crate::f32::indexify_long(180.0), 360.0);
239}
240
241#[test]
242fn test_indexify_lat_long_f64() {
243 assert_eq!(crate::f64::indexify_lat_long(-90.0, -180.0), (0.0, 0.0));
244 assert_eq!(crate::f64::indexify_lat_long(0.0, 0.0), (90.0, 180.0));
245 assert_eq!(crate::f64::indexify_lat_long(90.0, 180.0), (180.0, 360.0));
246}
247
248#[test]
249fn test_indexify_lat_long_f32() {
250 assert_eq!(crate::f32::indexify_lat_long(-90.0, -180.0), (0.0, 0.0));
251 assert_eq!(crate::f32::indexify_lat_long(0.0, 0.0), (90.0, 180.0));
252 assert_eq!(crate::f32::indexify_lat_long(90.0, 180.0), (180.0, 360.0));
253}
254
255#[test]
256fn test_trunc_f64() {
257 assert_eq!(
258 crate::f64::trunc(crate::f64::consts::RAD_TO_DEG, 19),
259 crate::f64::consts::RAD_TO_DEG
260 );
261 assert_eq!(
262 crate::f64::trunc(-crate::f64::consts::RAD_TO_DEG, 19),
263 -crate::f64::consts::RAD_TO_DEG
264 );
265 assert_eq!(crate::f64::trunc(crate::f64::consts::RAD_TO_DEG, 0), 57.0);
266 assert_eq!(crate::f64::trunc(-crate::f64::consts::RAD_TO_DEG, 0), -57.0);
267}
268
269#[test]
270fn test_trunc_f32() {
271 assert_eq!(
272 crate::f32::trunc(crate::f32::consts::RAD_TO_DEG, 19),
273 crate::f32::consts::RAD_TO_DEG
274 );
275 assert_eq!(
276 crate::f32::trunc(-crate::f32::consts::RAD_TO_DEG, 19),
277 -crate::f32::consts::RAD_TO_DEG
278 );
279 assert_eq!(crate::f32::trunc(crate::f32::consts::RAD_TO_DEG, 0), 57.0);
280 assert_eq!(crate::f32::trunc(-crate::f32::consts::RAD_TO_DEG, 0), -57.0);
281}
282
283#[test]
284#[should_panic]
285fn test_trunc_f64_should_error() {
286 crate::f64::trunc(crate::f64::consts::RAD_TO_DEG, 20);
287 crate::f64::trunc(-crate::f64::consts::RAD_TO_DEG, 20);
288}
289
290#[test]
291#[should_panic]
292fn test_trunc_f32_should_error() {
293 crate::f32::trunc(crate::f32::consts::RAD_TO_DEG, 20);
294 crate::f32::trunc(-crate::f32::consts::RAD_TO_DEG, 20);
295}
296
297#[test]
298fn test_truct_safe_f64() {
299 {
300 let output: Result<f64, crate::error::Warning> =
301 crate::f64::trunc_safe(crate::f64::consts::RAD_TO_DEG, 19);
302 assert!(output.is_ok());
303 if let Ok(output) = output {
304 assert_eq!(output, crate::f64::consts::RAD_TO_DEG);
305 } else {
306 panic!();
307 }
308 }
309 {
310 let output: Result<f64, crate::error::Warning> =
311 crate::f64::trunc_safe(-crate::f64::consts::RAD_TO_DEG, 19);
312 assert!(output.is_ok());
313 if let Ok(output) = output {
314 assert_eq!(output, -crate::f64::consts::RAD_TO_DEG);
315 } else {
316 panic!();
317 }
318 }
319 {
320 let output: Result<f64, crate::error::Warning> =
321 crate::f64::trunc_safe(crate::f64::consts::RAD_TO_DEG, 6);
322 assert!(output.is_ok());
323 if let Ok(output) = output {
324 assert_eq!(output, 57.295779);
325 } else {
326 panic!();
327 }
328 }
329 {
330 let output: Result<f64, crate::error::Warning> =
331 crate::f64::trunc_safe(-crate::f64::consts::RAD_TO_DEG, 6);
332 assert!(output.is_ok());
333 if let Ok(output) = output {
334 assert_eq!(output, -57.295779);
335 } else {
336 panic!();
337 }
338 }
339 {
340 let output: Result<f64, crate::error::Warning> =
341 crate::f64::trunc_safe(crate::f64::consts::RAD_TO_DEG, 20);
342 assert!(output.is_err());
343 if let Err(crate::error::Warning::F64(output, message)) = output {
344 assert_eq!(output, crate::f64::consts::RAD_TO_DEG);
345 println!("Intentional warning message: \"{}\"", message);
346 } else {
347 panic!();
348 }
349 }
350}
351
352#[test]
353fn test_truct_safe_f32() {
354 {
355 let output: Result<f32, crate::error::Warning> =
356 crate::f32::trunc_safe(crate::f32::consts::RAD_TO_DEG, 19);
357 assert!(output.is_ok());
358 if let Ok(output) = output {
359 assert_eq!(output, crate::f32::consts::RAD_TO_DEG);
360 } else {
361 panic!();
362 }
363 }
364 {
365 let output: Result<f32, crate::error::Warning> =
366 crate::f32::trunc_safe(-crate::f32::consts::RAD_TO_DEG, 19);
367 assert!(output.is_ok());
368 if let Ok(output) = output {
369 assert_eq!(output, -crate::f32::consts::RAD_TO_DEG);
370 } else {
371 panic!();
372 }
373 }
374 {
375 let output: Result<f32, crate::error::Warning> =
376 crate::f32::trunc_safe(crate::f32::consts::RAD_TO_DEG, 4);
377 assert!(output.is_ok());
378 if let Ok(output) = output {
379 assert_eq!(output, 57.2957);
380 } else {
381 panic!();
382 }
383 }
384 {
385 let output: Result<f32, crate::error::Warning> =
386 crate::f32::trunc_safe(-crate::f32::consts::RAD_TO_DEG, 4);
387 assert!(output.is_ok());
388 if let Ok(output) = output {
389 assert_eq!(output, -57.2957);
390 } else {
391 panic!();
392 }
393 }
394 {
395 let output: Result<f32, crate::error::Warning> =
396 crate::f32::trunc_safe(crate::f32::consts::RAD_TO_DEG, 20);
397 assert!(output.is_err());
398 if let Err(crate::error::Warning::F32(output, message)) = output {
399 assert_eq!(output, crate::f32::consts::RAD_TO_DEG);
400 println!("Intentional warning message: \"{}\"", message);
401 } else {
402 panic!();
403 }
404 }
405}
406
407#[test]
408fn test_trunc_exact_f64() {
409 assert_eq!(
410 crate::f64::trunc_exact(-0.2957795130823209, 18),
411 -0.2957795130823209
412 );
413 assert_eq!(
414 crate::f64::trunc_exact(-0.2957795130823209, 16),
415 -0.2957795130823209
416 );
417 assert_eq!(
418 crate::f64::trunc_exact(-0.2957795130823209, 14),
419 -0.29577951308232
420 );
421}
422
423#[test]
424fn test_trunc_exact_f32() {
425 assert_eq!(crate::f32::trunc_exact(-0.29577953, 8), -0.29577953);
426 assert_eq!(crate::f32::trunc_exact(-0.29577953, 6), -0.295779);
427 assert_eq!(crate::f32::trunc_exact(-0.29577953, 4), -0.2957);
428}
429
430#[test]
431fn test_two_times_pi_equals_pi_plus_pi_f64() {
432 assert_eq!(
433 std::f64::consts::PI + std::f64::consts::PI,
434 2.0f64 * std::f64::consts::PI
435 );
436}
437
438#[test]
439fn test_two_times_pi_equals_pi_plus_pi_f64_to_f32() {
440 assert_eq!(
441 (std::f64::consts::PI + std::f64::consts::PI) as f32,
442 (2.0f64 * std::f64::consts::PI) as f32
443 );
444}
445
446#[test]
447fn test_two_times_pi_equals_pi_plus_pi_f32() {
448 assert_eq!(
449 std::f32::consts::PI + std::f32::consts::PI,
450 2.0f32 * std::f32::consts::PI
451 );
452}
453
454#[test]
455fn test_rad_to_deg_f64() {
456 assert_eq!(
457 crate::f64::consts::RAD_TO_DEG,
458 180.0f64 / std::f64::consts::PI
459 );
460}
461
462#[test]
463fn test_rad_to_deg_f32() {
464 assert!(crate::f32::approx_equal_f32(
465 crate::f32::consts::RAD_TO_DEG,
466 180.0f32 / std::f32::consts::PI,
467 4
468 ));
469}
470
471#[test]
472fn test_deg_to_rad_f64() {
473 assert_eq!(
474 crate::f64::consts::DEG_TO_RAD,
475 std::f64::consts::PI / 180.0f64
476 );
477}
478
479#[test]
480fn test_deg_to_rad_f32() {
481 assert_eq!(
482 crate::f32::consts::DEG_TO_RAD,
483 std::f32::consts::PI / 180.0f32
484 );
485}
486
487#[test]
488fn test_approx_equal_f64() {
489 assert!(crate::f64::approx_equal_f64(
490 -5.29577951308232f64,
491 -5.29577951308233f64,
492 13
493 ));
494 assert!(!crate::f64::approx_equal_f64(
495 -5.29577951308232f64,
496 -5.29577951308233f64,
497 14
498 ));
499}
500
501#[test]
502#[should_panic]
503fn test_approx_equal_f64_should_error() {
504 let _ = crate::f64::approx_equal_f64(-5.29577951308232f64, -5.29577951308232f64, 20);
505}
506
507#[test]
508fn test_approx_equal_infallible_f64() {
509 assert!(crate::f64::approx_equal_infallible_f64(
510 -5.29577951308232f64,
511 -5.29577951308233f64,
512 13
513 ));
514 assert!(!crate::f64::approx_equal_infallible_f64(
515 -5.29577951308232f64,
516 -5.29577951308233f64,
517 14
518 ));
519 assert!(!crate::f64::approx_equal_infallible_f64(
520 -5.29577951308232f64,
521 -5.29577951308233f64,
522 20
523 ));
524 assert!(crate::f64::approx_equal_infallible_f64(
525 -5.29577951308232f64,
526 -5.29577951308232f64,
527 20
528 ));
529}
530
531#[test]
532fn test_trunc_str() {
533 assert_eq!(crate::str::trunc("0123456789", 0), "");
534 assert_eq!(crate::str::trunc("0123456789", 1), "0");
535 assert_eq!(crate::str::trunc("0123456789", 5), "01234");
536 assert_eq!(crate::str::trunc("0123456789", 10), "0123456789");
537 assert_eq!(crate::str::trunc("0123456789", 11), "0123456789");
538}
539
540#[test]
541#[ignore]
542fn test_() {}