Clean up half old cast operators and added counter ops tests

This commit is contained in:
Christophe Riccio 2011-09-20 18:11:46 +01:00
parent fc30641140
commit bf698ec3e6
2 changed files with 85 additions and 31 deletions

View File

@ -275,27 +275,6 @@ namespace detail
return static_cast<U>(this->toFloat()); return static_cast<U>(this->toFloat());
} }
// Cast
//GLM_FUNC_QUALIFIER half::operator float()
//{
// return toFloat();
//}
//GLM_FUNC_QUALIFIER thalf::operator float() const
//{
// return toFloat32(this->data);
//}
//GLM_FUNC_QUALIFIER half::operator double()
//{
// return double(toFloat());
//}
//GLM_FUNC_QUALIFIER half::operator double() const
//{
// return double(toFloat());
//}
// Unary updatable operators // Unary updatable operators
GLM_FUNC_QUALIFIER thalf& thalf::operator= (thalf const & s) GLM_FUNC_QUALIFIER thalf& thalf::operator= (thalf const & s)
{ {
@ -330,14 +309,14 @@ namespace detail
GLM_FUNC_QUALIFIER thalf& thalf::operator++() GLM_FUNC_QUALIFIER thalf& thalf::operator++()
{ {
float Casted = toFloat32(data); float Casted = toFloat32(data);
data = toFloat16(++Casted); this->data = toFloat16(++Casted);
return *this; return *this;
} }
GLM_FUNC_QUALIFIER thalf& thalf::operator--() GLM_FUNC_QUALIFIER thalf& thalf::operator--()
{ {
float Casted = toFloat32(data); float Casted = toFloat32(data);
data = toFloat16(--Casted); this->data = toFloat16(--Casted);
return *this; return *this;
} }

View File

@ -72,15 +72,47 @@ int test_half_arithmetic_unary_ops()
{ {
int Error = 0; int Error = 0;
glm::half A(2.0f); {
glm::half B(3.0f); glm::half A(2.0f);
glm::half B(3.0f);
A += B;
Error += (A == glm::half( 5.0f) ? 0 : 1);
}
Error += A + B == glm::half( 5.0f) ? 0 : 1; {
Error += A - B == glm::half(-1.0f) ? 0 : 1; glm::half A(2.0f);
Error += B - A == glm::half( 1.0f) ? 0 : 1; glm::half B(3.0f);
Error += A * B == glm::half( 6.0f) ? 0 : 1; A -= B;
Error += A / B == glm::half(2.0f / 3.0f) ? 0 : 1; Error += (A == glm::half(-1.0f) ? 0 : 1);
Error += B / A == glm::half(3.0f / 2.0f) ? 0 : 1; }
{
glm::half A(2.0f);
glm::half B(3.0f);
B -= A;
Error += (B == glm::half( 1.0f) ? 0 : 1);
}
{
glm::half A(2.0f);
glm::half B(3.0f);
A *= B;
Error += (A == glm::half(6.0f) ? 0 : 1);
}
{
glm::half A(2.0f);
glm::half B(3.0f);
A /= B;
Error += (A == glm::half(2.0f / 3.0f) ? 0 : 1);
}
{
glm::half A(2.0f);
glm::half B(3.0f);
B /= A;
Error += (B == glm::half(3.0f / 2.0f) ? 0 : 1);
}
return Error; return Error;
} }
@ -102,6 +134,48 @@ int test_half_arithmetic_binary_ops()
return Error; return Error;
} }
int test_half_arithmetic_counter_ops()
{
int Error = 0;
{
glm::half A(2.0f);
Error += A == glm::half(2.0f) ? 0 : 1;
}
{
glm::half A(2.0f);
glm::half B = A++;
Error += B == glm::half(3.0f) ? 0 : 1;
}
{
glm::half A(2.0f);
glm::half B = A--;
Error += B == glm::half(1.0f) ? 0 : 1;
}
{
glm::half A(2.0f);
glm::half B = ++A;
Error += B == glm::half(3.0f) ? 0 : 1;
}
{
glm::half A(2.0f);
glm::half B = --A;
Error += B == glm::half(1.0f) ? 0 : 1;
}
{
glm::half A(2.0f);
glm::half B = -A;
Error += B == glm::half(-2.0f) ? 0 : 1;
}
return Error;
}
int main() int main()
{ {
int Result = 0; int Result = 0;
@ -111,6 +185,7 @@ int main()
Result += test_half_relational(); Result += test_half_relational();
Result += test_half_arithmetic_unary_ops(); Result += test_half_arithmetic_unary_ops();
Result += test_half_arithmetic_binary_ops(); Result += test_half_arithmetic_binary_ops();
Result += test_half_arithmetic_counter_ops();
return Result; return Result;
} }