diff options
Diffstat (limited to 'toxav/rtp_test.cc')
-rw-r--r-- | toxav/rtp_test.cc | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/toxav/rtp_test.cc b/toxav/rtp_test.cc new file mode 100644 index 00000000..b41ff905 --- /dev/null +++ b/toxav/rtp_test.cc | |||
@@ -0,0 +1,64 @@ | |||
1 | #include "rtp.h" | ||
2 | |||
3 | #include "../toxcore/crypto_core.h" | ||
4 | |||
5 | #include <gtest/gtest.h> | ||
6 | |||
7 | namespace { | ||
8 | |||
9 | RTPHeader random_header() { | ||
10 | return { | ||
11 | random_u16(), random_u16(), random_u16(), random_u16(), random_u16(), | ||
12 | random_u16(), random_u16(), random_u32(), random_u32(), random_u64(), | ||
13 | random_u32(), random_u32(), random_u32(), random_u16(), random_u16(), | ||
14 | }; | ||
15 | } | ||
16 | |||
17 | TEST(Rtp, Deserialisation) { | ||
18 | RTPHeader const header = random_header(); | ||
19 | |||
20 | uint8_t rdata[RTP_HEADER_SIZE]; | ||
21 | EXPECT_EQ(rtp_header_pack(rdata, &header), RTP_HEADER_SIZE); | ||
22 | |||
23 | RTPHeader unpacked = {0}; | ||
24 | EXPECT_EQ(rtp_header_unpack(rdata, &unpacked), RTP_HEADER_SIZE); | ||
25 | |||
26 | EXPECT_EQ(header.ve, unpacked.ve); | ||
27 | EXPECT_EQ(header.pe, unpacked.pe); | ||
28 | EXPECT_EQ(header.xe, unpacked.xe); | ||
29 | EXPECT_EQ(header.cc, unpacked.cc); | ||
30 | EXPECT_EQ(header.ma, unpacked.ma); | ||
31 | EXPECT_EQ(header.pt, unpacked.pt); | ||
32 | EXPECT_EQ(header.sequnum, unpacked.sequnum); | ||
33 | EXPECT_EQ(header.timestamp, unpacked.timestamp); | ||
34 | EXPECT_EQ(header.ssrc, unpacked.ssrc); | ||
35 | EXPECT_EQ(header.flags, unpacked.flags); | ||
36 | EXPECT_EQ(header.offset_full, unpacked.offset_full); | ||
37 | EXPECT_EQ(header.data_length_full, unpacked.data_length_full); | ||
38 | EXPECT_EQ(header.received_length_full, unpacked.received_length_full); | ||
39 | EXPECT_EQ(header.offset_lower, unpacked.offset_lower); | ||
40 | EXPECT_EQ(header.data_length_lower, unpacked.data_length_lower); | ||
41 | } | ||
42 | |||
43 | TEST(Rtp, SerialisingAllOnes) { | ||
44 | RTPHeader header; | ||
45 | memset(&header, 0xff, sizeof header); | ||
46 | |||
47 | uint8_t rdata[RTP_HEADER_SIZE]; | ||
48 | rtp_header_pack(rdata, &header); | ||
49 | |||
50 | EXPECT_EQ(std::string((char const *)rdata, sizeof rdata), | ||
51 | std::string("\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF" | ||
52 | "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF" | ||
53 | "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF" | ||
54 | "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF" | ||
55 | "\x00\x00\x00\x00\x00\x00\x00\x00" | ||
56 | "\x00\x00\x00\x00\x00\x00\x00\x00" | ||
57 | "\x00\x00\x00\x00\x00\x00\x00\x00" | ||
58 | "\x00\x00\x00\x00\x00\x00\x00\x00" | ||
59 | "\x00\x00\x00\x00\x00\x00\x00\x00" | ||
60 | "\x00\x00\x00\x00\xFF\xFF\xFF\xFF", | ||
61 | RTP_HEADER_SIZE)); | ||
62 | } | ||
63 | |||
64 | } // namespace | ||