summaryrefslogtreecommitdiff
path: root/toxav/rtp_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'toxav/rtp_test.cc')
-rw-r--r--toxav/rtp_test.cc64
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
7namespace {
8
9RTPHeader 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
17TEST(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
43TEST(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