int main() { try { srand(time(0)); testsparsegammamultifilesetmergedense(); testsparsegammamultifilesetmerge(); testsparsegammamultimerge(); testSparseGammaGapMergingRandom(); testSparseGammaGapMergingSmall(); testSparseGammaConcat(); testSparseGammaIndexing(); testsparsegammalevelmerge(); testsparsegammamerge(); testgammasparse(); testgammarl(); testLow(); testRandom(256*1024*1024); testgammagap(); } catch(std::exception const & ex) { std::cerr << ex.what() << std::endl; return EXIT_FAILURE; } }
void run() override { testConstruction(); testPassphrase(); testBase58(); testRandom(); testKeypairGenerationAndSigning(); testSeedParsing (); }
int main(int argc, char ** argv) { string path = "/Users/andreasfragner/Desktop/"; // TEST STACK DIRECTION (misc.hpp) StackDirection(&argc); // SEARCH testSearch(); // SEEDS srand( int(time(NULL)) ); // TESTS/SPECS BitTest mytest; mytest.run(); // RANDOM testRandom(); // DATA STRUCTURES test_SL(); test_Stack(); test_Queue(); TowersOfHanoi(10); // NUMERICAL test_Numerical(); // PRIMES test_primes(); // SORT test_sort(); // MISC test_misc(); cout << "\n\n\n\n-----------------------------"<<endl; cout << "-----------------------------"<<endl; return 0; }
bool TestBTree::doTest() { if( benchmark ) { doBenchmark(); return true; } else { return testRandom() && testClear() && testIteration() && testComparisons() && testSearching() && testSwap() && testInsert() && testErase() && testCopy(); } }
int main(int argc, char ** argv) { testBernoulli(); testCauchy(); testExponential(); testGeometric(); testInitialSeed(); testLogNormal(); testManualSeed(); testNormal(); testRandom(); testSeed(); testUniform(); UnitTest_report(); }
int main() { const int repeats = 8; const int steps = 350; const size_t kb = 1024; const size_t mb = 1024 * kb; size_t init_size = 16 * kb / sizeof(Node); size_t small_init_size = 1 * kb / sizeof(Node); size_t size = 1 * kb / sizeof(Node); Node * nodes = initNodeArray(size); for(int j = 0; j < steps; j++) { double rand_sum = 0; double seq_sum = 0; for(int i = 0; i < repeats; i++) { nodes = initNodeArray(size); seq_sum += testSequence(nodes, size); rand_sum += testRandom(nodes, size); } std::cout.setf(std::ios::fixed); std::cout.precision( 3 ); std::cout << size / sizeof(Node) << "kb :" << seq_sum * 1000 /(size * (double)repeats) << " --- " << rand_sum * 1000 /(size * (double)repeats) << std::endl; if(size >= init_size * 3) size += init_size; else size += small_init_size; } delete[] nodes; return 0; }
int main( int argc, char **argv ) { const char *zargPtr = NULL; BOOLEAN sessionTestError = FALSE, loopbackTestError = FALSE; int flags, status; void testSystemSpecific1( void ); void testSystemSpecific2( void ); /* If we're running in test mode, run the test code and exit */ #ifdef CONFIG_SUITEB_TESTS return( suiteBMain( argc, argv ) ); #endif /* CONFIG_SUITEB_TESTS */ /* Print a general banner to let the user know what's going on */ printf( "testlib - cryptlib %d-bit self-test framework.\n", ( int ) sizeof( long ) * 8 ); /* Cast for gcc */ puts( "Copyright Peter Gutmann 1995 - 2012." ); puts( "" ); /* Skip the program name and process any command-line arguments */ argv++; argc--; status = processArgs( argc, argv, &flags, &zargPtr ); if( !status ) exit( EXIT_FAILURE ); #ifdef USE_TCHECK THREAD_DEBUG_SUSPEND(); #endif /* USE_TCHECK */ /* Make sure that various system-specific features are set right */ testSystemSpecific1(); /* VisualAge C++ doesn't set the TZ correctly. The check for this isn't as simple as it would seem since most IBM compilers define the same preprocessor values even though it's not documented anywhere, so we have to enable the tzset() call for (effectively) all IBM compilers and then disable it for ones other than VisualAge C++ */ #if ( defined( __IBMC__ ) || defined( __IBMCPP__ ) ) && !defined( __VMCMS__ ) tzset(); #endif /* VisualAge C++ */ /* Initialise cryptlib */ printf( "Initialising cryptlib..." ); status = cryptInit(); if( cryptStatusError( status ) ) { printf( "\ncryptInit() failed with error code %d, line %d.\n", status, __LINE__ ); exit( EXIT_FAILURE ); } puts( "done." ); #ifndef TEST_RANDOM /* In order to avoid having to do a randomness poll for every test run, we bypass the randomness-handling by adding some junk. This is only enabled when cryptlib is built in debug mode so it won't work with any production systems */ #if defined( __MVS__ ) || defined( __VMCMS__ ) #pragma convlit( resume ) cryptAddRandom( "xyzzy", 5 ); #pragma convlit( suspend ) #else cryptAddRandom( "xyzzy", 5 ); #endif /* Special-case EBCDIC handling */ #endif /* TEST_RANDOM */ /* Perform a general sanity check to make sure that the self-test is being run the right way */ if( !checkFileAccess() ) { cryptEnd(); exit( EXIT_FAILURE ); } /* Make sure that further system-specific features that require cryptlib to be initialised to check are set right */ #ifndef _WIN32_WCE testSystemSpecific2(); #endif /* WinCE */ #ifdef USE_TCHECK THREAD_DEBUG_RESUME(); #endif /* USE_TCHECK */ /* For general testing purposes we can insert test code at this point to test special cases that aren't covered in the general tests below */ testKludge( zargPtr ); #ifdef SMOKE_TEST /* Perform a general smoke test of the kernel */ smokeTest(); #endif /* SMOKE_TEST */ /* Test each block of cryptlib functionality */ if( ( flags & DO_SELFTEST ) && !testSelfTest() ) goto errorExit; if( ( flags & DO_LOWLEVEL ) && !testLowLevel() ) goto errorExit; if( ( flags & DO_RANDOM ) && !testRandom() ) goto errorExit; if( ( flags & DO_CONFIG ) && !testConfig() ) goto errorExit; if( ( flags & DO_DEVICE ) && !testDevice() ) goto errorExit; if( ( flags & DO_MIDLEVEL ) && !testMidLevel() ) goto errorExit; if( ( flags & DO_CERT ) && !testCert() ) goto errorExit; if( ( flags & DO_KEYSETFILE ) && !testKeysetFile() ) goto errorExit; if( ( flags & DO_KEYSETDBX ) && !testKeysetDatabase() ) goto errorExit; if( ( flags & DO_CERTPROCESS ) && !testCertMgmt() ) goto errorExit; if( ( flags & DO_HIGHLEVEL ) && !testHighLevel() ) goto errorExit; if( ( flags & DO_ENVELOPE ) && !testEnveloping() ) goto errorExit; if( ( flags & DO_SESSION ) && !testSessions() ) { sessionTestError = TRUE; goto errorExit; } if( ( flags & DO_SESSIONLOOPBACK ) && !testSessionsLoopback() ) { loopbackTestError = TRUE; goto errorExit; } if( ( flags & DO_USER ) && !testUsers() ) goto errorExit; /* Shut down cryptlib */ status = cryptEnd(); if( cryptStatusError( status ) ) { if( status == CRYPT_ERROR_INCOMPLETE ) { puts( "cryptEnd() failed with error code CRYPT_ERROR_INCOMPLETE, " "a code path in the\nself-test code resulted in an error " "return without a full cleanup of objects.\nIf you were " "running the multithreaded loopback tests this may be " "because one\nor more threads lost sync with other threads " "and exited without cleaning up\nits objects. This " "happens occasionally due to network timing issues or\n" "thread scheduling differences." ); } else { printf( "cryptEnd() failed with error code %d, line %d.\n", status, __LINE__ ); } goto errorExit1; } puts( "All tests concluded successfully." ); return( EXIT_SUCCESS ); /* All errors end up here */ errorExit: cryptEnd(); errorExit1: puts( "\nThe test was aborted due to an error being detected. If you " "want to report\nthis problem, please provide as much information " "as possible to allow it to\nbe diagnosed, for example the call " "stack, the location inside cryptlib where\nthe problem occurred, " "and the values of any variables that might be\nrelevant." ); if( sessionTestError ) { puts( "\nThe error occurred during one of the network session tests, " "if the error\nmessage indicates a network-level problem such " "as ECONNREFUSED, ECONNRESET,\nor a timeout or read error then " "this is either due to a transient\nnetworking problem or a " "firewall interfering with network connections. This\nisn't a " "cryptlib error, and doesn't need to be reported." ); } if( loopbackTestError ) { puts( "\nThe error occurred during one of the multi-threaded network " "loopback\ntests, this was probably due to the different threads " "losing synchronisation.\nFor the secure sessions this usually " "results in read/write, timeout, or\nconnection-closed errors " "when one thread is pre-empted for too long. For the\n" "certificate-management sessions it usually results in an error " "related to the\nserver being pre-empted for too long by database " "updates. Since the self-\ntest exists only to exercise " "cryptlib's capabilities, it doesn't bother with\ncomplex thread " "synchronisation during the multi-threaded loopback tests.\nThis " "type of error is non-fatal, and should disappear if the test is " "re-run." ); } cleanExit( EXIT_FAILURE ); return( EXIT_FAILURE ); /* Get rid of compiler warnings */ }
int main( int argc, char **argv ) { const char *zargPtr = NULL; BOOLEAN doSelftest = FALSE, doLowlevel = FALSE, doRandom = FALSE; BOOLEAN doConfig = FALSE, doMidlevel = FALSE, doCert = FALSE; BOOLEAN doKeyset = FALSE, doCertprocess = FALSE, doHighlevel = FALSE; BOOLEAN doEnvelope = FALSE, doSession = FALSE, doSessionLoopback = FALSE; BOOLEAN doAll = FALSE, moreArgs = TRUE; BOOLEAN sessionTestError = FALSE, loopbackTestError = FALSE; int status; void testSystemSpecific1( void ); void testSystemSpecific2( void ); /* Print a general banner to let the user know what's going on */ printf( "testlib - cryptlib %d-bit self-test framework.\n", sizeof( long ) * 8 ); puts( "Copyright Peter Gutmann 1995 - 2010." ); puts( "" ); /* Skip the program name */ argv++; argc--; /* No args means test everything */ if( argc <= 0 ) doAll = TRUE; /* Check for arguments */ while( argc > 0 && *argv[ 0 ] == '-' && moreArgs ) { const char *argPtr = argv[ 0 ] + 1; while( *argPtr ) { switch( toupper( *argPtr ) ) { case '-': moreArgs = FALSE; /* GNU-style end-of-args flag */ break; case 'B': doSelftest = TRUE; break; case 'C': doCert = TRUE; break; case 'E': doEnvelope = TRUE; break; case 'F': doSessionLoopback = TRUE; break; case 'H': usageExit(); break; case 'I': doHighlevel = TRUE; break; case 'K': doKeyset = TRUE; break; case 'L': doLowlevel = TRUE; break; case 'M': doMidlevel = TRUE; break; case 'O': doConfig = TRUE; break; case 'P': doCertprocess = TRUE; break; case 'R': doRandom = TRUE; break; case 'S': doSession = TRUE; break; case 'Z': zargPtr = argPtr + 1; if( *zargPtr == '\0' ) { puts( "Error: Missing argument for -z option." ); exit( EXIT_FAILURE ); } while( argPtr[ 1 ] ) argPtr++; /* Skip rest of arg */ break; default: printf( "Error: Unknown argument '%c'.\n", *argPtr ); return( EXIT_FAILURE ); } argPtr++; } argv++; argc--; } #ifdef USE_TCHECK THREAD_DEBUG_SUSPEND(); #endif /* USE_TCHECK */ /* Make sure that various system-specific features are set right */ testSystemSpecific1(); /* VisualAge C++ doesn't set the TZ correctly. The check for this isn't as simple as it would seem since most IBM compilers define the same preprocessor values even though it's not documented anywhere, so we have to enable the tzset() call for (effectively) all IBM compilers and then disable it for ones other than VisualAge C++ */ #if ( defined( __IBMC__ ) || defined( __IBMCPP__ ) ) && !defined( __VMCMS__ ) tzset(); #endif /* VisualAge C++ */ /* Initialise cryptlib */ printf( "Initialising cryptlib..." ); status = cryptInit(); if( cryptStatusError( status ) ) { printf( "\ncryptInit() failed with error code %d, line %d.\n", status, __LINE__ ); exit( EXIT_FAILURE ); } puts( "done." ); #ifndef TEST_RANDOM /* In order to avoid having to do a randomness poll for every test run, we bypass the randomness-handling by adding some junk. This is only enabled when cryptlib is built in debug mode so it won't work with any production systems */ #if defined( __MVS__ ) || defined( __VMCMS__ ) #pragma convlit( resume ) cryptAddRandom( "xyzzy", 5 ); #pragma convlit( suspend ) #else cryptAddRandom( "xyzzy", 5 ); #endif /* Special-case EBCDIC handling */ #endif /* TEST_RANDOM */ /* Perform a general sanity check to make sure that the self-test is being run the right way */ if( !checkFileAccess() ) goto errorExit; /* Make sure that further system-specific features that require cryptlib to be initialised to check are set right */ #ifndef _WIN32_WCE testSystemSpecific2(); #endif /* WinCE */ #ifdef USE_TCHECK THREAD_DEBUG_RESUME(); #endif /* USE_TCHECK */ /* For general testing purposes we can insert test code at this point to test special cases that aren't covered in the general tests below */ testKludge( zargPtr ); #ifdef SMOKE_TEST /* Perform a general smoke test of the kernel */ smokeTest(); #endif /* SMOKE_TEST */ /* Test each block of cryptlib functionality */ if( ( doSelftest || doAll ) && !testSelfTest() ) goto errorExit; if( ( doLowlevel || doAll ) && !testLowLevel() ) goto errorExit; if( ( doRandom || doAll ) && !testRandom() ) goto errorExit; if( ( doConfig || doAll ) && !testConfig() ) goto errorExit; if( ( doSelftest || doAll ) && !testDevice() ) goto errorExit; if( ( doMidlevel || doAll ) && !testMidLevel() ) goto errorExit; if( ( doCert || doAll ) && !testCert() ) goto errorExit; if( ( doKeyset || doAll ) && !testKeyset() ) goto errorExit; if( ( doCertprocess || doAll ) && !testCertMgmt() ) goto errorExit; if( ( doHighlevel || doAll ) && !testHighLevel() ) goto errorExit; if( ( doEnvelope || doAll ) && !testEnveloping() ) goto errorExit; if( ( doSession || doAll ) && !testSessions() ) { sessionTestError = TRUE; goto errorExit; } if( ( doSessionLoopback || doAll ) && !testSessionsLoopback() ) { loopbackTestError = TRUE; goto errorExit; } if( ( doAll ) && !testUsers() ) goto errorExit; /* Shut down cryptlib */ status = cryptEnd(); if( cryptStatusError( status ) ) { if( status == CRYPT_ERROR_INCOMPLETE ) { puts( "cryptEnd() failed with error code CRYPT_ERROR_INCOMPLETE, " "a code path in the\nself-test code resulted in an error " "return without a full cleanup of objects.\nIf you were " "running the multithreaded loopback tests this may be " "because one\nor more threads lost sync with other threads " "and exited without cleaning up\nits objects. This " "happens occasionally due to network timing issues or\n" "thread scheduling differences." ); } else { printf( "cryptEnd() failed with error code %d, line %d.\n", status, __LINE__ ); } goto errorExit1; } puts( "All tests concluded successfully." ); return( EXIT_SUCCESS ); /* All errors end up here */ errorExit: cryptEnd(); errorExit1: puts( "\nThe test was aborted due to an error being detected. If you " "want to report\nthis problem, please provide as much information " "as possible to allow it to\nbe diagnosed, for example the call " "stack, the location inside cryptlib where\nthe problem occurred, " "and the values of any variables that might be\nrelevant." ); if( sessionTestError ) { puts( "\nThe error occurred during one of the network session tests, " "if the error\nmessage indicates a network-level problem such " "as ECONNREFUSED, ECONNRESET,\nor a timeout or read error then " "this is either due to a transient\nnetworking problem or a " "firewall interfering with network connections. This\nisn't a " "cryptlib error, and doesn't need to be reported." ); } #ifdef WINDOWS_THREADS if( loopbackTestError ) { puts( "\nThe error occurred during one of the multi-threaded network " "loopback\ntests, this was probably due to the different threads " "losing synchronisation.\nFor the secure sessions this usually " "results in read/write, timeout, or\nconnection-closed errors " "when one thread is pre-empted for too long. For the\n" "certificate-management sessions it usually results in an error " "related to the\nserver being pre-empted for too long by database " "updates. Since the self-\ntest exists only to exercise " "cryptlib's capabilities, it doesn't bother with\ncomplex thread " "synchronisation during the multi-threaded loopback tests.\nThis " "type of error is non-fatal, and should disappear if the test is " "re-run." ); } #endif /* WINDOWS_THREADS */ #if defined( __WINDOWS__ ) && !defined( NDEBUG ) /* The pseudo-CLI VC++ output windows are closed when the program exits so we have to explicitly wait to allow the user to read them */ puts( "\nHit a key..." ); getchar(); #endif /* __WINDOWS__ && !NDEBUG */ return( EXIT_FAILURE ); }
void testSampler() { testLongest(); testRandom(); }