42 std::size_t nelems = psize ? *psize : 0;
44 T*
const buf =
new T [nelems ? nelems : 4096];
46 if (0 == nelems && (0 ==
s ||
'\0' == *
s))
54 long val =
s ? std::strtol (
s, &
end, 0) : 0
L;
60 if (0 ==
end ||
'\0' == *
end) {
88const std::size_t*
count (
const T*) {
return 0; }
101 std::size_t nelems = psize ? *psize : 0;
104 void*
const raw =
operator new ((nelems ? nelems : 1024) *
size);
107 if (0 == nelems && (0 ==
s ||
'\0' == *
s))
115 long val =
s ? std::strtol (
s, &
end, 0) : 0
L;
122 if (0 ==
end ||
'\0' == *
end) {
145 for (std::size_t
i = 0;
i != nelems; ++
i)
146 (
a +
i)->~UserClass ();
169 int line,
const char *
str, std::size_t nelems)
171 std::valarray<T> *pva = 0;
176 std::size_t
size = 0;
180 const std::size_t*
const pcounter =
count ((
const T*)0);
183 std::size_t nobjects = pcounter ? *pcounter : 0;
189 pva =
new std::valarray<T>;
194 "valarray<%s>::valarray(size_t = %zu)",
196 pva =
new std::valarray<T>(nelems);
201 "valarray<%s>::valarray(const %1$s& = %1$s(%d), "
204 pva =
new std::valarray<T>(
array [0], nelems);
210 "valarray<%s>::valarray(const %1$s* = {%s}, "
213 pva =
new std::valarray<T>(
array, nelems);
219 std::valarray<T> *psave = 0;
223 std::size_t tmpsize = 0;
225 rw_asnprintf (&tmpbuf, &tmpsize,
"valarray<%s>::valarray(%s)",
233 nobjects = pcounter ? *pcounter : 0;
239 pva =
new std::valarray<T>(*pva);
244 "line %d. %s.size() == %zu, got %zu",
245 __LINE__, fname, nelems, pva->size ());
250 nobjects = *pcounter - nobjects;
253 "line %d. %s constucted %zu objects, expected %zu",
254 __LINE__, fname, nobjects, nelems);
258 for (std::size_t
i = 0;
i != nelems; ++
i) {
259 if (!((*pva)[
i] ==
array [
i])) {
261 "line %d. %s[%zu] == %s(%d), got %4$s(%d)",
262 __LINE__, fname,
i, tname,
272 nobjects = pcounter ? *pcounter : 0;
278 nobjects = nobjects - *pcounter;
283 "line %d. %s dtor destroyed %zu objects, expected %zu",
284 __LINE__, fname, nobjects, nelems);
299 rw_info (0, 0, __LINE__,
"std::valarray<%s>::valarray()", tname);
311 rw_info (0, 0, __LINE__,
"std::valarray<%s>::valarray(size_t)",
316 test_ctor ((const T*)0, tname, SizeCtor, copy, __LINE__, "0", n)
341 "std::valarray<%s>::valarray(const %1$s&, size_t)",
344#define TEST(str, n) \
345 test_ctor ((const T*)0, tname, ValueCtor, copy, __LINE__, str, n)
365 "std::valarray<%s>::valarray(const %1$s*, size_t)",
370 test_ctor ((const T*)0, tname, ArrayCtor, copy, __LINE__, str, 0)
378 TEST (
"0,1,2,3,4,5");
379 TEST (
"0,1,2,3,4,5,6");
380 TEST (
"0,1,2,3,4,5,6,7");
381 TEST (
"0,1,2,3,4,5,6,7,8");
382 TEST (
"0,1,2,3,4,5,6,7,8,9");
392 "std::valarray<%s>::valarray(const valarray<%1$s>&)", tname);
401 for (
int i = 0;
i != 2; ++
i) {
423#define TEST(T) test_ctors ((const T*)0, #T)
435int main (
int argc,
char *argv[])
438 return rw_test (argc, argv, __FILE__,
void test_default_ctor(std::bitset< N > *)
void run_test(const ForwardIterator &dummy, T *, Predicate *pred)
void test_size_ctor(const T *, const char *tname, bool copy)
void test_array_ctor(const T *, const char *tname, bool copy)
const std::size_t * count(const T *)
T * make_array(const T *, const char *s, std::size_t *psize)
void test_copy_ctor(const T *, const char *tname)
void delete_array(const T *array, std::size_t)
void test_value_ctor(const T *, const char *tname, bool copy)
void test_ctor(const charT *, const Traits *, const char *cname, const char *tname)
#define _RWSTD_STATIC_CAST(T, x)
#define _RWSTD_CONST_CAST(T, x)
_TEST_EXPORT int rw_test(int argc, char *argv[], const char *filename, const char *clause, const char *comment, int(*testfun)(int, char **), const char *optspec,...)
_TEST_EXPORT int rw_info(int, const char *, int, const char *,...)
_TEST_EXPORT int rw_assert(int, const char *, int, const char *,...)
_TEST_EXPORT int rw_asnprintf(char **pbuf, _RWSTD_SIZE_T *pbufsize, const char *fmt,...)
static _RWSTD_SIZE_T count_