aboutsummaryrefslogtreecommitdiffstats
path: root/vespalib/src/tests/util/size_literals/size_literals_test.cpp
blob: 93a0ee5cdb7f38be023bd1aba5e563be3b32edf9 (plain) (blame)
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
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.

#include <vespa/vespalib/util/size_literals.h>
#include <vespa/vespalib/gtest/gtest.h>

template<typename T> bool is_size_t(T) { return false; }
template<> bool is_size_t<size_t>(size_t) { return true; }

TEST(SizeLiteralsTest, simple_usage)
{
    auto v1k = 1_Ki;
    auto v1m = 1_Mi;
    auto v1g = 1_Gi;
    auto v1t = 1_Ti;
    auto v42k = 42_Ki;
    auto v42m = 42_Mi;
    auto v42g = 42_Gi;
    auto v42t = 42_Ti;

    EXPECT_EQ(v1k, 1024ul);
    EXPECT_EQ(v1m, 1024ul * 1024ul);
    EXPECT_EQ(v1g, 1024ul * 1024ul * 1024ul);
    EXPECT_EQ(v1t, 1024ul * 1024ul * 1024ul * 1024ul);;

    EXPECT_EQ(v42k, 42ul * 1024ul);
    EXPECT_EQ(v42m, 42ul * 1024ul * 1024ul);
    EXPECT_EQ(v42g, 42ul * 1024ul * 1024ul * 1024ul);
    EXPECT_EQ(v42t, 42ul * 1024ul * 1024ul * 1024ul * 1024ul);

    EXPECT_TRUE(is_size_t(v1k));
    EXPECT_TRUE(is_size_t(v1g));
    EXPECT_TRUE(is_size_t(v1g));
    EXPECT_TRUE(is_size_t(v1t));

    EXPECT_TRUE(is_size_t(v42k));
    EXPECT_TRUE(is_size_t(v42g));
    EXPECT_TRUE(is_size_t(v42g));
    EXPECT_TRUE(is_size_t(v42t));
}

GTEST_MAIN_RUN_ALL_TESTS()