libcruft-util/test/fixed.cpp

55 lines
1.5 KiB
C++
Raw Normal View History

2015-02-06 16:35:40 +11:00
#include "fixed.hpp"
#include "types/string.hpp"
2015-02-06 16:35:40 +11:00
2015-04-13 16:45:56 +10:00
#include "tap.hpp"
2015-02-06 16:35:40 +11:00
#include <sstream>
2017-01-04 22:38:41 +11:00
///////////////////////////////////////////////////////////////////////////////
2015-02-06 20:01:26 +11:00
template <typename T, unsigned I, unsigned E>
2015-02-06 16:35:40 +11:00
void
test_simple (cruft::TAP::logger &tap)
2015-02-06 16:35:40 +11:00
{
using fixed = cruft::fixed<T,I,E>;
2017-01-04 22:38:41 +11:00
using integer = typename fixed::integer_type;
2015-02-06 16:35:40 +11:00
2017-01-04 22:38:41 +11:00
const auto lo = fixed::from_integer (integer {0});
const auto hi = fixed::from_integer (integer {1});
2015-02-06 16:35:40 +11:00
2015-04-13 16:45:56 +10:00
std::ostringstream os;
os << "fixed<" << type_to_string<T> () << ',' << I << ',' << E << '>';
2015-02-06 16:35:40 +11:00
2021-04-13 16:05:08 +10:00
tap.expect_eq (lo, lo, "{:s} self equality", os.str ());
tap.expect_eq (hi, hi, "{:s} self equality", os.str ());
2015-02-06 16:35:40 +11:00
2021-04-13 16:05:08 +10:00
tap.expect_neq (hi, lo, "{:s} inequality", os.str ());
tap.expect_neq (lo, hi, "{:s} inequality", os.str ());
2015-02-06 16:35:40 +11:00
2021-04-13 16:05:08 +10:00
tap.expect_lt (lo, hi, "{:s} less than", os.str ());
tap.expect_le (lo, hi, "{:s} less than equal", os.str ());
tap.expect_le (lo, lo, "{:s} less than equal", os.str ());
2015-04-13 16:45:56 +10:00
2021-04-13 16:05:08 +10:00
tap.expect_gt (hi, lo, "{:s} greater than", os.str ());
tap.expect_ge (lo, lo, "{:s} greater than equal", os.str ());
tap.expect_ge (hi, lo, "{:s} greater than equal", os.str ());
2015-02-06 16:35:40 +11:00
}
2017-01-04 22:38:41 +11:00
///////////////////////////////////////////////////////////////////////////////
2015-02-06 16:35:40 +11:00
int
main (void)
{
cruft::TAP::logger tap;
2015-04-13 16:45:56 +10:00
test_simple<signed,16,16> (tap);
test_simple<signed,26, 6> (tap);
test_simple<signed,32,32> (tap);
2015-02-06 20:01:26 +11:00
2015-04-13 16:45:56 +10:00
test_simple<unsigned,16,16> (tap);
test_simple<unsigned,26, 6> (tap);
test_simple<unsigned,32,32> (tap);
return tap.status ();
2015-02-06 16:35:40 +11:00
}