summaryrefslogtreecommitdiff
path: root/zenxml/unit_test.cpp
blob: 8f49de6f5687466ca8d445f22314b0dccdd1e2fc (plain)
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
83
84
85
86
87
88
89
90
91
92
93
94
95
// **************************************************************************
// * This file is part of the zen::Xml project. It is distributed under the *
// * Boost Software License: http://www.boost.org/LICENSE_1_0.txt           *
// * Copyright (C) Zenju (zenju AT gmx DOT de) - All Rights Reserved        *
// **************************************************************************

#include <set>
#include <map>
#include <deque>
#include <vector>
#include <list>
#include <utility>
#include "xml.h"

using namespace zen;

namespace
{
void unit_test()
{
    class Dummy {};

    //compile time checks only

    assert_static(!IsStlContainer<wchar_t>                     ::value);
    assert_static(!IsStlContainer<char>                        ::value);
    assert_static(!IsStlContainer<Dummy>                       ::value);
    assert_static(!IsStlContainer<NullType>                    ::value);
    assert_static(IsStlContainer<std::set      <int>>          ::value);
    assert_static(IsStlContainer<std::deque    <float>>        ::value);
    assert_static(IsStlContainer<std::list     <size_t>>       ::value);
    assert_static((IsStlContainer<std::map     <double, char>> ::value));
    assert_static((IsStlContainer<std::multimap<short, double>>::value));
    assert_static(IsStlContainer <std::vector  <wchar_t>>      ::value);
    assert_static((IsStlPair     <std::pair<int, double>>      ::value));
    assert_static(!IsStlPair<Dummy>                            ::value);

    assert_static(!IsStringLike<Dummy>::value);
    assert_static(!IsStringLike<int>::value);
    assert_static(!IsStringLike<double>::value);
    assert_static(!IsStringLike<short>::value);
    assert_static(IsStringLike<char>::value);
    assert_static(IsStringLike<const wchar_t>::value);
    assert_static(IsStringLike<const char>::value);
    assert_static(IsStringLike<wchar_t>::value);
    assert_static(IsStringLike<char*>::value);
    assert_static(IsStringLike<wchar_t*>::value);
    assert_static(IsStringLike<char* const>::value);
    assert_static(IsStringLike<wchar_t* const>::value);
    assert_static(IsStringLike<const char*>::value);
    assert_static(IsStringLike<const char* const>::value);
    assert_static(IsStringLike<const wchar_t*>::value);
    assert_static(IsStringLike<const wchar_t* const>::value);
    assert_static(IsStringLike<const char[4]>::value);
    assert_static(IsStringLike<const wchar_t[4]>::value);
    assert_static(IsStringLike<char[4]>::value);
    assert_static(IsStringLike<wchar_t[4]>::value);
    assert_static(IsStringLike<std::string>::value);
    assert_static(IsStringLike<std::wstring>::value);
    assert_static(IsStringLike<const std::string>::value);
    assert_static(IsStringLike<const std::wstring>::value);
    assert_static(IsStringLike<const std::string&>::value);
    assert_static(IsStringLike<const std::wstring&>::value);
    assert_static(IsStringLike<std::string&>::value);
    assert_static(IsStringLike<std::wstring&>::value);

    assert_static(!(IsSameType<GetCharType<int>::Type, char>::value));
    assert_static(!(IsSameType<GetCharType<double>::Type, char>::value));
    assert_static(!(IsSameType<GetCharType<short>::Type, char>::value));
    assert_static((IsSameType<GetCharType<char>::Type, char>::value));
    assert_static((IsSameType<GetCharType<wchar_t>::Type, wchar_t>::value));
    assert_static((IsSameType<GetCharType<const char>::Type, char>::value));
    assert_static((IsSameType<GetCharType<const wchar_t>::Type, wchar_t>::value));
    assert_static((IsSameType<GetCharType<char*>::Type, char>::value));
    assert_static((IsSameType<GetCharType<wchar_t*>::Type, wchar_t>::value));
    assert_static((IsSameType<GetCharType<char* const>::Type, char>::value));
    assert_static((IsSameType<GetCharType<wchar_t* const>::Type, wchar_t>::value));
    assert_static((IsSameType<GetCharType<const char*>::Type, char>::value));
    assert_static((IsSameType<GetCharType<const char* const>::Type, char>::value));
    assert_static((IsSameType<GetCharType<const wchar_t*>::Type, wchar_t>::value));
    assert_static((IsSameType<GetCharType<const wchar_t* const>::Type, wchar_t>::value));
    assert_static((IsSameType<GetCharType<const char[4]>::Type, char>::value));
    assert_static((IsSameType<GetCharType<const wchar_t[4]>::Type, wchar_t>::value));
    assert_static((IsSameType<GetCharType<char[4]>::Type, char>::value));
    assert_static((IsSameType<GetCharType<wchar_t[4]>::Type, wchar_t>::value));
    assert_static((IsSameType<GetCharType<std::string>::Type, char>::value));
    assert_static((IsSameType<GetCharType<std::wstring>::Type, wchar_t>::value));
    assert_static((IsSameType<GetCharType<const std::string>::Type, char>::value));
    assert_static((IsSameType<GetCharType<const std::wstring>::Type, wchar_t>::value));
    assert_static((IsSameType<GetCharType<const std::string&>::Type, char>::value));
    assert_static((IsSameType<GetCharType<const std::wstring&>::Type, wchar_t>::value));
    assert_static((IsSameType<GetCharType<std::string&>::Type, char>::value));
    assert_static((IsSameType<GetCharType<std::wstring&>::Type, wchar_t>::value));
}
}
bgstack15