src/cube.rs

changeset 10
cd6f6e7defd2
parent 8
17d71ca4ce84
child 11
933242e0f3b8
equal deleted inserted replaced
9:0fa3ac0c248b 10:cd6f6e7defd2
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 }

mercurial