blob: 4d11349fea9c73054b90ae9d99183e110186599f [file] [log] [blame]
Brian Silvermanf91524f2017-09-23 13:15:55 -04001#include "motors/usb/constants.h"
2
3#include "gtest/gtest.h"
4
5namespace frc971 {
6namespace teensy {
7namespace testing {
8
9TEST(EndpointBufferStateTest, Filling) {
10 EXPECT_TRUE(BufferStateHasEmpty(EndpointBufferState::kBothEmptyEvenFirst));
11 EXPECT_EQ(EvenOdd::kEven,
12 BufferStateToFill(EndpointBufferState::kBothEmptyEvenFirst));
13
14 EXPECT_TRUE(BufferStateHasEmpty(EndpointBufferState::kBothEmptyOddFirst));
15 EXPECT_EQ(EvenOdd::kOdd,
16 BufferStateToFill(EndpointBufferState::kBothEmptyOddFirst));
17
18 EXPECT_TRUE(BufferStateHasEmpty(EndpointBufferState::kEvenFull));
19 EXPECT_EQ(EvenOdd::kOdd, BufferStateToFill(EndpointBufferState::kEvenFull));
20
21 EXPECT_TRUE(BufferStateHasEmpty(EndpointBufferState::kOddFull));
22 EXPECT_EQ(EvenOdd::kEven, BufferStateToFill(EndpointBufferState::kOddFull));
23
24 EXPECT_FALSE(BufferStateHasEmpty(EndpointBufferState::kBothFullEvenFirst));
25}
26
27TEST(EndpointBufferStateTest, Emptying) {
28 EXPECT_FALSE(BufferStateHasFull(EndpointBufferState::kBothEmptyEvenFirst));
29
30 EXPECT_FALSE(BufferStateHasFull(EndpointBufferState::kBothEmptyOddFirst));
31
32 EXPECT_TRUE(BufferStateHasFull(EndpointBufferState::kEvenFull));
33 EXPECT_EQ(EvenOdd::kEven, BufferStateToEmpty(EndpointBufferState::kEvenFull));
34
35 EXPECT_TRUE(BufferStateHasFull(EndpointBufferState::kOddFull));
36 EXPECT_EQ(EvenOdd::kOdd, BufferStateToEmpty(EndpointBufferState::kOddFull));
37
38 EXPECT_TRUE(BufferStateHasFull(EndpointBufferState::kBothFullEvenFirst));
39 EXPECT_EQ(EvenOdd::kEven,
40 BufferStateToEmpty(EndpointBufferState::kBothFullEvenFirst));
41}
42
43TEST(EndpointBufferStateTest, Transitions) {
44 EXPECT_EQ(EndpointBufferState::kEvenFull,
45 BufferStateAfterFill(EndpointBufferState::kBothEmptyEvenFirst));
46
47 EXPECT_EQ(EndpointBufferState::kOddFull,
48 BufferStateAfterFill(EndpointBufferState::kBothEmptyOddFirst));
49
50 EXPECT_EQ(EndpointBufferState::kBothFullEvenFirst,
51 BufferStateAfterFill(EndpointBufferState::kEvenFull));
52 EXPECT_EQ(EndpointBufferState::kBothEmptyOddFirst,
53 BufferStateAfterEmpty(EndpointBufferState::kEvenFull));
54
55 EXPECT_EQ(EndpointBufferState::kBothFullOddFirst,
56 BufferStateAfterFill(EndpointBufferState::kOddFull));
57 EXPECT_EQ(EndpointBufferState::kBothEmptyEvenFirst,
58 BufferStateAfterEmpty(EndpointBufferState::kOddFull));
59
60 EXPECT_EQ(EndpointBufferState::kOddFull,
61 BufferStateAfterEmpty(EndpointBufferState::kBothFullEvenFirst));
62}
63
64} // namespace testing
65} // namespace teensy
66} // namespace frc971