summaryrefslogtreecommitdiffstats
path: root/libcxx/test/numerics/numarray/template.valarray/valarray.cassign
diff options
context:
space:
mode:
Diffstat (limited to 'libcxx/test/numerics/numarray/template.valarray/valarray.cassign')
-rw-r--r--libcxx/test/numerics/numarray/template.valarray/valarray.cassign/and_valarray.pass.cpp36
-rw-r--r--libcxx/test/numerics/numarray/template.valarray/valarray.cassign/and_value.pass.cpp33
-rw-r--r--libcxx/test/numerics/numarray/template.valarray/valarray.cassign/divide_valarray.pass.cpp36
-rw-r--r--libcxx/test/numerics/numarray/template.valarray/valarray.cassign/divide_value.pass.cpp33
-rw-r--r--libcxx/test/numerics/numarray/template.valarray/valarray.cassign/minus_valarray.pass.cpp36
-rw-r--r--libcxx/test/numerics/numarray/template.valarray/valarray.cassign/minus_value.pass.cpp33
-rw-r--r--libcxx/test/numerics/numarray/template.valarray/valarray.cassign/modulo_valarray.pass.cpp36
-rw-r--r--libcxx/test/numerics/numarray/template.valarray/valarray.cassign/modulo_value.pass.cpp33
-rw-r--r--libcxx/test/numerics/numarray/template.valarray/valarray.cassign/or_valarray.pass.cpp36
-rw-r--r--libcxx/test/numerics/numarray/template.valarray/valarray.cassign/or_value.pass.cpp33
-rw-r--r--libcxx/test/numerics/numarray/template.valarray/valarray.cassign/plus_valarray.pass.cpp36
-rw-r--r--libcxx/test/numerics/numarray/template.valarray/valarray.cassign/plus_value.pass.cpp33
-rw-r--r--libcxx/test/numerics/numarray/template.valarray/valarray.cassign/shift_left_valarray.pass.cpp36
-rw-r--r--libcxx/test/numerics/numarray/template.valarray/valarray.cassign/shift_left_value.pass.cpp33
-rw-r--r--libcxx/test/numerics/numarray/template.valarray/valarray.cassign/shift_right_valarray.pass.cpp36
-rw-r--r--libcxx/test/numerics/numarray/template.valarray/valarray.cassign/shift_right_value.pass.cpp33
-rw-r--r--libcxx/test/numerics/numarray/template.valarray/valarray.cassign/times_valarray.pass.cpp36
-rw-r--r--libcxx/test/numerics/numarray/template.valarray/valarray.cassign/times_value.pass.cpp33
-rw-r--r--libcxx/test/numerics/numarray/template.valarray/valarray.cassign/xor_valarray.pass.cpp36
-rw-r--r--libcxx/test/numerics/numarray/template.valarray/valarray.cassign/xor_value.pass.cpp33
20 files changed, 690 insertions, 0 deletions
diff --git a/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/and_valarray.pass.cpp b/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/and_valarray.pass.cpp
new file mode 100644
index 00000000000..36b80f9820a
--- /dev/null
+++ b/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/and_valarray.pass.cpp
@@ -0,0 +1,36 @@
+//===----------------------------------------------------------------------===//
+//
+// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// <valarray>
+
+// template<class T> class valarray;
+
+// valarray& operator&=(const valarray& v);
+
+#include <valarray>
+#include <cassert>
+
+int main()
+{
+ {
+ typedef int T;
+ T a1[] = {1, 2, 3, 4, 5};
+ T a2[] = {6, 7, 8, 9, 10};
+ T a3[] = {0, 2, 0, 0, 0};
+ const unsigned N = sizeof(a1)/sizeof(a1[0]);
+ std::valarray<T> v1(a1, N);
+ std::valarray<T> v2(a2, N);
+ std::valarray<T> v3(a3, N);
+ v1 &= v2;
+ assert(v1.size() == v2.size());
+ assert(v1.size() == v3.size());
+ for (int i = 0; i < v1.size(); ++i)
+ assert(v1[i] == v3[i]);
+ }
+}
diff --git a/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/and_value.pass.cpp b/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/and_value.pass.cpp
new file mode 100644
index 00000000000..fe811a8cad0
--- /dev/null
+++ b/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/and_value.pass.cpp
@@ -0,0 +1,33 @@
+//===----------------------------------------------------------------------===//
+//
+// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// <valarray>
+
+// template<class T> class valarray;
+
+// valarray& operator&=(const value_type& x);
+
+#include <valarray>
+#include <cassert>
+
+int main()
+{
+ {
+ typedef int T;
+ T a1[] = { 1, 2, 3, 4, 5};
+ T a2[] = { 1, 2, 3, 0, 1};
+ const unsigned N = sizeof(a1)/sizeof(a1[0]);
+ std::valarray<T> v1(a1, N);
+ std::valarray<T> v2(a2, N);
+ v1 &= 3;
+ assert(v1.size() == v2.size());
+ for (int i = 0; i < v1.size(); ++i)
+ assert(v1[i] == v2[i]);
+ }
+}
diff --git a/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/divide_valarray.pass.cpp b/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/divide_valarray.pass.cpp
new file mode 100644
index 00000000000..f50c5676c69
--- /dev/null
+++ b/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/divide_valarray.pass.cpp
@@ -0,0 +1,36 @@
+//===----------------------------------------------------------------------===//
+//
+// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// <valarray>
+
+// template<class T> class valarray;
+
+// valarray& operator/=(const valarray& v);
+
+#include <valarray>
+#include <cassert>
+
+int main()
+{
+ {
+ typedef int T;
+ T a1[] = {1, 2, 3, 4, 5};
+ T a2[] = {6, 7, 8, 9, 10};
+ T a3[] = {6, 14, 24, 36, 50};
+ const unsigned N = sizeof(a1)/sizeof(a1[0]);
+ std::valarray<T> v1(a1, N);
+ std::valarray<T> v2(a2, N);
+ std::valarray<T> v3(a3, N);
+ v3 /= v2;
+ assert(v1.size() == v2.size());
+ assert(v1.size() == v3.size());
+ for (int i = 0; i < v1.size(); ++i)
+ assert(v1[i] == v3[i]);
+ }
+}
diff --git a/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/divide_value.pass.cpp b/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/divide_value.pass.cpp
new file mode 100644
index 00000000000..15296ff7255
--- /dev/null
+++ b/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/divide_value.pass.cpp
@@ -0,0 +1,33 @@
+//===----------------------------------------------------------------------===//
+//
+// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// <valarray>
+
+// template<class T> class valarray;
+
+// valarray& operator/=(const value_type& x);
+
+#include <valarray>
+#include <cassert>
+
+int main()
+{
+ {
+ typedef int T;
+ T a1[] = {1, 2, 3, 4, 5};
+ T a2[] = {6, 12, 18, 24, 30};
+ const unsigned N = sizeof(a1)/sizeof(a1[0]);
+ std::valarray<T> v1(a1, N);
+ std::valarray<T> v2(a2, N);
+ v2 /= 6;
+ assert(v1.size() == v2.size());
+ for (int i = 0; i < v1.size(); ++i)
+ assert(v1[i] == v2[i]);
+ }
+}
diff --git a/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/minus_valarray.pass.cpp b/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/minus_valarray.pass.cpp
new file mode 100644
index 00000000000..f9ceaee569a
--- /dev/null
+++ b/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/minus_valarray.pass.cpp
@@ -0,0 +1,36 @@
+//===----------------------------------------------------------------------===//
+//
+// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// <valarray>
+
+// template<class T> class valarray;
+
+// valarray& operator-=(const valarray& v);
+
+#include <valarray>
+#include <cassert>
+
+int main()
+{
+ {
+ typedef int T;
+ T a1[] = {1, 2, 3, 4, 5};
+ T a2[] = {6, 7, 8, 9, 10};
+ T a3[] = {7, 9, 11, 13, 15};
+ const unsigned N = sizeof(a1)/sizeof(a1[0]);
+ std::valarray<T> v1(a1, N);
+ std::valarray<T> v2(a2, N);
+ std::valarray<T> v3(a3, N);
+ v3 -= v2;
+ assert(v1.size() == v2.size());
+ assert(v1.size() == v3.size());
+ for (int i = 0; i < v1.size(); ++i)
+ assert(v1[i] == v3[i]);
+ }
+}
diff --git a/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/minus_value.pass.cpp b/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/minus_value.pass.cpp
new file mode 100644
index 00000000000..cb5c833768c
--- /dev/null
+++ b/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/minus_value.pass.cpp
@@ -0,0 +1,33 @@
+//===----------------------------------------------------------------------===//
+//
+// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// <valarray>
+
+// template<class T> class valarray;
+
+// valarray& operator-=(const value_type& x);
+
+#include <valarray>
+#include <cassert>
+
+int main()
+{
+ {
+ typedef int T;
+ T a1[] = { 1, 2, 3, 4, 5};
+ T a2[] = {-2, -1, 0, 1, 2};
+ const unsigned N = sizeof(a1)/sizeof(a1[0]);
+ std::valarray<T> v1(a1, N);
+ std::valarray<T> v2(a2, N);
+ v1 -= 3;
+ assert(v1.size() == v2.size());
+ for (int i = 0; i < v1.size(); ++i)
+ assert(v1[i] == v2[i]);
+ }
+}
diff --git a/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/modulo_valarray.pass.cpp b/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/modulo_valarray.pass.cpp
new file mode 100644
index 00000000000..80cd26365e3
--- /dev/null
+++ b/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/modulo_valarray.pass.cpp
@@ -0,0 +1,36 @@
+//===----------------------------------------------------------------------===//
+//
+// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// <valarray>
+
+// template<class T> class valarray;
+
+// valarray& operator%=(const valarray& v);
+
+#include <valarray>
+#include <cassert>
+
+int main()
+{
+ {
+ typedef int T;
+ T a1[] = {1, 2, 3, 4, 5};
+ T a2[] = {6, 7, 8, 9, 10};
+ T a3[] = {0, 1, 2, 1, 0};
+ const unsigned N = sizeof(a1)/sizeof(a1[0]);
+ std::valarray<T> v1(a1, N);
+ std::valarray<T> v2(a2, N);
+ std::valarray<T> v3(a3, N);
+ v2 %= v1;
+ assert(v1.size() == v2.size());
+ assert(v1.size() == v3.size());
+ for (int i = 0; i < v1.size(); ++i)
+ assert(v2[i] == v3[i]);
+ }
+}
diff --git a/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/modulo_value.pass.cpp b/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/modulo_value.pass.cpp
new file mode 100644
index 00000000000..6cc73865c05
--- /dev/null
+++ b/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/modulo_value.pass.cpp
@@ -0,0 +1,33 @@
+//===----------------------------------------------------------------------===//
+//
+// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// <valarray>
+
+// template<class T> class valarray;
+
+// valarray& operator%=(const value_type& x);
+
+#include <valarray>
+#include <cassert>
+
+int main()
+{
+ {
+ typedef int T;
+ T a1[] = {1, 2, 3, 4, 5};
+ T a2[] = {1, 2, 0, 1, 2};
+ const unsigned N = sizeof(a1)/sizeof(a1[0]);
+ std::valarray<T> v1(a1, N);
+ std::valarray<T> v2(a2, N);
+ v1 %= 3;
+ assert(v1.size() == v2.size());
+ for (int i = 0; i < v1.size(); ++i)
+ assert(v1[i] == v2[i]);
+ }
+}
diff --git a/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/or_valarray.pass.cpp b/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/or_valarray.pass.cpp
new file mode 100644
index 00000000000..02fec8e9384
--- /dev/null
+++ b/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/or_valarray.pass.cpp
@@ -0,0 +1,36 @@
+//===----------------------------------------------------------------------===//
+//
+// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// <valarray>
+
+// template<class T> class valarray;
+
+// valarray& operator|=(const valarray& v);
+
+#include <valarray>
+#include <cassert>
+
+int main()
+{
+ {
+ typedef int T;
+ T a1[] = {1, 2, 3, 4, 5};
+ T a2[] = {6, 7, 8, 9, 10};
+ T a3[] = {7, 7, 11, 13, 15};
+ const unsigned N = sizeof(a1)/sizeof(a1[0]);
+ std::valarray<T> v1(a1, N);
+ std::valarray<T> v2(a2, N);
+ std::valarray<T> v3(a3, N);
+ v1 |= v2;
+ assert(v1.size() == v2.size());
+ assert(v1.size() == v3.size());
+ for (int i = 0; i < v1.size(); ++i)
+ assert(v1[i] == v3[i]);
+ }
+}
diff --git a/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/or_value.pass.cpp b/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/or_value.pass.cpp
new file mode 100644
index 00000000000..035a1596381
--- /dev/null
+++ b/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/or_value.pass.cpp
@@ -0,0 +1,33 @@
+//===----------------------------------------------------------------------===//
+//
+// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// <valarray>
+
+// template<class T> class valarray;
+
+// valarray& operator|=(const value_type& x);
+
+#include <valarray>
+#include <cassert>
+
+int main()
+{
+ {
+ typedef int T;
+ T a1[] = { 1, 2, 3, 4, 5};
+ T a2[] = { 3, 3, 3, 7, 7};
+ const unsigned N = sizeof(a1)/sizeof(a1[0]);
+ std::valarray<T> v1(a1, N);
+ std::valarray<T> v2(a2, N);
+ v1 |= 3;
+ assert(v1.size() == v2.size());
+ for (int i = 0; i < v1.size(); ++i)
+ assert(v1[i] == v2[i]);
+ }
+}
diff --git a/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/plus_valarray.pass.cpp b/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/plus_valarray.pass.cpp
new file mode 100644
index 00000000000..98f3d8125eb
--- /dev/null
+++ b/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/plus_valarray.pass.cpp
@@ -0,0 +1,36 @@
+//===----------------------------------------------------------------------===//
+//
+// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// <valarray>
+
+// template<class T> class valarray;
+
+// valarray& operator+=(const valarray& v);
+
+#include <valarray>
+#include <cassert>
+
+int main()
+{
+ {
+ typedef int T;
+ T a1[] = {1, 2, 3, 4, 5};
+ T a2[] = {6, 7, 8, 9, 10};
+ T a3[] = {7, 9, 11, 13, 15};
+ const unsigned N = sizeof(a1)/sizeof(a1[0]);
+ std::valarray<T> v1(a1, N);
+ std::valarray<T> v2(a2, N);
+ std::valarray<T> v3(a3, N);
+ v1 += v2;
+ assert(v1.size() == v2.size());
+ assert(v1.size() == v3.size());
+ for (int i = 0; i < v1.size(); ++i)
+ assert(v1[i] == v3[i]);
+ }
+}
diff --git a/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/plus_value.pass.cpp b/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/plus_value.pass.cpp
new file mode 100644
index 00000000000..8860e322cf4
--- /dev/null
+++ b/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/plus_value.pass.cpp
@@ -0,0 +1,33 @@
+//===----------------------------------------------------------------------===//
+//
+// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// <valarray>
+
+// template<class T> class valarray;
+
+// valarray& operator+=(const value_type& x);
+
+#include <valarray>
+#include <cassert>
+
+int main()
+{
+ {
+ typedef int T;
+ T a1[] = {1, 2, 3, 4, 5};
+ T a2[] = {4, 5, 6, 7, 8};
+ const unsigned N = sizeof(a1)/sizeof(a1[0]);
+ std::valarray<T> v1(a1, N);
+ std::valarray<T> v2(a2, N);
+ v1 += 3;
+ assert(v1.size() == v2.size());
+ for (int i = 0; i < v1.size(); ++i)
+ assert(v1[i] == v2[i]);
+ }
+}
diff --git a/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/shift_left_valarray.pass.cpp b/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/shift_left_valarray.pass.cpp
new file mode 100644
index 00000000000..21aa783188c
--- /dev/null
+++ b/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/shift_left_valarray.pass.cpp
@@ -0,0 +1,36 @@
+//===----------------------------------------------------------------------===//
+//
+// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// <valarray>
+
+// template<class T> class valarray;
+
+// valarray& operator<<=(const valarray& v);
+
+#include <valarray>
+#include <cassert>
+
+int main()
+{
+ {
+ typedef int T;
+ T a1[] = { 1, 2, 3, 4, 5};
+ T a2[] = { 6, 7, 8, 9, 10};
+ T a3[] = {64, 256, 768, 2048, 5120};
+ const unsigned N = sizeof(a1)/sizeof(a1[0]);
+ std::valarray<T> v1(a1, N);
+ std::valarray<T> v2(a2, N);
+ std::valarray<T> v3(a3, N);
+ v1 <<= v2;
+ assert(v1.size() == v2.size());
+ assert(v1.size() == v3.size());
+ for (int i = 0; i < v1.size(); ++i)
+ assert(v1[i] == v3[i]);
+ }
+}
diff --git a/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/shift_left_value.pass.cpp b/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/shift_left_value.pass.cpp
new file mode 100644
index 00000000000..6a35d0d2deb
--- /dev/null
+++ b/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/shift_left_value.pass.cpp
@@ -0,0 +1,33 @@
+//===----------------------------------------------------------------------===//
+//
+// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// <valarray>
+
+// template<class T> class valarray;
+
+// valarray& operator<<=(const value_type& x);
+
+#include <valarray>
+#include <cassert>
+
+int main()
+{
+ {
+ typedef int T;
+ T a1[] = { 1, 2, 3, 4, 5};
+ T a2[] = { 8, 16, 24, 32, 40};
+ const unsigned N = sizeof(a1)/sizeof(a1[0]);
+ std::valarray<T> v1(a1, N);
+ std::valarray<T> v2(a2, N);
+ v1 <<= 3;
+ assert(v1.size() == v2.size());
+ for (int i = 0; i < v1.size(); ++i)
+ assert(v1[i] == v2[i]);
+ }
+}
diff --git a/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/shift_right_valarray.pass.cpp b/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/shift_right_valarray.pass.cpp
new file mode 100644
index 00000000000..392f3f9d3f6
--- /dev/null
+++ b/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/shift_right_valarray.pass.cpp
@@ -0,0 +1,36 @@
+//===----------------------------------------------------------------------===//
+//
+// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// <valarray>
+
+// template<class T> class valarray;
+
+// valarray& operator>>=(const valarray& v);
+
+#include <valarray>
+#include <cassert>
+
+int main()
+{
+ {
+ typedef int T;
+ T a1[] = { 1, 2, 3, 4, 5};
+ T a2[] = { 6, 7, 8, 9, 10};
+ T a3[] = {64, 256, 768, 2048, 5120};
+ const unsigned N = sizeof(a1)/sizeof(a1[0]);
+ std::valarray<T> v1(a1, N);
+ std::valarray<T> v2(a2, N);
+ std::valarray<T> v3(a3, N);
+ v3 >>= v2;
+ assert(v1.size() == v2.size());
+ assert(v1.size() == v3.size());
+ for (int i = 0; i < v1.size(); ++i)
+ assert(v1[i] == v3[i]);
+ }
+}
diff --git a/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/shift_right_value.pass.cpp b/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/shift_right_value.pass.cpp
new file mode 100644
index 00000000000..7fdaecb6622
--- /dev/null
+++ b/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/shift_right_value.pass.cpp
@@ -0,0 +1,33 @@
+//===----------------------------------------------------------------------===//
+//
+// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// <valarray>
+
+// template<class T> class valarray;
+
+// valarray& operator>>=(const value_type& x);
+
+#include <valarray>
+#include <cassert>
+
+int main()
+{
+ {
+ typedef int T;
+ T a1[] = { 1, 2, 3, 4, 5};
+ T a2[] = { 8, 16, 24, 32, 40};
+ const unsigned N = sizeof(a1)/sizeof(a1[0]);
+ std::valarray<T> v1(a1, N);
+ std::valarray<T> v2(a2, N);
+ v2 >>= 3;
+ assert(v1.size() == v2.size());
+ for (int i = 0; i < v1.size(); ++i)
+ assert(v1[i] == v2[i]);
+ }
+}
diff --git a/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/times_valarray.pass.cpp b/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/times_valarray.pass.cpp
new file mode 100644
index 00000000000..7ca7c64efbb
--- /dev/null
+++ b/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/times_valarray.pass.cpp
@@ -0,0 +1,36 @@
+//===----------------------------------------------------------------------===//
+//
+// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// <valarray>
+
+// template<class T> class valarray;
+
+// valarray& operator*=(const valarray& v);
+
+#include <valarray>
+#include <cassert>
+
+int main()
+{
+ {
+ typedef int T;
+ T a1[] = {1, 2, 3, 4, 5};
+ T a2[] = {6, 7, 8, 9, 10};
+ T a3[] = {6, 14, 24, 36, 50};
+ const unsigned N = sizeof(a1)/sizeof(a1[0]);
+ std::valarray<T> v1(a1, N);
+ std::valarray<T> v2(a2, N);
+ std::valarray<T> v3(a3, N);
+ v1 *= v2;
+ assert(v1.size() == v2.size());
+ assert(v1.size() == v3.size());
+ for (int i = 0; i < v1.size(); ++i)
+ assert(v1[i] == v3[i]);
+ }
+}
diff --git a/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/times_value.pass.cpp b/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/times_value.pass.cpp
new file mode 100644
index 00000000000..e6a83eab437
--- /dev/null
+++ b/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/times_value.pass.cpp
@@ -0,0 +1,33 @@
+//===----------------------------------------------------------------------===//
+//
+// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// <valarray>
+
+// template<class T> class valarray;
+
+// valarray& operator*=(const value_type& x);
+
+#include <valarray>
+#include <cassert>
+
+int main()
+{
+ {
+ typedef int T;
+ T a1[] = {1, 2, 3, 4, 5};
+ T a2[] = {6, 12, 18, 24, 30};
+ const unsigned N = sizeof(a1)/sizeof(a1[0]);
+ std::valarray<T> v1(a1, N);
+ std::valarray<T> v2(a2, N);
+ v1 *= 6;
+ assert(v1.size() == v2.size());
+ for (int i = 0; i < v1.size(); ++i)
+ assert(v1[i] == v2[i]);
+ }
+}
diff --git a/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/xor_valarray.pass.cpp b/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/xor_valarray.pass.cpp
new file mode 100644
index 00000000000..b2a01922fb1
--- /dev/null
+++ b/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/xor_valarray.pass.cpp
@@ -0,0 +1,36 @@
+//===----------------------------------------------------------------------===//
+//
+// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// <valarray>
+
+// template<class T> class valarray;
+
+// valarray& operator^=(const valarray& v);
+
+#include <valarray>
+#include <cassert>
+
+int main()
+{
+ {
+ typedef int T;
+ T a1[] = {1, 2, 3, 4, 5};
+ T a2[] = {6, 7, 8, 9, 10};
+ T a3[] = {7, 5, 11, 13, 15};
+ const unsigned N = sizeof(a1)/sizeof(a1[0]);
+ std::valarray<T> v1(a1, N);
+ std::valarray<T> v2(a2, N);
+ std::valarray<T> v3(a3, N);
+ v1 ^= v2;
+ assert(v1.size() == v2.size());
+ assert(v1.size() == v3.size());
+ for (int i = 0; i < v1.size(); ++i)
+ assert(v1[i] == v3[i]);
+ }
+}
diff --git a/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/xor_value.pass.cpp b/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/xor_value.pass.cpp
new file mode 100644
index 00000000000..778891c1e02
--- /dev/null
+++ b/libcxx/test/numerics/numarray/template.valarray/valarray.cassign/xor_value.pass.cpp
@@ -0,0 +1,33 @@
+//===----------------------------------------------------------------------===//
+//
+// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// <valarray>
+
+// template<class T> class valarray;
+
+// valarray& operator^=(const value_type& x);
+
+#include <valarray>
+#include <cassert>
+
+int main()
+{
+ {
+ typedef int T;
+ T a1[] = { 1, 2, 3, 4, 5};
+ T a2[] = { 2, 1, 0, 7, 6};
+ const unsigned N = sizeof(a1)/sizeof(a1[0]);
+ std::valarray<T> v1(a1, N);
+ std::valarray<T> v2(a2, N);
+ v1 ^= 3;
+ assert(v1.size() == v2.size());
+ for (int i = 0; i < v1.size(); ++i)
+ assert(v1[i] == v2[i]);
+ }
+}
OpenPOWER on IntegriCloud