1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
#include "testing/testing.hpp"
#include "routing/base/astar_progress.hpp"
namespace routing_test
{
using namespace routing;
UNIT_TEST(DirectedAStarProgressCheck)
{
m2::PointD start = m2::PointD(0, 1);
m2::PointD finish = m2::PointD(0, 3);
m2::PointD middle = m2::PointD(0, 2);
AStarProgress progress(0, 100);
progress.Initialize(start, finish);
TEST_LESS(progress.GetProgressForDirectedAlgo(start), 0.1f, ());
TEST_LESS(progress.GetProgressForDirectedAlgo(middle), 50.5f, ());
TEST_GREATER(progress.GetProgressForDirectedAlgo(middle), 49.5f, ());
TEST_GREATER(progress.GetProgressForDirectedAlgo(finish), 99.9f, ());
}
UNIT_TEST(DirectedAStarDegradationCheck)
{
m2::PointD start = m2::PointD(0, 1);
m2::PointD finish = m2::PointD(0, 3);
m2::PointD middle = m2::PointD(0, 2);
AStarProgress progress(0, 100);
progress.Initialize(start, finish);
auto value1 = progress.GetProgressForDirectedAlgo(middle);
auto value2 = progress.GetProgressForDirectedAlgo(start);
TEST_LESS_OR_EQUAL(value1, value2, ());
progress.Initialize(start, finish);
auto value3 = progress.GetProgressForDirectedAlgo(start);
TEST_GREATER_OR_EQUAL(value1, value3, ());
}
UNIT_TEST(RangeCheckTest)
{
m2::PointD start = m2::PointD(0, 1);
m2::PointD finish = m2::PointD(0, 3);
m2::PointD preStart = m2::PointD(0, 0);
m2::PointD postFinish = m2::PointD(0, 6);
AStarProgress progress(0, 100);
progress.Initialize(start, finish);
TEST_EQUAL(progress.GetProgressForDirectedAlgo(preStart), 0.0, ());
TEST_EQUAL(progress.GetProgressForDirectedAlgo(postFinish), 0.0, ());
TEST_EQUAL(progress.GetProgressForDirectedAlgo(finish), 100.0, ());
}
UNIT_TEST(DirectedAStarProgressCheckAtShiftedInterval)
{
m2::PointD start = m2::PointD(0, 1);
m2::PointD finish = m2::PointD(0, 3);
m2::PointD middle = m2::PointD(0, 2);
AStarProgress progress(50, 250);
progress.Initialize(start, finish);
TEST_LESS(progress.GetProgressForDirectedAlgo(start), 50.1f, ());
TEST_LESS(progress.GetProgressForDirectedAlgo(middle), 150.5f, ());
TEST_GREATER(progress.GetProgressForDirectedAlgo(middle), 145.5f, ());
TEST_GREATER(progress.GetProgressForDirectedAlgo(finish), 245.9f, ());
}
UNIT_TEST(BidirectedAStarProgressCheck)
{
m2::PointD start = m2::PointD(0, 0);
m2::PointD finish = m2::PointD(0, 4);
m2::PointD fWave = m2::PointD(0, 1);
m2::PointD bWave = m2::PointD(0, 3);
AStarProgress progress(0.0f, 100.0f);
progress.Initialize(start, finish);
progress.GetProgressForBidirectedAlgo(fWave, finish);
float result = progress.GetProgressForBidirectedAlgo(bWave, start);
TEST_GREATER(result, 49.5, ());
TEST_LESS(result, 50.5, ());
}
} // namespace routing_test
|