1
0
mirror of https://github.com/mfontanini/libtins synced 2026-01-28 20:44:26 +01:00

Added PDU::rfind_pdu.

This commit is contained in:
Matias Fontanini
2013-04-19 22:27:48 -03:00
parent 91bdcca577
commit 2ea952d6ab
8 changed files with 83 additions and 22 deletions

View File

@@ -3,6 +3,7 @@
#include <memory>
#include <stdint.h>
#include "dot11.h"
#include "cxxstd.h"
#include "tests/dot11.h"
@@ -61,12 +62,12 @@ TEST_F(Dot11DataTest, SeqNum) {
TEST_F(Dot11DataTest, ClonePDU) {
Dot11Data dot1(expected_packet, sizeof(expected_packet));
std::auto_ptr<Dot11Data> dot2(dot1.clone());
Internals::smart_ptr<Dot11Data>::type dot2(dot1.clone());
test_equals(dot1, *dot2);
}
TEST_F(Dot11DataTest, FromBytes) {
std::auto_ptr<PDU> dot11(Dot11::from_bytes(expected_packet, sizeof(expected_packet)));
Internals::smart_ptr<PDU>::type dot11(Dot11::from_bytes(expected_packet, sizeof(expected_packet)));
ASSERT_TRUE(dot11.get());
const Dot11Data *inner = dot11->find_pdu<Dot11Data>();
ASSERT_TRUE(inner);
@@ -94,7 +95,7 @@ TEST_F(Dot11DataTest, PCAPLoad1) {
EXPECT_EQ(dot1.from_ds(), 1);
EXPECT_EQ(dot1.frag_num(), 0);
EXPECT_EQ(dot1.seq_num(), 1945);
std::auto_ptr<Dot11Data> dot2(dot1.clone());
Internals::smart_ptr<Dot11Data>::type dot2(dot1.clone());
test_equals(dot1, *dot2);
}

View File

@@ -4,6 +4,7 @@
#include <stdint.h>
#include "ip.h"
#include "tcp.h"
#include "udp.h"
#include "rawpdu.h"
#include "pdu.h"
#include "packet.h"
@@ -15,6 +16,18 @@ class PDUTest : public testing::Test {
public:
};
TEST_F(PDUTest, FindPDU) {
IP ip = IP("192.168.0.1") / TCP(22, 52) / RawPDU("Test");
EXPECT_TRUE(ip.find_pdu<TCP>());
EXPECT_TRUE(ip.find_pdu<RawPDU>());
EXPECT_FALSE(ip.find_pdu<UDP>());
TCP &t1 = ip.rfind_pdu<TCP>();
const TCP &t2 = ip.rfind_pdu<TCP>();
(void)t1;
(void)t2;
EXPECT_THROW(ip.rfind_pdu<UDP>(), pdu_not_found);
}
TEST_F(PDUTest, OperatorConcat) {
std::string raw_payload = "Test";
IP ip = IP("192.168.0.1") / TCP(22, 52) / RawPDU(raw_payload);