Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(83)

Side by Side Diff: platforms/stm/disco_fletch/src/circular_buffer_test.cc

Issue 1659163007: Rename fletch -> dartino (Closed) Base URL: https://github.com/dartino/sdk.git@master
Patch Set: address comments Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright (c) 2015, the Dartino project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE.md file.
4
5 #include <stdio.h>
6 #include <cinttypes>
7
8 #define TESTING
9 #include "src/shared/assert.h"
10 #include "src/shared/atomic.h"
11
12 #include "platforms/stm/disco_fletch/src/circular_buffer.h"
13
14 void compare_buffers(uint8_t* buffer1, uint8_t* buffer2, int size) {
15 for (int i = 0; i < size; i++) {
16 EXPECT_EQ(buffer1[i], buffer2[i]);
17 }
18 }
19
20 // This test will alternate between write and read, and always try to write
21 // 'to_write' bytes and read 'to_read' bytes. This will continue until 1000
22 // bytes have been both written and read.
23 void write_read_test(int to_write, int to_read) {
24 const int size = 1000;
25 uint8_t* write_data = new uint8_t[size];
26 uint8_t* read_data = new uint8_t[size];
27 for (int i = 0; i < size; i++) {
28 write_data[i] = i % 0xff;
29 }
30
31 const int buffer_size = 100;
32 CircularBuffer* cb = new CircularBuffer(buffer_size);
33
34 for (int i = 0; i < size; i++) {
35 read_data[i] = 0;
36 }
37
38 int buffer_content = 0;
39 int total_written = 0;
40 int total_read = 0;
41 while (total_written < size || total_read < size) {
42 int bytes = MIN(to_write, size - total_written);
43 int written = cb->Write(
44 write_data + total_written, bytes, CircularBuffer::kDontBlock);
45 EXPECT_LE(written, bytes);
46 EXPECT_LE(written, buffer_size - buffer_content);
47 total_written += written;
48 buffer_content += written;
49 EXPECT_LE(buffer_content, buffer_size);
50 if (buffer_content == buffer_size) {
51 EXPECT(cb->IsFull());
52 EXPECT_EQ(0, cb->Write(write_data + total_written,
53 bytes,
54 CircularBuffer::kDontBlock));
55 }
56
57 int read =
58 cb->Read(read_data + total_read, to_read, CircularBuffer::kDontBlock);
59 EXPECT_LE(read, to_read);
60 EXPECT_LE(read, buffer_content);
61 total_read += read;
62 buffer_content -= read;
63 EXPECT_GE(buffer_content, 0);
64 if (buffer_content == 0) {
65 EXPECT(cb->IsEmpty());
66 EXPECT_EQ(0, cb->Read(read_data + total_read,
67 to_read,
68 CircularBuffer::kDontBlock));
69 }
70 }
71 compare_buffers(write_data, read_data, size);
72 }
73
74 // This test will alternate between writing and reading the full
75 // capacity of the buffer.
76 void write_test() {
77 const int buffer_size = 100;
78 uint8_t* write_data = new uint8_t[buffer_size];
79 uint8_t* read_data = new uint8_t[buffer_size];
80 for (int i = 0; i < buffer_size; i++) {
81 write_data[i] = i % 0xff;
82 }
83 for (int i = 0; i < buffer_size; i++) {
84 read_data[i] = 0;
85 }
86
87 CircularBuffer* cb = new CircularBuffer(buffer_size);
88
89 for (int i = 0; i < buffer_size; i++) {
90 EXPECT_EQ(buffer_size,
91 cb->Write(write_data, buffer_size, CircularBuffer::kDontBlock));
92 EXPECT(cb->IsFull());
93 EXPECT_EQ(buffer_size,
94 cb->Read(read_data, buffer_size, CircularBuffer::kDontBlock));
95 EXPECT(cb->IsEmpty());
96
97 compare_buffers(write_data, read_data, buffer_size);
98 }
99 }
100
101 int main(int argc, char** argv) {
102 write_test();
103
104 for (int i = 1; i < 10; i++) {
105 for (int j = 1; j < 10; j++) {
106 write_read_test(i, j);
107 }
108 }
109 }
OLDNEW
« no previous file with comments | « platforms/stm/disco_fletch/src/circular_buffer.cc ('k') | platforms/stm/disco_fletch/src/cmpctmalloc.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698