2
* Copyright © 2014 Canonical Ltd.
4
* This program is free software: you can redistribute it and/or modify it
5
* under the terms of the GNU General Public License version 3,
6
* as published by the Free Software Foundation.
8
* This program is distributed in the hope that it will be useful,
9
* but WITHOUT ANY WARRANTY; without even the implied warranty of
10
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
* GNU General Public License for more details.
13
* You should have received a copy of the GNU General Public License
14
* along with this program. If not, see <http://www.gnu.org/licenses/>.
17
* Authored by: Alexandros Frantzis <alexandros.frantzis@canonical.com>
20
#include "mir/variable_length_array.h"
22
#include <gtest/gtest.h>
23
#include <gmock/gmock.h>
25
TEST(VariableLengthArray, has_correct_size_if_using_builtin)
27
using namespace testing;
29
size_t const builtin_size{100};
30
size_t const vla_size_builtin{builtin_size - 1};
31
mir::VariableLengthArray<builtin_size> vla{vla_size_builtin};
33
EXPECT_THAT(vla.size(), Eq(vla_size_builtin));
34
memset(vla.data(), 0x55, vla.size());
37
TEST(VariableLengthArray, has_correct_size_if_using_heap)
39
using namespace testing;
41
size_t const builtin_size{100};
42
size_t const vla_size_heap{builtin_size + 1};
43
mir::VariableLengthArray<builtin_size> vla{vla_size_heap};
45
EXPECT_THAT(vla.size(), Eq(vla_size_heap));
46
memset(vla.data(), 0x55, vla.size());
49
TEST(VariableLengthArray, resizes_from_builtin_to_heap)
51
using namespace testing;
53
size_t const builtin_size{100};
54
size_t const vla_size_builtin{builtin_size - 1};
55
size_t const vla_size_heap{builtin_size + 1};
56
mir::VariableLengthArray<builtin_size> vla{vla_size_builtin};
58
vla.resize(vla_size_heap);
60
EXPECT_THAT(vla.size(), Eq(vla_size_heap));
61
memset(vla.data(), 0x55, vla.size());
64
TEST(VariableLengthArray, resizes_from_builtin_to_builtin)
66
using namespace testing;
68
size_t const builtin_size{100};
69
size_t const vla_size_builtin1{builtin_size - 1};
70
size_t const vla_size_builtin2{builtin_size};
71
mir::VariableLengthArray<builtin_size> vla{vla_size_builtin1};
73
vla.resize(vla_size_builtin2);
75
EXPECT_THAT(vla.size(), Eq(vla_size_builtin2));
76
memset(vla.data(), 0x55, vla.size());
79
TEST(VariableLengthArray, resizes_from_heap_to_builtin)
81
using namespace testing;
83
size_t const builtin_size{100};
84
size_t const vla_size_builtin{builtin_size - 1};
85
size_t const vla_size_heap{builtin_size + 1};
86
mir::VariableLengthArray<builtin_size> vla{vla_size_heap};
88
vla.resize(vla_size_builtin);
90
EXPECT_THAT(vla.size(), Eq(vla_size_builtin));
91
memset(vla.data(), 0x55, vla.size());
94
TEST(VariableLengthArray, resizes_from_heap_to_heap)
96
using namespace testing;
98
size_t const builtin_size{100};
99
size_t const vla_size_heap1{builtin_size + 1};
100
size_t const vla_size_heap2{builtin_size + 2};
101
mir::VariableLengthArray<builtin_size> vla{vla_size_heap1};
103
vla.resize(vla_size_heap2);
105
EXPECT_THAT(vla.size(), Eq(vla_size_heap2));
106
memset(vla.data(), 0x55, vla.size());