Add tests for sf::Joystick

This commit is contained in:
Chris Thrasher 2023-09-23 19:22:30 -06:00
parent 856a81f62b
commit f40d5ac21d
2 changed files with 77 additions and 0 deletions

View File

@ -66,6 +66,7 @@ set(WINDOW_SRC
Window/Cursor.test.cpp Window/Cursor.test.cpp
Window/Event.test.cpp Window/Event.test.cpp
Window/GlResource.test.cpp Window/GlResource.test.cpp
Window/Joystick.test.cpp
Window/Keyboard.test.cpp Window/Keyboard.test.cpp
Window/VideoMode.test.cpp Window/VideoMode.test.cpp
Window/Window.test.cpp Window/Window.test.cpp

View File

@ -0,0 +1,76 @@
#include <SFML/Window/Joystick.hpp>
#include <catch2/catch_test_macros.hpp>
#include <catch2/generators/catch_generators_range.hpp>
TEST_CASE("[Window] sf::Joystick")
{
SECTION("Constants")
{
STATIC_CHECK(sf::Joystick::Count == 8);
STATIC_CHECK(sf::Joystick::ButtonCount == 32);
STATIC_CHECK(sf::Joystick::AxisCount == 8);
}
SECTION("Identification")
{
const sf::Joystick::Identification identification;
CHECK(identification.name == "No Joystick");
CHECK(identification.vendorId == 0);
CHECK(identification.productId == 0);
}
// By avoiding calling sf::Joystick::update() we can guarantee that
// no joysticks will be detected. This is how we can ensure these
// tests are portable and reliable.
const auto joystick = GENERATE(range(0u, sf::Joystick::Count - 1));
SECTION("isConnected()")
{
CHECK(!sf::Joystick::isConnected(joystick));
}
SECTION("getButtonCount()")
{
CHECK(sf::Joystick::getButtonCount(joystick) == 0);
}
SECTION("hasAxis()")
{
CHECK(!sf::Joystick::hasAxis(joystick, sf::Joystick::X));
CHECK(!sf::Joystick::hasAxis(joystick, sf::Joystick::Y));
CHECK(!sf::Joystick::hasAxis(joystick, sf::Joystick::Z));
CHECK(!sf::Joystick::hasAxis(joystick, sf::Joystick::R));
CHECK(!sf::Joystick::hasAxis(joystick, sf::Joystick::U));
CHECK(!sf::Joystick::hasAxis(joystick, sf::Joystick::V));
CHECK(!sf::Joystick::hasAxis(joystick, sf::Joystick::PovX));
CHECK(!sf::Joystick::hasAxis(joystick, sf::Joystick::PovY));
}
SECTION("isButtonPressed()")
{
const auto button = GENERATE(range(0u, sf::Joystick::ButtonCount - 1));
CHECK(!sf::Joystick::isButtonPressed(joystick, button));
}
SECTION("getAxisPosition")
{
CHECK(sf::Joystick::getAxisPosition(joystick, sf::Joystick::X) == 0);
CHECK(sf::Joystick::getAxisPosition(joystick, sf::Joystick::Y) == 0);
CHECK(sf::Joystick::getAxisPosition(joystick, sf::Joystick::Z) == 0);
CHECK(sf::Joystick::getAxisPosition(joystick, sf::Joystick::R) == 0);
CHECK(sf::Joystick::getAxisPosition(joystick, sf::Joystick::U) == 0);
CHECK(sf::Joystick::getAxisPosition(joystick, sf::Joystick::V) == 0);
CHECK(sf::Joystick::getAxisPosition(joystick, sf::Joystick::PovX) == 0);
CHECK(sf::Joystick::getAxisPosition(joystick, sf::Joystick::PovY) == 0);
}
SECTION("getIdentification()")
{
const auto identification = sf::Joystick::getIdentification(joystick);
CHECK(identification.name == "No Joystick");
CHECK(identification.vendorId == 0);
CHECK(identification.productId == 0);
}
}