271 #[cfg(test)] |
271 #[cfg(test)] |
272 mod tests { |
272 mod tests { |
273 use super::*; |
273 use super::*; |
274 |
274 |
275 #[test] |
275 #[test] |
276 fn log_test_adjacent() { |
276 fn convert_adjacent() { |
|
277 let point = Loc([0.4, 0.6]); |
|
278 |
|
279 for f1 in [F1, F2, F3, F4, F5, F6] { |
|
280 for f2 in [F1, F2, F3, F4, F5, F6] { |
|
281 println!("{:?}-{:?}", f1, f2); |
|
282 match f1.convert_adjacent(f2, &point) { |
|
283 None => assert_eq!(f2.opposing_face(), f1), |
|
284 Some(q) => { |
|
285 match f2.convert_adjacent(f1, &q) { |
|
286 None => assert_eq!(f1.opposing_face(), f2), |
|
287 Some(p) => assert!((p-&point).norm(L2) < 1e-9), |
|
288 } |
|
289 } |
|
290 } |
|
291 } |
|
292 } |
|
293 } |
|
294 |
|
295 // This will fail, as different return path does not guarantee |
|
296 // that a point outside the face will be returned to its point of origin. |
|
297 // #[test] |
|
298 // fn convert_paths() { |
|
299 // let point = Loc([0.4, 0.6]); |
|
300 |
|
301 // for f1 in [F1, F2, F3, F4, F5, F6] { |
|
302 // for f2 in [F1, F2, F3, F4, F5, F6] { |
|
303 // for p1 in f2.paths(f1) { |
|
304 // for p2 in f1.paths(f2) { |
|
305 // println!("{:?}-{:?}; {:?} {:?}", f1, f2, p1, p2); |
|
306 // let v = &f2.convert(&p1, &point); |
|
307 // let q = f1.convert(&p2, v); |
|
308 // assert!((q-&point).norm(L2) < 1e-9, |
|
309 // "norm({}-{}) ≥ 1e-9 (dest {})", q, &point, &v); |
|
310 // } |
|
311 // } |
|
312 // } |
|
313 // } |
|
314 // } |
|
315 |
|
316 #[test] |
|
317 fn log_adjacent() { |
277 let p1 = OnCube{ face : F1, point : Loc([0.5, 0.5])}; |
318 let p1 = OnCube{ face : F1, point : Loc([0.5, 0.5])}; |
278 let p2 = OnCube{ face : F2, point : Loc([0.5, 0.5])}; |
319 let p2 = OnCube{ face : F2, point : Loc([0.5, 0.5])}; |
279 |
320 |
280 assert_eq!(p1.log(&p2).norm(L2), 1.0); |
321 assert_eq!(p1.log(&p2).norm(L2), 1.0); |
281 } |
322 } |
282 |
323 |
283 #[test] |
324 #[test] |
284 fn log_test_opposing_equal() { |
325 fn log_opposing_equal() { |
285 let p1 = OnCube{ face : F1, point : Loc([0.5, 0.5])}; |
326 let p1 = OnCube{ face : F1, point : Loc([0.5, 0.5])}; |
286 let p2 = OnCube{ face : F6, point : Loc([0.5, 0.5])}; |
327 let p2 = OnCube{ face : F6, point : Loc([0.5, 0.5])}; |
287 |
328 |
288 assert_eq!(p1.log(&p2).norm(L2), 2.0); |
329 assert_eq!(p1.log(&p2).norm(L2), 2.0); |
289 } |
330 } |
290 |
331 |
291 #[test] |
332 #[test] |
292 fn log_test_opposing_unique_shortest() { |
333 fn log_opposing_unique_shortest() { |
293 let p1 = OnCube{ face : F1, point : Loc([0.3, 0.25])}; |
334 let p1 = OnCube{ face : F1, point : Loc([0.3, 0.25])}; |
294 let p2 = OnCube{ face : F6, point : Loc([0.3, 0.25])}; |
335 let p2 = OnCube{ face : F6, point : Loc([0.3, 0.25])}; |
295 |
336 |
296 assert_eq!(p1.log(&p2).norm(L2), 1.5); |
337 assert_eq!(p1.log(&p2).norm(L2), 1.5); |
297 } |
338 } |