26
26
27
27
using namespace OpenSim ;
28
28
29
+ constexpr double tol = std::numeric_limits<double >::epsilon() * 10 ;
30
+
29
31
namespace
30
32
{
31
33
template <typename T>
@@ -129,3 +131,47 @@ TEST_CASE("Array set keeps size if within bounds")
129
131
REQUIRE (vals.size () == 1 );
130
132
REQUIRE (vals.get (0 ) == 4 );
131
133
}
134
+
135
+ TEST_CASE (" Array initializer list works with integers" )
136
+ {
137
+ Array<int > vals{-1 , 2 , 4 };
138
+
139
+ REQUIRE (vals.get (0 ) == -1 );
140
+ REQUIRE (vals.get (1 ) == 2 );
141
+ REQUIRE (vals.get (2 ) == 4 );
142
+ }
143
+
144
+ TEST_CASE (" Array constructor initialization works" )
145
+ {
146
+ Array<int > vals (-1 , 2 );
147
+
148
+ REQUIRE (vals.get (0 ) == -1 );
149
+ REQUIRE (vals.get (1 ) == -1 );
150
+ }
151
+
152
+ TEST_CASE (" Array initializer list works with doubles" )
153
+ {
154
+ Array<double > vals{-1.5 , 2.2 , 4.6 };
155
+
156
+ REQUIRE_THAT (vals.get (0 ), Catch::Matchers::WithinAbs (-1.5 ,tol));
157
+ REQUIRE_THAT (vals.get (1 ), Catch::Matchers::WithinAbs (2.2 ,tol));
158
+ REQUIRE_THAT (vals.get (2 ), Catch::Matchers::WithinAbs (4.6 ,tol));
159
+ }
160
+
161
+ TEST_CASE (" Array initializer list works with doubles and alternate syntax" )
162
+ {
163
+ Array<double > vals = {-1.5 , 2.2 , 4.6 };
164
+
165
+ REQUIRE_THAT (vals.get (0 ), Catch::Matchers::WithinAbs (-1.5 ,tol));
166
+ REQUIRE_THAT (vals.get (1 ), Catch::Matchers::WithinAbs (2.2 ,tol));
167
+ REQUIRE_THAT (vals.get (2 ), Catch::Matchers::WithinAbs (4.6 ,tol));
168
+ }
169
+
170
+ TEST_CASE (" Array initializer list works with booleans" )
171
+ {
172
+ Array<bool > vals{true , false , true };
173
+
174
+ REQUIRE (vals.get (0 ) == true );
175
+ REQUIRE (vals.get (1 ) == false );
176
+ REQUIRE (vals.get (2 ) == true );
177
+ }
0 commit comments