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"
16#ifdef ARCANE_HAS_CXX20
25TEST(Collections, Basic)
27 std::cout <<
"TEST_Collection Basic\n";
34 String str4 =
"MyStringToTest";
36 string_list.add(str1);
37 ASSERT_EQ(string_list.count(), 1);
39 string_list.add(str2);
40 ASSERT_EQ(string_list.count(), 2);
42 string_list.add(str3);
43 ASSERT_EQ(string_list.count(), 3);
47 ASSERT_EQ(string_list[0], str1);
48 ASSERT_EQ(string_list[1],
"Tata");
49 ASSERT_EQ(string_list[2], str3);
51 string_list.remove(
"Tata");
52 ASSERT_EQ(string_list.count(), 2);
53 ASSERT_EQ(string_list[0], str1);
54 ASSERT_EQ(string_list[1], str3);
57 ASSERT_EQ(string_list.count(), 0);
59 string_list.add(str4);
60 ASSERT_EQ(string_list.count(), 1);
61 string_list.add(str2);
62 ASSERT_EQ(string_list.count(), 2);
63 string_list.add(str1);
64 ASSERT_EQ(string_list.count(), 3);
76 for( Int64 i=0, n=view.
size(); i<n; ++i )
77 ASSERT_EQ(view[i],i+1);
83 Int64 n1 = view1.
size();
84 Int64 n2 = view2.
size();
86 for( Int64 i=0; i<n1; ++i )
87 ASSERT_EQ(view1[i],view2[i]);
93 constexpr int N = 934;
96 ASSERT_EQ(b.guarantedAlignment({}),0);
100 for( Int32 i=0; i<200; ++i )
102 ASSERT_EQ(buf1.
size(),200);
103 _checkSmallArrayValues(buf1);
107 ASSERT_EQ(buf1.
size(),50);
108 _checkSmallArrayValues(buf1);
110 for( Int32 i=0; i<200; ++i )
112 ASSERT_EQ(buf1.
size(),250);
113 _checkSmallArrayValues(buf1);
115 for(
int z=1; z<10; ++z ) {
117 for(Int32 i=0, n=ref_buf.size(); i<n; ++i )
118 ref_buf[i] = (i+1)*2;
121 for(Int32 i=0, n=ref_buf2.size(); i<n; ++i )
122 ref_buf2[i] = (i+13)*3;
125 _checkSmallArrayValues(buf2,ref_buf);
127 _checkSmallArrayValues(buf3,ref_buf);
129 _checkSmallArrayValues(buf4,ref_buf);
131 _checkSmallArrayValues(buf5,ref_buf);
133 _checkSmallArrayValues(buf6,ref_buf);
136 _checkSmallArrayValues(buf2,ref_buf2);
137 buf3 = ref_buf2.span();
138 _checkSmallArrayValues(buf3,ref_buf2);
139 buf4 = ref_buf2.constSpan();
140 _checkSmallArrayValues(buf4,ref_buf2);
141 buf5 = ref_buf2.view();
142 _checkSmallArrayValues(buf5,ref_buf2);
143 buf6 = ref_buf2.constView();
144 _checkSmallArrayValues(buf6,ref_buf2);
147 for(
int z=1; z<10; ++z ) {
150 ASSERT_EQ(buf3.size(),n);
151 for(Int32 i=0; i<n; ++i )
153 for(Int32 i=0; i<n; ++i )
154 ASSERT_EQ(buf3[i],((i*22)+1));
158 std::cout <<
"Test initializer_list 1\n";
159 SmallArray<Int32,20> buf = { 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25,
160 27, 29, 31, 33, 35, 37, 39, 41 };
162 ASSERT_EQ(buf.
size(),n);
163 for(Int32 i=0; i<n; ++i )
164 ASSERT_EQ(buf[i],((i*2)+1));
167 std::cout <<
"Test initializer_list 2\n";
170 ASSERT_EQ(buf.
size(),n);
171 for(Int32 i=0; i<n; ++i )
172 ASSERT_EQ(buf[i],((i*2)+1));
177 ASSERT_EQ(buf1.
size(),s1);
181 ASSERT_EQ(buf2.size(),s2);
190#ifdef ARCANE_HAS_CXX20
191 static_assert(std::ranges::contiguous_range<FixedArray<Int32, 2>>);
196 ASSERT_EQ(empty_array.
size(), 0);
197 ASSERT_EQ(empty_array.
span().size(), 0);
201 static constexpr Int32 Size = 4;
204 ASSERT_EQ(array1.
size(), Size);
205 ASSERT_EQ(array1.
span().size(), Size);
206 ASSERT_EQ(array1.
view().size(), Size);
207 ASSERT_EQ(const_array1.span().size(), Size);
208 ASSERT_EQ(const_array1.view().size(), Size);
209 for (Int32 i = 0; i < Size; ++i) {
210 ASSERT_EQ(array1[i], 0);
211 ASSERT_EQ(array1.
span()[i], 0);
212 ASSERT_EQ(array1.
view()[i], 0);
213 ASSERT_EQ(const_array1.view()[i], 0);
220 ASSERT_EQ(array1[0], 3);
221 ASSERT_EQ(array1[1], 5);
222 ASSERT_EQ(const_array1[1], 5);
223 std::cout <<
"V[2]=" << array1[2] <<
"\n";
225 auto iter = array1.begin();
227 ASSERT_EQ(*iter, *const_array1.begin());
231 ASSERT_EQ(*iter, -1);
235 ASSERT_EQ(iter, array1.end());
236 ASSERT_EQ(iter, const_array1.end());
258 ASSERT_EQ(v[0].size(), 2);
259 ASSERT_EQ(v[0][1], 5);
260 ASSERT_EQ(v[0][1], 5);
261 ASSERT_EQ(v[1].size(), 3);
262 ASSERT_EQ(v[1][0], 27);
263 ASSERT_EQ(v[1][1], 32);
264 ASSERT_EQ(v[1][2], 21);
267 ASSERT_EQ(v2[0].size(), 3);
268 ASSERT_EQ(v2[0][0], 27);
269 ASSERT_EQ(v2[0][1], 32);
270 ASSERT_EQ(v2[0][2], 21);
271 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.
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.
Allocateur avec buffer pré-alloué.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
List< String > StringList
Tableau de chaînes de caractères unicode.