-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbytestream_spec.cpp
More file actions
132 lines (93 loc) · 3.56 KB
/
bytestream_spec.cpp
File metadata and controls
132 lines (93 loc) · 3.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
// Tests
#include "gtest/gtest.h"
#include "bytestream.h"
class BytestreamTest : public ::testing::Test {
protected:
virtual void SetUp() {
tmp = open("test.tpl", O_RDWR | O_CREAT | O_TRUNC, 0666);
}
virtual void TearDown() {
close(tmp);
}
int tmp;
};
// simple header creation helper
TEST_F(BytestreamTest, CreateHeader) {
sc_bytestream_header h = create_header(MOUSE);
sc_time timeNow = time(NULL) * SC_TimeBase;
EXPECT_EQ(MOUSE, h.type);
EXPECT_EQ(timeNow, h.timestamp);
};
// start and stop both have null bodys
TEST_F(BytestreamTest, EncodeStart) {
sc_bytestream_packet packet = sc_bytestream_put_start(tmp);
EXPECT_EQ(START, packet.header.type);
EXPECT_EQ(NULL, packet.body.addr);
lseek(tmp, 0, 0); // rewind tempfile
sc_bytestream_packet packet_read = deserialize_packet(tmp);
EXPECT_EQ(packet.header.type, packet_read.header.type);
};
TEST_F(BytestreamTest, EncodeStop) {
sc_bytestream_packet packet = sc_bytestream_put_stop(tmp);
lseek(tmp, 0, 0); // rewind tempfile
sc_bytestream_packet packet_read = deserialize_packet(tmp);
EXPECT_EQ(packet.header.type, packet_read.header.type);
};
TEST_F(BytestreamTest, EncodeMouseData) {
sc_mouse_coords coords = {440, 99};
sc_bytestream_packet packet = sc_bytestream_put_mouse_data(tmp, coords);
lseek(tmp, 0, 0); // rewind tempfile
sc_mouse_coords decode_coords = sc_bytestream_get_mouse_data(tmp);
EXPECT_EQ(coords.x, decode_coords.x);
EXPECT_EQ(coords.y, decode_coords.y);
};
TEST_F(BytestreamTest, EncodeFrameData) {
int frameData = 0x499602D2;
uint8_t *framePtr = (uint8_t *) &frameData;
int frameSize = sizeof(frameData);
sc_frame frame = {framePtr, frameSize};
sc_bytestream_packet packet = sc_bytestream_put_frame(tmp, frame, time(NULL));
lseek(tmp, 0, 0); // rewind tempfile
sc_frame decode_frame = sc_bytestream_get_frame(tmp);
int reconstruct;
memcpy(&reconstruct, decode_frame.framePtr, decode_frame.size);
EXPECT_EQ(frameData, reconstruct);
EXPECT_EQ(frameSize, decode_frame.size);
};
TEST_F(BytestreamTest, GetHeader) {
sc_bytestream_packet packet = sc_bytestream_put_stop(tmp);
lseek(tmp, 0, 0); // rewind tempfile
sc_bytestream_header header = sc_bytestream_get_event_header(tmp);
EXPECT_EQ(packet.header.type, header.type);
};
TEST_F(BytestreamTest, GetRawPacket) {
sc_bytestream_packet packet = sc_bytestream_put_start(tmp);
lseek(tmp, 0, 0); // rewind tempfile
sc_bytestream_packet decode_packet = sc_bytestream_get_event(tmp);
EXPECT_EQ(packet.body.sz, decode_packet.body.sz);
EXPECT_EQ(packet.header.type, decode_packet.header.type);
};
TEST_F(BytestreamTest, NoDataHandledSafely) {
sc_bytestream_packet decode_packet = sc_bytestream_get_event(tmp);
EXPECT_EQ(NO_DATA, decode_packet.header.type);
};
TEST_F(BytestreamTest, MultiplePackets) {
int frameData = 0x499602D2;
uint8_t *framePtr = (uint8_t *) &frameData;
int frameSize = sizeof(frameData);
sc_frame frame = {framePtr, frameSize};
sc_mouse_coords coords = {440, 99};
sc_bytestream_put_start(tmp);
sc_bytestream_put_frame(tmp, frame, time(NULL));
sc_bytestream_put_mouse_data(tmp, coords);
sc_bytestream_put_stop(tmp);
lseek(tmp, 0, 0); // rewind tempfile
sc_bytestream_packet decode_packet = sc_bytestream_get_event(tmp);
EXPECT_EQ(START, decode_packet.header.type);
decode_packet = sc_bytestream_get_event(tmp);
EXPECT_EQ(VIDEO, decode_packet.header.type);
decode_packet = sc_bytestream_get_event(tmp);
EXPECT_EQ(MOUSE, decode_packet.header.type);
decode_packet = sc_bytestream_get_event(tmp);
EXPECT_EQ(STOP, decode_packet.header.type);
};