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

campaign_serialization_test.cpp « local_ads_tests « local_ads - github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 40a69017bd81cb2863af08b9e9ccfefb81a49168 (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 "local_ads/campaign_serialization.hpp"

#include <random>
#include <vector>

using namespace local_ads;

namespace
{
bool TestSerialization(std::vector<Campaign> const & cs, Version const v)
{
  auto const bytes = Serialize(cs, v);
  return cs == Deserialize(bytes);
}

std::vector<Campaign> GenerateCampaignsV1(size_t number)
{
  std::random_device rd;
  std::mt19937 gen(rd());
  std::uniform_int_distribution<> featureIds(1, 600000);
  std::uniform_int_distribution<> icons(1, 4096);
  std::uniform_int_distribution<> expirationDays(1, 30);

  std::vector<Campaign> cs;
  while (number--)
  {
    auto const fid = featureIds(gen);
    auto const iconid = icons(gen);
    auto const days = expirationDays(gen);
    cs.emplace_back(fid, iconid, days);
  }
  return cs;
}

std::vector<Campaign> GenerateCampaignsV2(size_t number)
{
  std::random_device rd;
  std::mt19937 gen(rd());
  std::uniform_int_distribution<> featureIds(1, 600000);
  std::uniform_int_distribution<> icons(1, 4096);
  std::uniform_int_distribution<> expirationDays(1, 30);
  std::uniform_int_distribution<> zoomLevels(10, 17);
  std::uniform_int_distribution<> priorities(0, 7);

  std::vector<Campaign> cs;
  while (number--)
  {
    auto const fid = featureIds(gen);
    auto const iconid = icons(gen);
    auto const days = expirationDays(gen);
    auto const zoom = zoomLevels(gen);
    auto const priority = priorities(gen);
    cs.emplace_back(fid, iconid, days, zoom, priority);
  }
  return cs;
}
}  // namspace

UNIT_TEST(Serialization_Smoke)
{
  TEST(TestSerialization({
        {10, 10, 10},
        {1000, 100, 20},
        {120003, 456, 15}
      }, Version::v1), ());

  TEST(TestSerialization({
        {10, 10, 10, 10, 0},
        {1000, 100, 20, 17, 7},
        {120003, 456, 15, 13, 6}
      }, Version::v2), ());

  TEST(TestSerialization(GenerateCampaignsV1(100), Version::v1), ());
  TEST(TestSerialization(GenerateCampaignsV1(1000), Version::v1), ());
  TEST(TestSerialization(GenerateCampaignsV1(10000), Version::v1), ());

  TEST(TestSerialization(GenerateCampaignsV2(100), Version::v2), ());
  TEST(TestSerialization(GenerateCampaignsV2(1000), Version::v2), ());
  TEST(TestSerialization(GenerateCampaignsV2(10000), Version::v2), ());
}