~sil2100/location-service/gps-arm64

« back to all changes in this revision

Viewing changes to tests/engine_test.cpp

  • Committer: Thomas Voß
  • Date: 2013-05-28 14:20:45 UTC
  • Revision ID: thomas.voss@canonical.com-20130528142045-kq5umqdmm4o53vwk
Initial push.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#include "com/ubuntu/location/engine.h"
 
2
#include "com/ubuntu/location/provider.h"
 
3
#include "com/ubuntu/location/provider_selection_policy.h"
 
4
#include <gmock/gmock.h>
 
5
#include <gtest/gtest.h>
 
6
 
 
7
namespace
 
8
{
 
9
struct DummyProvider : public com::ubuntu::location::Provider
 
10
{
 
11
};
 
12
 
 
13
struct NullProviderSelectionPolicy : public com::ubuntu::location::ProviderSelectionPolicy
 
14
{
 
15
    com::ubuntu::location::ProviderSelection
 
16
    determine_provider_selection_from_set_for_criteria(const com::ubuntu::location::Criteria&, const std::set<com::ubuntu::location::Provider::Ptr>&)
 
17
    {
 
18
        return com::ubuntu::location::ProviderSelection {
 
19
            com::ubuntu::location::Provider::Ptr{}, 
 
20
            com::ubuntu::location::Provider::Ptr{}, 
 
21
            com::ubuntu::location::Provider::Ptr{}};
 
22
    }
 
23
};
 
24
}
 
25
 
 
26
TEST(Engine, adding_and_removing_providers_inserts_and_erases_from_underlying_collection)
 
27
{
 
28
    com::ubuntu::location::Engine engine {std::set<com::ubuntu::location::Provider::Ptr>{}, std::make_shared<NullProviderSelectionPolicy>()};
 
29
 
 
30
    auto provider1 = std::make_shared<DummyProvider>();
 
31
    auto provider2 = std::make_shared<DummyProvider>();
 
32
 
 
33
    engine.add_provider(provider1);
 
34
    EXPECT_TRUE(engine.has_provider(provider1));
 
35
 
 
36
    engine.add_provider(provider2);
 
37
    EXPECT_TRUE(engine.has_provider(provider2));
 
38
 
 
39
    engine.remove_provider(provider1);
 
40
    EXPECT_FALSE(engine.has_provider(provider1));
 
41
 
 
42
    engine.remove_provider(provider2);
 
43
    EXPECT_FALSE(engine.has_provider(provider2));
 
44
}
 
45
 
 
46
TEST(Engine, adding_a_null_provider_throws)
 
47
{
 
48
    com::ubuntu::location::Engine engine {std::set<com::ubuntu::location::Provider::Ptr>{}, std::make_shared<NullProviderSelectionPolicy>()};
 
49
 
 
50
    EXPECT_ANY_THROW(engine.add_provider(com::ubuntu::location::Provider::Ptr {}););
 
51
}
 
52
 
 
53
namespace
 
54
{
 
55
struct MockProviderSelectionPolicy : public com::ubuntu::location::ProviderSelectionPolicy
 
56
{
 
57
    ~MockProviderSelectionPolicy() noexcept
 
58
    {
 
59
    }
 
60
 
 
61
    MOCK_METHOD2(determine_provider_selection_from_set_for_criteria,
 
62
                 com::ubuntu::location::ProviderSelection(const com::ubuntu::location::Criteria&, const std::set<com::ubuntu::location::Provider::Ptr>&));
 
63
};
 
64
}
 
65
 
 
66
TEST(Engine, provider_selection_policy_is_invoked_when_matching_providers_to_criteria)
 
67
{
 
68
    using namespace ::testing;
 
69
 
 
70
    MockProviderSelectionPolicy policy;
 
71
    com::ubuntu::location::Engine engine
 
72
    {
 
73
        std::set<com::ubuntu::location::Provider::Ptr>{},
 
74
                com::ubuntu::location::ProviderSelectionPolicy::Ptr{&policy, [](com::ubuntu::location::ProviderSelectionPolicy*) {}}
 
75
    };
 
76
 
 
77
    EXPECT_CALL(policy, determine_provider_selection_from_set_for_criteria(_,_))
 
78
            .Times(1)
 
79
            .WillOnce(Return(com::ubuntu::location::ProviderSelection {
 
80
                        com::ubuntu::location::Provider::Ptr{}, 
 
81
                        com::ubuntu::location::Provider::Ptr{}, 
 
82
                        com::ubuntu::location::Provider::Ptr{}}));
 
83
 
 
84
    auto selection = engine.determine_provider_selection_for_criteria(com::ubuntu::location::Criteria {});
 
85
}