File: TestSizeOf.cpp

package info (click to toggle)
ecflow 5.15.2-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 51,868 kB
  • sloc: cpp: 269,341; python: 22,756; sh: 3,609; perl: 770; xml: 333; f90: 204; ansic: 141; makefile: 70
file content (82 lines) | stat: -rw-r--r-- 2,187 bytes parent folder | download
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
/*
 * Copyright 2009- ECMWF.
 *
 * This software is licensed under the terms of the Apache Licence version 2.0
 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 * In applying this licence, ECMWF does not waive the privileges and immunities
 * granted to it by virtue of its status as an intergovernmental organisation
 * nor does it submit to any jurisdiction.
 */

#include <fstream>
#include <iostream>

#include <boost/test/unit_test.hpp>

#include "ecflow/attribute/DayAttr.hpp"
#include "ecflow/core/TimeSeries.hpp"
#include "ecflow/test/scaffold/Naming.hpp"

#define STRINGIFY(x) #x

template <typename T>
inline const char* typeName(void) {
    return "unknown";
}

#define TYPE_STRING(T)                 \
    template <>                        \
    inline const char* typeName<T>() { \
        return STRINGIFY(T);           \
    }

TYPE_STRING(std::ofstream)
TYPE_STRING(std::string)
TYPE_STRING(std::vector<int>)
TYPE_STRING(std::vector<std::string>)
TYPE_STRING(std::weak_ptr<int>)
TYPE_STRING(std::nullptr_t)
TYPE_STRING(std::unique_ptr<int>)
TYPE_STRING(double)
TYPE_STRING(long)
TYPE_STRING(int)
TYPE_STRING(unsigned int)
TYPE_STRING(bool)
TYPE_STRING(ecf::TimeSeries)
TYPE_STRING(DayAttr)

template <typename T>
void inspect_size_of(T t = T{}) {
#if PRINT_SIZEOF_RESULTS
    ECF_TEST_DBG(<< "   * sizeof(" << typeName<T>() << ") = " << sizeof(T));
#endif
    BOOST_REQUIRE_EQUAL(sizeof(T), sizeof(T));
}

BOOST_AUTO_TEST_SUITE(U_Attributes)

BOOST_AUTO_TEST_SUITE(T_SizeOf)

BOOST_AUTO_TEST_CASE(test_size_of) {
    ECF_NAME_THIS_TEST();

    inspect_size_of<std::ofstream>();
    inspect_size_of<std::string>();
    inspect_size_of<std::vector<int>>();
    inspect_size_of<std::vector<std::string>>();
    inspect_size_of<std::weak_ptr<int>>();
    inspect_size_of<std::nullptr_t>();
    inspect_size_of(nullptr);
    inspect_size_of<std::unique_ptr<int>>();
    inspect_size_of<double>();
    inspect_size_of<long>();
    inspect_size_of<int>();
    inspect_size_of<unsigned int>();
    inspect_size_of<bool>();
    inspect_size_of<ecf::TimeSeries>();
    inspect_size_of<DayAttr>();
}

BOOST_AUTO_TEST_SUITE_END()

BOOST_AUTO_TEST_SUITE_END()