ProteoWizard
Functions | Variables
IntegerSetTest.cpp File Reference
#include "Std.hpp"
#include "IntegerSet.hpp"
#include "pwiz/utility/misc/unit.hpp"
#include <cstring>
#include <limits>

Go to the source code of this file.

Functions

void test ()
void testInstantiation ()
void testContains ()
void testUpperBound ()
void testIntervalExtraction ()
void testIntervalExtraction2 ()
void testIntExtraction ()
void testParse ()
void testParse2 ()
int main (int argc, char *argv[])

Variables

ostream * os_ = 0

Function Documentation

void test ( )

Definition at line 37 of file IntegerSetTest.cpp.

References pwiz::util::IntegerSet::begin(), pwiz::util::IntegerSet::empty(), pwiz::util::IntegerSet::end(), pwiz::util::IntegerSet::insert(), os_, and unit_assert.

{
// instantiate IntegerSet
a.insert(1);
a.insert(2);
a.insert(0,2);
a.insert(4);
// verify virtual container contents: 0, 1, 2, 4
if (os_)
{
copy(a.begin(), a.end(), ostream_iterator<int>(*os_," "));
*os_ << endl;
}
vector<int> b;
copy(a.begin(), a.end(), back_inserter(b));
unit_assert(b.size() == 4);
unit_assert(b[0] == 0);
unit_assert(b[1] == 1);
unit_assert(b[2] == 2);
unit_assert(b[3] == 4);
// insert [2,4], and verify contents: 0, 1, 2, 3, 4
a.insert(2,4);
if (os_)
{
copy(a.begin(), a.end(), ostream_iterator<int>(*os_," "));
*os_ << endl;
}
b.clear();
copy(a.begin(), a.end(), back_inserter(b));
unit_assert(b.size() == 5);
for (int i=0; i<5; i++)
unit_assert(i == b[i]);
}
void testInstantiation ( )

Definition at line 88 of file IntegerSetTest.cpp.

References pwiz::util::IntegerSet::begin(), pwiz::util::IntegerSet::end(), and unit_assert.

Referenced by main().

{
IntegerSet a(666);
vector<int> b;
copy(a.begin(), a.end(), back_inserter(b));
unit_assert(b.size() == 1);
unit_assert(b[0] == 666);
IntegerSet c(666,668);
vector<int> d;
copy(c.begin(), c.end(), back_inserter(d));
unit_assert(d.size() == 3);
unit_assert(d[0] == 666);
unit_assert(d[1] == 667);
unit_assert(d[2] == 668);
}
void testContains ( )

Definition at line 106 of file IntegerSetTest.cpp.

References pwiz::util::IntegerSet::contains(), pwiz::util::IntegerSet::insert(), and unit_assert.

Referenced by main().

{
IntegerSet a(3,5);
a.insert(11);
a.insert(13,17);
for (int i=0; i<3; i++)
unit_assert(!a.contains(i));
for (int i=3; i<6; i++)
unit_assert(a.contains(i));
for (int i=6; i<11; i++)
unit_assert(!a.contains(i));
unit_assert(a.contains(11));
unit_assert(!a.contains(12));
for (int i=13; i<18; i++)
unit_assert(a.contains(i));
for (int i=18; i<100; i++)
unit_assert(!a.contains(i));
}
void testUpperBound ( )

Definition at line 127 of file IntegerSetTest.cpp.

References pwiz::util::IntegerSet::hasUpperBound(), and unit_assert.

Referenced by main().

{
IntegerSet a(3,5);
for (int i=0; i<5; i++)
unit_assert(!a.hasUpperBound(i));
for (int i=5; i<10; i++)
unit_assert(a.hasUpperBound(i));
}
void testIntervalExtraction ( )

Definition at line 138 of file IntegerSetTest.cpp.

References unit_assert.

Referenced by main().

{
istringstream iss(" \t [-2,5] "); // whitespace okay around encoded interval, but not within it
iss >> i;
unit_assert(i.begin == -2);
unit_assert(i.end == 5);
}
void testIntervalExtraction2 ( )

Definition at line 150 of file IntegerSetTest.cpp.

References max(), and unit_assert.

Referenced by main().

{
istringstream iss(" \t 420 "); // whitespace okay around encoded interval, but not within it
iss >> i;
unit_assert(i.begin == 420);
unit_assert(i.end == 420);
istringstream iss2(" \n 420- ");
iss2 >> i;
unit_assert(i.begin == 420);
istringstream iss3(" \n 420-goober "); // goober is ignored, since it's not an int
iss3 >> i;
unit_assert(i.begin == 420);
istringstream iss4(" \n 420-666");
iss4 >> i;
unit_assert(i.begin == 420);
unit_assert(i.end == 666);
}
void testIntExtraction ( )

Definition at line 176 of file IntegerSetTest.cpp.

References unit_assert.

Referenced by main().

{
istringstream iss("1,100");
iss.imbue(locale("C")); // hack for msvc
int i = 0;
iss >> i;
unit_assert(i == 1);
}
void testParse ( )

Definition at line 188 of file IntegerSetTest.cpp.

References pwiz::util::IntegerSet::begin(), pwiz::util::IntegerSet::end(), pwiz::util::IntegerSet::intervalCount(), pwiz::util::IntegerSet::parse(), pwiz::util::IntegerSet::size(), and unit_assert.

Referenced by main().

{
a.parse(" [-3,2] [5,5] [8,9] booger "); // insert(-3,2); insert(5); insert(8,9);
unit_assert(a.size() == 9);
vector<int> b;
copy(a.begin(), a.end(), back_inserter(b));
unit_assert(b.size() == 9);
unit_assert(b[0] == -3);
unit_assert(b[1] == -2);
unit_assert(b[2] == -1);
unit_assert(b[3] == 0);
unit_assert(b[4] == 1);
unit_assert(b[5] == 2);
unit_assert(b[6] == 5);
unit_assert(b[7] == 8);
unit_assert(b[8] == 9);
}
void testParse2 ( )

Definition at line 212 of file IntegerSetTest.cpp.

References pwiz::util::IntegerSet::begin(), pwiz::util::IntegerSet::intervalCount(), max(), pwiz::util::IntegerSet::parse(), pwiz::util::IntegerSet::size(), and unit_assert.

Referenced by main().

{
a.parse(" [-3,2] 5 8-9 10- "); // insert(-3,2); insert(5); insert(8,9); insert(10,INT_MAX);
vector<int> b;
for (int i=0; i<11; ++i, ++it) // don't copy to the end() unless you have lots of time and space ;)
b.push_back(*it);
unit_assert(b.size() == 11);
unit_assert(b[0] == -3);
unit_assert(b[1] == -2);
unit_assert(b[2] == -1);
unit_assert(b[3] == 0);
unit_assert(b[4] == 1);
unit_assert(b[5] == 2);
unit_assert(b[6] == 5);
unit_assert(b[7] == 8);
unit_assert(b[8] == 9);
unit_assert(b[9] == 10);
unit_assert(b[10] == 11);
}
int main ( int  argc,
char *  argv[] 
)

Variable Documentation

ostream* os_ = 0

Definition at line 34 of file IntegerSetTest.cpp.