OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "components/proximity_auth/ble/bluetooth_low_energy_weave_packet_genera
tor.h" | 5 #include "components/proximity_auth/ble/bluetooth_low_energy_weave_packet_genera
tor.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
11 #include "base/macros.h" | 11 #include "base/macros.h" |
12 #include "testing/gmock/include/gmock/gmock.h" | 12 #include "testing/gmock/include/gmock/gmock.h" |
13 #include "testing/gtest/include/gtest/gtest.h" | 13 #include "testing/gtest/include/gtest/gtest.h" |
14 | 14 |
15 using proximity_auth::BluetoothLowEnergyWeavePacketGenerator; | |
16 | |
17 namespace { | |
18 typedef BluetoothLowEnergyWeavePacketGenerator::ReasonForClose ReasonForClose; | |
19 typedef BluetoothLowEnergyWeavePacketGenerator::Packet Packet; | |
20 | |
21 const uint8_t kDefaultPacketSize = 20; | |
22 const uint8_t kWeaveVersion = 1; | |
23 const uint8_t kMaxCounter = 8; | |
24 const uint8_t kEmptyUpperByte = 0; | |
25 const uint8_t kSelectDefaultPacketSize = 0; | |
26 const uint8_t kDataType = 0; | |
27 | |
28 } // namespace | |
29 | |
30 namespace proximity_auth { | 15 namespace proximity_auth { |
| 16 namespace weave { |
31 | 17 |
32 class ProximityAuthBluetoothLowEnergyWeavePacketGeneratorTest | 18 class ProximityAuthBluetoothLowEnergyWeavePacketGeneratorTest |
33 : public testing::Test { | 19 : public testing::Test { |
34 protected: | 20 protected: |
35 ProximityAuthBluetoothLowEnergyWeavePacketGeneratorTest() {} | 21 ProximityAuthBluetoothLowEnergyWeavePacketGeneratorTest() {} |
36 | 22 |
37 void TestConnectionCloseWithReason(ReasonForClose reason_for_close, | 23 void TestConnectionCloseWithReason(ReasonForClose reason_for_close, |
38 uint8_t expected_reason_for_close) { | 24 uint8_t expected_reason_for_close) { |
39 std::unique_ptr<BluetoothLowEnergyWeavePacketGenerator> generator = | 25 std::unique_ptr<BluetoothLowEnergyWeavePacketGenerator> generator = |
40 BluetoothLowEnergyWeavePacketGenerator::Factory::NewInstance(); | 26 BluetoothLowEnergyWeavePacketGenerator::Factory::NewInstance(); |
(...skipping 28 matching lines...) Expand all Loading... |
69 | 55 |
70 Packet packet = generator->CreateConnectionRequest(); | 56 Packet packet = generator->CreateConnectionRequest(); |
71 | 57 |
72 const uint16_t kRequestSize = 7; | 58 const uint16_t kRequestSize = 7; |
73 Packet expected(kRequestSize, 0); | 59 Packet expected(kRequestSize, 0); |
74 // uWeave Header: | 60 // uWeave Header: |
75 // 1--- ---- : type = 1 (control packet) | 61 // 1--- ---- : type = 1 (control packet) |
76 // -000 ---- : counter = 0 | 62 // -000 ---- : counter = 0 |
77 // ---- 0000 : command = 0 (request) | 63 // ---- 0000 : command = 0 (request) |
78 // 1000 0000 = 0x80 | 64 // 1000 0000 = 0x80 |
79 expected = { | 65 expected = {0x80, |
80 0x80, kEmptyUpperByte, kWeaveVersion, kEmptyUpperByte, | 66 kEmptyUpperByte, |
81 kWeaveVersion, kEmptyUpperByte, kSelectDefaultPacketSize}; | 67 kByteWeaveVersion, |
| 68 kEmptyUpperByte, |
| 69 kByteWeaveVersion, |
| 70 kEmptyUpperByte, |
| 71 kByteSelectMaxPacketSize}; |
82 | 72 |
83 EXPECT_EQ(expected, packet); | 73 EXPECT_EQ(expected, packet); |
84 } | 74 } |
85 | 75 |
86 TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketGeneratorTest, | 76 TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketGeneratorTest, |
87 CreateConnectionResponseWithDefaultPacketSizeTest) { | 77 CreateConnectionResponseWithDefaultPacketSizeTest) { |
88 std::unique_ptr<BluetoothLowEnergyWeavePacketGenerator> generator = | 78 std::unique_ptr<BluetoothLowEnergyWeavePacketGenerator> generator = |
89 BluetoothLowEnergyWeavePacketGenerator::Factory::NewInstance(); | 79 BluetoothLowEnergyWeavePacketGenerator::Factory::NewInstance(); |
90 | 80 |
91 Packet packet = generator->CreateConnectionResponse(); | 81 Packet packet = generator->CreateConnectionResponse(); |
92 | 82 |
93 const uint16_t kResponseSize = 5; | 83 const uint16_t kResponseSize = 5; |
94 Packet expected_default(kResponseSize, 0); | 84 Packet expected_default(kResponseSize, 0); |
95 // uWeave Header: | 85 // uWeave Header: |
96 // 1--- ---- : type = 1 (control packet) | 86 // 1--- ---- : type = 1 (control packet) |
97 // -000 ---- : counter = 0 | 87 // -000 ---- : counter = 0 |
98 // ---- 0001 : command = 1 (response) | 88 // ---- 0001 : command = 1 (response) |
99 // 1000 0001 = 0x81 | 89 // 1000 0001 = 0x81 |
100 expected_default = {0x81, kEmptyUpperByte, kWeaveVersion, kEmptyUpperByte, | 90 expected_default = {0x81, kEmptyUpperByte, kByteWeaveVersion, kEmptyUpperByte, |
101 kDefaultPacketSize}; | 91 kByteDefaultMaxPacketSize}; |
102 | 92 |
103 EXPECT_EQ(expected_default, packet); | 93 EXPECT_EQ(expected_default, packet); |
104 } | 94 } |
105 | 95 |
106 TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketGeneratorTest, | 96 TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketGeneratorTest, |
107 CreateConnectionResponseWithSelectedPacketSizeTest) { | 97 CreateConnectionResponseWithSelectedPacketSizeTest) { |
108 std::unique_ptr<BluetoothLowEnergyWeavePacketGenerator> generator = | 98 std::unique_ptr<BluetoothLowEnergyWeavePacketGenerator> generator = |
109 BluetoothLowEnergyWeavePacketGenerator::Factory::NewInstance(); | 99 BluetoothLowEnergyWeavePacketGenerator::Factory::NewInstance(); |
110 | 100 |
111 const uint8_t kSelectedPacketSize = 30; | 101 const uint8_t kSelectedPacketSize = 30; |
112 const uint16_t kResponseSize = 5; | 102 const uint16_t kResponseSize = 5; |
113 | 103 |
114 generator->SetMaxPacketSize(kSelectedPacketSize); | 104 generator->SetMaxPacketSize(kSelectedPacketSize); |
115 | 105 |
116 Packet packet = generator->CreateConnectionResponse(); | 106 Packet packet = generator->CreateConnectionResponse(); |
117 | 107 |
118 Packet expected_selected(kResponseSize, 0); | 108 Packet expected_selected(kResponseSize, 0); |
119 // uWeave Header: | 109 // uWeave Header: |
120 // 1--- ---- : type = 1 (control packet) | 110 // 1--- ---- : type = 1 (control packet) |
121 // -000 ---- : counter = 0 | 111 // -000 ---- : counter = 0 |
122 // ---- 0001 : command = 1 (response) | 112 // ---- 0001 : command = 1 (response) |
123 // 1000 0001 = 0x81 | 113 // 1000 0001 = 0x81 |
124 expected_selected = {0x81, kEmptyUpperByte, kWeaveVersion, kEmptyUpperByte, | 114 expected_selected = {0x81, kEmptyUpperByte, kByteWeaveVersion, |
125 kSelectedPacketSize}; | 115 kEmptyUpperByte, kSelectedPacketSize}; |
126 EXPECT_EQ(expected_selected, packet); | 116 EXPECT_EQ(expected_selected, packet); |
127 } | 117 } |
128 | 118 |
129 TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketGeneratorTest, | 119 TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketGeneratorTest, |
130 CreateConnectionCloseTest) { | 120 CreateConnectionCloseTest) { |
131 // Reason for close spec of uWeave. | 121 // Reason for close spec of uWeave. |
132 // 0x00: Close without error | 122 // 0x00: Close without error |
133 // 0x01: Unknown error | 123 // 0x01: Unknown error |
134 // 0x02: No common version supported | 124 // 0x02: No common version supported |
135 // 0x03: Received packet out of sequence | 125 // 0x03: Received packet out of sequence |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
247 | 237 |
248 EXPECT_EQ(2, GetCounterFromHeader(packet[0])); | 238 EXPECT_EQ(2, GetCounterFromHeader(packet[0])); |
249 } | 239 } |
250 | 240 |
251 TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketGeneratorTest, | 241 TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketGeneratorTest, |
252 PacketCounterWrappedAroundTest) { | 242 PacketCounterWrappedAroundTest) { |
253 std::unique_ptr<BluetoothLowEnergyWeavePacketGenerator> generator = | 243 std::unique_ptr<BluetoothLowEnergyWeavePacketGenerator> generator = |
254 BluetoothLowEnergyWeavePacketGenerator::Factory::NewInstance(); | 244 BluetoothLowEnergyWeavePacketGenerator::Factory::NewInstance(); |
255 | 245 |
256 const uint8_t kNumPackets = 100; | 246 const uint8_t kNumPackets = 100; |
257 std::string data(kNumPackets * kDefaultPacketSize, 'a'); | 247 std::string data(kNumPackets * kByteDefaultMaxPacketSize, 'a'); |
258 | 248 |
259 std::vector<Packet> packets = generator->EncodeDataMessage(data); | 249 std::vector<Packet> packets = generator->EncodeDataMessage(data); |
260 | 250 |
261 std::vector<Packet> expected(kNumPackets); | 251 std::vector<Packet> expected(kNumPackets); |
262 | 252 |
| 253 const uint8_t kDataType = 0; |
| 254 |
263 for (uint8_t i = 0; i < kNumPackets; ++i) { | 255 for (uint8_t i = 0; i < kNumPackets; ++i) { |
264 uint8_t header = packets[i][0]; | 256 uint8_t header = packets[i][0]; |
265 EXPECT_EQ(i % kMaxCounter, GetCounterFromHeader(header)); | 257 EXPECT_EQ(i % kMaxPacketCounter, GetCounterFromHeader(header)); |
266 EXPECT_EQ(kDataType, GetPacketType(header)); | 258 EXPECT_EQ(kDataType, GetPacketType(header)); |
267 } | 259 } |
268 } | 260 } |
269 | 261 |
| 262 } // namespace weave |
| 263 |
270 } // namespace proximity_auth | 264 } // namespace proximity_auth |
OLD | NEW |