xo-unit: builds + runs on darwin
This commit is contained in:
parent
d7fa7156df
commit
eeee5a2a36
3 changed files with 30 additions and 11 deletions
|
|
@ -7,4 +7,4 @@ xo_docdir_sphinx_config(
|
|||
quantity-reference.rst quantity-class.rst quantity-factoryfunctions.rst quantity-unitvars.rst
|
||||
unit-reference.rst unit-concept.rst unit-quantities.rst
|
||||
)
|
||||
xo_utest_coverage_config2()
|
||||
#xo_utest_coverage_config2()
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/** @file quantity2.hpp
|
||||
/** @file quantity.hpp
|
||||
*
|
||||
* Author: Roland Conybeare
|
||||
**/
|
||||
|
|
@ -14,15 +14,34 @@ namespace xo {
|
|||
*
|
||||
* Constexpr implementation, can compute units at compile time
|
||||
**/
|
||||
template <typename Repr = double, typename Int = std::int64_t>
|
||||
class quantity2 {
|
||||
template <typename Repr = double,
|
||||
typename Int = std::int64_t,
|
||||
natural_unit<Int> NaturalUnit>
|
||||
class quantity {
|
||||
public:
|
||||
using repr_type = Repr;
|
||||
using unit_type = natural_unit<int>;
|
||||
|
||||
public:
|
||||
constexpr quantity(Repr scale)
|
||||
: scale_{scale} {}
|
||||
|
||||
constexpr const repr_type & scale() const { return scale_; }
|
||||
constexpr unit_type unit() const { return NaturalUnit; }
|
||||
|
||||
constexpr bool is_dimensionless() const { return s_unit.is_dimensionless(); }
|
||||
|
||||
constexpr quantity unit_qty() { return quantity(1); }
|
||||
|
||||
private:
|
||||
/** @brief unit (established at compile time) for this quantity **/
|
||||
static NaturalUnit s_unit = NaturalUnit;
|
||||
|
||||
/** @brief quantity represents this multiple of unit amount **/
|
||||
Repr scale_ = Repr();
|
||||
};
|
||||
} /*namespace qty*/
|
||||
} /*namespace xo*/
|
||||
|
||||
|
||||
/** end quantity2.hpp **/
|
||||
/** end quantity.hpp **/
|
||||
|
|
|
|||
|
|
@ -20,14 +20,14 @@ namespace xo {
|
|||
constexpr su64_type su_reciprocal = su.reciprocal();
|
||||
|
||||
TEST_CASE("scaled_unit", "[scaled_unit]") {
|
||||
static_assert(su_reciprocal<scaled_unit(nu::gram, xo::ratio::ratio(1L), 1)>.natural_unit_ == nu::gram.reciprocal());
|
||||
REQUIRE(su_reciprocal<scaled_unit(nu::gram, xo::ratio::ratio(1L), 1)>.natural_unit_ == nu::gram.reciprocal());
|
||||
static_assert(su_reciprocal<scaled_unit(nu::gram, xo::ratio::ratio(1LL), 1)>.natural_unit_ == nu::gram.reciprocal());
|
||||
REQUIRE(su_reciprocal<scaled_unit(nu::gram, xo::ratio::ratio(1LL), 1)>.natural_unit_ == nu::gram.reciprocal());
|
||||
|
||||
static_assert(su_reciprocal<scaled_unit(nu::gram, xo::ratio::ratio(1L), 1)>.outer_scale_factor_ == 1);
|
||||
REQUIRE(su_reciprocal<scaled_unit(nu::gram, xo::ratio::ratio(1L), 1)>.outer_scale_factor_ == 1);
|
||||
static_assert(su_reciprocal<scaled_unit(nu::gram, xo::ratio::ratio(1LL), 1)>.outer_scale_factor_ == 1);
|
||||
REQUIRE(su_reciprocal<scaled_unit(nu::gram, xo::ratio::ratio(1LL), 1)>.outer_scale_factor_ == 1);
|
||||
|
||||
static_assert(su_reciprocal<scaled_unit(nu::gram, xo::ratio::ratio(1L), 1)>.outer_scale_sq_ == 1.0);
|
||||
REQUIRE(su_reciprocal<scaled_unit(nu::gram, xo::ratio::ratio(1L), 1)>.outer_scale_sq_ == 1.0);
|
||||
static_assert(su_reciprocal<scaled_unit(nu::gram, xo::ratio::ratio(1LL), 1)>.outer_scale_sq_ == 1.0);
|
||||
REQUIRE(su_reciprocal<scaled_unit(nu::gram, xo::ratio::ratio(1LL), 1)>.outer_scale_sq_ == 1.0);
|
||||
} /*TEST_CASE(scaled_unit)*/
|
||||
|
||||
TEST_CASE("su_product", "[scaled_unit]") {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue