8#include <gtest/gtest.h>
10#include "arcane/utils/List.h"
11#include "arcane/utils/String.h"
12#include "arcane/utils/SmallArray.h"
13#include "arcane/utils/FixedArray.h"
14#include "arcane/utils/MultiArray2.h"
23TEST(Collections, Basic)
25 std::cout <<
"TEST_Collection Basic\n";
32 String str4 =
"MyStringToTest";
34 string_list.add(str1);
35 ASSERT_EQ(string_list.count(), 1);
37 string_list.add(str2);
38 ASSERT_EQ(string_list.count(), 2);
40 string_list.add(str3);
41 ASSERT_EQ(string_list.count(), 3);
45 ASSERT_EQ(string_list[0], str1);
46 ASSERT_EQ(string_list[1],
"Tata");
47 ASSERT_EQ(string_list[2], str3);
49 string_list.remove(
"Tata");
50 ASSERT_EQ(string_list.count(), 2);
51 ASSERT_EQ(string_list[0], str1);
52 ASSERT_EQ(string_list[1], str3);
55 ASSERT_EQ(string_list.count(), 0);
57 string_list.add(str4);
58 ASSERT_EQ(string_list.count(), 1);
59 string_list.add(str2);
60 ASSERT_EQ(string_list.count(), 2);
61 string_list.add(str1);
62 ASSERT_EQ(string_list.count(), 3);
74 for( Int64 i=0, n=view.
size(); i<n; ++i )
75 ASSERT_EQ(view[i],i+1);
81 Int64 n1 = view1.
size();
82 Int64 n2 = view2.
size();
84 for( Int64 i=0; i<n1; ++i )
85 ASSERT_EQ(view1[i],view2[i]);
91 constexpr int N = 934;
94 ASSERT_EQ(b.guarantedAlignment({}),0);
98 for( Int32 i=0; i<200; ++i )
100 ASSERT_EQ(buf1.
size(),200);
101 _checkSmallArrayValues(buf1);
105 ASSERT_EQ(buf1.
size(),50);
106 _checkSmallArrayValues(buf1);
108 for( Int32 i=0; i<200; ++i )
110 ASSERT_EQ(buf1.
size(),250);
111 _checkSmallArrayValues(buf1);
113 for(
int z=1; z<10; ++z ) {
115 for(Int32 i=0, n=ref_buf.size(); i<n; ++i )
116 ref_buf[i] = (i+1)*2;
119 for(Int32 i=0, n=ref_buf2.size(); i<n; ++i )
120 ref_buf2[i] = (i+13)*3;
123 _checkSmallArrayValues(buf2,ref_buf);
125 _checkSmallArrayValues(buf3,ref_buf);
127 _checkSmallArrayValues(buf4,ref_buf);
129 _checkSmallArrayValues(buf5,ref_buf);
131 _checkSmallArrayValues(buf6,ref_buf);
134 _checkSmallArrayValues(buf2,ref_buf2);
135 buf3 = ref_buf2.span();
136 _checkSmallArrayValues(buf3,ref_buf2);
137 buf4 = ref_buf2.constSpan();
138 _checkSmallArrayValues(buf4,ref_buf2);
139 buf5 = ref_buf2.view();
140 _checkSmallArrayValues(buf5,ref_buf2);
141 buf6 = ref_buf2.constView();
142 _checkSmallArrayValues(buf6,ref_buf2);
145 for(
int z=1; z<10; ++z ) {
148 ASSERT_EQ(buf3.size(),n);
149 for(Int32 i=0; i<n; ++i )
151 for(Int32 i=0; i<n; ++i )
152 ASSERT_EQ(buf3[i],((i*22)+1));
156 std::cout <<
"Test initializer_list 1\n";
157 SmallArray<Int32,20> buf = { 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25,
158 27, 29, 31, 33, 35, 37, 39, 41 };
160 ASSERT_EQ(buf.
size(),n);
161 for(Int32 i=0; i<n; ++i )
162 ASSERT_EQ(buf[i],((i*2)+1));
165 std::cout <<
"Test initializer_list 2\n";
168 ASSERT_EQ(buf.
size(),n);
169 for(Int32 i=0; i<n; ++i )
170 ASSERT_EQ(buf[i],((i*2)+1));
175 ASSERT_EQ(buf1.
size(),s1);
179 ASSERT_EQ(buf2.size(),s2);
188 static_assert(std::ranges::contiguous_range<FixedArray<Int32, 2>>);
192 ASSERT_EQ(empty_array.
size(), 0);
193 ASSERT_EQ(empty_array.
span().size(), 0);
197 static constexpr Int32 Size = 4;
200 ASSERT_EQ(array1.
size(), Size);
201 ASSERT_EQ(array1.
span().size(), Size);
202 ASSERT_EQ(array1.
view().size(), Size);
203 ASSERT_EQ(const_array1.span().size(), Size);
204 ASSERT_EQ(const_array1.view().size(), Size);
205 for (Int32 i = 0; i < Size; ++i) {
206 ASSERT_EQ(array1[i], 0);
207 ASSERT_EQ(array1.
span()[i], 0);
208 ASSERT_EQ(array1.
view()[i], 0);
209 ASSERT_EQ(const_array1.view()[i], 0);
216 ASSERT_EQ(array1[0], 3);
217 ASSERT_EQ(array1[1], 5);
218 ASSERT_EQ(const_array1[1], 5);
219 std::cout <<
"V[2]=" << array1[2] <<
"\n";
221 auto iter = array1.begin();
223 ASSERT_EQ(*iter, *const_array1.begin());
227 ASSERT_EQ(*iter, -1);
231 ASSERT_EQ(iter, array1.end());
232 ASSERT_EQ(iter, const_array1.end());
254 ASSERT_EQ(v[0].size(), 2);
255 ASSERT_EQ(v[0][1], 5);
256 ASSERT_EQ(v[0][1], 5);
257 ASSERT_EQ(v[1].size(), 3);
258 ASSERT_EQ(v[1][0], 27);
259 ASSERT_EQ(v[1][1], 32);
260 ASSERT_EQ(v[1][2], 21);
263 ASSERT_EQ(v2[0].size(), 3);
264 ASSERT_EQ(v2[0][0], 27);
265 ASSERT_EQ(v2[0][1], 32);
266 ASSERT_EQ(v2[0][2], 21);
267 ASSERT_EQ(v2[1].size(), 0);
#define ASSERT_FALSE(condition)
Vérifie que condition est faux.
#define ASSERT_TRUE(condition)
Vérifie que condition est vrai.
Integer size() const
Nombre d'éléments du vecteur.
void shrink()
Réalloue pour libérer la mémoire non utilisée.
void resize(Int64 s)
Change le nombre d'éléments du tableau à s.
void add(ConstReferenceType val)
Ajoute l'élément val à la fin du tableau.
classe de base d'implémentation d'une collection typée.
Classe de base d'une collection fortement typée.
Tableau 1D de taille fixe.
constexpr __host__ __device__ ArrayView< T > view()
Vue modifiable sur le tableau.
constexpr __host__ __device__ SmallSpan< T, NbElement > span()
Vue modifiable sur le tableau.
static constexpr Int32 size()
Nombre d'éléments tu tableau.
Allocateur avec buffer pré-alloué.
Tableau avec allocateur virtuel.
Implémentation d'une collection d'éléments sous forme de vecteur.
Classe de base des tableau 2D à taille multiple.
Tableau 2D à taille multiple avec sémantique par référence.
Tableau 1D de données avec buffer pré-alloué sur la pile.
constexpr __host__ __device__ SizeType size() const noexcept
Retourne la taille du tableau.
Vue d'un tableau d'éléments de type T.
Chaîne de caractères unicode.
Vecteur 1D de données avec sémantique par valeur (style STL).
Tableau 2D à taille multiple avec sémantique par valeur.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
List< String > StringList
Tableau de chaînes de caractères unicode.