Alternate e697dbe9c5997e35395fe158628dd8c5209481da
for Visual Studio 2022 and Windows 11.
読み取り中…
検索中…
一致する文字列を見つけられません
RingBufferTest.cpp
[詳解]
1
5
6#include "pch.h"
7#include "RingBuffer.h"
8
9using namespace Microsoft::VisualStudio::CppUnitTestFramework;
10
11namespace WindowsLibraryTest
12{
13 TEST_CLASS (RingBufferTest)
14 {
15 public:
16 TEST_CLASS_INITIALIZE (ClassInitialize)
17 {
18 Logger::WriteMessage ("RingBuffer class initialize.\n");
19 }
20
21 TEST_CLASS_CLEANUP (ClassCleanup)
22 {
23 Logger::WriteMessage ("RingBuffer class cleanup.\n");
24 }
25
26 TEST_METHOD_INITIALIZE (MethodInitialize)
27 {
28 Logger::WriteMessage ("RingBuffer method initialize.\n");
29 }
30
31 TEST_METHOD_CLEANUP (MethodCleanup)
32 {
33 Logger::WriteMessage ("RingBuffer method cleanup.\n");
34 }
35
36 TEST_METHOD (RingBufferTest1)
37 {
38 const SIZE_T bufferSize = 32;
39 const SIZE_T chunkSize = 6;
40 BOOL ret;
41
42 alt::RingBuffer ringBuffer;
43
44 ret = ringBuffer.Init (bufferSize);
45 Assert::IsTrue (ret, _T("RingBuffer::Init() failed.\n"));
46
47 BYTE byWriteBuf[chunkSize];
48 BYTE byReadBuf[chunkSize];
49
50 for (SIZE_T i = 0; i < 24; i++)
51 {
52 FillMemory (byWriteBuf, sizeof (byWriteBuf), (BYTE)(i + 'A'));
53
54 ret = ringBuffer.Write (byWriteBuf, sizeof (byWriteBuf));
55 Assert::IsTrue (ret, _T("RingBuffer::Write() failed.\n"));
56 Assert::AreEqual<SIZE_T> (chunkSize, ringBuffer.Remain (), _T("RingBuffer::Remain() invalid size.\n"));
57
58 ZeroMemory (byReadBuf, sizeof (byReadBuf));
59
60 ret = ringBuffer.Read (byReadBuf, sizeof (byReadBuf));
61 Assert::IsTrue (ret, _T("RingBuffer::Read() failed.\n"));
62
63 int cmp = memcmp (byWriteBuf, byReadBuf, chunkSize);
64 Assert::AreEqual (0, cmp, _T("RingBuffer::Read() not matched write data.\n"));
65 }
66 }
67
68 TEST_METHOD (RingBufferTest2)
69 {
70 const SIZE_T bufferSize = 64;
71 const SIZE_T chunkSize = 5;
72 BOOL ret;
73
74 alt::RingBuffer ringBuffer;
75
76 ret = ringBuffer.Init (bufferSize);
77 Assert::IsTrue (ret, _T("RingBuffer::Init() failed.\n"));
78
79 BYTE byWriteBuf[chunkSize];
80 BYTE byReadBuf[chunkSize];
81 BYTE byCheckBuf[chunkSize];
82
83 for (int i = 0; i < 24; i++)
84 {
85 for (SIZE_T j = 0; j < 5; j++)
86 {
87 FillMemory (byWriteBuf, sizeof (byWriteBuf), (BYTE)(i + j + '0'));
88 ret = ringBuffer.Write (byWriteBuf, sizeof (byWriteBuf));
89 Assert::IsTrue (ret, _T("RingBuffer::Write() failed.\n"));
90 Assert::AreEqual<SIZE_T> (chunkSize * (j + 1), ringBuffer.Remain (), _T("RingBuffer::Remain() invalid size.\n"));
91 }
92
93 for (SIZE_T j = 0; j < 5; j++)
94 {
95 ZeroMemory (byReadBuf, sizeof (byReadBuf));
96 FillMemory (byCheckBuf, sizeof (byCheckBuf), (BYTE)(i + j + '0'));
97 ret = ringBuffer.Read (byReadBuf, sizeof (byReadBuf));
98 Assert::IsTrue (ret, _T("RingBuffer::Read() failed.\n"));
99 Assert::AreEqual<SIZE_T> (chunkSize * (5 - (j + 1)), ringBuffer.Remain (), _T("RingBuffer::Remain() invalid size.\n"));
100
101 int cmp = memcmp (byCheckBuf, byReadBuf, chunkSize);
102 Assert::AreEqual (0, cmp, _T("RingBuffer::Read() not matched write data.\n"));
103 }
104 }
105 }
106
107 TEST_METHOD (RingBufferTest3)
108 {
109 const SIZE_T bufferSize = 2048;
110 const SIZE_T chunkSize = 128;
111 BOOL ret;
112
113 alt::RingBuffer ringBuffer;
114
115 ret = ringBuffer.Init (bufferSize);
116 Assert::IsTrue (ret, _T("RingBuffer::Init() failed.\n"));
117
118 BYTE byBuf[chunkSize];
119 ZeroMemory (byBuf, chunkSize);
120
121 for (SIZE_T i = 1; i <= 16; i++)
122 {
123 ret = ringBuffer.Write (byBuf, chunkSize), _T ("not over flow\n");
124 Assert::IsTrue (ret, _T("RingBuffer::Write() failed.\n"));
125 Assert::AreEqual<SIZE_T> (chunkSize * i, ringBuffer.Remain (), _T("RingBuffer::Remain() invalid size.\n"));
126 }
127
128 ret = ringBuffer.Write (byBuf, 1);
129 Assert::IsFalse (ret, _T ("RingBuffer::Write() over flow\n"));
130
131 for (SIZE_T i = 1; i <= 16; i++)
132 {
133 ret = ringBuffer.Read (byBuf, chunkSize);
134 Assert::IsTrue (ret, _T("RingBuffer::Read() failed.\n"));
135 Assert::AreEqual<SIZE_T> (chunkSize * (16 - i), ringBuffer.Remain (), _T("RingBuffer::Remain() invalid size.\n"));
136 }
137
138 Assert::IsFalse (ringBuffer.Read (byBuf, 1));
139 }
140 };
141}
リングバッファに関するクラス
プリコンパイル済みヘッダー ファイルです。
リングバッファに関するクラス
Definition: RingBuffer.h:16
BOOL APIENTRY Read(LPBYTE lpbyBuffer, SIZE_T size)
バッファの読み込み
Definition: RingBuffer.cpp:89
BOOL APIENTRY Init(SIZE_T size)
初期化
Definition: RingBuffer.cpp:35
BOOL APIENTRY Write(LPBYTE lpbyBuffer, SIZE_T size)
バッファの書き込み
Definition: RingBuffer.cpp:59
SIZE_T APIENTRY Remain() const
残りバッファサイズの取得
Definition: RingBuffer.cpp:120
TEST_CLASS(ArrayTest)
Definition: ArrayTest.cpp:19