//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

// <valarray>

// template<class T> class valarray;

// gslice_array<value_type> operator[](const gslice& gs);

#include <valarray>
#include <cassert>

#include "test_macros.h"

int main(int, char**)
{
    {
        int a1[] = { 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11,
                    12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
                    24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
                    36, 37, 38, 39, 40};
        int a2[] = { -0,  -1,  -2,  -3,  -4,  -5,  -6,  -7,  -8,  -9, -10, -11,
                    -12, -13, -14, -15, -16, -17, -18, -19, -20, -21, -22, -23};
        std::valarray<int> v1(a1, sizeof(a1)/sizeof(a1[0]));
        std::valarray<int> v2(a2, sizeof(a2)/sizeof(a2[0]));
        std::size_t sz[] = {2, 4, 3};
        std::size_t st[] = {19, 4, 1};
        typedef std::valarray<std::size_t> sizes;
        typedef std::valarray<std::size_t> strides;
        v1[std::gslice(3, sizes(sz, sizeof(sz)/sizeof(sz[0])),
                          strides(st, sizeof(st)/sizeof(st[0])))] = v2;
        assert(v1.size() == 41);
        assert(v1[ 0] ==  0);
        assert(v1[ 1] ==  1);
        assert(v1[ 2] ==  2);
        assert(v1[ 3] ==  0);
        assert(v1[ 4] == -1);
        assert(v1[ 5] == -2);
        assert(v1[ 6] ==  6);
        assert(v1[ 7] == -3);
        assert(v1[ 8] == -4);
        assert(v1[ 9] == -5);
        assert(v1[10] == 10);
        assert(v1[11] == -6);
        assert(v1[12] == -7);
        assert(v1[13] == -8);
        assert(v1[14] == 14);
        assert(v1[15] == -9);
        assert(v1[16] == -10);
        assert(v1[17] == -11);
        assert(v1[18] == 18);
        assert(v1[19] == 19);
        assert(v1[20] == 20);
        assert(v1[21] == 21);
        assert(v1[22] == -12);
        assert(v1[23] == -13);
        assert(v1[24] == -14);
        assert(v1[25] == 25);
        assert(v1[26] == -15);
        assert(v1[27] == -16);
        assert(v1[28] == -17);
        assert(v1[29] == 29);
        assert(v1[30] == -18);
        assert(v1[31] == -19);
        assert(v1[32] == -20);
        assert(v1[33] == 33);
        assert(v1[34] == -21);
        assert(v1[35] == -22);
        assert(v1[36] == -23);
        assert(v1[37] == 37);
        assert(v1[38] == 38);
        assert(v1[39] == 39);
        assert(v1[40] == 40);
    }

    return 0;
}
