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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include <catch2/catch.hpp>
#include <module-services/service-cellular/src/TetheringHandler.hpp>
#include <module-cellular/at/cmd/QCFGUsbnet.hpp>
TEST_CASE("SMSSendHandler functionality")
{
SECTION("RNDIS enabled")
{
auto handler = cellular::service::TetheringHandler();
handler.onIsRndisEnabled = []() -> at::qcfg::usbnet::Net { return at::qcfg::usbnet::Net::RNDIS; };
auto result = handler.isRndisEnabled();
REQUIRE(result == true);
}
SECTION("RNDIS disabled")
{
auto handler = cellular::service::TetheringHandler();
handler.onIsRndisEnabled = []() -> at::qcfg::usbnet::Net { return at::qcfg::usbnet::Net::ECM; };
auto result = handler.isRndisEnabled();
REQUIRE(result == false);
}
SECTION("configure RNDIS enabled")
{
auto handler = cellular::service::TetheringHandler();
auto onIsRndisEnabledCalled = 0;
handler.onIsRndisEnabled = [&onIsRndisEnabledCalled]() -> at::qcfg::usbnet::Net {
onIsRndisEnabledCalled++;
return at::qcfg::usbnet::Net::RNDIS;
};
auto result = handler.configure();
REQUIRE(result == true);
REQUIRE(onIsRndisEnabledCalled == 1);
}
SECTION("configure RNDIS disabled")
{
auto handler = cellular::service::TetheringHandler();
auto onIsRndisEnabledCalled = 0;
auto onEnableRndisCalled = 0;
handler.onIsRndisEnabled = [&onIsRndisEnabledCalled]() -> at::qcfg::usbnet::Net {
onIsRndisEnabledCalled++;
return at::qcfg::usbnet::Net::ECM;
};
handler.onEnableRndis = [&onEnableRndisCalled]() -> bool {
onEnableRndisCalled++;
return true;
};
auto result = handler.configure();
REQUIRE(result == false);
REQUIRE(onIsRndisEnabledCalled == 1);
REQUIRE(onEnableRndisCalled == 1);
}
SECTION("enable tethering")
{
auto handler = cellular::service::TetheringHandler();
auto onDisableUrcCalled = 0;
auto onSetPassthroughCalled = 0;
handler.onDisableUrc = [&onDisableUrcCalled]() -> bool {
onDisableUrcCalled++;
return true;
};
handler.onSetPassthrough = [&onSetPassthroughCalled](bool) { onSetPassthroughCalled++; };
auto result = handler.enable();
REQUIRE(result == true);
REQUIRE(onDisableUrcCalled == 1);
REQUIRE(onSetPassthroughCalled == 1);
}
SECTION("disable tethering")
{
auto handler = cellular::service::TetheringHandler();
auto onEnableUrcCalled = 0;
auto onReadAllMessagesCalled = 0;
auto onSetPassthroughCalled = 0;
handler.onEnableUrc = [&onEnableUrcCalled]() -> bool {
onEnableUrcCalled++;
return true;
};
handler.onReadMessages = [&onReadAllMessagesCalled]() -> bool {
onReadAllMessagesCalled++;
return true;
};
handler.onSetPassthrough = [&onSetPassthroughCalled](bool) { onSetPassthroughCalled++; };
auto result = handler.disable();
REQUIRE(result == true);
REQUIRE(onEnableUrcCalled == 1);
REQUIRE(onSetPassthroughCalled == 1);
}
}