#include "Range.h" #include "catch2/catch.hpp" using namespace Catch::literals; TEST_CASE("[Range] Equality operators") { Range intRange {1, 1}; REQUIRE( intRange == Range(1, 1) ); REQUIRE( intRange == std::pair(1, 1) ); REQUIRE( std::pair(1, 1) == intRange ); Range floatRange {1.0f, 1.0f}; REQUIRE( floatRange == Range(1.0f, 1.0f) ); REQUIRE( floatRange == std::pair(1.0f, 1.0f) ); REQUIRE( std::pair(1.0f, 1.0f) == floatRange); } TEST_CASE("[Range] Default ranges for classical types") { Range intRange; REQUIRE( intRange == Range(0, 0) ); Range int32_tRange; REQUIRE( int32_tRange == Range(0, 0) ); Range uint32_tRange; REQUIRE( uint32_tRange == Range(0, 0) ); Range int64_tRange; REQUIRE( int64_tRange == Range(0, 0) ); Range uint64_tRange; REQUIRE( uint64_tRange == Range(0, 0) ); Range floatRange; REQUIRE( floatRange == Range(0, 0) ); Range doubleRange; REQUIRE( doubleRange == Range(0, 0) ); } TEST_CASE("[Range] Contains") { Range intRange {1, 10}; REQUIRE( !intRange.contains(0) ); REQUIRE( intRange.contains(1) ); REQUIRE( intRange.contains(5) ); REQUIRE( !intRange.contains(10) ); REQUIRE( !intRange.containsWithEnd(0) ); REQUIRE( intRange.containsWithEnd(1) ); REQUIRE( intRange.containsWithEnd(5) ); REQUIRE( intRange.containsWithEnd(10) ); Range floatRange {1.0, 10.0}; REQUIRE( !floatRange.contains(0.0) ); REQUIRE( floatRange.contains(1.0) ); REQUIRE( floatRange.contains(5.0) ); REQUIRE( !floatRange.contains(10.0) ); REQUIRE( !floatRange.containsWithEnd(0.0) ); REQUIRE( floatRange.containsWithEnd(1.0) ); REQUIRE( floatRange.containsWithEnd(5.0) ); REQUIRE( floatRange.containsWithEnd(10.0) ); } TEST_CASE("[Range] Clamp") { Range intRange {1, 10}; REQUIRE( intRange.clamp(0) == 1 ); REQUIRE( intRange.clamp(1) == 1 ); REQUIRE( intRange.clamp(5) == 5 ); REQUIRE( intRange.clamp(10) == 10 ); REQUIRE( intRange.clamp(11) == 10 ); Range floatRange {1.0, 10.0}; REQUIRE( floatRange.clamp(0.0) == 1.0_a ); REQUIRE( floatRange.clamp(1.0) == 1.0_a ); REQUIRE( floatRange.clamp(5.0) == 5.0_a ); REQUIRE( floatRange.clamp(10.0) == 10.0_a ); REQUIRE( floatRange.clamp(11.0) == 10.0_a ); }