summaryrefslogtreecommitdiffstats
path: root/libcxx/test/std/iterators/stream.iterators/istream.iterator
diff options
context:
space:
mode:
authorEric Fiselier <eric@efcs.ca>2014-12-20 01:40:03 +0000
committerEric Fiselier <eric@efcs.ca>2014-12-20 01:40:03 +0000
commit5a83710e371fe68a06e6e3876c6a2c8b820a8976 (patch)
treeafde4c82ad6704681781c5cd49baa3fbd05c85db /libcxx/test/std/iterators/stream.iterators/istream.iterator
parentf11e8eab527fba316c64112f6e05de1a79693a3e (diff)
downloadbcm5719-llvm-5a83710e371fe68a06e6e3876c6a2c8b820a8976.tar.gz
bcm5719-llvm-5a83710e371fe68a06e6e3876c6a2c8b820a8976.zip
Move test into test/std subdirectory.
llvm-svn: 224658
Diffstat (limited to 'libcxx/test/std/iterators/stream.iterators/istream.iterator')
-rw-r--r--libcxx/test/std/iterators/stream.iterators/istream.iterator/istream.iterator.cons/copy.pass.cpp36
-rw-r--r--libcxx/test/std/iterators/stream.iterators/istream.iterator/istream.iterator.cons/default.pass.cpp23
-rw-r--r--libcxx/test/std/iterators/stream.iterators/istream.iterator/istream.iterator.cons/istream.pass.cpp30
-rw-r--r--libcxx/test/std/iterators/stream.iterators/istream.iterator/istream.iterator.ops/arrow.pass.cpp37
-rw-r--r--libcxx/test/std/iterators/stream.iterators/istream.iterator/istream.iterator.ops/dereference.pass.cpp34
-rw-r--r--libcxx/test/std/iterators/stream.iterators/istream.iterator/istream.iterator.ops/equal.pass.cpp52
-rw-r--r--libcxx/test/std/iterators/stream.iterators/istream.iterator/istream.iterator.ops/post_increment.pass.cpp32
-rw-r--r--libcxx/test/std/iterators/stream.iterators/istream.iterator/istream.iterator.ops/pre_increment.pass.cpp29
-rw-r--r--libcxx/test/std/iterators/stream.iterators/istream.iterator/types.pass.cpp42
9 files changed, 315 insertions, 0 deletions
diff --git a/libcxx/test/std/iterators/stream.iterators/istream.iterator/istream.iterator.cons/copy.pass.cpp b/libcxx/test/std/iterators/stream.iterators/istream.iterator/istream.iterator.cons/copy.pass.cpp
new file mode 100644
index 00000000000..0d70c7fc9ed
--- /dev/null
+++ b/libcxx/test/std/iterators/stream.iterators/istream.iterator/istream.iterator.cons/copy.pass.cpp
@@ -0,0 +1,36 @@
+//===----------------------------------------------------------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is dual licensed under the MIT and the University of Illinois Open
+// Source Licenses. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// <iterator>
+
+// class istream_iterator
+
+// istream_iterator(const istream_iterator& x);
+
+#include <iterator>
+#include <sstream>
+#include <cassert>
+
+int main()
+{
+ {
+ std::istream_iterator<int> io;
+ std::istream_iterator<int> i = io;
+ assert(i == std::istream_iterator<int>());
+ }
+ {
+ std::istringstream inf(" 1 23");
+ std::istream_iterator<int> io(inf);
+ std::istream_iterator<int> i = io;
+ assert(i != std::istream_iterator<int>());
+ int j = 0;
+ j = *i;
+ assert(j == 1);
+ }
+}
diff --git a/libcxx/test/std/iterators/stream.iterators/istream.iterator/istream.iterator.cons/default.pass.cpp b/libcxx/test/std/iterators/stream.iterators/istream.iterator/istream.iterator.cons/default.pass.cpp
new file mode 100644
index 00000000000..f6c3dba7ae6
--- /dev/null
+++ b/libcxx/test/std/iterators/stream.iterators/istream.iterator/istream.iterator.cons/default.pass.cpp
@@ -0,0 +1,23 @@
+//===----------------------------------------------------------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is dual licensed under the MIT and the University of Illinois Open
+// Source Licenses. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// <iterator>
+
+// class istream_iterator
+
+// istream_iterator();
+
+#include <iterator>
+#include <cassert>
+
+int main()
+{
+ std::istream_iterator<int> i;
+ assert(i == std::istream_iterator<int>());
+}
diff --git a/libcxx/test/std/iterators/stream.iterators/istream.iterator/istream.iterator.cons/istream.pass.cpp b/libcxx/test/std/iterators/stream.iterators/istream.iterator/istream.iterator.cons/istream.pass.cpp
new file mode 100644
index 00000000000..12a6f90e889
--- /dev/null
+++ b/libcxx/test/std/iterators/stream.iterators/istream.iterator/istream.iterator.cons/istream.pass.cpp
@@ -0,0 +1,30 @@
+//===----------------------------------------------------------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is dual licensed under the MIT and the University of Illinois Open
+// Source Licenses. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// <iterator>
+
+// class istream_iterator
+
+// istream_iterator(istream_type& s);
+
+#include <iterator>
+#include <sstream>
+#include <cassert>
+
+int main()
+{
+ std::istringstream inf(" 1 23");
+ std::istream_iterator<int> i(inf);
+ assert(i != std::istream_iterator<int>());
+ assert(inf.peek() == ' ');
+ assert(inf.good());
+ int j = 0;
+ inf >> j;
+ assert(j == 23);
+}
diff --git a/libcxx/test/std/iterators/stream.iterators/istream.iterator/istream.iterator.ops/arrow.pass.cpp b/libcxx/test/std/iterators/stream.iterators/istream.iterator/istream.iterator.ops/arrow.pass.cpp
new file mode 100644
index 00000000000..5c4ddcad32e
--- /dev/null
+++ b/libcxx/test/std/iterators/stream.iterators/istream.iterator/istream.iterator.ops/arrow.pass.cpp
@@ -0,0 +1,37 @@
+//===----------------------------------------------------------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is dual licensed under the MIT and the University of Illinois Open
+// Source Licenses. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// <iterator>
+
+// class istream_iterator
+
+// const T* operator->() const;
+
+#include <iterator>
+#include <sstream>
+#include <cassert>
+
+struct A
+{
+ double d_;
+ int i_;
+};
+
+std::istream& operator>>(std::istream& is, A& a)
+{
+ return is >> a.d_ >> a.i_;
+}
+
+int main()
+{
+ std::istringstream inf("1.5 23 ");
+ std::istream_iterator<A> i(inf);
+ assert(i->d_ == 1.5);
+ assert(i->i_ == 23);
+}
diff --git a/libcxx/test/std/iterators/stream.iterators/istream.iterator/istream.iterator.ops/dereference.pass.cpp b/libcxx/test/std/iterators/stream.iterators/istream.iterator/istream.iterator.ops/dereference.pass.cpp
new file mode 100644
index 00000000000..e6f86d48336
--- /dev/null
+++ b/libcxx/test/std/iterators/stream.iterators/istream.iterator/istream.iterator.ops/dereference.pass.cpp
@@ -0,0 +1,34 @@
+//===----------------------------------------------------------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is dual licensed under the MIT and the University of Illinois Open
+// Source Licenses. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// <iterator>
+
+// class istream_iterator
+
+// const T& operator*() const;
+
+#include <iterator>
+#include <sstream>
+#include <cassert>
+
+int main()
+{
+ std::istringstream inf(" 1 23");
+ std::istream_iterator<int> i(inf);
+ int j = 0;
+ j = *i;
+ assert(j == 1);
+ j = *i;
+ assert(j == 1);
+ ++i;
+ j = *i;
+ assert(j == 23);
+ j = *i;
+ assert(j == 23);
+}
diff --git a/libcxx/test/std/iterators/stream.iterators/istream.iterator/istream.iterator.ops/equal.pass.cpp b/libcxx/test/std/iterators/stream.iterators/istream.iterator/istream.iterator.ops/equal.pass.cpp
new file mode 100644
index 00000000000..0bee916d50c
--- /dev/null
+++ b/libcxx/test/std/iterators/stream.iterators/istream.iterator/istream.iterator.ops/equal.pass.cpp
@@ -0,0 +1,52 @@
+//===----------------------------------------------------------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is dual licensed under the MIT and the University of Illinois Open
+// Source Licenses. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// <iterator>
+
+// class istream_iterator
+
+// template <class T, class charT, class traits, class Distance>
+// bool operator==(const istream_iterator<T,charT,traits,Distance> &x,
+// const istream_iterator<T,charT,traits,Distance> &y);
+//
+// template <class T, class charT, class traits, class Distance>
+// bool operator!=(const istream_iterator<T,charT,traits,Distance> &x,
+// const istream_iterator<T,charT,traits,Distance> &y);
+
+#include <iterator>
+#include <sstream>
+#include <cassert>
+
+int main()
+{
+ std::istringstream inf1(" 1 23");
+ std::istringstream inf2(" 1 23");
+ std::istream_iterator<int> i1(inf1);
+ std::istream_iterator<int> i2(inf1);
+ std::istream_iterator<int> i3(inf2);
+ std::istream_iterator<int> i4;
+ std::istream_iterator<int> i5;
+ assert(i1 == i1);
+ assert(i1 == i2);
+ assert(i1 != i3);
+ assert(i1 != i4);
+ assert(i1 != i5);
+
+ assert(i2 == i2);
+ assert(i2 != i3);
+ assert(i2 != i4);
+ assert(i2 != i5);
+
+ assert(i3 == i3);
+ assert(i3 != i4);
+ assert(i3 != i5);
+
+ assert(i4 == i4);
+ assert(i4 == i5);
+}
diff --git a/libcxx/test/std/iterators/stream.iterators/istream.iterator/istream.iterator.ops/post_increment.pass.cpp b/libcxx/test/std/iterators/stream.iterators/istream.iterator/istream.iterator.ops/post_increment.pass.cpp
new file mode 100644
index 00000000000..f5c49e37918
--- /dev/null
+++ b/libcxx/test/std/iterators/stream.iterators/istream.iterator/istream.iterator.ops/post_increment.pass.cpp
@@ -0,0 +1,32 @@
+//===----------------------------------------------------------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is dual licensed under the MIT and the University of Illinois Open
+// Source Licenses. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// <iterator>
+
+// class istream_iterator
+
+// istream_iterator operator++(int);
+
+#include <iterator>
+#include <sstream>
+#include <cassert>
+
+int main()
+{
+ std::istringstream inf(" 1 23");
+ std::istream_iterator<int> i(inf);
+ std::istream_iterator<int> icopy = i++;
+ assert(icopy == i);
+ int j = 0;
+ j = *i;
+ assert(j == 23);
+ j = 0;
+ j = *icopy;
+ assert(j == 1);
+}
diff --git a/libcxx/test/std/iterators/stream.iterators/istream.iterator/istream.iterator.ops/pre_increment.pass.cpp b/libcxx/test/std/iterators/stream.iterators/istream.iterator/istream.iterator.ops/pre_increment.pass.cpp
new file mode 100644
index 00000000000..87173f7dc18
--- /dev/null
+++ b/libcxx/test/std/iterators/stream.iterators/istream.iterator/istream.iterator.ops/pre_increment.pass.cpp
@@ -0,0 +1,29 @@
+//===----------------------------------------------------------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is dual licensed under the MIT and the University of Illinois Open
+// Source Licenses. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// <iterator>
+
+// class istream_iterator
+
+// istream_iterator& operator++();
+
+#include <iterator>
+#include <sstream>
+#include <cassert>
+
+int main()
+{
+ std::istringstream inf(" 1 23");
+ std::istream_iterator<int> i(inf);
+ std::istream_iterator<int>& iref = ++i;
+ assert(&iref == &i);
+ int j = 0;
+ j = *i;
+ assert(j == 23);
+}
diff --git a/libcxx/test/std/iterators/stream.iterators/istream.iterator/types.pass.cpp b/libcxx/test/std/iterators/stream.iterators/istream.iterator/types.pass.cpp
new file mode 100644
index 00000000000..be55c97773d
--- /dev/null
+++ b/libcxx/test/std/iterators/stream.iterators/istream.iterator/types.pass.cpp
@@ -0,0 +1,42 @@
+//===----------------------------------------------------------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is dual licensed under the MIT and the University of Illinois Open
+// Source Licenses. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// <iterator>
+
+// template <class T, class charT = char, class traits = char_traits<charT>,
+// class Distance = ptrdiff_t>
+// class istream_iterator
+// : public iterator<input_iterator_tag, T, Distance, const T*, const T&>
+// {
+// public:
+// typedef charT char_type;
+// typedef traits traits_type;
+// typedef basic_istream<charT,traits> istream_type;
+// ...
+
+#include <iterator>
+#include <type_traits>
+
+int main()
+{
+ typedef std::istream_iterator<double> I1;
+ static_assert((std::is_convertible<I1,
+ std::iterator<std::input_iterator_tag, double, std::ptrdiff_t,
+ const double*, const double&> >::value), "");
+ static_assert((std::is_same<I1::char_type, char>::value), "");
+ static_assert((std::is_same<I1::traits_type, std::char_traits<char> >::value), "");
+ static_assert((std::is_same<I1::istream_type, std::istream>::value), "");
+ typedef std::istream_iterator<unsigned, wchar_t> I2;
+ static_assert((std::is_convertible<I2,
+ std::iterator<std::input_iterator_tag, unsigned, std::ptrdiff_t,
+ const unsigned*, const unsigned&> >::value), "");
+ static_assert((std::is_same<I2::char_type, wchar_t>::value), "");
+ static_assert((std::is_same<I2::traits_type, std::char_traits<wchar_t> >::value), "");
+ static_assert((std::is_same<I2::istream_type, std::wistream>::value), "");
+}
OpenPOWER on IntegriCloud