Welcome to mirror list, hosted at ThFree Co, Russian Federation.

astar_progress_test.cpp « routing_tests « routing - github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 84daaf70fbe13aa07f0979a175ac8c6e02168a99 (plain)
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