aboutsummaryrefslogtreecommitdiff
path: root/pw_hdlc_lite/encoder_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'pw_hdlc_lite/encoder_test.cc')
-rw-r--r--pw_hdlc_lite/encoder_test.cc170
1 files changed, 0 insertions, 170 deletions
diff --git a/pw_hdlc_lite/encoder_test.cc b/pw_hdlc_lite/encoder_test.cc
deleted file mode 100644
index 72a66ce4c..000000000
--- a/pw_hdlc_lite/encoder_test.cc
+++ /dev/null
@@ -1,170 +0,0 @@
-// Copyright 2020 The Pigweed Authors
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-// https://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-#include "pw_hdlc_lite/encoder.h"
-
-#include <algorithm>
-#include <array>
-#include <cstddef>
-
-#include "gtest/gtest.h"
-#include "pw_bytes/array.h"
-#include "pw_hdlc_lite_private/protocol.h"
-#include "pw_stream/memory_stream.h"
-
-using std::byte;
-
-namespace pw::hdlc_lite {
-namespace {
-
-constexpr uint8_t kAddress = 0x7B; // 123
-constexpr byte kControl = byte{0};
-
-class WriteInfoFrame : public ::testing::Test {
- protected:
- WriteInfoFrame() : writer_(buffer_) {}
-
- stream::MemoryWriter writer_;
- std::array<byte, 32> buffer_;
-};
-
-#define EXPECT_ENCODER_WROTE(...) \
- do { \
- constexpr auto expected_data = (__VA_ARGS__); \
- EXPECT_EQ(writer_.bytes_written(), expected_data.size()); \
- EXPECT_EQ( \
- std::memcmp( \
- writer_.data(), expected_data.data(), writer_.bytes_written()), \
- 0); \
- } while (0)
-
-TEST_F(WriteInfoFrame, EmptyPayload) {
- ASSERT_EQ(Status::Ok(),
- WriteInformationFrame(kAddress, std::span<byte>(), writer_));
- EXPECT_ENCODER_WROTE(
- bytes::Concat(kFlag, kAddress, kControl, uint32_t{0x8D12B2C2}, kFlag));
-}
-
-TEST_F(WriteInfoFrame, OneBytePayload) {
- ASSERT_EQ(Status::Ok(),
- WriteInformationFrame(kAddress, bytes::String("A"), writer_));
- EXPECT_ENCODER_WROTE(bytes::Concat(
- kFlag, kAddress, kControl, 'A', uint32_t{0xA63E2FA5}, kFlag));
-}
-
-TEST_F(WriteInfoFrame, OneBytePayload_Escape0x7d) {
- ASSERT_EQ(Status::Ok(),
- WriteInformationFrame(kAddress, bytes::Array<0x7d>(), writer_));
- EXPECT_ENCODER_WROTE(bytes::Concat(kFlag,
- kAddress,
- kControl,
- kEscape,
- byte{0x7d} ^ byte{0x20},
- uint32_t{0x89515322},
- kFlag));
-}
-
-TEST_F(WriteInfoFrame, OneBytePayload_Escape0x7E) {
- ASSERT_EQ(Status::Ok(),
- WriteInformationFrame(kAddress, bytes::Array<0x7e>(), writer_));
- EXPECT_ENCODER_WROTE(bytes::Concat(kFlag,
- kAddress,
- kControl,
- kEscape,
- byte{0x7e} ^ byte{0x20},
- uint32_t{0x10580298},
- kFlag));
-}
-
-TEST_F(WriteInfoFrame, AddressNeedsEscaping) {
- ASSERT_EQ(Status::Ok(),
- WriteInformationFrame(0x7d, bytes::String("A"), writer_));
- EXPECT_ENCODER_WROTE(bytes::Concat(
- kFlag, kEscape, byte{0x5d}, kControl, 'A', uint32_t{0xA2B35317}, kFlag));
-}
-
-TEST_F(WriteInfoFrame, Crc32NeedsEscaping) {
- ASSERT_EQ(Status::Ok(),
- WriteInformationFrame(kAddress, bytes::String("abcdefg"), writer_));
-
- // The CRC-32 is 0x38B9FC7E, so the 0x7E must be escaped.
- constexpr auto expected_crc32 = bytes::Array<0x7d, 0x5e, 0xfc, 0xb9, 0x38>();
- EXPECT_ENCODER_WROTE(bytes::Concat(kFlag,
- kAddress,
- kControl,
- bytes::String("abcdefg"),
- expected_crc32,
- kFlag));
-}
-
-TEST_F(WriteInfoFrame, MultiplePayloads) {
- ASSERT_EQ(Status::Ok(),
- WriteInformationFrame(kAddress, bytes::String("ABC"), writer_));
- ASSERT_EQ(Status::Ok(),
- WriteInformationFrame(kAddress, bytes::String("DEF"), writer_));
- EXPECT_ENCODER_WROTE(bytes::Concat(kFlag,
- kAddress,
- kControl,
- bytes::String("ABC"),
- uint32_t{0x14E2FC99},
- kFlag,
- kFlag,
- kAddress,
- kControl,
- bytes::String("DEF"),
- uint32_t{0x2D025C3A},
- kFlag));
-}
-
-TEST_F(WriteInfoFrame, PayloadWithNoEscapes) {
- ASSERT_EQ(Status::Ok(),
- WriteInformationFrame(
- kAddress, bytes::String("123456789012345678901234"), writer_));
-
- // Fill the memory writer's buffer.
- ASSERT_EQ(writer_.bytes_written(), buffer_.size());
-
- EXPECT_ENCODER_WROTE(bytes::Concat(kFlag,
- kAddress,
- kControl,
- bytes::String("123456789012345678901234"),
- uint32_t{0x50AA35EC},
- kFlag));
-}
-
-TEST_F(WriteInfoFrame, PayloadWithMultipleEscapes) {
- ASSERT_EQ(Status::Ok(),
- WriteInformationFrame(
- kAddress,
- bytes::Array<0x7E, 0x7B, 0x61, 0x62, 0x63, 0x7D, 0x7E>(),
- writer_));
- EXPECT_ENCODER_WROTE(bytes::Concat(
- kFlag,
- kAddress,
- kControl,
- bytes::
- Array<0x7D, 0x5E, 0x7B, 0x61, 0x62, 0x63, 0x7D, 0x5D, 0x7D, 0x5E>(),
- uint32_t{0x1B8D505E},
- kFlag));
-}
-
-TEST_F(WriteInfoFrame, WriterError) {
- constexpr auto data = bytes::Initialized<sizeof(buffer_)>(0x7e);
-
- EXPECT_EQ(Status::ResourceExhausted(),
- WriteInformationFrame(kAddress, data, writer_));
-}
-
-} // namespace
-} // namespace pw::hdlc_lite