From 04e29858ee172ad0a20acd4de2a8bf88da49275c Mon Sep 17 00:00:00 2001 From: Alex Collins Date: Fri, 13 Oct 2017 04:02:28 +0100 Subject: [PATCH] Add RawPDU c'tor for const payload_type&. (#253) * Add RawPDU c'tor for const payload_type &. * Correct indentation. --- include/tins/rawpdu.h | 10 ++++++++++ tests/src/CMakeLists.txt | 1 + tests/src/raw_pdu_test.cpp | 21 +++++++++++++++++++++ 3 files changed, 32 insertions(+) create mode 100644 tests/src/raw_pdu_test.cpp diff --git a/include/tins/rawpdu.h b/include/tins/rawpdu.h index 1bdc7b0..cd865ac 100644 --- a/include/tins/rawpdu.h +++ b/include/tins/rawpdu.h @@ -96,6 +96,16 @@ public: RawPDU(ForwardIterator start, ForwardIterator end) : payload_(start, end) { } + /** + * \brief Creates an instance of RawPDU from a payload_type. + * + * The payload is copied into the RawPDU's internal buffer. + * + * \param data The payload to use. + */ + RawPDU(const payload_type & data) + : payload_(data) { } + #if TINS_IS_CXX11 /** * \brief Creates an instance of RawPDU from a payload_type. diff --git a/tests/src/CMakeLists.txt b/tests/src/CMakeLists.txt index 78f5ca1..75db0f5 100644 --- a/tests/src/CMakeLists.txt +++ b/tests/src/CMakeLists.txt @@ -78,6 +78,7 @@ CREATE_TEST(network_interface) CREATE_TEST(pdu) CREATE_TEST(pdu_iterator) CREATE_TEST(pppoe) +CREATE_TEST(raw_pdu) CREATE_TEST(radiotap) CREATE_TEST(rc4_eapol) CREATE_TEST(rsn_eapol) diff --git a/tests/src/raw_pdu_test.cpp b/tests/src/raw_pdu_test.cpp new file mode 100644 index 0000000..c3e7fae --- /dev/null +++ b/tests/src/raw_pdu_test.cpp @@ -0,0 +1,21 @@ +#include +#include + +using namespace Tins; + +class RawPDUTest : public testing::Test { +public: +}; + +TEST_F(RawPDUTest, ConstructFromPayloadType) { + RawPDU::payload_type payload; + payload.push_back(0x01); + payload.push_back(0x02); + + RawPDU raw = RawPDU(payload); + EXPECT_EQ(payload, raw.payload()); + + // The payload should have been copied + payload.push_back(0x03); + EXPECT_NE(payload, raw.payload()); +} \ No newline at end of file