// Boost.Units - A C++ library for zero-overhead dimensional analysis and // unit/quantity manipulation and conversion // // Copyright (C) 2008 Matthias Christian Schabel // Copyright (C) 2008 Steven Watanabe // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) /** \file \brief test_custom_unit.cpp \details Make sure that a minimal + - * / unit class is fully functional. Output: @verbatim @endverbatim **/ #include #include namespace bu = boost::units; template struct simple_unit {}; BOOST_TYPEOF_REGISTER_TEMPLATE(simple_unit, (int)(int)(int)) template simple_unit operator+(const simple_unit&, const simple_unit&) { return simple_unit(); } template simple_unit operator-(const simple_unit&, const simple_unit&) { return simple_unit(); } template simple_unit operator*(const simple_unit&, const simple_unit&) { return simple_unit(); } template simple_unit operator/(const simple_unit&, const simple_unit&) { return simple_unit(); } int test_main(int,char *[]) { bu::quantity > mass = bu::quantity >::from_value(2); bu::quantity > length = bu::quantity >::from_value(4); bu::quantity > ml = mass * length; bu::quantity > m_per_l = mass/length; BOOST_CHECK(ml.value() == 8); BOOST_CHECK(m_per_l.value() == 0.5); mass += mass; BOOST_CHECK(mass.value() == 4); length -= length; BOOST_CHECK(length.value() == 0); return 0; }