mirror of
https://github.com/boostorg/iterator.git
synced 2025-08-02 06:15:20 +02:00
This commit was manufactured by cvs2svn to create branch
'unlabeled-1.4.2'. [SVN r9366]
This commit is contained in:
96
.gitattributes
vendored
Normal file
96
.gitattributes
vendored
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
* text=auto !eol svneol=native#text/plain
|
||||||
|
*.gitattributes text svneol=native#text/plain
|
||||||
|
|
||||||
|
# Scriptish formats
|
||||||
|
*.bat text svneol=native#text/plain
|
||||||
|
*.bsh text svneol=native#text/x-beanshell
|
||||||
|
*.cgi text svneol=native#text/plain
|
||||||
|
*.cmd text svneol=native#text/plain
|
||||||
|
*.js text svneol=native#text/javascript
|
||||||
|
*.php text svneol=native#text/x-php
|
||||||
|
*.pl text svneol=native#text/x-perl
|
||||||
|
*.pm text svneol=native#text/x-perl
|
||||||
|
*.py text svneol=native#text/x-python
|
||||||
|
*.sh eol=lf svneol=LF#text/x-sh
|
||||||
|
configure eol=lf svneol=LF#text/x-sh
|
||||||
|
|
||||||
|
# Image formats
|
||||||
|
*.bmp binary svneol=unset#image/bmp
|
||||||
|
*.gif binary svneol=unset#image/gif
|
||||||
|
*.ico binary svneol=unset#image/ico
|
||||||
|
*.jpeg binary svneol=unset#image/jpeg
|
||||||
|
*.jpg binary svneol=unset#image/jpeg
|
||||||
|
*.png binary svneol=unset#image/png
|
||||||
|
*.tif binary svneol=unset#image/tiff
|
||||||
|
*.tiff binary svneol=unset#image/tiff
|
||||||
|
*.svg text svneol=native#image/svg%2Bxml
|
||||||
|
|
||||||
|
# Data formats
|
||||||
|
*.pdf binary svneol=unset#application/pdf
|
||||||
|
*.avi binary svneol=unset#video/avi
|
||||||
|
*.doc binary svneol=unset#application/msword
|
||||||
|
*.dsp text svneol=crlf#text/plain
|
||||||
|
*.dsw text svneol=crlf#text/plain
|
||||||
|
*.eps binary svneol=unset#application/postscript
|
||||||
|
*.gz binary svneol=unset#application/gzip
|
||||||
|
*.mov binary svneol=unset#video/quicktime
|
||||||
|
*.mp3 binary svneol=unset#audio/mpeg
|
||||||
|
*.ppt binary svneol=unset#application/vnd.ms-powerpoint
|
||||||
|
*.ps binary svneol=unset#application/postscript
|
||||||
|
*.psd binary svneol=unset#application/photoshop
|
||||||
|
*.rdf binary svneol=unset#text/rdf
|
||||||
|
*.rss text svneol=unset#text/xml
|
||||||
|
*.rtf binary svneol=unset#text/rtf
|
||||||
|
*.sln text svneol=native#text/plain
|
||||||
|
*.swf binary svneol=unset#application/x-shockwave-flash
|
||||||
|
*.tgz binary svneol=unset#application/gzip
|
||||||
|
*.vcproj text svneol=native#text/xml
|
||||||
|
*.vcxproj text svneol=native#text/xml
|
||||||
|
*.vsprops text svneol=native#text/xml
|
||||||
|
*.wav binary svneol=unset#audio/wav
|
||||||
|
*.xls binary svneol=unset#application/vnd.ms-excel
|
||||||
|
*.zip binary svneol=unset#application/zip
|
||||||
|
|
||||||
|
# Text formats
|
||||||
|
.htaccess text svneol=native#text/plain
|
||||||
|
*.bbk text svneol=native#text/xml
|
||||||
|
*.cmake text svneol=native#text/plain
|
||||||
|
*.css text svneol=native#text/css
|
||||||
|
*.dtd text svneol=native#text/xml
|
||||||
|
*.htm text svneol=native#text/html
|
||||||
|
*.html text svneol=native#text/html
|
||||||
|
*.ini text svneol=native#text/plain
|
||||||
|
*.log text svneol=native#text/plain
|
||||||
|
*.mak text svneol=native#text/plain
|
||||||
|
*.qbk text svneol=native#text/plain
|
||||||
|
*.rst text svneol=native#text/plain
|
||||||
|
*.sql text svneol=native#text/x-sql
|
||||||
|
*.txt text svneol=native#text/plain
|
||||||
|
*.xhtml text svneol=native#text/xhtml%2Bxml
|
||||||
|
*.xml text svneol=native#text/xml
|
||||||
|
*.xsd text svneol=native#text/xml
|
||||||
|
*.xsl text svneol=native#text/xml
|
||||||
|
*.xslt text svneol=native#text/xml
|
||||||
|
*.xul text svneol=native#text/xul
|
||||||
|
*.yml text svneol=native#text/plain
|
||||||
|
boost-no-inspect text svneol=native#text/plain
|
||||||
|
CHANGES text svneol=native#text/plain
|
||||||
|
COPYING text svneol=native#text/plain
|
||||||
|
INSTALL text svneol=native#text/plain
|
||||||
|
Jamfile text svneol=native#text/plain
|
||||||
|
Jamroot text svneol=native#text/plain
|
||||||
|
Jamfile.v2 text svneol=native#text/plain
|
||||||
|
Jamrules text svneol=native#text/plain
|
||||||
|
Makefile* text svneol=native#text/plain
|
||||||
|
README text svneol=native#text/plain
|
||||||
|
TODO text svneol=native#text/plain
|
||||||
|
|
||||||
|
# Code formats
|
||||||
|
*.c text svneol=native#text/plain
|
||||||
|
*.cpp text svneol=native#text/plain
|
||||||
|
*.h text svneol=native#text/plain
|
||||||
|
*.hpp text svneol=native#text/plain
|
||||||
|
*.ipp text svneol=native#text/plain
|
||||||
|
*.tpp text svneol=native#text/plain
|
||||||
|
*.jam text svneol=native#text/plain
|
||||||
|
*.java text svneol=native#text/plain
|
173
include/boost/pending/iterator_tests.hpp
Normal file
173
include/boost/pending/iterator_tests.hpp
Normal file
@@ -0,0 +1,173 @@
|
|||||||
|
#ifndef BOOST_ITERATOR_TESTS_HPP
|
||||||
|
#define BOOST_ITERATOR_TESTS_HPP
|
||||||
|
|
||||||
|
// This is meant to be the beginnings of a comprehensive, generic
|
||||||
|
// test suite for STL concepts such as iterators and containers.
|
||||||
|
|
||||||
|
#include <iterator>
|
||||||
|
#include <assert.h>
|
||||||
|
|
||||||
|
namespace boost {
|
||||||
|
|
||||||
|
// use this for the value type
|
||||||
|
struct dummyT {
|
||||||
|
dummyT() { }
|
||||||
|
dummyT(int x) : m_x(x) { }
|
||||||
|
int foo() const { return m_x; }
|
||||||
|
bool operator==(const dummyT& d) const { return m_x == d.m_x; }
|
||||||
|
int m_x;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// Tests whether type Iterator satisfies the requirements for a
|
||||||
|
// TrivialIterator.
|
||||||
|
// Preconditions: i != j, *i == val
|
||||||
|
template <class Iterator, class T>
|
||||||
|
void trivial_iterator_test(const Iterator i, const Iterator j, T val)
|
||||||
|
{
|
||||||
|
Iterator k;
|
||||||
|
assert(i == i);
|
||||||
|
assert(j == j);
|
||||||
|
assert(i != j);
|
||||||
|
#ifdef BOOST_NO_STD_ITERATOR_TRAITS
|
||||||
|
T v = *i;
|
||||||
|
#else
|
||||||
|
typename std::iterator_traits<Iterator>::value_type v = *i;
|
||||||
|
#endif
|
||||||
|
assert(v == val);
|
||||||
|
#if 0
|
||||||
|
// hmm, this will give a warning for transform_iterator... perhaps
|
||||||
|
// this should be separated out into a stand-alone test since there
|
||||||
|
// are several situations where it can't be used, like for
|
||||||
|
// integer_range::iterator.
|
||||||
|
assert(v == i->foo());
|
||||||
|
#endif
|
||||||
|
k = i;
|
||||||
|
assert(k == k);
|
||||||
|
assert(k == i);
|
||||||
|
assert(k != j);
|
||||||
|
assert(*k == val);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Preconditions: i != j
|
||||||
|
template <class Iterator, class T>
|
||||||
|
void mutable_trivial_iterator_test(const Iterator i, const Iterator j, T val)
|
||||||
|
{
|
||||||
|
*i = val;
|
||||||
|
trivial_iterator_test(i, j, val);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Preconditions: *i == v1, *++i == v2
|
||||||
|
template <class Iterator, class T>
|
||||||
|
void input_iterator_test(Iterator i, T v1, T v2)
|
||||||
|
{
|
||||||
|
Iterator i1 = i, i2 = i;
|
||||||
|
|
||||||
|
assert(i == i1++);
|
||||||
|
assert(i != ++i2);
|
||||||
|
|
||||||
|
trivial_iterator_test(i, i1, v1);
|
||||||
|
trivial_iterator_test(i, i2, v1);
|
||||||
|
|
||||||
|
++i;
|
||||||
|
assert(i == i1);
|
||||||
|
assert(i == i2);
|
||||||
|
++i1;
|
||||||
|
++i2;
|
||||||
|
|
||||||
|
trivial_iterator_test(i, i1, v2);
|
||||||
|
trivial_iterator_test(i, i2, v2);
|
||||||
|
}
|
||||||
|
|
||||||
|
// how to test output iterator?
|
||||||
|
|
||||||
|
template <class Iterator, class T>
|
||||||
|
void forward_iterator_test(Iterator i, T v1, T v2)
|
||||||
|
{
|
||||||
|
input_iterator_test(i, v1, v2);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Preconditions: *i == v1, *++i == v2
|
||||||
|
template <class Iterator, class T>
|
||||||
|
void bidirectional_iterator_test(Iterator i, T v1, T v2)
|
||||||
|
{
|
||||||
|
input_iterator_test(i, v1, v2);
|
||||||
|
++i;
|
||||||
|
|
||||||
|
Iterator i1 = i, i2 = i;
|
||||||
|
|
||||||
|
assert(i == i1--);
|
||||||
|
assert(i != --i2);
|
||||||
|
|
||||||
|
trivial_iterator_test(i, i1, v2);
|
||||||
|
trivial_iterator_test(i, i2, v2);
|
||||||
|
|
||||||
|
--i;
|
||||||
|
assert(i == i1);
|
||||||
|
assert(i == i2);
|
||||||
|
--i1;
|
||||||
|
--i2;
|
||||||
|
|
||||||
|
trivial_iterator_test(i, i1, v1);
|
||||||
|
trivial_iterator_test(i, i2, v1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// mutable_bidirectional_iterator_test
|
||||||
|
|
||||||
|
// Preconditions: [i,i+N) is a valid range
|
||||||
|
template <class Iterator, class TrueVals>
|
||||||
|
void random_access_iterator_test(Iterator i, int N, TrueVals vals)
|
||||||
|
{
|
||||||
|
bidirectional_iterator_test(i, vals[0], vals[1]);
|
||||||
|
const Iterator j = i;
|
||||||
|
int c;
|
||||||
|
|
||||||
|
for (c = 0; c < N-1; ++c) {
|
||||||
|
assert(i == j + c);
|
||||||
|
assert(*i == vals[c]);
|
||||||
|
assert(*i == j[c]);
|
||||||
|
assert(*i == *(j + c));
|
||||||
|
assert(*i == *(c + j));
|
||||||
|
++i;
|
||||||
|
assert(i > j);
|
||||||
|
assert(i >= j);
|
||||||
|
assert(j <= i);
|
||||||
|
assert(j < i);
|
||||||
|
}
|
||||||
|
|
||||||
|
Iterator k = j + N - 1;
|
||||||
|
for (c = 0; c < N-1; ++c) {
|
||||||
|
assert(i == k - c);
|
||||||
|
assert(*i == vals[N - 1 - c]);
|
||||||
|
assert(*i == j[N - 1 - c]);
|
||||||
|
Iterator q = k - c;
|
||||||
|
assert(*i == *q);
|
||||||
|
assert(i > j);
|
||||||
|
assert(i >= j);
|
||||||
|
assert(j <= i);
|
||||||
|
assert(j < i);
|
||||||
|
--i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Precondition: i != j
|
||||||
|
template <class Iterator, class ConstIterator>
|
||||||
|
void const_nonconst_iterator_test(Iterator i, ConstIterator j)
|
||||||
|
{
|
||||||
|
assert(i != j);
|
||||||
|
assert(j != i);
|
||||||
|
|
||||||
|
ConstIterator k(i);
|
||||||
|
assert(k == i);
|
||||||
|
assert(i == k);
|
||||||
|
|
||||||
|
k = i;
|
||||||
|
assert(k == i);
|
||||||
|
assert(i == k);
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace boost
|
||||||
|
|
||||||
|
#endif // BOOST_ITERATOR_TESTS_HPP
|
Reference in New Issue
Block a user