range spec bits required is constexpr

This commit is contained in:
Mindaugas Vinkelis
2017-02-16 20:42:27 +02:00
parent 0ed492d9b4
commit 5d2d547330
4 changed files with 63 additions and 59 deletions

View File

@@ -6,27 +6,17 @@
#include "SerializationTestUtils.h"
using namespace testing;
TEST(Ranges, IntegralRanges) {
TEST(Ranges, RequiredBitsIsConstexpr) {
constexpr RangeSpec<int> r1{0, 31};
static_assert(r1.bitsRequired() == 5);
EXPECT_TRUE(r1.isValid(0));
EXPECT_TRUE(r1.isValid(15));
EXPECT_TRUE(r1.isValid(31));
EXPECT_FALSE(r1.isValid(-1));
EXPECT_FALSE(r1.isValid(32));
constexpr RangeSpec<MyEnumClass> r2{MyEnumClass::E1, MyEnumClass::E4};
EXPECT_TRUE(r2.isValid(MyEnumClass::E2));
EXPECT_FALSE(r2.isValid(MyEnumClass::E5));
static_assert(r2.bitsRequired() == 2);
int x= 0;
RangeSpec<int> r3{x,3};
EXPECT_THAT(r3.bitsRequired(), Eq(2));
constexpr RangeSpec<double> r3{-1.0,1.0, 5u, 0};
static_assert(r3.bitsRequired() == 5);
constexpr RangeSpec<float> r4{-1.0f,1.0f, 0.01f};
static_assert(r4.bitsRequired() == 8);
SerializationContext ctx;
// ctx.createSerializer().range(486, {0,900});
// ctx.createSerializer().range(MyEnumClass::E4, {MyEnumClass::E1,MyEnumClass::E6});
// ctx.createSerializer().range(4.5f, {0.0f,10.0f, 10});
// ctx.createSerializer().range(4.5f, {0.0f,10.0f, 0.001f});
}