-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtests.cpp
More file actions
113 lines (100 loc) · 3.17 KB
/
Copy pathtests.cpp
File metadata and controls
113 lines (100 loc) · 3.17 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
//
// Created by pavel on 09.12.2024.
//
#include <gtest/gtest.h>
#include "src/ChunkedRingBuffer.hpp"
#include "src/audio/RingBuffer.hpp"
int main(int argc, char **argv) {
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
class ChunkedBufferTest : public ::testing::Test {
};
class RingBufferTest : public ::testing::Test {
};
TEST_F(ChunkedBufferTest, ChunkedBuffer) {
ChunkedBuffer<int, 3, 3> buffer;
ASSERT_TRUE(buffer.IsEmpty());
ASSERT_FALSE(buffer.HasChunks());
auto v123 = std::vector{1, 2, 3};
buffer.Push(std::vector{1, 2, 3});
ASSERT_FALSE(buffer.IsEmpty());
ASSERT_TRUE(buffer.HasChunks());
auto d = buffer.Retrieve();
auto rv = std::vector(d.begin(), d.end());
ASSERT_EQ(rv, v123);
ASSERT_ANY_THROW(buffer.Retrieve());
};
TEST_F(ChunkedBufferTest, WriteFull) {
#define COMMA ,
ChunkedBuffer<int, 3, 3> buffer;
auto in = std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9};
auto v10 = std::vector{10};
buffer.Push(in);
ASSERT_ANY_THROW(buffer.Push(v10));
auto r = buffer.Retrieve();
auto rv = std::vector(r.begin(), r.end());
auto v123 = std::vector{1, 2, 3};
ASSERT_EQ(rv, v123);
buffer.Push(v123);
ASSERT_ANY_THROW(buffer.Push(v10));
};
TEST_F(RingBufferTest, ChunkedBuffer) {
RingBuffer<int, 1, 3, 3> buffer;
// ASSERT_TRUE(buffer.IsEmpty());
ASSERT_FALSE(buffer.HasChunks());
auto v123 = std::vector{1, 2, 3};
buffer.Push(std::vector{1, 2, 3});
// ASSERT_FALSE(buffer.IsEmpty());
ASSERT_TRUE(buffer.HasChunks());
auto d = buffer.Retrieve();
auto rv = std::vector(d.begin(), d.end());
ASSERT_EQ(rv, v123);
ASSERT_ANY_THROW(buffer.Retrieve());
};
TEST_F(RingBufferTest, WriteFull) {
#define COMMA ,
RingBuffer<int, 1, 3, 3> buffer;
auto in = std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9};
auto v10 = std::vector{10};
buffer.Push(in);
ASSERT_ANY_THROW(buffer.Push(v10));
auto r = buffer.Retrieve();
auto rv = std::vector(r.begin(), r.end());
auto v123 = std::vector{1, 2, 3};
ASSERT_EQ(rv, v123);
buffer.Push(v123);
ASSERT_ANY_THROW(buffer.Push(v10));
};
TEST_F(RingBufferTest, WriteChannels) {
#define COMMA ,
RingBuffer<char, 2, 3, 3> buffer;
auto in0 = std::vector{'1', '2', '3', '4', '5', '6', '7', '8', '9'};
auto in1 = std::vector{'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i'};
auto v10 = std::vector{'&'};
buffer.PushChannel<0>(in0);
ASSERT_ANY_THROW(buffer.PushChannel<0>(v10));
ASSERT_FALSE(buffer.HasChunks());
buffer.PushChannel<1>(in1);
ASSERT_TRUE(buffer.HasChunks());
auto r = buffer.Retrieve();
auto rv = std::vector(r.begin(), r.end());
auto sret = std::string("1a2b3c");
auto vret = std::vector(sret.begin(), sret.end());
ASSERT_EQ(rv, vret);
auto s123 = std::string("123");
auto v123 = std::vector(s123.begin(), s123.end());
buffer.PushChannel<1>(v123);
ASSERT_ANY_THROW(buffer.PushChannel<1>(v10));
buffer.Retrieve();
buffer.Retrieve();
ASSERT_FALSE(buffer.HasChunks());
buffer.PushChannel<0>(v123);
ASSERT_TRUE(buffer.HasChunks());
auto rr = buffer.Retrieve();
auto rrv = std::vector(rr.begin(), rr.end());
auto ss = std::string("112233");
auto ssv = std::vector(ss.begin(), ss.end());
ASSERT_EQ(rrv, ssv);
ASSERT_FALSE(buffer.HasChunks());
};