blob: fed54d6d22924b9f5148998d4d174016bc3bbc7f [file] [log] [blame]
Brian Silvermaneda63f32017-10-08 18:57:33 -04001#include "motors/usb/queue.h"
2
3#include "gtest/gtest.h"
4
5namespace frc971 {
6namespace teensy {
7namespace testing {
8
9TEST(QueueTest, Basic) {
10 Queue queue(64);
11 ASSERT_EQ(0u, queue.data_queued());
12 ASSERT_TRUE(queue.empty());
13 ASSERT_EQ(5u, queue.Write("abcde", 5));
14 ASSERT_EQ(5u, queue.data_queued());
15 ASSERT_FALSE(queue.empty());
16 char buffer[5];
17 ASSERT_EQ(5u, queue.Read(buffer, 5));
18 ASSERT_EQ("abcde", ::std::string(buffer, 5));
19 ASSERT_TRUE(queue.empty());
20}
21
22TEST(QueueTest, Fill) {
23 Queue queue(8);
24 ASSERT_EQ(0u, queue.data_queued());
25 ASSERT_EQ(7u, queue.Write("abcdefgh", 8));
26 ASSERT_EQ(7u, queue.data_queued());
27 char buffer[7];
28 ASSERT_EQ(7u, queue.Read(buffer, 100));
29 ASSERT_EQ("abcdefg", ::std::string(buffer, 7));
30 ASSERT_TRUE(queue.empty());
31
32 ASSERT_EQ(3u, queue.Write("xyz", 3));
33 ASSERT_EQ(3u, queue.Read(buffer, 100));
34 ASSERT_EQ(0u, queue.data_queued());
35
36 ASSERT_EQ(7u, queue.Write("abcdefgh", 8));
37 ASSERT_EQ(7u, queue.data_queued());
38 ASSERT_EQ(7u, queue.Read(buffer, 100));
39 ASSERT_EQ("abcdefg", ::std::string(buffer, 7));
40 ASSERT_TRUE(queue.empty());
41}
42
43} // namespace testing
44} // namespace teensy
45} // namespace frc971