aboutsummaryrefslogtreecommitdiffstats
path: root/tests/particlebodytest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/particlebodytest.cpp')
-rw-r--r--tests/particlebodytest.cpp41
1 files changed, 41 insertions, 0 deletions
diff --git a/tests/particlebodytest.cpp b/tests/particlebodytest.cpp
new file mode 100644
index 00000000..4b8c92b2
--- /dev/null
+++ b/tests/particlebodytest.cpp
@@ -0,0 +1,41 @@
+/* ----------------------------------------------------------------------------
+ * rigidbodytest.cpp
+ *
+ * Copyright (c) 2017 Yann Herklotz Grave <ymherklotz@gmail.com> -- MIT License
+ * See file LICENSE for more details
+ * ----------------------------------------------------------------------------
+ */
+
+#include <yage/yage.h>
+#include <gtest/gtest.h>
+
+#include <cmath>
+#include <cstdlib>
+
+double gravityAcceleration(int iterations)
+{
+ yage::ParticleBody body;
+ for (int i = 0; i < 60 * iterations; ++i) {
+ body.update();
+ }
+
+ return body.yPosition();
+}
+
+// Tests
+
+TEST(ParticleBody, Gravity)
+{
+ int randomItr = rand() % 10;
+ double idealPosition = 0.5 * -9.81 * std::pow(randomItr, 2);
+
+ ASSERT_GE(idealPosition * 0.95, gravityAcceleration(randomItr));
+ ASSERT_LE(idealPosition * 1.05, gravityAcceleration(randomItr));
+}
+
+int main(int argc, char **argv)
+{
+ testing::InitGoogleTest(&argc, argv);
+ srand(static_cast<unsigned>(time(nullptr)));
+ return RUN_ALL_TESTS();
+}