-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTestMultiplyDims.cpp
More file actions
56 lines (50 loc) · 2.03 KB
/
TestMultiplyDims.cpp
File metadata and controls
56 lines (50 loc) · 2.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#define BOOST_TEST_MODULE TestMultiplyDims
#include "../CtUnits/ctu/MpUnitsDimensionsUtils.hpp"
#include "../CtUnits/ctu/UnitDimension.hpp"
#include <boost/mp11.hpp>
#include <boost/static_assert.hpp>
#include <boost/test/included/unit_test.hpp>
#include <ratio>
using ExampleMpUnitsDims = boost::mp11::mp_list<
boost::mp11::mp_list<bool, ctu::Dimension<2, 3>>,
boost::mp11::mp_list<char, ctu::Dimension<-2, 4>>,
boost::mp11::mp_list<int, ctu::Dimension<3, 2>>>;
BOOST_AUTO_TEST_CASE(MultiplyByProperFraction)
{
using multiplier = std::ratio<1, 2>;
using expected = boost::mp11::mp_list<
boost::mp11::mp_list<bool, ctu::Dimension<1, 3>>,
boost::mp11::mp_list<char, ctu::Dimension<-1, 4>>,
boost::mp11::mp_list<int, ctu::Dimension<3, 4>>>;
using actual =
ctu::ud_operations::MultiplyDims<multiplier, ExampleMpUnitsDims>;
BOOST_STATIC_ASSERT(std::is_same_v<actual, expected>);
}
BOOST_AUTO_TEST_CASE(MultiplyByImproperFraction)
{
using multiplier = std::ratio<-2, 6>;
using expected = boost::mp11::mp_list<
boost::mp11::mp_list<bool, ctu::Dimension<-2, 9>>,
boost::mp11::mp_list<char, ctu::Dimension<1, 6>>,
boost::mp11::mp_list<int, ctu::Dimension<-1, 2>>>;
using actual =
ctu::ud_operations::MultiplyDims<multiplier, ExampleMpUnitsDims>;
BOOST_STATIC_ASSERT(std::is_same_v<actual, expected>);
}
BOOST_AUTO_TEST_CASE(MultiplyByZero)
{
using multiplier = std::ratio<0>;
using expected = boost::mp11::mp_list<>;
using actual =
ctu::ud_operations::MultiplyDims<multiplier, ExampleMpUnitsDims>;
BOOST_STATIC_ASSERT(std::is_same_v<actual, expected>);
}
BOOST_AUTO_TEST_CASE(CheckMinusDims)
{
using expected = boost::mp11::mp_list<
boost::mp11::mp_list<bool, ctu::Dimension<-2, 3>>,
boost::mp11::mp_list<char, ctu::Dimension<1, 2>>,
boost::mp11::mp_list<int, ctu::Dimension<-3, 2>>>;
using actual = ctu::ud_operations::MinusDims<ExampleMpUnitsDims>;
BOOST_STATIC_ASSERT(std::is_same_v<actual, expected>);
}