Added zeroing to ADIS16448
Broke out averaging from gyro_sender into a new class.
Change-Id: Iedaa0a7bd39337dbbe61a6d856ce28227f2747a5
diff --git a/frc971/zeroing/averager_test.cc b/frc971/zeroing/averager_test.cc
new file mode 100644
index 0000000..930a3cb
--- /dev/null
+++ b/frc971/zeroing/averager_test.cc
@@ -0,0 +1,35 @@
+#include "gtest/gtest.h"
+#include "frc971/zeroing/averager.h"
+
+namespace frc971 {
+namespace zeroing {
+
+class AveragerTest : public ::testing::Test {
+ protected:
+ void SetUp() override {}
+};
+
+// Makes sure that we can compute the average of a bunch of integers.
+TEST_F(AveragerTest, ComputeIntegerAverage) {
+ Averager<int, 6> averager;
+ for (size_t i = 0; i < averager.size(); ++i) {
+ ASSERT_FALSE(averager.full());
+ averager.AddData(static_cast<int>(i));
+ }
+ ASSERT_TRUE(averager.full());
+ ASSERT_EQ(2, averager.GetAverage());
+}
+
+// Makes sure that we can compute the average of a bunch of floats.
+TEST_F(AveragerTest, ComputeFloatAverage) {
+ Averager<float, 100> averager;
+ for (size_t i = 0; i < averager.size(); ++i) {
+ ASSERT_FALSE(averager.full());
+ averager.AddData(static_cast<float>(i) / 3.0);
+ }
+ ASSERT_TRUE(averager.full());
+ ASSERT_NEAR(16.5, averager.GetAverage(), 0.001);
+}
+
+} // namespace zeroing
+} // namespace frc971