brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.8 KiB · ce46cbd Raw
90 lines · cpp
1//===----------------------------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9// <valarray>10 11// template<class T> class valarray;12 13// void swap(valarray& v);14 15#include <valarray>16#include <cassert>17#include <cstddef>18 19#include "test_macros.h"20 21int main(int, char**)22{23    {24        typedef int T;25        T a1[] = {1, 2, 3, 4, 5};26        T a2[] = {6, 7, 8, 9, 10, 11, 12};27        const unsigned N1 = sizeof(a1)/sizeof(a1[0]);28        const unsigned N2 = sizeof(a2)/sizeof(a2[0]);29        std::valarray<T> v1(a1, N1);30        std::valarray<T> v2(a2, N2);31        std::valarray<T> v1_save = v1;32        std::valarray<T> v2_save = v2;33        v1.swap(v2);34        assert(v1.size() == v2_save.size());35        for (std::size_t i = 0; i < v1.size(); ++i)36            assert(v1[i] == v2_save[i]);37        assert(v2.size() == v1_save.size());38        for (std::size_t i = 0; i < v2.size(); ++i)39            assert(v2[i] == v1_save[i]);40    }41    {42        typedef int T;43        T a1[] = {1, 2, 3, 4, 5};44        const unsigned N1 = sizeof(a1)/sizeof(a1[0]);45        std::valarray<T> v1(a1, N1);46        std::valarray<T> v2;47        std::valarray<T> v1_save = v1;48        std::valarray<T> v2_save = v2;49        v1.swap(v2);50        assert(v1.size() == v2_save.size());51        for (std::size_t i = 0; i < v1.size(); ++i)52            assert(v1[i] == v2_save[i]);53        assert(v2.size() == v1_save.size());54        for (std::size_t i = 0; i < v2.size(); ++i)55            assert(v2[i] == v1_save[i]);56    }57    {58        typedef int T;59        T a2[] = {6, 7, 8, 9, 10, 11, 12};60        const unsigned N2 = sizeof(a2)/sizeof(a2[0]);61        std::valarray<T> v1;62        std::valarray<T> v2(a2, N2);63        std::valarray<T> v1_save = v1;64        std::valarray<T> v2_save = v2;65        v1.swap(v2);66        assert(v1.size() == v2_save.size());67        for (std::size_t i = 0; i < v1.size(); ++i)68            assert(v1[i] == v2_save[i]);69        assert(v2.size() == v1_save.size());70        for (std::size_t i = 0; i < v2.size(); ++i)71            assert(v2[i] == v1_save[i]);72    }73    {74        typedef int T;75        std::valarray<T> v1;76        std::valarray<T> v2;77        std::valarray<T> v1_save = v1;78        std::valarray<T> v2_save = v2;79        v1.swap(v2);80        assert(v1.size() == v2_save.size());81        for (std::size_t i = 0; i < v1.size(); ++i)82            assert(v1[i] == v2_save[i]);83        assert(v2.size() == v1_save.size());84        for (std::size_t i = 0; i < v2.size(); ++i)85            assert(v2[i] == v1_save[i]);86    }87 88  return 0;89}90