Index: device/serial/serial_io_handler_posix_unittest.cc |
diff --git a/device/serial/serial_io_handler_posix_unittest.cc b/device/serial/serial_io_handler_posix_unittest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..4dc5d1fcbab6f217626b94d589340ca71e7ed78b |
--- /dev/null |
+++ b/device/serial/serial_io_handler_posix_unittest.cc |
@@ -0,0 +1,1134 @@ |
+// Copyright 2015 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "base/gtest_prod_util.h" |
+#include "device/serial/serial_io_handler_posix.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+ |
+namespace device { |
+ |
+class SerialIoHandlerPosixTest : public testing::Test { |
+ public: |
+ SerialIoHandlerPosixTest() {} |
+ |
+ void SetUp() override { |
+ serial_io_handler_posix_ = new SerialIoHandlerPosix(nullptr, nullptr); |
+ } |
+ |
+ protected: |
+ scoped_refptr<SerialIoHandlerPosix> serial_io_handler_posix_; |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(SerialIoHandlerPosixTest); |
+}; |
+ |
+// 'a' 'b' 'c' |
+TEST_F(SerialIoHandlerPosixTest, NoErrorReadOnce) { |
+ for (int buffer_len = 3; buffer_len <= 20; ++buffer_len) { |
+ serial_io_handler_posix_->byte_read_state_ = BYTEREAD_REGULAR; |
+ serial_io_handler_posix_->parity_check_enabled_ = true; |
+ serial_io_handler_posix_->num_chars_ignored_ = 0; |
+ char buffer[buffer_len]; |
+ |
+ buffer[0] = 'a'; |
+ buffer[1] = 'b'; |
+ buffer[2] = 'c'; |
+ int bytes_read = 3; |
+ bool break_detected = false; |
+ bool parity_error_detected = false; |
+ int new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_REGULAR, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(0, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ(bytes_read, new_bytes_read); |
+ EXPECT_EQ('a', buffer[0]); |
+ EXPECT_EQ('b', buffer[1]); |
+ EXPECT_EQ('c', buffer[2]); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, false); |
+ } |
+} |
+ |
+// 'a' 'b' |
+// 'c' |
+TEST_F(SerialIoHandlerPosixTest, NoErrorReadTwiceBytesReadTwoAndOne) { |
+ for (int buffer_len = 2; buffer_len <= 20; ++buffer_len) { |
+ serial_io_handler_posix_->byte_read_state_ = BYTEREAD_REGULAR; |
+ serial_io_handler_posix_->parity_check_enabled_ = true; |
+ serial_io_handler_posix_->num_chars_ignored_ = 0; |
+ char buffer[buffer_len]; |
+ |
+ buffer[0] = 'a'; |
+ buffer[1] = 'b'; |
+ int bytes_read = 2; |
+ bool break_detected = false; |
+ bool parity_error_detected = false; |
+ int new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_REGULAR, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(0, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ(bytes_read, new_bytes_read); |
+ EXPECT_EQ('a', buffer[0]); |
+ EXPECT_EQ('b', buffer[1]); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, false); |
+ |
+ buffer[0] = 'c'; |
+ bytes_read = 1; |
+ new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_REGULAR, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(0, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ(bytes_read, new_bytes_read); |
+ EXPECT_EQ('c', buffer[0]); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, false); |
+ } |
+} |
+ |
+// 'a' |
+// 'b' c' |
+TEST_F(SerialIoHandlerPosixTest, NoErrorReadTwiceBytesReadOneAndTwo) { |
+ for (int buffer_len = 2; buffer_len <= 20; ++buffer_len) { |
+ serial_io_handler_posix_->byte_read_state_ = BYTEREAD_REGULAR; |
+ serial_io_handler_posix_->parity_check_enabled_ = true; |
+ serial_io_handler_posix_->num_chars_ignored_ = 0; |
+ char buffer[buffer_len]; |
+ |
+ buffer[0] = 'a'; |
+ int bytes_read = 1; |
+ bool break_detected = false; |
+ bool parity_error_detected = false; |
+ int new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_REGULAR, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(0, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ(bytes_read, new_bytes_read); |
+ EXPECT_EQ('a', buffer[0]); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, false); |
+ |
+ buffer[0] = 'b'; |
+ buffer[1] = 'c'; |
+ bytes_read = 2; |
+ new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_REGULAR, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(0, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ(bytes_read, new_bytes_read); |
+ EXPECT_EQ('b', buffer[0]); |
+ EXPECT_EQ('c', buffer[1]); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, false); |
+ } |
+} |
+ |
+// 'a' |
+// 'b' |
+// 'c' |
+TEST_F(SerialIoHandlerPosixTest, NoErrorReadThreeTimes) { |
+ for (int buffer_len = 1; buffer_len <= 20; ++buffer_len) { |
+ serial_io_handler_posix_->byte_read_state_ = BYTEREAD_REGULAR; |
+ serial_io_handler_posix_->parity_check_enabled_ = true; |
+ serial_io_handler_posix_->num_chars_ignored_ = 0; |
+ char buffer[buffer_len]; |
+ |
+ buffer[0] = 'a'; |
+ int bytes_read = 1; |
+ bool break_detected = false; |
+ bool parity_error_detected = false; |
+ int new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_REGULAR, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(0, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ(1, new_bytes_read); |
+ EXPECT_EQ('a', buffer[0]); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, false); |
+ |
+ buffer[0] = 'b'; |
+ new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_REGULAR, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(0, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ(1, new_bytes_read); |
+ EXPECT_EQ('b', buffer[0]); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, false); |
+ |
+ buffer[0] = 'c'; |
+ new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_REGULAR, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(0, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ(1, new_bytes_read); |
+ EXPECT_EQ('c', buffer[0]); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, false); |
+ } |
+} |
+ |
+// '\377' '\0' '\0' |
+TEST_F(SerialIoHandlerPosixTest, BreakReadOnce) { |
+ for (int buffer_len = 3; buffer_len <= 20; ++buffer_len) { |
+ serial_io_handler_posix_->byte_read_state_ = BYTEREAD_REGULAR; |
+ serial_io_handler_posix_->parity_check_enabled_ = true; |
+ serial_io_handler_posix_->num_chars_ignored_ = 0; |
+ char buffer[buffer_len]; |
+ |
+ buffer[0] = '\377'; |
+ buffer[1] = '\0'; |
+ buffer[2] = '\0'; |
+ int bytes_read = 3; |
+ bool break_detected = false; |
+ bool parity_error_detected = false; |
+ int new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_REGULAR, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(0, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ(0, new_bytes_read); |
+ EXPECT_EQ(break_detected, true); |
+ EXPECT_EQ(parity_error_detected, false); |
+ } |
+} |
+ |
+// '\377' '\0' |
+// '\0' |
+TEST_F(SerialIoHandlerPosixTest, BreakReadTwiceBytesReadTwoAndOne) { |
+ for (int buffer_len = 2; buffer_len <= 20; ++buffer_len) { |
+ serial_io_handler_posix_->byte_read_state_ = BYTEREAD_REGULAR; |
+ serial_io_handler_posix_->parity_check_enabled_ = true; |
+ serial_io_handler_posix_->num_chars_ignored_ = 0; |
+ char buffer[buffer_len]; |
+ |
+ buffer[0] = '\377'; |
+ buffer[1] = '\0'; |
+ int bytes_read = 2; |
+ bool break_detected = false; |
+ bool parity_error_detected = false; |
+ int new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_ALL_ZERO, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(2, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ('\377', serial_io_handler_posix_->chars_ignored_[0]); |
+ EXPECT_EQ('\0', serial_io_handler_posix_->chars_ignored_[1]); |
+ EXPECT_EQ(0, new_bytes_read); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, false); |
+ |
+ buffer[0] = '\0'; |
+ bytes_read = 1; |
+ new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_REGULAR, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(0, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ(0, new_bytes_read); |
+ EXPECT_EQ(break_detected, true); |
+ EXPECT_EQ(parity_error_detected, false); |
+ } |
+} |
+ |
+// '\377' |
+// '\0' '\0' |
+TEST_F(SerialIoHandlerPosixTest, BreakReadTwiceBytesReadOneAndTwo) { |
+ for (int buffer_len = 2; buffer_len <= 20; ++buffer_len) { |
+ serial_io_handler_posix_->byte_read_state_ = BYTEREAD_REGULAR; |
+ serial_io_handler_posix_->parity_check_enabled_ = true; |
+ serial_io_handler_posix_->num_chars_ignored_ = 0; |
+ char buffer[buffer_len]; |
+ |
+ buffer[0] = '\377'; |
+ int bytes_read = 1; |
+ bool break_detected = false; |
+ bool parity_error_detected = false; |
+ int new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_ALL_ONE, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(1, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ('\377', serial_io_handler_posix_->chars_ignored_[0]); |
+ EXPECT_EQ(0, new_bytes_read); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, false); |
+ |
+ buffer[0] = '\0'; |
+ buffer[1] = '\0'; |
+ bytes_read = 2; |
+ new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_REGULAR, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(0, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ(0, new_bytes_read); |
+ EXPECT_EQ(break_detected, true); |
+ EXPECT_EQ(parity_error_detected, false); |
+ } |
+} |
+ |
+// '\377' |
+// '\0' |
+// '\0' |
+TEST_F(SerialIoHandlerPosixTest, BreakReadThreeTimes) { |
+ for (int buffer_len = 1; buffer_len <= 20; ++buffer_len) { |
+ serial_io_handler_posix_->byte_read_state_ = BYTEREAD_REGULAR; |
+ serial_io_handler_posix_->parity_check_enabled_ = true; |
+ serial_io_handler_posix_->num_chars_ignored_ = 0; |
+ char buffer[buffer_len]; |
+ |
+ buffer[0] = '\377'; |
+ int bytes_read = 1; |
+ bool break_detected = false; |
+ bool parity_error_detected = false; |
+ int new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_ALL_ONE, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(1, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ('\377', serial_io_handler_posix_->chars_ignored_[0]); |
+ EXPECT_EQ(0, new_bytes_read); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, false); |
+ |
+ buffer[0] = '\0'; |
+ bytes_read = 1; |
+ new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_ALL_ZERO, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(2, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ('\377', serial_io_handler_posix_->chars_ignored_[0]); |
+ EXPECT_EQ('\0', serial_io_handler_posix_->chars_ignored_[1]); |
+ EXPECT_EQ(0, new_bytes_read); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, false); |
+ |
+ buffer[0] = '\0'; |
+ bytes_read = 1; |
+ new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_REGULAR, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(0, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ(0, new_bytes_read); |
+ EXPECT_EQ(break_detected, true); |
+ EXPECT_EQ(parity_error_detected, false); |
+ } |
+} |
+ |
+// '\377' '\0' 'a' |
+TEST_F(SerialIoHandlerPosixTest, ParityErrorReadOnce) { |
+ for (int buffer_len = 3; buffer_len <= 20; ++buffer_len) { |
+ serial_io_handler_posix_->byte_read_state_ = BYTEREAD_REGULAR; |
+ serial_io_handler_posix_->parity_check_enabled_ = true; |
+ serial_io_handler_posix_->num_chars_ignored_ = 0; |
+ char buffer[buffer_len]; |
+ |
+ buffer[0] = '\377'; |
+ buffer[1] = '\0'; |
+ buffer[2] = 'a'; |
+ int bytes_read = 3; |
+ bool break_detected = false; |
+ bool parity_error_detected = false; |
+ int new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_REGULAR, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(0, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ(0, new_bytes_read); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, true); |
+ } |
+} |
+ |
+// '\377' '\0' |
+// 'a' |
+TEST_F(SerialIoHandlerPosixTest, ParityErrorReadTwiceBytesReadTwoAndOne) { |
+ for (int buffer_len = 2; buffer_len <= 20; ++buffer_len) { |
+ serial_io_handler_posix_->byte_read_state_ = BYTEREAD_REGULAR; |
+ serial_io_handler_posix_->parity_check_enabled_ = true; |
+ serial_io_handler_posix_->num_chars_ignored_ = 0; |
+ char buffer[buffer_len]; |
+ |
+ buffer[0] = '\377'; |
+ buffer[1] = '\0'; |
+ int bytes_read = 2; |
+ bool break_detected = false; |
+ bool parity_error_detected = false; |
+ int new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_ALL_ZERO, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(2, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ('\377', serial_io_handler_posix_->chars_ignored_[0]); |
+ EXPECT_EQ('\0', serial_io_handler_posix_->chars_ignored_[1]); |
+ EXPECT_EQ(0, new_bytes_read); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, false); |
+ |
+ buffer[0] = 'a'; |
+ bytes_read = 1; |
+ new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_REGULAR, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(0, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ(0, new_bytes_read); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, true); |
+ } |
+} |
+ |
+// '\377' |
+// '\0' 'a' |
+TEST_F(SerialIoHandlerPosixTest, ParityErrorReadTwiceBytesReadOneAndTwo) { |
+ for (int buffer_len = 2; buffer_len <= 20; ++buffer_len) { |
+ serial_io_handler_posix_->byte_read_state_ = BYTEREAD_REGULAR; |
+ serial_io_handler_posix_->parity_check_enabled_ = true; |
+ serial_io_handler_posix_->num_chars_ignored_ = 0; |
+ char buffer[buffer_len]; |
+ |
+ buffer[0] = '\377'; |
+ int bytes_read = 1; |
+ bool break_detected = false; |
+ bool parity_error_detected = false; |
+ int new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_ALL_ONE, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(1, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ('\377', serial_io_handler_posix_->chars_ignored_[0]); |
+ EXPECT_EQ(0, new_bytes_read); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, false); |
+ |
+ buffer[0] = '\0'; |
+ buffer[1] = 'a'; |
+ bytes_read = 2; |
+ new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_REGULAR, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(0, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ(0, new_bytes_read); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, true); |
+ } |
+} |
+ |
+// '\377' |
+// '\0' |
+// 'a' |
+TEST_F(SerialIoHandlerPosixTest, ParityErrorReadThreeTimes) { |
+ for (int buffer_len = 1; buffer_len <= 20; ++buffer_len) { |
+ serial_io_handler_posix_->byte_read_state_ = BYTEREAD_REGULAR; |
+ serial_io_handler_posix_->parity_check_enabled_ = true; |
+ serial_io_handler_posix_->num_chars_ignored_ = 0; |
+ char buffer[buffer_len]; |
+ |
+ buffer[0] = '\377'; |
+ int bytes_read = 1; |
+ bool break_detected = false; |
+ bool parity_error_detected = false; |
+ int new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_ALL_ONE, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(1, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ('\377', serial_io_handler_posix_->chars_ignored_[0]); |
+ EXPECT_EQ(0, new_bytes_read); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, false); |
+ |
+ buffer[0] = '\0'; |
+ bytes_read = 1; |
+ new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_ALL_ZERO, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(2, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ('\377', serial_io_handler_posix_->chars_ignored_[0]); |
+ EXPECT_EQ('\0', serial_io_handler_posix_->chars_ignored_[1]); |
+ EXPECT_EQ(0, new_bytes_read); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, false); |
+ |
+ buffer[0] = 'a'; |
+ bytes_read = 1; |
+ new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_REGULAR, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(0, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ(0, new_bytes_read); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, true); |
+ } |
+} |
+ |
+// '\377' '\377' |
+TEST_F(SerialIoHandlerPosixTest, TwoEOFsReadOnce) { |
+ for (int buffer_len = 2; buffer_len <= 20; ++buffer_len) { |
+ serial_io_handler_posix_->byte_read_state_ = BYTEREAD_REGULAR; |
+ serial_io_handler_posix_->parity_check_enabled_ = true; |
+ serial_io_handler_posix_->num_chars_ignored_ = 0; |
+ char buffer[buffer_len]; |
+ |
+ buffer[0] = '\377'; |
+ buffer[1] = '\377'; |
+ int bytes_read = 2; |
+ bool break_detected = false; |
+ bool parity_error_detected = false; |
+ int new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_REGULAR, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(0, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ(1, new_bytes_read); |
+ EXPECT_EQ('\377', buffer[0]); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, false); |
+ } |
+} |
+ |
+// '\377' |
+// '\377' |
+TEST_F(SerialIoHandlerPosixTest, TwoEOFsReadTwice) { |
+ for (int buffer_len = 1; buffer_len <= 20; ++buffer_len) { |
+ serial_io_handler_posix_->byte_read_state_ = BYTEREAD_REGULAR; |
+ serial_io_handler_posix_->parity_check_enabled_ = true; |
+ serial_io_handler_posix_->num_chars_ignored_ = 0; |
+ char buffer[buffer_len]; |
+ |
+ buffer[0] = '\377'; |
+ int bytes_read = 1; |
+ bool break_detected = false; |
+ bool parity_error_detected = false; |
+ int new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_ALL_ONE, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(1, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ('\377', serial_io_handler_posix_->chars_ignored_[0]); |
+ EXPECT_EQ(0, new_bytes_read); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, false); |
+ |
+ buffer[0] = '\377'; |
+ bytes_read = 1; |
+ new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_REGULAR, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(0, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ(1, new_bytes_read); |
+ EXPECT_EQ('\377', buffer[0]); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, false); |
+ } |
+} |
+ |
+// '\377' '\0' 'a' |
+TEST_F(SerialIoHandlerPosixTest, ParityCheckDisabledReadOnce) { |
+ for (int buffer_len = 3; buffer_len <= 20; ++buffer_len) { |
+ serial_io_handler_posix_->byte_read_state_ = BYTEREAD_REGULAR; |
+ serial_io_handler_posix_->parity_check_enabled_ = false; |
+ serial_io_handler_posix_->num_chars_ignored_ = 0; |
+ char buffer[buffer_len]; |
+ |
+ buffer[0] = '\377'; |
+ buffer[1] = '\0'; |
+ buffer[2] = 'a'; |
+ int bytes_read = 3; |
+ bool break_detected = false; |
+ bool parity_error_detected = false; |
+ int new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_REGULAR, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(0, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ(3, new_bytes_read); |
+ EXPECT_EQ('\377', buffer[0]); |
+ EXPECT_EQ('\0', buffer[1]); |
+ EXPECT_EQ('a', buffer[2]); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, false); |
+ } |
+} |
+ |
+// '\377' '\0' |
+// 'a' |
+TEST_F(SerialIoHandlerPosixTest, |
+ ParityCheckDisabledReadTwiceBytesReadTwoAndOne) { |
+ serial_io_handler_posix_->byte_read_state_ = BYTEREAD_REGULAR; |
+ serial_io_handler_posix_->parity_check_enabled_ = false; |
+ serial_io_handler_posix_->num_chars_ignored_ = 0; |
+ int buffer_len = 2; |
+ char buffer[buffer_len]; |
+ |
+ buffer[0] = '\377'; |
+ buffer[1] = '\0'; |
+ int bytes_read = 2; |
+ bool break_detected = false; |
+ bool parity_error_detected = false; |
+ int new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_ALL_ZERO, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(2, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ('\377', serial_io_handler_posix_->chars_ignored_[0]); |
+ EXPECT_EQ('\0', serial_io_handler_posix_->chars_ignored_[1]); |
+ EXPECT_EQ(0, new_bytes_read); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, false); |
+ |
+ buffer[0] = 'a'; |
+ bytes_read = 1; |
+ new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_REGULAR, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(1, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ('a', serial_io_handler_posix_->chars_ignored_[0]); |
+ EXPECT_EQ(2, new_bytes_read); |
+ EXPECT_EQ('\377', buffer[0]); |
+ EXPECT_EQ('\0', buffer[1]); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, false); |
+} |
+ |
+// '\377' '\0' |
+// 'a' |
+TEST_F(SerialIoHandlerPosixTest, |
+ ParityCheckDisabledReadTwiceBytesReadTwoAndOneLargerBufferLen) { |
+ for (int buffer_len = 3; buffer_len <= 20; ++buffer_len) { |
+ serial_io_handler_posix_->byte_read_state_ = BYTEREAD_REGULAR; |
+ serial_io_handler_posix_->parity_check_enabled_ = false; |
+ serial_io_handler_posix_->num_chars_ignored_ = 0; |
+ char buffer[buffer_len]; |
+ |
+ buffer[0] = '\377'; |
+ buffer[1] = '\0'; |
+ int bytes_read = 2; |
+ bool break_detected = false; |
+ bool parity_error_detected = false; |
+ int new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_ALL_ZERO, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(2, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ('\377', serial_io_handler_posix_->chars_ignored_[0]); |
+ EXPECT_EQ('\0', serial_io_handler_posix_->chars_ignored_[1]); |
+ EXPECT_EQ(0, new_bytes_read); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, false); |
+ |
+ buffer[0] = 'a'; |
+ bytes_read = 1; |
+ new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_REGULAR, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(0, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ(3, new_bytes_read); |
+ EXPECT_EQ('\377', buffer[0]); |
+ EXPECT_EQ('\0', buffer[1]); |
+ EXPECT_EQ('a', buffer[2]); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, false); |
+ } |
+} |
+ |
+// '\377' |
+// '\0' 'a' |
+TEST_F(SerialIoHandlerPosixTest, |
+ ParityCheckDisabledReadTwiceBytesReadOneAndTwo) { |
+ serial_io_handler_posix_->byte_read_state_ = BYTEREAD_REGULAR; |
+ serial_io_handler_posix_->parity_check_enabled_ = false; |
+ serial_io_handler_posix_->num_chars_ignored_ = 0; |
+ int buffer_len = 2; |
+ char buffer[buffer_len]; |
+ |
+ buffer[0] = '\377'; |
+ int bytes_read = 1; |
+ bool break_detected = false; |
+ bool parity_error_detected = false; |
+ int new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_ALL_ONE, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(1, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ('\377', serial_io_handler_posix_->chars_ignored_[0]); |
+ EXPECT_EQ(0, new_bytes_read); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, false); |
+ |
+ buffer[0] = '\0'; |
+ buffer[1] = 'a'; |
+ bytes_read = 2; |
+ new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_REGULAR, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(1, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ('a', serial_io_handler_posix_->chars_ignored_[0]); |
+ EXPECT_EQ(2, new_bytes_read); |
+ EXPECT_EQ('\377', buffer[0]); |
+ EXPECT_EQ('\0', buffer[1]); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, false); |
+} |
+ |
+// '\377' |
+// '\0' 'a' |
+TEST_F(SerialIoHandlerPosixTest, |
+ ParityCheckDisabledReadTwiceBytesReadOneAndTwoLargerBufferLen) { |
+ for (int buffer_len = 3; buffer_len <= 20; ++buffer_len) { |
+ serial_io_handler_posix_->byte_read_state_ = BYTEREAD_REGULAR; |
+ serial_io_handler_posix_->parity_check_enabled_ = false; |
+ serial_io_handler_posix_->num_chars_ignored_ = 0; |
+ char buffer[buffer_len]; |
+ |
+ buffer[0] = '\377'; |
+ int bytes_read = 1; |
+ bool break_detected = false; |
+ bool parity_error_detected = false; |
+ int new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_ALL_ONE, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(1, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ('\377', serial_io_handler_posix_->chars_ignored_[0]); |
+ EXPECT_EQ(0, new_bytes_read); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, false); |
+ |
+ buffer[0] = '\0'; |
+ buffer[1] = 'a'; |
+ bytes_read = 2; |
+ new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_REGULAR, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(0, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ(3, new_bytes_read); |
+ EXPECT_EQ('\377', buffer[0]); |
+ EXPECT_EQ('\0', buffer[1]); |
+ EXPECT_EQ('a', buffer[2]); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, false); |
+ } |
+} |
+ |
+// '\377' |
+// '\0' |
+// 'a' |
+TEST_F(SerialIoHandlerPosixTest, |
+ ParityCheckDisabledReadThreeTimesBufferLenOne) { |
+ serial_io_handler_posix_->byte_read_state_ = BYTEREAD_REGULAR; |
+ serial_io_handler_posix_->parity_check_enabled_ = false; |
+ serial_io_handler_posix_->num_chars_ignored_ = 0; |
+ int buffer_len = 1; |
+ char buffer[buffer_len]; |
+ |
+ buffer[0] = '\377'; |
+ int bytes_read = 1; |
+ bool break_detected = false; |
+ bool parity_error_detected = false; |
+ int new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_ALL_ONE, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(1, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ('\377', serial_io_handler_posix_->chars_ignored_[0]); |
+ EXPECT_EQ(0, new_bytes_read); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, false); |
+ |
+ buffer[0] = '\0'; |
+ bytes_read = 1; |
+ new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_ALL_ZERO, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(2, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ('\377', serial_io_handler_posix_->chars_ignored_[0]); |
+ EXPECT_EQ('\0', serial_io_handler_posix_->chars_ignored_[1]); |
+ EXPECT_EQ(0, new_bytes_read); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, false); |
+ |
+ buffer[0] = 'a'; |
+ bytes_read = 1; |
+ new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_REGULAR, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(2, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ('\0', serial_io_handler_posix_->chars_ignored_[0]); |
+ EXPECT_EQ('a', serial_io_handler_posix_->chars_ignored_[1]); |
+ EXPECT_EQ(1, new_bytes_read); |
+ EXPECT_EQ('\377', buffer[0]); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, false); |
+} |
+ |
+// '\377' |
+// '\0' |
+// 'a' |
+TEST_F(SerialIoHandlerPosixTest, |
+ ParityCheckDisabledReadThreeTimesBufferLenTwo) { |
+ serial_io_handler_posix_->byte_read_state_ = BYTEREAD_REGULAR; |
+ serial_io_handler_posix_->parity_check_enabled_ = false; |
+ serial_io_handler_posix_->num_chars_ignored_ = 0; |
+ int buffer_len = 2; |
+ char buffer[buffer_len]; |
+ |
+ buffer[0] = '\377'; |
+ int bytes_read = 1; |
+ bool break_detected = false; |
+ bool parity_error_detected = false; |
+ int new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_ALL_ONE, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(1, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ('\377', serial_io_handler_posix_->chars_ignored_[0]); |
+ EXPECT_EQ(0, new_bytes_read); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, false); |
+ |
+ buffer[0] = '\0'; |
+ bytes_read = 1; |
+ new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_ALL_ZERO, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(2, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ('\377', serial_io_handler_posix_->chars_ignored_[0]); |
+ EXPECT_EQ('\0', serial_io_handler_posix_->chars_ignored_[1]); |
+ EXPECT_EQ(0, new_bytes_read); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, false); |
+ |
+ buffer[0] = 'a'; |
+ bytes_read = 1; |
+ new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_REGULAR, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(1, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ('a', serial_io_handler_posix_->chars_ignored_[0]); |
+ EXPECT_EQ(2, new_bytes_read); |
+ EXPECT_EQ('\377', buffer[0]); |
+ EXPECT_EQ('\0', buffer[1]); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, false); |
+} |
+ |
+// '\377' |
+// '\0' |
+// 'a' |
+TEST_F(SerialIoHandlerPosixTest, |
+ ParityCheckDisabledReadThreeTimesLargerBufferLen) { |
+ for (int buffer_len = 3; buffer_len <= 20; ++buffer_len) { |
+ serial_io_handler_posix_->byte_read_state_ = BYTEREAD_REGULAR; |
+ serial_io_handler_posix_->parity_check_enabled_ = false; |
+ serial_io_handler_posix_->num_chars_ignored_ = 0; |
+ char buffer[buffer_len]; |
+ |
+ buffer[0] = '\377'; |
+ int bytes_read = 1; |
+ bool break_detected = false; |
+ bool parity_error_detected = false; |
+ int new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_ALL_ONE, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(1, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ('\377', serial_io_handler_posix_->chars_ignored_[0]); |
+ EXPECT_EQ(0, new_bytes_read); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, false); |
+ |
+ buffer[0] = '\0'; |
+ bytes_read = 1; |
+ new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_ALL_ZERO, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(2, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ('\377', serial_io_handler_posix_->chars_ignored_[0]); |
+ EXPECT_EQ('\0', serial_io_handler_posix_->chars_ignored_[1]); |
+ EXPECT_EQ(0, new_bytes_read); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, false); |
+ |
+ buffer[0] = 'a'; |
+ bytes_read = 1; |
+ new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_REGULAR, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(0, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ(3, new_bytes_read); |
+ EXPECT_EQ('\377', buffer[0]); |
+ EXPECT_EQ('\0', buffer[1]); |
+ EXPECT_EQ('a', buffer[2]); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, false); |
+ } |
+} |
+ |
+TEST_F(SerialIoHandlerPosixTest, BytesReadZero) { |
+ for (int buffer_len = 1; buffer_len <= 20; ++buffer_len) { |
+ serial_io_handler_posix_->byte_read_state_ = BYTEREAD_REGULAR; |
+ serial_io_handler_posix_->parity_check_enabled_ = true; |
+ serial_io_handler_posix_->num_chars_ignored_ = 0; |
+ char buffer[buffer_len]; |
+ |
+ int bytes_read = 0; |
+ bool break_detected = false; |
+ bool parity_error_detected = false; |
+ int new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_REGULAR, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(0, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ(0, new_bytes_read); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, false); |
+ } |
+} |
+ |
+// '\377' 'a' 'b' |
+TEST_F(SerialIoHandlerPosixTest, InvalidSequenceReadOnce) { |
+ for (int buffer_len = 3; buffer_len <= 20; ++buffer_len) { |
+ serial_io_handler_posix_->byte_read_state_ = BYTEREAD_REGULAR; |
+ serial_io_handler_posix_->parity_check_enabled_ = true; |
+ serial_io_handler_posix_->num_chars_ignored_ = 0; |
+ char buffer[buffer_len]; |
+ |
+ buffer[0] = '\377'; |
+ buffer[1] = 'a'; |
+ buffer[2] = 'b'; |
+ int bytes_read = 3; |
+ bool break_detected = false; |
+ bool parity_error_detected = false; |
+ int new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_REGULAR, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(0, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ(3, new_bytes_read); |
+ EXPECT_EQ('\377', buffer[0]); |
+ EXPECT_EQ('a', buffer[1]); |
+ EXPECT_EQ('b', buffer[2]); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, false); |
+ } |
+} |
+ |
+// '\377' 'a' |
+// 'b' |
+TEST_F(SerialIoHandlerPosixTest, InvalidSequenceReadTwiceBytesReadTwoAndOne) { |
+ for (int buffer_len = 2; buffer_len <= 20; ++buffer_len) { |
+ serial_io_handler_posix_->byte_read_state_ = BYTEREAD_REGULAR; |
+ serial_io_handler_posix_->parity_check_enabled_ = true; |
+ serial_io_handler_posix_->num_chars_ignored_ = 0; |
+ char buffer[buffer_len]; |
+ |
+ buffer[0] = '\377'; |
+ buffer[1] = 'a'; |
+ int bytes_read = 2; |
+ bool break_detected = false; |
+ bool parity_error_detected = false; |
+ int new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_REGULAR, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(0, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ(2, new_bytes_read); |
+ EXPECT_EQ('\377', buffer[0]); |
+ EXPECT_EQ('a', buffer[1]); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, false); |
+ |
+ buffer[0] = 'b'; |
+ bytes_read = 1; |
+ new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_REGULAR, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(0, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ(1, new_bytes_read); |
+ EXPECT_EQ('b', buffer[0]); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, false); |
+ } |
+} |
+ |
+// '\377' |
+// 'a' 'b' |
+TEST_F(SerialIoHandlerPosixTest, InvalidSequenceReadTwiceBytesReadOneAndTwo) { |
+ serial_io_handler_posix_->byte_read_state_ = BYTEREAD_REGULAR; |
+ serial_io_handler_posix_->parity_check_enabled_ = true; |
+ serial_io_handler_posix_->num_chars_ignored_ = 0; |
+ int buffer_len = 2; |
+ char buffer[buffer_len]; |
+ |
+ buffer[0] = '\377'; |
+ int bytes_read = 1; |
+ bool break_detected = false; |
+ bool parity_error_detected = false; |
+ int new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_ALL_ONE, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(1, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ('\377', serial_io_handler_posix_->chars_ignored_[0]); |
+ EXPECT_EQ(0, new_bytes_read); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, false); |
+ |
+ buffer[0] = 'a'; |
+ buffer[1] = 'b'; |
+ bytes_read = 2; |
+ new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_REGULAR, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(1, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ('b', serial_io_handler_posix_->chars_ignored_[0]); |
+ EXPECT_EQ(2, new_bytes_read); |
+ EXPECT_EQ('\377', buffer[0]); |
+ EXPECT_EQ('a', buffer[1]); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, false); |
+} |
+ |
+// '\377' |
+// 'a' 'b' |
+TEST_F(SerialIoHandlerPosixTest, |
+ InvalidSequenceReadTwiceBytesReadOneAndTwoLargerBufferLen) { |
+ for (int buffer_len = 3; buffer_len <= 20; ++buffer_len) { |
+ serial_io_handler_posix_->byte_read_state_ = BYTEREAD_REGULAR; |
+ serial_io_handler_posix_->parity_check_enabled_ = true; |
+ serial_io_handler_posix_->num_chars_ignored_ = 0; |
+ char buffer[buffer_len]; |
+ |
+ buffer[0] = '\377'; |
+ int bytes_read = 1; |
+ bool break_detected = false; |
+ bool parity_error_detected = false; |
+ int new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_ALL_ONE, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(1, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ('\377', serial_io_handler_posix_->chars_ignored_[0]); |
+ EXPECT_EQ(0, new_bytes_read); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, false); |
+ |
+ buffer[0] = 'a'; |
+ buffer[1] = 'b'; |
+ bytes_read = 2; |
+ new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_REGULAR, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(0, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ(3, new_bytes_read); |
+ EXPECT_EQ('\377', buffer[0]); |
+ EXPECT_EQ('a', buffer[1]); |
+ EXPECT_EQ('b', buffer[2]); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, false); |
+ } |
+} |
+ |
+// '\377' |
+// 'a' |
+// 'b' |
+TEST_F(SerialIoHandlerPosixTest, InvalidSequenceReadThreeTimes) { |
+ serial_io_handler_posix_->byte_read_state_ = BYTEREAD_REGULAR; |
+ serial_io_handler_posix_->parity_check_enabled_ = true; |
+ serial_io_handler_posix_->num_chars_ignored_ = 0; |
+ int buffer_len = 1; |
+ char buffer[buffer_len]; |
+ |
+ buffer[0] = '\377'; |
+ int bytes_read = 1; |
+ bool break_detected = false; |
+ bool parity_error_detected = false; |
+ int new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_ALL_ONE, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(1, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ('\377', serial_io_handler_posix_->chars_ignored_[0]); |
+ EXPECT_EQ(0, new_bytes_read); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, false); |
+ |
+ buffer[0] = 'a'; |
+ bytes_read = 1; |
+ new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_REGULAR, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(1, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ('a', serial_io_handler_posix_->chars_ignored_[0]); |
+ EXPECT_EQ(1, new_bytes_read); |
+ EXPECT_EQ('\377', buffer[0]); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, false); |
+ |
+ buffer[0] = 'b'; |
+ bytes_read = 1; |
+ new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_REGULAR, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(1, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ('b', serial_io_handler_posix_->chars_ignored_[0]); |
+ EXPECT_EQ(1, new_bytes_read); |
+ EXPECT_EQ('a', buffer[0]); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, false); |
+} |
+ |
+// '\377' |
+// 'a' |
+// 'b' |
+TEST_F(SerialIoHandlerPosixTest, InvalidSequenceReadThreeTimesLargerBufferLen) { |
+ for (int buffer_len = 2; buffer_len <= 20; ++buffer_len) { |
+ serial_io_handler_posix_->byte_read_state_ = BYTEREAD_REGULAR; |
+ serial_io_handler_posix_->parity_check_enabled_ = true; |
+ serial_io_handler_posix_->num_chars_ignored_ = 0; |
+ char buffer[buffer_len]; |
+ |
+ buffer[0] = '\377'; |
+ int bytes_read = 1; |
+ bool break_detected = false; |
+ bool parity_error_detected = false; |
+ int new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_ALL_ONE, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(1, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ('\377', serial_io_handler_posix_->chars_ignored_[0]); |
+ EXPECT_EQ(0, new_bytes_read); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, false); |
+ |
+ buffer[0] = 'a'; |
+ bytes_read = 1; |
+ new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_REGULAR, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(0, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ(2, new_bytes_read); |
+ EXPECT_EQ('\377', buffer[0]); |
+ EXPECT_EQ('a', buffer[1]); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, false); |
+ |
+ buffer[0] = 'b'; |
+ bytes_read = 1; |
+ new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_REGULAR, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(0, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ(1, new_bytes_read); |
+ EXPECT_EQ('b', buffer[0]); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, false); |
+ } |
+} |
+ |
+// 'a' 'b' 'c' '\377' |
+TEST_F(SerialIoHandlerPosixTest, CharsIgnoredPreset) { |
+ serial_io_handler_posix_->byte_read_state_ = BYTEREAD_REGULAR; |
+ serial_io_handler_posix_->parity_check_enabled_ = true; |
+ serial_io_handler_posix_->num_chars_ignored_ = 0; |
+ serial_io_handler_posix_->num_chars_ignored_ = 2; |
+ serial_io_handler_posix_->chars_ignored_[0] = 'a'; |
+ serial_io_handler_posix_->chars_ignored_[1] = 'b'; |
+ int buffer_len = 2; |
+ char buffer[buffer_len]; |
+ |
+ buffer[0] = 'c'; |
+ buffer[1] = '\377'; |
+ int bytes_read = 2; |
+ bool break_detected = false; |
+ bool parity_error_detected = false; |
+ int new_bytes_read = serial_io_handler_posix_->CheckReceiveError( |
+ buffer, buffer_len, bytes_read, break_detected, parity_error_detected); |
+ EXPECT_EQ(BYTEREAD_ALL_ONE, serial_io_handler_posix_->byte_read_state_); |
+ EXPECT_EQ(2, serial_io_handler_posix_->num_chars_ignored_); |
+ EXPECT_EQ('c', serial_io_handler_posix_->chars_ignored_[0]); |
+ EXPECT_EQ('\377', serial_io_handler_posix_->chars_ignored_[1]); |
+ EXPECT_EQ(2, new_bytes_read); |
+ EXPECT_EQ('a', buffer[0]); |
+ EXPECT_EQ('b', buffer[1]); |
+ EXPECT_EQ(break_detected, false); |
+ EXPECT_EQ(parity_error_detected, false); |
+} |
+ |
+} // namespace device |