use glam::Vec2;
use polyanya::{Mesh, PolyanyaFile};
macro_rules! assert_delta {
($x:expr, $y:expr) => {
let val = $x.unwrap().length;
if !((val - $y).abs() < 0.0001) {
assert_eq!(val, $y);
}
};
}
fn arena_mesh() -> Mesh {
PolyanyaFile::from_file("meshes/v2/arena.mesh")
.try_into()
.unwrap()
}
#[test]
fn arena() {
let arena = arena_mesh();
assert_delta!(arena.path(Vec2::new(1.0, 11.0), Vec2::new(1.0, 12.0)), 1.0);
assert_delta!(arena.path(Vec2::new(1.0, 12.0), Vec2::new(1.0, 10.0)), 2.0);
assert_delta!(
arena.path(Vec2::new(1.0, 13.0), Vec2::new(4.0, 12.0)),
3.16228
);
assert_delta!(
arena.path(Vec2::new(1.0, 3.0), Vec2::new(3.0, 1.0)),
3.41421
);
assert_delta!(arena.path(Vec2::new(1.0, 3.0), Vec2::new(4.0, 3.0)), 3.0);
assert_delta!(
arena.path(Vec2::new(1.0, 4.0), Vec2::new(4.0, 2.0)),
3.60555
);
assert_delta!(
arena.path(Vec2::new(1.0, 40.0), Vec2::new(2.0, 39.0)),
1.41421
);
assert_delta!(arena.path(Vec2::new(1.0, 41.0), Vec2::new(1.0, 39.0)), 2.0);
assert_delta!(arena.path(Vec2::new(1.0, 41.0), Vec2::new(1.0, 44.0)), 3.0);
assert_delta!(
arena.path(Vec2::new(1.0, 42.0), Vec2::new(4.0, 43.0)),
3.16228
);
assert_delta!(arena.path(Vec2::new(1.0, 10.0), Vec2::new(7.0, 10.0)), 6.0);
assert_delta!(arena.path(Vec2::new(1.0, 11.0), Vec2::new(1.0, 4.0)), 7.0);
assert_delta!(
arena.path(Vec2::new(1.0, 11.0), Vec2::new(7.0, 14.0)),
6.7082
);
assert_delta!(
arena.path(Vec2::new(1.0, 12.0), Vec2::new(5.0, 7.0)),
6.40312
);
assert_delta!(
arena.path(Vec2::new(1.0, 12.0), Vec2::new(6.0, 15.0)),
5.83095
);
assert_delta!(
arena.path(Vec2::new(1.0, 12.0), Vec2::new(8.0, 11.0)),
7.07107
);
assert_delta!(arena.path(Vec2::new(1.0, 14.0), Vec2::new(1.0, 9.0)), 5.0);
assert_delta!(
arena.path(Vec2::new(1.0, 24.0), Vec2::new(7.0, 26.0)),
6.32456
);
assert_delta!(arena.path(Vec2::new(1.0, 25.0), Vec2::new(5.0, 25.0)), 4.0);
assert_delta!(
arena.path(Vec2::new(1.0, 35.0), Vec2::new(5.0, 33.0)),
4.60555
);
assert_delta!(
arena.path(Vec2::new(1.0, 11.0), Vec2::new(4.0, 18.0)),
7.63441
);
assert_delta!(
arena.path(Vec2::new(1.0, 12.0), Vec2::new(12.0, 14.0)),
11.1803
);
assert_delta!(
arena.path(Vec2::new(1.0, 13.0), Vec2::new(4.0, 23.0)),
10.8907
);
assert_delta!(
arena.path(Vec2::new(1.0, 13.0), Vec2::new(5.0, 3.0)),
10.7703
);
assert_delta!(
arena.path(Vec2::new(1.0, 13.0), Vec2::new(6.0, 7.0)),
7.81025
);
assert_delta!(
arena.path(Vec2::new(1.0, 13.0), Vec2::new(7.0, 7.0)),
8.48528
);
assert_delta!(
arena.path(Vec2::new(1.0, 23.0), Vec2::new(7.0, 32.0)),
10.8167
);
assert_delta!(
arena.path(Vec2::new(1.0, 24.0), Vec2::new(11.0, 25.0)),
10.0499
);
assert_delta!(
arena.path(Vec2::new(1.0, 24.0), Vec2::new(6.0, 32.0)),
9.4365
);
assert_delta!(
arena.path(Vec2::new(1.0, 25.0), Vec2::new(9.0, 24.0)),
8.06226
);
assert_delta!(
arena.path(Vec2::new(1.0, 10.0), Vec2::new(11.0, 19.0)),
13.4536
);
assert_delta!(
arena.path(Vec2::new(1.0, 10.0), Vec2::new(13.0, 11.0)),
12.0416
);
assert_delta!(
arena.path(Vec2::new(1.0, 11.0), Vec2::new(10.0, 2.0)),
12.7279
);
assert_delta!(
arena.path(Vec2::new(1.0, 12.0), Vec2::new(11.0, 21.0)),
13.4536
);
assert_delta!(
arena.path(Vec2::new(1.0, 12.0), Vec2::new(13.0, 13.0)),
12.0416
);
assert_delta!(
arena.path(Vec2::new(1.0, 12.0), Vec2::new(14.0, 12.0)),
13.0
);
assert_delta!(
arena.path(Vec2::new(1.0, 12.0), Vec2::new(6.0, 25.0)),
14.0459
);
assert_delta!(
arena.path(Vec2::new(1.0, 13.0), Vec2::new(11.0, 3.0)),
14.1421
);
assert_delta!(
arena.path(Vec2::new(1.0, 13.0), Vec2::new(13.0, 11.0)),
12.1655
);
assert_delta!(
arena.path(Vec2::new(1.0, 14.0), Vec2::new(6.0, 23.0)),
10.7801
);
assert_delta!(
arena.path(Vec2::new(1.0, 10.0), Vec2::new(18.0, 11.0)),
17.0294
);
assert_delta!(
arena.path(Vec2::new(1.0, 11.0), Vec2::new(16.0, 14.0)),
15.2971
);
assert_delta!(
arena.path(Vec2::new(1.0, 12.0), Vec2::new(14.0, 2.0)),
16.4012
);
assert_delta!(
arena.path(Vec2::new(1.0, 12.0), Vec2::new(17.0, 13.0)),
16.0312
);
assert_delta!(
arena.path(Vec2::new(1.0, 12.0), Vec2::new(9.0, 28.0)),
17.9234
);
assert_delta!(
arena.path(Vec2::new(1.0, 13.0), Vec2::new(4.0, 30.0)),
17.8617
);
assert_delta!(
arena.path(Vec2::new(1.0, 13.0), Vec2::new(9.0, 26.0)),
15.3584
);
assert_delta!(
arena.path(Vec2::new(1.0, 14.0), Vec2::new(14.0, 22.0)),
15.2745
);
assert_delta!(arena.path(Vec2::new(1.0, 23.0), Vec2::new(10.0, 8.0)), 18.0);
assert_delta!(
arena.path(Vec2::new(1.0, 23.0), Vec2::new(14.0, 9.0)),
19.4391
);
assert_delta!(
arena.path(Vec2::new(1.0, 10.0), Vec2::new(13.0, 29.0)),
22.4722
);
assert_delta!(
arena.path(Vec2::new(1.0, 10.0), Vec2::new(18.0, 22.0)),
20.8087
);
assert_delta!(
arena.path(Vec2::new(1.0, 10.0), Vec2::new(19.0, 18.0)),
21.0575
);
assert_delta!(
arena.path(Vec2::new(1.0, 10.0), Vec2::new(21.0, 2.0)),
21.5407
);
assert_delta!(
arena.path(Vec2::new(1.0, 10.0), Vec2::new(5.0, 32.0)),
22.5024
);
assert_delta!(
arena.path(Vec2::new(1.0, 10.0), Vec2::new(6.0, 29.0)),
19.703
);
assert_delta!(
arena.path(Vec2::new(1.0, 11.0), Vec2::new(20.0, 7.0)),
19.4165
);
assert_delta!(
arena.path(Vec2::new(1.0, 11.0), Vec2::new(21.0, 17.0)),
21.2675
);
assert_delta!(
arena.path(Vec2::new(1.0, 11.0), Vec2::new(22.0, 16.0)),
21.6014
);
assert_delta!(
arena.path(Vec2::new(1.0, 11.0), Vec2::new(8.0, 29.0)),
19.3382
);
assert_delta!(
arena.path(Vec2::new(1.0, 10.0), Vec2::new(22.0, 22.0)),
24.2591
);
assert_delta!(
arena.path(Vec2::new(1.0, 10.0), Vec2::new(5.0, 33.0)),
23.4959
);
assert_delta!(
arena.path(Vec2::new(1.0, 11.0), Vec2::new(10.0, 32.0)),
22.8569
);
assert_delta!(
arena.path(Vec2::new(1.0, 11.0), Vec2::new(20.0, 31.0)),
27.5862
);
assert_delta!(
arena.path(Vec2::new(1.0, 11.0), Vec2::new(21.0, 23.0)),
23.3238
);
assert_delta!(
arena.path(Vec2::new(1.0, 11.0), Vec2::new(24.0, 14.0)),
23.1948
);
assert_delta!(arena.path(Vec2::new(1.0, 11.0), Vec2::new(25.0, 4.0)), 25.0);
assert_delta!(
arena.path(Vec2::new(1.0, 11.0), Vec2::new(3.0, 36.0)),
25.4721
);
assert_delta!(
arena.path(Vec2::new(1.0, 12.0), Vec2::new(19.0, 27.0)),
23.4307
);
assert_delta!(
arena.path(Vec2::new(1.0, 12.0), Vec2::new(2.0, 37.0)),
25.7678
);
assert_delta!(
arena.path(Vec2::new(1.0, 10.0), Vec2::new(22.0, 31.0)),
29.6985
);
assert_delta!(
arena.path(Vec2::new(1.0, 10.0), Vec2::new(24.0, 27.0)),
28.6007
);
assert_delta!(
arena.path(Vec2::new(1.0, 10.0), Vec2::new(28.0, 15.0)),
27.4591
);
assert_delta!(
arena.path(Vec2::new(1.0, 10.0), Vec2::new(7.0, 39.0)),
29.7162
);
assert_delta!(
arena.path(Vec2::new(1.0, 11.0), Vec2::new(12.0, 35.0)),
26.4038
);
assert_delta!(
arena.path(Vec2::new(1.0, 11.0), Vec2::new(28.0, 18.0)),
27.9259
);
assert_delta!(
arena.path(Vec2::new(1.0, 11.0), Vec2::new(5.0, 40.0)),
29.552
);
assert_delta!(
arena.path(Vec2::new(1.0, 12.0), Vec2::new(26.0, 3.0)),
26.5707
);
assert_delta!(
arena.path(Vec2::new(1.0, 12.0), Vec2::new(29.0, 14.0)),
28.0713
);
assert_delta!(
arena.path(Vec2::new(1.0, 12.0), Vec2::new(29.0, 6.0)),
28.6362
);
assert_delta!(
arena.path(Vec2::new(1.0, 10.0), Vec2::new(25.0, 36.0)),
35.3836
);
assert_delta!(
arena.path(Vec2::new(1.0, 10.0), Vec2::new(27.0, 25.0)),
30.0597
);
assert_delta!(
arena.path(Vec2::new(1.0, 10.0), Vec2::new(32.0, 4.0)),
31.5753
);
assert_delta!(
arena.path(Vec2::new(1.0, 10.0), Vec2::new(33.0, 4.0)),
32.5576
);
assert_delta!(
arena.path(Vec2::new(1.0, 11.0), Vec2::new(10.0, 42.0)),
32.3648
);
assert_delta!(
arena.path(Vec2::new(1.0, 11.0), Vec2::new(27.0, 28.0)),
31.0644
);
assert_delta!(
arena.path(Vec2::new(1.0, 11.0), Vec2::new(30.0, 2.0)),
30.5347
);
assert_delta!(
arena.path(Vec2::new(1.0, 11.0), Vec2::new(31.0, 3.0)),
31.0483
);
assert_delta!(
arena.path(Vec2::new(1.0, 11.0), Vec2::new(5.0, 42.0)),
31.5461
);
assert_delta!(
arena.path(Vec2::new(1.0, 12.0), Vec2::new(18.0, 37.0)),
30.5349
);
assert_delta!(
arena.path(Vec2::new(1.0, 10.0), Vec2::new(15.0, 43.0)),
35.8469
);
assert_delta!(
arena.path(Vec2::new(1.0, 10.0), Vec2::new(21.0, 41.0)),
37.1384
);
assert_delta!(
arena.path(Vec2::new(1.0, 10.0), Vec2::new(27.0, 37.0)),
37.4833
);
assert_delta!(
arena.path(Vec2::new(1.0, 10.0), Vec2::new(29.0, 38.0)),
39.598
);
assert_delta!(
arena.path(Vec2::new(1.0, 10.0), Vec2::new(31.0, 25.0)),
33.7313
);
assert_delta!(
arena.path(Vec2::new(1.0, 10.0), Vec2::new(38.0, 13.0)),
37.1214
);
assert_delta!(
arena.path(Vec2::new(1.0, 10.0), Vec2::new(38.0, 6.0)),
37.2305
);
assert_delta!(
arena.path(Vec2::new(1.0, 10.0), Vec2::new(39.0, 6.0)),
38.2281
);
assert_delta!(
arena.path(Vec2::new(1.0, 10.0), Vec2::new(40.0, 9.0)),
39.0357
);
assert_delta!(
arena.path(Vec2::new(1.0, 11.0), Vec2::new(11.0, 43.0)),
33.5926
);
assert_delta!(
arena.path(Vec2::new(1.0, 10.0), Vec2::new(12.0, 47.0)),
38.6267
);
assert_delta!(
arena.path(Vec2::new(1.0, 10.0), Vec2::new(14.0, 47.0)),
39.223
);
assert_delta!(
arena.path(Vec2::new(1.0, 10.0), Vec2::new(16.0, 46.0)),
39.0
);
assert_delta!(
arena.path(Vec2::new(1.0, 10.0), Vec2::new(28.0, 41.0)),
41.1096
);
assert_delta!(
arena.path(Vec2::new(1.0, 10.0), Vec2::new(37.0, 21.0)),
37.6552
);
assert_delta!(
arena.path(Vec2::new(1.0, 10.0), Vec2::new(39.0, 24.0)),
40.6133
);
assert_delta!(
arena.path(Vec2::new(1.0, 11.0), Vec2::new(16.0, 45.0)),
37.1677
);
assert_delta!(
arena.path(Vec2::new(1.0, 11.0), Vec2::new(21.0, 43.0)),
37.7849
);
assert_delta!(
arena.path(Vec2::new(1.0, 11.0), Vec2::new(32.0, 39.0)),
41.7732
);
assert_delta!(
arena.path(Vec2::new(1.0, 11.0), Vec2::new(34.0, 29.0)),
37.5954
);
assert_delta!(
arena.path(Vec2::new(1.0, 10.0), Vec2::new(29.0, 43.0)),
43.2791
);
assert_delta!(
arena.path(Vec2::new(1.0, 10.0), Vec2::new(43.0, 15.0)),
42.2966
);
assert_delta!(
arena.path(Vec2::new(1.0, 10.0), Vec2::new(43.0, 17.0)),
42.6119
);
assert_delta!(
arena.path(Vec2::new(1.0, 10.0), Vec2::new(45.0, 10.0)),
44.0
);
assert_delta!(
arena.path(Vec2::new(1.0, 10.0), Vec2::new(46.0, 15.0)),
45.2769
);
assert_delta!(
arena.path(Vec2::new(1.0, 10.0), Vec2::new(46.0, 3.0)),
45.5412
);
assert_delta!(
arena.path(Vec2::new(1.0, 11.0), Vec2::new(30.0, 45.0)),
44.7117
);
assert_delta!(
arena.path(Vec2::new(1.0, 11.0), Vec2::new(35.0, 41.0)),
45.3431
);
assert_delta!(
arena.path(Vec2::new(1.0, 11.0), Vec2::new(35.0, 42.0)),
46.0109
);
assert_delta!(
arena.path(Vec2::new(1.0, 11.0), Vec2::new(43.0, 3.0)),
42.7551
);
assert_delta!(
arena.path(Vec2::new(1.0, 10.0), Vec2::new(31.0, 46.0)),
46.868
);
assert_delta!(
arena.path(Vec2::new(1.0, 10.0), Vec2::new(34.0, 46.0)),
48.8365
);
assert_delta!(
arena.path(Vec2::new(1.0, 10.0), Vec2::new(35.0, 46.0)),
49.5177
);
assert_delta!(
arena.path(Vec2::new(1.0, 10.0), Vec2::new(36.0, 42.0)),
47.4236
);
assert_delta!(
arena.path(Vec2::new(1.0, 10.0), Vec2::new(38.0, 45.0)),
50.9313
);
assert_delta!(
arena.path(Vec2::new(1.0, 10.0), Vec2::new(46.0, 18.0)),
45.7674
);
assert_delta!(
arena.path(Vec2::new(1.0, 11.0), Vec2::new(37.0, 44.0)),
48.8365
);
assert_delta!(
arena.path(Vec2::new(1.0, 11.0), Vec2::new(41.0, 35.0)),
46.6573
);
assert_delta!(
arena.path(Vec2::new(1.0, 11.0), Vec2::new(43.0, 27.0)),
45.245
);
assert_delta!(
arena.path(Vec2::new(1.0, 11.0), Vec2::new(44.0, 25.0)),
45.3649
);
assert_delta!(
arena.path(Vec2::new(1.0, 10.0), Vec2::new(41.0, 40.0)),
50.2316
);
assert_delta!(
arena.path(Vec2::new(1.0, 10.0), Vec2::new(43.0, 40.0)),
52.0087
);
assert_delta!(
arena.path(Vec2::new(1.0, 11.0), Vec2::new(39.0, 47.0)),
52.345
);
assert_delta!(
arena.path(Vec2::new(1.0, 11.0), Vec2::new(42.0, 46.0)),
53.9073
);
assert_delta!(
arena.path(Vec2::new(1.0, 11.0), Vec2::new(45.0, 33.0)),
49.2304
);
assert_delta!(
arena.path(Vec2::new(1.0, 12.0), Vec2::new(43.0, 43.0)),
52.2243
);
assert_delta!(
arena.path(Vec2::new(1.0, 12.0), Vec2::new(44.0, 38.0)),
50.3504
);
assert_delta!(
arena.path(Vec2::new(1.0, 12.0), Vec2::new(46.0, 34.0)),
50.0908
);
assert_delta!(
arena.path(Vec2::new(1.0, 13.0), Vec2::new(42.0, 40.0)),
49.2852
);
assert_delta!(
arena.path(Vec2::new(1.0, 14.0), Vec2::new(46.0, 32.0)),
48.4665
);
assert_delta!(
arena.path(Vec2::new(1.0, 14.0), Vec2::new(44.0, 46.0)),
53.6365
);
assert_delta!(
arena.path(Vec2::new(1.0, 14.0), Vec2::new(46.0, 43.0)),
53.6454
);
assert_delta!(
arena.path(Vec2::new(1.0, 35.0), Vec2::new(46.0, 3.0)),
55.4059
);
assert_delta!(
arena.path(Vec2::new(1.0, 37.0), Vec2::new(43.0, 1.0)),
55.3173
);
assert_delta!(
arena.path(Vec2::new(1.0, 38.0), Vec2::new(43.0, 3.0)),
54.6717
);
assert_delta!(
arena.path(Vec2::new(1.0, 38.0), Vec2::new(47.0, 13.0)),
52.3546
);
assert_delta!(
arena.path(Vec2::new(1.0, 39.0), Vec2::new(47.0, 14.0)),
52.3599
);
assert_delta!(
arena.path(Vec2::new(1.0, 4.0), Vec2::new(38.0, 47.0)),
56.7274
);
assert_delta!(
arena.path(Vec2::new(1.0, 4.0), Vec2::new(41.0, 42.0)),
55.3523
);
assert_delta!(
arena.path(Vec2::new(1.0, 42.0), Vec2::new(44.0, 5.0)),
56.7621
);
assert_delta!(
arena.path(Vec2::new(1.0, 3.0), Vec2::new(41.0, 47.0)),
59.4702
);
assert_delta!(
arena.path(Vec2::new(1.0, 3.0), Vec2::new(47.0, 37.0)),
57.2423
);
assert_delta!(
arena.path(Vec2::new(1.0, 39.0), Vec2::new(46.0, 1.0)),
58.8982
);
assert_delta!(
arena.path(Vec2::new(1.0, 4.0), Vec2::new(43.0, 46.0)),
59.4245
);
assert_delta!(
arena.path(Vec2::new(1.0, 4.0), Vec2::new(44.0, 45.0)),
59.5469
);
assert_delta!(
arena.path(Vec2::new(1.0, 40.0), Vec2::new(47.0, 3.0)),
59.0512
);
assert_delta!(
arena.path(Vec2::new(1.0, 41.0), Vec2::new(46.0, 2.0)),
59.5483
);
assert_delta!(
arena.path(Vec2::new(1.0, 45.0), Vec2::new(47.0, 9.0)),
58.6718
);
assert_delta!(
arena.path(Vec2::new(1.0, 7.0), Vec2::new(47.0, 44.0)),
59.3941
);
assert_delta!(
arena.path(Vec2::new(1.0, 7.0), Vec2::new(47.0, 46.0)),
60.4531
);
}