| 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 |
| 270 } // namespace proximity_auth | 263 } // namespace proximity_auth |
| OLD | NEW |