SFML/test/Window/Joystick.test.cpp
2023-09-24 20:58:41 -06:00

77 lines
2.7 KiB
C++

#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);
}
}