OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "media/midi/midi_message_queue.h" | 5 #include "media/midi/midi_message_queue.h" |
6 | 6 |
7 #include "testing/gtest/include/gtest/gtest.h" | 7 #include "testing/gtest/include/gtest/gtest.h" |
8 | 8 |
9 namespace media { | 9 namespace media { |
10 namespace midi { | 10 namespace midi { |
11 namespace { | 11 namespace { |
12 | 12 |
13 const uint8 kGMOn[] = { 0xf0, 0x7e, 0x7f, 0x09, 0x01, 0xf7 }; | 13 const uint8_t kGMOn[] = {0xf0, 0x7e, 0x7f, 0x09, 0x01, 0xf7}; |
14 const uint8 kPartialGMOn1st[] = { 0xf0 }; | 14 const uint8_t kPartialGMOn1st[] = {0xf0}; |
15 const uint8 kPartialGMOn2nd[] = { 0x7e, 0x7f, 0x09, 0x01 }; | 15 const uint8_t kPartialGMOn2nd[] = {0x7e, 0x7f, 0x09, 0x01}; |
16 const uint8 kPartialGMOn3rd[] = { 0xf7 }; | 16 const uint8_t kPartialGMOn3rd[] = {0xf7}; |
17 const uint8 kGSOn[] = { | 17 const uint8_t kGSOn[] = { |
18 0xf0, 0x41, 0x10, 0x42, 0x12, 0x40, 0x00, 0x7f, 0x00, 0x41, 0xf7, | 18 0xf0, 0x41, 0x10, 0x42, 0x12, 0x40, 0x00, 0x7f, 0x00, 0x41, 0xf7, |
19 }; | 19 }; |
20 const uint8 kNoteOn[] = { 0x90, 0x3c, 0x7f }; | 20 const uint8_t kNoteOn[] = {0x90, 0x3c, 0x7f}; |
21 const uint8 kPartialNoteOn1st[] = { 0x90 }; | 21 const uint8_t kPartialNoteOn1st[] = {0x90}; |
22 const uint8 kPartialNoteOn2nd[] = { 0x3c }; | 22 const uint8_t kPartialNoteOn2nd[] = {0x3c}; |
23 const uint8 kPartialNoteOn3rd[] = { 0x7f }; | 23 const uint8_t kPartialNoteOn3rd[] = {0x7f}; |
24 | 24 |
25 const uint8 kNoteOnWithRunningStatus[] = { | 25 const uint8_t kNoteOnWithRunningStatus[] = { |
26 0x90, 0x3c, 0x7f, 0x3c, 0x7f, 0x3c, 0x7f, | 26 0x90, 0x3c, 0x7f, 0x3c, 0x7f, 0x3c, 0x7f, |
27 }; | 27 }; |
28 const uint8 kChannelPressure[] = { 0xd0, 0x01 }; | 28 const uint8_t kChannelPressure[] = {0xd0, 0x01}; |
29 const uint8 kChannelPressureWithRunningStatus[] = { | 29 const uint8_t kChannelPressureWithRunningStatus[] = { |
30 0xd0, 0x01, 0x01, 0x01, | 30 0xd0, 0x01, 0x01, 0x01, |
31 }; | 31 }; |
32 const uint8 kTimingClock[] = { 0xf8 }; | 32 const uint8_t kTimingClock[] = {0xf8}; |
33 const uint8 kSystemCommonMessageTuneRequest[] = { 0xf6 }; | 33 const uint8_t kSystemCommonMessageTuneRequest[] = {0xf6}; |
34 const uint8 kMTCFrame[] = { 0xf1, 0x00 }; | 34 const uint8_t kMTCFrame[] = {0xf1, 0x00}; |
35 const uint8 kBrokenData1[] = { 0x92 }; | 35 const uint8_t kBrokenData1[] = {0x92}; |
36 const uint8 kBrokenData2[] = { 0xf7 }; | 36 const uint8_t kBrokenData2[] = {0xf7}; |
37 const uint8 kBrokenData3[] = { 0xf2, 0x00 }; | 37 const uint8_t kBrokenData3[] = {0xf2, 0x00}; |
38 const uint8 kDataByte0[] = { 0x00 }; | 38 const uint8_t kDataByte0[] = {0x00}; |
39 | 39 |
40 const uint8 kReservedMessage1[] = { 0xf4 }; | 40 const uint8_t kReservedMessage1[] = {0xf4}; |
41 const uint8 kReservedMessage2[] = { 0xf5 }; | 41 const uint8_t kReservedMessage2[] = {0xf5}; |
42 const uint8 kReservedMessage1WithDataBytes[] = { | 42 const uint8_t kReservedMessage1WithDataBytes[] = {0xf4, 0x01, 0x01, |
43 0xf4, 0x01, 0x01, 0x01, 0x01, 0x01 | 43 0x01, 0x01, 0x01}; |
44 }; | |
45 | 44 |
46 template <typename T, size_t N> | 45 template <typename T, size_t N> |
47 void Add(MidiMessageQueue* queue, const T(&array)[N]) { | 46 void Add(MidiMessageQueue* queue, const T(&array)[N]) { |
48 queue->Add(array, N); | 47 queue->Add(array, N); |
49 } | 48 } |
50 | 49 |
51 template <typename T, size_t N> | 50 template <typename T, size_t N> |
52 ::testing::AssertionResult ExpectEqualSequence( | 51 ::testing::AssertionResult ExpectEqualSequence( |
53 const char* expr1, const char* expr2, | 52 const char* expr1, const char* expr2, |
54 const T(&expected)[N], const std::vector<T>& actual) { | 53 const T(&expected)[N], const std::vector<T>& actual) { |
(...skipping 10 matching lines...) Expand all Loading... |
65 } | 64 } |
66 } | 65 } |
67 return ::testing::AssertionSuccess(); | 66 return ::testing::AssertionSuccess(); |
68 } | 67 } |
69 | 68 |
70 #define EXPECT_MESSAGE(expected, actual) \ | 69 #define EXPECT_MESSAGE(expected, actual) \ |
71 EXPECT_PRED_FORMAT2(ExpectEqualSequence, expected, actual) | 70 EXPECT_PRED_FORMAT2(ExpectEqualSequence, expected, actual) |
72 | 71 |
73 TEST(MidiMessageQueueTest, EmptyData) { | 72 TEST(MidiMessageQueueTest, EmptyData) { |
74 MidiMessageQueue queue(false); | 73 MidiMessageQueue queue(false); |
75 std::vector<uint8> message; | 74 std::vector<uint8_t> message; |
76 queue.Get(&message); | 75 queue.Get(&message); |
77 EXPECT_TRUE(message.empty()); | 76 EXPECT_TRUE(message.empty()); |
78 } | 77 } |
79 | 78 |
80 TEST(MidiMessageQueueTest, RunningStatusDisabled) { | 79 TEST(MidiMessageQueueTest, RunningStatusDisabled) { |
81 MidiMessageQueue queue(false); | 80 MidiMessageQueue queue(false); |
82 Add(&queue, kGMOn); | 81 Add(&queue, kGMOn); |
83 Add(&queue, kBrokenData1); | 82 Add(&queue, kBrokenData1); |
84 Add(&queue, kNoteOnWithRunningStatus); | 83 Add(&queue, kNoteOnWithRunningStatus); |
85 Add(&queue, kBrokenData2); | 84 Add(&queue, kBrokenData2); |
86 Add(&queue, kChannelPressureWithRunningStatus); | 85 Add(&queue, kChannelPressureWithRunningStatus); |
87 Add(&queue, kBrokenData3); | 86 Add(&queue, kBrokenData3); |
88 Add(&queue, kNoteOn); | 87 Add(&queue, kNoteOn); |
89 Add(&queue, kBrokenData1); | 88 Add(&queue, kBrokenData1); |
90 Add(&queue, kGSOn); | 89 Add(&queue, kGSOn); |
91 Add(&queue, kBrokenData2); | 90 Add(&queue, kBrokenData2); |
92 Add(&queue, kTimingClock); | 91 Add(&queue, kTimingClock); |
93 Add(&queue, kBrokenData3); | 92 Add(&queue, kBrokenData3); |
94 | 93 |
95 std::vector<uint8> message; | 94 std::vector<uint8_t> message; |
96 queue.Get(&message); | 95 queue.Get(&message); |
97 EXPECT_MESSAGE(kGMOn, message); | 96 EXPECT_MESSAGE(kGMOn, message); |
98 queue.Get(&message); | 97 queue.Get(&message); |
99 EXPECT_MESSAGE(kNoteOn, message) << "Running status should be ignored"; | 98 EXPECT_MESSAGE(kNoteOn, message) << "Running status should be ignored"; |
100 queue.Get(&message); | 99 queue.Get(&message); |
101 EXPECT_MESSAGE(kChannelPressure, message) | 100 EXPECT_MESSAGE(kChannelPressure, message) |
102 << "Running status should be ignored"; | 101 << "Running status should be ignored"; |
103 queue.Get(&message); | 102 queue.Get(&message); |
104 EXPECT_MESSAGE(kNoteOn, message); | 103 EXPECT_MESSAGE(kNoteOn, message); |
105 queue.Get(&message); | 104 queue.Get(&message); |
(...skipping 12 matching lines...) Expand all Loading... |
118 Add(&queue, kBrokenData2); | 117 Add(&queue, kBrokenData2); |
119 Add(&queue, kChannelPressureWithRunningStatus); | 118 Add(&queue, kChannelPressureWithRunningStatus); |
120 Add(&queue, kBrokenData3); | 119 Add(&queue, kBrokenData3); |
121 Add(&queue, kNoteOn); | 120 Add(&queue, kNoteOn); |
122 Add(&queue, kBrokenData1); | 121 Add(&queue, kBrokenData1); |
123 Add(&queue, kGSOn); | 122 Add(&queue, kGSOn); |
124 Add(&queue, kBrokenData2); | 123 Add(&queue, kBrokenData2); |
125 Add(&queue, kTimingClock); | 124 Add(&queue, kTimingClock); |
126 Add(&queue, kDataByte0); | 125 Add(&queue, kDataByte0); |
127 | 126 |
128 std::vector<uint8> message; | 127 std::vector<uint8_t> message; |
129 queue.Get(&message); | 128 queue.Get(&message); |
130 EXPECT_MESSAGE(kGMOn, message); | 129 EXPECT_MESSAGE(kGMOn, message); |
131 queue.Get(&message); | 130 queue.Get(&message); |
132 EXPECT_MESSAGE(kNoteOn, message); | 131 EXPECT_MESSAGE(kNoteOn, message); |
133 queue.Get(&message); | 132 queue.Get(&message); |
134 EXPECT_MESSAGE(kNoteOn, message) | 133 EXPECT_MESSAGE(kNoteOn, message) |
135 << "Running status should be converted into a canonical MIDI message"; | 134 << "Running status should be converted into a canonical MIDI message"; |
136 queue.Get(&message); | 135 queue.Get(&message); |
137 EXPECT_MESSAGE(kNoteOn, message) | 136 EXPECT_MESSAGE(kNoteOn, message) |
138 << "Running status should be converted into a canonical MIDI message"; | 137 << "Running status should be converted into a canonical MIDI message"; |
(...skipping 11 matching lines...) Expand all Loading... |
150 EXPECT_MESSAGE(kGSOn, message); | 149 EXPECT_MESSAGE(kGSOn, message); |
151 queue.Get(&message); | 150 queue.Get(&message); |
152 EXPECT_MESSAGE(kTimingClock, message); | 151 EXPECT_MESSAGE(kTimingClock, message); |
153 queue.Get(&message); | 152 queue.Get(&message); |
154 EXPECT_TRUE(message.empty()) | 153 EXPECT_TRUE(message.empty()) |
155 << "Running status must not be applied to real time messages"; | 154 << "Running status must not be applied to real time messages"; |
156 } | 155 } |
157 | 156 |
158 TEST(MidiMessageQueueTest, RunningStatusEnabledWithRealTimeEvent) { | 157 TEST(MidiMessageQueueTest, RunningStatusEnabledWithRealTimeEvent) { |
159 MidiMessageQueue queue(true); | 158 MidiMessageQueue queue(true); |
160 const uint8 kNoteOnWithRunningStatusWithTimingClock[] = { | 159 const uint8_t kNoteOnWithRunningStatusWithTimingClock[] = { |
161 0x90, 0xf8, 0x3c, 0xf8, 0x7f, 0xf8, 0x3c, 0xf8, 0x7f, 0xf8, 0x3c, 0xf8, | 160 0x90, 0xf8, 0x3c, 0xf8, 0x7f, 0xf8, 0x3c, |
162 0x7f, | 161 0xf8, 0x7f, 0xf8, 0x3c, 0xf8, 0x7f, |
163 }; | 162 }; |
164 Add(&queue, kNoteOnWithRunningStatusWithTimingClock); | 163 Add(&queue, kNoteOnWithRunningStatusWithTimingClock); |
165 std::vector<uint8> message; | 164 std::vector<uint8_t> message; |
166 queue.Get(&message); | 165 queue.Get(&message); |
167 EXPECT_MESSAGE(kTimingClock, message); | 166 EXPECT_MESSAGE(kTimingClock, message); |
168 queue.Get(&message); | 167 queue.Get(&message); |
169 EXPECT_MESSAGE(kTimingClock, message); | 168 EXPECT_MESSAGE(kTimingClock, message); |
170 queue.Get(&message); | 169 queue.Get(&message); |
171 EXPECT_MESSAGE(kNoteOn, message); | 170 EXPECT_MESSAGE(kNoteOn, message); |
172 queue.Get(&message); | 171 queue.Get(&message); |
173 EXPECT_MESSAGE(kTimingClock, message); | 172 EXPECT_MESSAGE(kTimingClock, message); |
174 queue.Get(&message); | 173 queue.Get(&message); |
175 EXPECT_MESSAGE(kTimingClock, message); | 174 EXPECT_MESSAGE(kTimingClock, message); |
176 queue.Get(&message); | 175 queue.Get(&message); |
177 EXPECT_MESSAGE(kNoteOn, message); | 176 EXPECT_MESSAGE(kNoteOn, message); |
178 queue.Get(&message); | 177 queue.Get(&message); |
179 EXPECT_MESSAGE(kTimingClock, message); | 178 EXPECT_MESSAGE(kTimingClock, message); |
180 queue.Get(&message); | 179 queue.Get(&message); |
181 EXPECT_MESSAGE(kTimingClock, message); | 180 EXPECT_MESSAGE(kTimingClock, message); |
182 queue.Get(&message); | 181 queue.Get(&message); |
183 EXPECT_MESSAGE(kNoteOn, message); | 182 EXPECT_MESSAGE(kNoteOn, message); |
184 queue.Get(&message); | 183 queue.Get(&message); |
185 EXPECT_TRUE(message.empty()); | 184 EXPECT_TRUE(message.empty()); |
186 } | 185 } |
187 | 186 |
188 TEST(MidiMessageQueueTest, RunningStatusEnabledWithSystemCommonMessage) { | 187 TEST(MidiMessageQueueTest, RunningStatusEnabledWithSystemCommonMessage) { |
189 MidiMessageQueue queue(true); | 188 MidiMessageQueue queue(true); |
190 const uint8 kNoteOnWithRunningStatusWithSystemCommonMessage[] = { | 189 const uint8_t kNoteOnWithRunningStatusWithSystemCommonMessage[] = { |
191 0x90, 0x3c, 0x7f, 0xf1, 0x00, 0x3c, 0x7f, 0xf8, 0x90, 0x3c, 0x7f, | 190 0x90, 0x3c, 0x7f, 0xf1, 0x00, 0x3c, 0x7f, 0xf8, 0x90, 0x3c, 0x7f, |
192 }; | 191 }; |
193 Add(&queue, kNoteOnWithRunningStatusWithSystemCommonMessage); | 192 Add(&queue, kNoteOnWithRunningStatusWithSystemCommonMessage); |
194 std::vector<uint8> message; | 193 std::vector<uint8_t> message; |
195 queue.Get(&message); | 194 queue.Get(&message); |
196 EXPECT_MESSAGE(kNoteOn, message); | 195 EXPECT_MESSAGE(kNoteOn, message); |
197 queue.Get(&message); | 196 queue.Get(&message); |
198 EXPECT_MESSAGE(kMTCFrame, message); | 197 EXPECT_MESSAGE(kMTCFrame, message); |
199 queue.Get(&message); | 198 queue.Get(&message); |
200 EXPECT_MESSAGE(kTimingClock, message) << "Running status should be reset"; | 199 EXPECT_MESSAGE(kTimingClock, message) << "Running status should be reset"; |
201 queue.Get(&message); | 200 queue.Get(&message); |
202 EXPECT_MESSAGE(kNoteOn, message); | 201 EXPECT_MESSAGE(kNoteOn, message); |
203 queue.Get(&message); | 202 queue.Get(&message); |
204 EXPECT_TRUE(message.empty()); | 203 EXPECT_TRUE(message.empty()); |
205 } | 204 } |
206 | 205 |
207 TEST(MidiMessageQueueTest, Issue540016) { | 206 TEST(MidiMessageQueueTest, Issue540016) { |
208 const uint8 kData[] = { 0xf4, 0x3a }; | 207 const uint8_t kData[] = {0xf4, 0x3a}; |
209 MidiMessageQueue queue(false); | 208 MidiMessageQueue queue(false); |
210 Add(&queue, kData); | 209 Add(&queue, kData); |
211 std::vector<uint8> message; | 210 std::vector<uint8_t> message; |
212 queue.Get(&message); | 211 queue.Get(&message); |
213 EXPECT_TRUE(message.empty()); | 212 EXPECT_TRUE(message.empty()); |
214 } | 213 } |
215 | 214 |
216 TEST(MidiMessageQueueTest, ReconstructNonSysExMessage) { | 215 TEST(MidiMessageQueueTest, ReconstructNonSysExMessage) { |
217 MidiMessageQueue queue(true); | 216 MidiMessageQueue queue(true); |
218 std::vector<uint8> message; | 217 std::vector<uint8_t> message; |
219 | 218 |
220 Add(&queue, kPartialNoteOn1st); | 219 Add(&queue, kPartialNoteOn1st); |
221 queue.Get(&message); | 220 queue.Get(&message); |
222 EXPECT_TRUE(message.empty()); | 221 EXPECT_TRUE(message.empty()); |
223 | 222 |
224 Add(&queue, kPartialNoteOn2nd); | 223 Add(&queue, kPartialNoteOn2nd); |
225 queue.Get(&message); | 224 queue.Get(&message); |
226 EXPECT_TRUE(message.empty()); | 225 EXPECT_TRUE(message.empty()); |
227 | 226 |
228 Add(&queue, kPartialNoteOn3rd); | 227 Add(&queue, kPartialNoteOn3rd); |
229 queue.Get(&message); | 228 queue.Get(&message); |
230 EXPECT_MESSAGE(kNoteOn, message); | 229 EXPECT_MESSAGE(kNoteOn, message); |
231 | 230 |
232 queue.Get(&message); | 231 queue.Get(&message); |
233 EXPECT_TRUE(message.empty()); | 232 EXPECT_TRUE(message.empty()); |
234 } | 233 } |
235 | 234 |
236 TEST(MidiMessageQueueTest, ReconstructBrokenNonSysExMessage) { | 235 TEST(MidiMessageQueueTest, ReconstructBrokenNonSysExMessage) { |
237 MidiMessageQueue queue(true); | 236 MidiMessageQueue queue(true); |
238 std::vector<uint8> message; | 237 std::vector<uint8_t> message; |
239 | 238 |
240 Add(&queue, kPartialNoteOn1st); | 239 Add(&queue, kPartialNoteOn1st); |
241 queue.Get(&message); | 240 queue.Get(&message); |
242 EXPECT_TRUE(message.empty()); | 241 EXPECT_TRUE(message.empty()); |
243 | 242 |
244 Add(&queue, kPartialNoteOn2nd); | 243 Add(&queue, kPartialNoteOn2nd); |
245 queue.Get(&message); | 244 queue.Get(&message); |
246 EXPECT_TRUE(message.empty()); | 245 EXPECT_TRUE(message.empty()); |
247 | 246 |
248 Add(&queue, kPartialGMOn1st); | 247 Add(&queue, kPartialGMOn1st); |
249 queue.Get(&message); | 248 queue.Get(&message); |
250 EXPECT_TRUE(message.empty()); | 249 EXPECT_TRUE(message.empty()); |
251 | 250 |
252 Add(&queue, kPartialNoteOn3rd); | 251 Add(&queue, kPartialNoteOn3rd); |
253 queue.Get(&message); | 252 queue.Get(&message); |
254 EXPECT_TRUE(message.empty()); | 253 EXPECT_TRUE(message.empty()); |
255 } | 254 } |
256 | 255 |
257 TEST(MidiMessageQueueTest, ReconstructSysExMessage) { | 256 TEST(MidiMessageQueueTest, ReconstructSysExMessage) { |
258 MidiMessageQueue queue(true); | 257 MidiMessageQueue queue(true); |
259 std::vector<uint8> message; | 258 std::vector<uint8_t> message; |
260 | 259 |
261 Add(&queue, kPartialGMOn1st); | 260 Add(&queue, kPartialGMOn1st); |
262 queue.Get(&message); | 261 queue.Get(&message); |
263 EXPECT_TRUE(message.empty()); | 262 EXPECT_TRUE(message.empty()); |
264 | 263 |
265 Add(&queue, kPartialGMOn2nd); | 264 Add(&queue, kPartialGMOn2nd); |
266 queue.Get(&message); | 265 queue.Get(&message); |
267 EXPECT_TRUE(message.empty()); | 266 EXPECT_TRUE(message.empty()); |
268 | 267 |
269 Add(&queue, kPartialGMOn3rd); | 268 Add(&queue, kPartialGMOn3rd); |
270 queue.Get(&message); | 269 queue.Get(&message); |
271 EXPECT_MESSAGE(kGMOn, message); | 270 EXPECT_MESSAGE(kGMOn, message); |
272 | 271 |
273 queue.Get(&message); | 272 queue.Get(&message); |
274 EXPECT_TRUE(message.empty()); | 273 EXPECT_TRUE(message.empty()); |
275 } | 274 } |
276 | 275 |
277 TEST(MidiMessageQueueTest, ReconstructBrokenSysExMessage) { | 276 TEST(MidiMessageQueueTest, ReconstructBrokenSysExMessage) { |
278 MidiMessageQueue queue(true); | 277 MidiMessageQueue queue(true); |
279 std::vector<uint8> message; | 278 std::vector<uint8_t> message; |
280 | 279 |
281 Add(&queue, kPartialGMOn1st); | 280 Add(&queue, kPartialGMOn1st); |
282 queue.Get(&message); | 281 queue.Get(&message); |
283 EXPECT_TRUE(message.empty()); | 282 EXPECT_TRUE(message.empty()); |
284 | 283 |
285 Add(&queue, kPartialGMOn2nd); | 284 Add(&queue, kPartialGMOn2nd); |
286 queue.Get(&message); | 285 queue.Get(&message); |
287 EXPECT_TRUE(message.empty()); | 286 EXPECT_TRUE(message.empty()); |
288 | 287 |
289 Add(&queue, kPartialNoteOn1st); | 288 Add(&queue, kPartialNoteOn1st); |
290 queue.Get(&message); | 289 queue.Get(&message); |
291 EXPECT_TRUE(message.empty()); | 290 EXPECT_TRUE(message.empty()); |
292 | 291 |
293 Add(&queue, kPartialGMOn3rd); | 292 Add(&queue, kPartialGMOn3rd); |
294 queue.Get(&message); | 293 queue.Get(&message); |
295 EXPECT_TRUE(message.empty()); | 294 EXPECT_TRUE(message.empty()); |
296 | 295 |
297 queue.Get(&message); | 296 queue.Get(&message); |
298 EXPECT_TRUE(message.empty()); | 297 EXPECT_TRUE(message.empty()); |
299 } | 298 } |
300 | 299 |
301 TEST(MidiMessageQueueTest, OneByteMessage) { | 300 TEST(MidiMessageQueueTest, OneByteMessage) { |
302 MidiMessageQueue queue(true); | 301 MidiMessageQueue queue(true); |
303 std::vector<uint8> message; | 302 std::vector<uint8_t> message; |
304 | 303 |
305 Add(&queue, kSystemCommonMessageTuneRequest); | 304 Add(&queue, kSystemCommonMessageTuneRequest); |
306 Add(&queue, kSystemCommonMessageTuneRequest); | 305 Add(&queue, kSystemCommonMessageTuneRequest); |
307 Add(&queue, kSystemCommonMessageTuneRequest); | 306 Add(&queue, kSystemCommonMessageTuneRequest); |
308 Add(&queue, kSystemCommonMessageTuneRequest); | 307 Add(&queue, kSystemCommonMessageTuneRequest); |
309 Add(&queue, kNoteOn); | 308 Add(&queue, kNoteOn); |
310 Add(&queue, kSystemCommonMessageTuneRequest); | 309 Add(&queue, kSystemCommonMessageTuneRequest); |
311 Add(&queue, kNoteOn); | 310 Add(&queue, kNoteOn); |
312 Add(&queue, kNoteOn); | 311 Add(&queue, kNoteOn); |
313 Add(&queue, kSystemCommonMessageTuneRequest); | 312 Add(&queue, kSystemCommonMessageTuneRequest); |
(...skipping 15 matching lines...) Expand all Loading... |
329 queue.Get(&message); | 328 queue.Get(&message); |
330 EXPECT_MESSAGE(kNoteOn, message); | 329 EXPECT_MESSAGE(kNoteOn, message); |
331 queue.Get(&message); | 330 queue.Get(&message); |
332 EXPECT_MESSAGE(kSystemCommonMessageTuneRequest, message); | 331 EXPECT_MESSAGE(kSystemCommonMessageTuneRequest, message); |
333 queue.Get(&message); | 332 queue.Get(&message); |
334 EXPECT_TRUE(message.empty()); | 333 EXPECT_TRUE(message.empty()); |
335 } | 334 } |
336 | 335 |
337 TEST(MidiMessageQueueTest, OneByteMessageInjectedInNonSysExMessage) { | 336 TEST(MidiMessageQueueTest, OneByteMessageInjectedInNonSysExMessage) { |
338 MidiMessageQueue queue(true); | 337 MidiMessageQueue queue(true); |
339 std::vector<uint8> message; | 338 std::vector<uint8_t> message; |
340 | 339 |
341 Add(&queue, kPartialNoteOn1st); | 340 Add(&queue, kPartialNoteOn1st); |
342 queue.Get(&message); | 341 queue.Get(&message); |
343 EXPECT_TRUE(message.empty()); | 342 EXPECT_TRUE(message.empty()); |
344 | 343 |
345 Add(&queue, kPartialNoteOn2nd); | 344 Add(&queue, kPartialNoteOn2nd); |
346 queue.Get(&message); | 345 queue.Get(&message); |
347 EXPECT_TRUE(message.empty()); | 346 EXPECT_TRUE(message.empty()); |
348 | 347 |
349 Add(&queue, kSystemCommonMessageTuneRequest); | 348 Add(&queue, kSystemCommonMessageTuneRequest); |
350 queue.Get(&message); | 349 queue.Get(&message); |
351 EXPECT_MESSAGE(kSystemCommonMessageTuneRequest, message); | 350 EXPECT_MESSAGE(kSystemCommonMessageTuneRequest, message); |
352 | 351 |
353 queue.Get(&message); | 352 queue.Get(&message); |
354 EXPECT_TRUE(message.empty()); | 353 EXPECT_TRUE(message.empty()); |
355 | 354 |
356 Add(&queue, kPartialNoteOn3rd); | 355 Add(&queue, kPartialNoteOn3rd); |
357 queue.Get(&message); | 356 queue.Get(&message); |
358 EXPECT_TRUE(message.empty()); | 357 EXPECT_TRUE(message.empty()); |
359 } | 358 } |
360 | 359 |
361 TEST(MidiMessageQueueTest, OneByteMessageInjectedInSysExMessage) { | 360 TEST(MidiMessageQueueTest, OneByteMessageInjectedInSysExMessage) { |
362 MidiMessageQueue queue(true); | 361 MidiMessageQueue queue(true); |
363 std::vector<uint8> message; | 362 std::vector<uint8_t> message; |
364 | 363 |
365 Add(&queue, kPartialGMOn1st); | 364 Add(&queue, kPartialGMOn1st); |
366 queue.Get(&message); | 365 queue.Get(&message); |
367 EXPECT_TRUE(message.empty()); | 366 EXPECT_TRUE(message.empty()); |
368 | 367 |
369 Add(&queue, kPartialGMOn2nd); | 368 Add(&queue, kPartialGMOn2nd); |
370 queue.Get(&message); | 369 queue.Get(&message); |
371 EXPECT_TRUE(message.empty()); | 370 EXPECT_TRUE(message.empty()); |
372 | 371 |
373 Add(&queue, kSystemCommonMessageTuneRequest); | 372 Add(&queue, kSystemCommonMessageTuneRequest); |
374 queue.Get(&message); | 373 queue.Get(&message); |
375 EXPECT_MESSAGE(kSystemCommonMessageTuneRequest, message); | 374 EXPECT_MESSAGE(kSystemCommonMessageTuneRequest, message); |
376 | 375 |
377 queue.Get(&message); | 376 queue.Get(&message); |
378 EXPECT_TRUE(message.empty()); | 377 EXPECT_TRUE(message.empty()); |
379 | 378 |
380 Add(&queue, kPartialGMOn3rd); | 379 Add(&queue, kPartialGMOn3rd); |
381 queue.Get(&message); | 380 queue.Get(&message); |
382 EXPECT_TRUE(message.empty()); | 381 EXPECT_TRUE(message.empty()); |
383 } | 382 } |
384 | 383 |
385 TEST(MidiMessageQueueTest, ReservedMessage) { | 384 TEST(MidiMessageQueueTest, ReservedMessage) { |
386 MidiMessageQueue queue(true); | 385 MidiMessageQueue queue(true); |
387 std::vector<uint8> message; | 386 std::vector<uint8_t> message; |
388 | 387 |
389 Add(&queue, kReservedMessage1); | 388 Add(&queue, kReservedMessage1); |
390 Add(&queue, kNoteOn); | 389 Add(&queue, kNoteOn); |
391 Add(&queue, kReservedMessage2); | 390 Add(&queue, kReservedMessage2); |
392 Add(&queue, kNoteOn); | 391 Add(&queue, kNoteOn); |
393 Add(&queue, kReservedMessage1WithDataBytes); | 392 Add(&queue, kReservedMessage1WithDataBytes); |
394 Add(&queue, kNoteOn); | 393 Add(&queue, kNoteOn); |
395 Add(&queue, kReservedMessage2); | 394 Add(&queue, kReservedMessage2); |
396 Add(&queue, kReservedMessage1WithDataBytes); | 395 Add(&queue, kReservedMessage1WithDataBytes); |
397 Add(&queue, kNoteOn); | 396 Add(&queue, kNoteOn); |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
468 | 467 |
469 Add(&queue, kNoteOn); | 468 Add(&queue, kNoteOn); |
470 queue.Get(&message); | 469 queue.Get(&message); |
471 EXPECT_MESSAGE(kNoteOn, message); | 470 EXPECT_MESSAGE(kNoteOn, message); |
472 queue.Get(&message); | 471 queue.Get(&message); |
473 EXPECT_TRUE(message.empty()); | 472 EXPECT_TRUE(message.empty()); |
474 } | 473 } |
475 | 474 |
476 TEST(MidiMessageQueueTest, ReservedMessageInjectedInNonSysExMessage) { | 475 TEST(MidiMessageQueueTest, ReservedMessageInjectedInNonSysExMessage) { |
477 MidiMessageQueue queue(true); | 476 MidiMessageQueue queue(true); |
478 std::vector<uint8> message; | 477 std::vector<uint8_t> message; |
479 | 478 |
480 // Inject |kReservedMessage1| | 479 // Inject |kReservedMessage1| |
481 Add(&queue, kPartialNoteOn1st); | 480 Add(&queue, kPartialNoteOn1st); |
482 queue.Get(&message); | 481 queue.Get(&message); |
483 EXPECT_TRUE(message.empty()); | 482 EXPECT_TRUE(message.empty()); |
484 Add(&queue, kPartialNoteOn2nd); | 483 Add(&queue, kPartialNoteOn2nd); |
485 queue.Get(&message); | 484 queue.Get(&message); |
486 EXPECT_TRUE(message.empty()); | 485 EXPECT_TRUE(message.empty()); |
487 Add(&queue, kReservedMessage1); | 486 Add(&queue, kReservedMessage1); |
488 queue.Get(&message); | 487 queue.Get(&message); |
(...skipping 26 matching lines...) Expand all Loading... |
515 Add(&queue, kReservedMessage1WithDataBytes); | 514 Add(&queue, kReservedMessage1WithDataBytes); |
516 queue.Get(&message); | 515 queue.Get(&message); |
517 EXPECT_TRUE(message.empty()); | 516 EXPECT_TRUE(message.empty()); |
518 Add(&queue, kPartialNoteOn3rd); | 517 Add(&queue, kPartialNoteOn3rd); |
519 queue.Get(&message); | 518 queue.Get(&message); |
520 EXPECT_TRUE(message.empty()); | 519 EXPECT_TRUE(message.empty()); |
521 } | 520 } |
522 | 521 |
523 TEST(MidiMessageQueueTest, ReservedMessageInjectedInSysExMessage) { | 522 TEST(MidiMessageQueueTest, ReservedMessageInjectedInSysExMessage) { |
524 MidiMessageQueue queue(true); | 523 MidiMessageQueue queue(true); |
525 std::vector<uint8> message; | 524 std::vector<uint8_t> message; |
526 | 525 |
527 // Inject |kReservedMessage1| | 526 // Inject |kReservedMessage1| |
528 Add(&queue, kPartialGMOn1st); | 527 Add(&queue, kPartialGMOn1st); |
529 queue.Get(&message); | 528 queue.Get(&message); |
530 EXPECT_TRUE(message.empty()); | 529 EXPECT_TRUE(message.empty()); |
531 Add(&queue, kPartialGMOn2nd); | 530 Add(&queue, kPartialGMOn2nd); |
532 queue.Get(&message); | 531 queue.Get(&message); |
533 EXPECT_TRUE(message.empty()); | 532 EXPECT_TRUE(message.empty()); |
534 Add(&queue, kReservedMessage1); | 533 Add(&queue, kReservedMessage1); |
535 queue.Get(&message); | 534 queue.Get(&message); |
(...skipping 27 matching lines...) Expand all Loading... |
563 queue.Get(&message); | 562 queue.Get(&message); |
564 EXPECT_TRUE(message.empty()); | 563 EXPECT_TRUE(message.empty()); |
565 Add(&queue, kPartialGMOn3rd); | 564 Add(&queue, kPartialGMOn3rd); |
566 queue.Get(&message); | 565 queue.Get(&message); |
567 EXPECT_TRUE(message.empty()); | 566 EXPECT_TRUE(message.empty()); |
568 } | 567 } |
569 | 568 |
570 } // namespace | 569 } // namespace |
571 } // namespace midi | 570 } // namespace midi |
572 } // namespace media | 571 } // namespace media |
OLD | NEW |