summaryrefslogtreecommitdiff
path: root/util/util.cpp
blob: 0879a27b50b400b068b53ebb19411126abdc4b0e (plain)
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
/**
*    Copyright (C) 2008 10gen Inc.
*  
*    This program is free software: you can redistribute it and/or  modify
*    it under the terms of the GNU Affero General Public License, version 3,
*    as published by the Free Software Foundation.
*  
*    This program is distributed in the hope that it will be useful,
*    but WITHOUT ANY WARRANTY; without even the implied warranty of
*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*    GNU Affero General Public License for more details.
*  
*    You should have received a copy of the GNU Affero General Public License
*    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

#include "stdafx.h"
#include "goodies.h"
#include "unittest.h"

vector<UnitTest*> UnitTest::tests;

Nullstream nullstream;
Logstream logstream;
boost::mutex Logstream::mutex;

unsigned occasion = 0;
bool goingAway = false;

bool isPrime(int n) { 
	int z = 2;
	while( 1 ) { 
		if( z*z > n )
			break;
		if( n % z == 0 )
			return false;
		z++;
	}
	return true;
}

int nextPrime(int n) { 
	n |= 1; // 2 goes to 3...don't care...
	while( !isPrime(n) )
		n += 2;
	return n;
}

struct UtilTest : public UnitTest { 
	void run() { 
		assert( WrappingInt(0) <= WrappingInt(0) );
		assert( WrappingInt(0) <= WrappingInt(1) );
		assert( !(WrappingInt(1) <= WrappingInt(0)) );
		assert( (WrappingInt(0xf0000000) <= WrappingInt(0)) );
		assert( (WrappingInt(0xf0000000) <= WrappingInt(9000)) );
		assert( !(WrappingInt(300) <= WrappingInt(0xe0000000)) );

		assert( tdiff(3, 4) == 1 ); 
		assert( tdiff(4, 3) == -1 ); 
		assert( tdiff(0xffffffff, 0) == 1 ); 

		assert( isPrime(3) );
		assert( isPrime(2) );
		assert( isPrime(13) );
		assert( isPrime(17) );
		assert( !isPrime(9) );
		assert( !isPrime(6) );
		assert( nextPrime(4) == 5 );
		assert( nextPrime(8) == 11 );

		assert( endsWith("abcde", "de") );
		assert( !endsWith("abcde", "dasdfasdfashkfde") );

		assert( swapEndian(0x01020304) == 0x04030201 );

	}
} utilTest;