mirror of
https://github.com/bkaradzic/bx.git
synced 2026-06-08 11:13:49 +00:00
85 lines
2.1 KiB
C++
85 lines
2.1 KiB
C++
/*
|
|
* Copyright 2010-2026 Branimir Karadzic. All rights reserved.
|
|
* License: https://github.com/bkaradzic/bx/blob/master/LICENSE
|
|
*/
|
|
|
|
#include "test.h"
|
|
#include <bx/bx.h>
|
|
|
|
TEST_CASE("StrideAlign", "[bx]")
|
|
{
|
|
REQUIRE(0 == bx::strideAlign(0, 12) );
|
|
for (uint32_t ii = 0; ii < 12; ++ii)
|
|
{
|
|
REQUIRE(12 == bx::strideAlign(ii+1, 12) );
|
|
}
|
|
|
|
REQUIRE(0 == bx::strideAlign<16>(0, 12) );
|
|
for (uint32_t ii = 0; ii < 12; ++ii)
|
|
{
|
|
REQUIRE(48 == bx::strideAlign<16>(ii+1, 12) );
|
|
}
|
|
|
|
uint32_t offset = 11;
|
|
offset = bx::strideAlign(offset, 32);
|
|
REQUIRE(offset == 32);
|
|
|
|
offset = bx::strideAlign(offset, 24);
|
|
REQUIRE(offset == 48);
|
|
}
|
|
|
|
TEST_CASE("gcd", "[bx]")
|
|
{
|
|
REQUIRE(1 == bx::gcd(13u, 89u) );
|
|
REQUIRE(3 == bx::gcd( 3u, 9u) );
|
|
REQUIRE(8 == bx::gcd( 8u, 64u) );
|
|
REQUIRE(9 == bx::gcd(18u, 81u) );
|
|
}
|
|
|
|
TEST_CASE("lcm", "[bx]")
|
|
{
|
|
REQUIRE(1157 == bx::lcm(13u, 89u) );
|
|
REQUIRE( 9 == bx::lcm( 3u, 9u) );
|
|
REQUIRE( 48 == bx::lcm( 6u, 16u) );
|
|
REQUIRE( 80 == bx::lcm(16u, 20u) );
|
|
}
|
|
|
|
TEST_CASE("align", "[bx]")
|
|
{
|
|
REQUIRE( bx::isAligned(0, 8) );
|
|
REQUIRE(!bx::isAligned(7, 8) );
|
|
REQUIRE( bx::isAligned(64, 8) );
|
|
REQUIRE(!bx::isAligned(63, 8) );
|
|
|
|
for (int32_t ii = 0; ii < 1024; ++ii)
|
|
{
|
|
REQUIRE(bx::isAligned(ii, 0) );
|
|
REQUIRE(ii == bx::alignUp(ii, 0) );
|
|
REQUIRE(ii == bx::alignDown(ii, 0) );
|
|
}
|
|
|
|
REQUIRE( 0 == bx::alignUp( 0, 16) );
|
|
REQUIRE( 16 == bx::alignUp( 1, 16) );
|
|
REQUIRE( 16 == bx::alignUp( 15, 16) );
|
|
REQUIRE( 16 == bx::alignUp( 16, 16) );
|
|
REQUIRE(256 == bx::alignUp(255, 16) );
|
|
REQUIRE( 0 == bx::alignUp(-1, 16) );
|
|
REQUIRE(-16 == bx::alignUp(-31, 16) );
|
|
|
|
REQUIRE( 0 == bx::alignUp( 0, 256) );
|
|
REQUIRE(256 == bx::alignUp( 1, 256) );
|
|
REQUIRE(256 == bx::alignUp( 15, 256) );
|
|
REQUIRE(256 == bx::alignUp(255, 256) );
|
|
REQUIRE(256 == bx::alignUp(256, 256) );
|
|
REQUIRE(256 == bx::alignUp(256, 256) );
|
|
REQUIRE(512 == bx::alignUp(511, 256) );
|
|
|
|
REQUIRE( 0 == bx::alignDown( 0, 16) );
|
|
REQUIRE( 0 == bx::alignDown( 1, 16) );
|
|
REQUIRE( 0 == bx::alignDown( 15, 16) );
|
|
REQUIRE( 16 == bx::alignDown( 16, 16) );
|
|
REQUIRE(240 == bx::alignDown(255, 16) );
|
|
REQUIRE(-16 == bx::alignDown(-1, 16) );
|
|
REQUIRE(-32 == bx::alignDown(-31, 16) );
|
|
}
|