diff options
Diffstat (limited to 'tests/particlebody')
-rw-r--r-- | tests/particlebody/test.cpp | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/tests/particlebody/test.cpp b/tests/particlebody/test.cpp new file mode 100644 index 00000000..09277826 --- /dev/null +++ b/tests/particlebody/test.cpp @@ -0,0 +1,41 @@ +/** --------------------------------------------------------------------------- + * @file: particlebodytest.cpp + * + * Copyright (c) 2017 Yann Herklotz Grave <ymherklotz@gmail.com> + * MIT License, see LICENSE file for more details. + * ---------------------------------------------------------------------------- + */ + +#include <gtest/gtest.h> +#include <yage/yage.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(); +} |