Mercurial > public > fructose_gen
diff tests/x2.h @ 0:d098192f01d9
Initial commit to the repository.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Sat, 19 Mar 2011 19:53:12 -0500 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/x2.h Sat Mar 19 19:53:12 2011 -0500 @@ -0,0 +1,69 @@ +#ifndef FRUCTOSE_MAIN_TEST_X2_H +#define FRUCTOSE_MAIN_TEST_X2_H + +#include <stdexcept> +#include <cmath> + +#include "fructose/fructose.h" + +// These tests are rigged so that some of them fail. +// The tests include exercising floating point comparisons +// and exception handling. + +namespace { + void throw_a_runtime_error() + { + throw std::runtime_error("this is a runtime error"); + } +} + +class misc_tests : public fructose::test_base<misc_tests> +{ +public: + void testexceptions(const std::string& test_name) + { + fructose_assert_exception(throw_a_runtime_error(), std::logic_error); + fructose_assert_no_exception(throw_a_runtime_error()); + } + + void testloopdata(const std::string& test_name) + { + static const struct { + int line_number; + int a; + int b; + int expected_result; + } data[] = { + {__LINE__, 3, 4, 12} + , {__LINE__, 1, 50, 50} + , {__LINE__, 5, 12, 60} + , {__LINE__, 6, 6, 37} + , {__LINE__, 7, 10, 70} + }; + + for (std::size_t i = 0; i < sizeof(data)/sizeof(data[0]); ++i) + { + if (verbose()) + { + std::cout << "Testing to see if " + << data[i].a << " * " << data[i].b + << " = " << data[i].expected_result + << std::endl; + } + int result = data[i].a * data[i].b; + fructose_loop1_assert(data[i].line_number, i, + result == data[i].expected_result); + } + } + + void testfloatingpoint(const std::string& test_name) + { + double my_pi = 3.141592654; + double calc_pi = 4.0 * atan(1.0); + fructose_assert_double_eq_rel_abs(my_pi, calc_pi, 0.01, 0.01); + fructose_assert_double_eq(my_pi, calc_pi); + fructose_assert_double_ne(my_pi, calc_pi); + fructose_assert_double_ne_rel_abs(my_pi, calc_pi, 0.01, 0.01); + } +}; +#endif