static VOID LogAndInconclusiveAtPassiveLevel() { CFIX_LOG( L"Log at %s", L"PASSIVE_LEVEL" ); CFIX_LOG( L"Log at %s", L"PASSIVE_LEVEL" ); CFIX_INCONCLUSIVE( L"This blah blah blah blah blah blah blah is inconclusive" ); ASSERT( !"Should not make it here!" ); }
static void __stdcall gsplittest() { CString m; m.Format(_T("%s,%i,%i,,%f,%i,,%f,%f,%i,%i,,,%i"),"TST",10,100,0,0,0,0,0,0,0); vector<CString> r; gsplit(m,CString(","),r); CFIX_ASSERT(r.size()==14); // performance test const int MAXGSPLITS = 1000; vector<CString> strs; // start timer unsigned long start = GetTickCount(); // split strings for (int i = 0; i<MAXGSPLITS; i++) { m.Format(_T("%s,%i,%i,,%f,%i,,%f,%f,%i,%i,,,%i"),"TST",rand(),100,0,0,0,0,0,0,0); vector<CString> r2; gsplit(m,CString(","),r2); } // stop timer unsigned long stop = GetTickCount(); // elapsed int elapms = stop - start; int rate = elapms== 0 ? 0 : (MAXGSPLITS/elapms)*1000; CFIX_LOG(L"Gsplit elapsed time(ms): %i",elapms); CFIX_LOG(L"Gsplits perf (splits/sec: %i",rate); CFIX_ASSERT(elapms<50); }
static VOID LogAndFailAtPassiveLevelAndAbort() { CFIX_ASSERT( "Truth" ); CFIX_LOG( L"" ); CFIX_LOG( L"" ); CFIX_ASSERT( !"Untruth" ); ASSERT( !"Should not make it here!" ); }
static VOID LogThreeMessagesAtPassiveLevel() { CFIX_ASSERT( "Truth" ); CFIX_LOG( L"Log at %s", L"PASSIVE_LEVEL" ); CFIX_LOG( L"Log at %s", L"PASSIVE_LEVEL" ); CFIX_LOG( L"Log at %s", L"PASSIVE_LEVEL" ); }
void FailingTestAtElevatedIrql() { KIRQL OldIrql; KeRaiseIrql( DISPATCH_LEVEL, &OldIrql ); CFIX_LOG( L"Test" ); CFIX_ASSERT( !"Fail" ); CFIX_LOG( L"?" ); KeLowerIrql( OldIrql ); }
static VOID ThrowAtPassiveLevel() { CFIX_ASSERT_EQUALS_ULONG( 1, 1 ); CFIX_LOG( L"" ); CFIX_LOG( L"" ); // // N.B. ExRaiseStatus requires PASSIVE_LEVEL. // ExRaiseStatus( 'Excp' ); }
static VOID LogThreeMessagesAtDirql() { KIRQL Irql; KeRaiseIrql( DISPATCH_LEVEL + 1, &Irql ); CFIX_ASSERT( "Truth" ); CFIX_LOG( L"Log at %s", L"elevated irql" ); CFIX_LOG( L"Log at %s", L"elevated irql" ); CFIX_LOG( L"Log at %s", L"elevated irql" ); KeLowerIrql( Irql ); }
static VOID LogAndFailAtDirqlAndAbort() { KIRQL Irql; KeRaiseIrql( DISPATCH_LEVEL + 1, &Irql ); CFIX_ASSERT( "Truth" ); CFIX_LOG( L"" ); CFIX_ASSERT_EQUALS_ULONG( 1, 2 ); ASSERT( !"Should not make it here!" ); }
/*++ Routine Description: Test routine -- do the actual testing. --*/ static void __stdcall Test1() { DWORD a = 1; DWORD b = 1; CFIX_ASSERT_EQUALS_DWORD( a, b ); CFIX_ASSERT( a + b == 2 ); // // Log a message -- printf-style formatting may be used. // CFIX_LOG( L"a=%d, b=%d", a, b ); }
void TransformOK() { HTTPS::Rules rules; HRESULT hr = rules.Add("default.rulesets"); char* url = "http://www.1and1.com/index.html"; char* newURL = rules.Transform(url); CFIX_ASSERT( newURL != NULL ); CFIX_LOG("New URL: %s", newURL); CFIX_ASSERT( strcmp("https://order.1and1.com/index.html", newURL) == 0 ); delete newURL; }
static VOID LogAndInconclusiveAtDirql() { KIRQL Irql; KeRaiseIrql( DISPATCH_LEVEL + 1, &Irql ); CFIX_ASSERT( "Truth" ); CFIX_LOG( L"Log at %s", L"PASSIVE_LEVEL" ); // // Note: message is of same length as IRQL-warning. Important // as both compete for the same buffer space. // CFIX_INCONCLUSIVE( L"Inconclusive " L"01234567890123456789012345678901234567890123456789" L"01234567890123456789012345678901234567890123456789" ); ASSERT( !"Should not make it here!" ); }
/**------------------------------------------------------------------------------- TestOne @brief @return void ---------------------------------------------------------------------------------*/ void TestOne() { const wchar_t* testString = L"test model"; CFIX_LOG(L"Testing %s", testString); // samples CFIXCC_ASSERT_EQUALS(1, 1); CFIXCC_ASSERT_EQUALS(L"test model", testString); CFIXCC_ASSERT_EQUALS(wcslen(testString), (size_t) 10); CFIX_ASSERT(wcslen(testString) == 10); CFIX_ASSERT_MESSAGE(testString[0] == 't', "Test string should start with a 't'"); double expected[]= {0,1.000000000000000,0.500000000000000,0.750000000000000,0.625000000000000,0.687500000000000,0.656250000000000,0.671875000000000,0.664062500000000,0.667968750000000,0.666015625000000,0.666992187500000,0.666503906250000,0.666748046875000,0.666625976562500,0.666687011718750,0.666656494140625}; for (int i=0; i<17; ++i) { double out=getSystemOutput(1); CFIXCC_ASSERT_EQUALS(expected[i], out); } }
HRESULT DetachContextSafe( __in JPFSV_HANDLE ContextHandle ) { HRESULT Hr = E_UNEXPECTED; UINT Attempt; for ( Attempt = 0; Attempt < 10; Attempt++ ) { Hr = JpfsvDetachContext( ContextHandle, TRUE ); if ( JPFSV_E_TRACES_ACTIVE == Hr ) { CFIX_LOG( L"Traces still active (Attempt %d)\n", Attempt ); Sleep( 500 ); } else { break; } } return Hr; }
static void FailingSetup() { CFIX_LOG( L"In setup" ); CFIX_ASSERT( !"Fail" ); CFIX_LOG( L"?" ); }
void TestInitShutdownTracing() { BOOL KernelSupported; JPKFBT_SESSION Session; JPKFBT_KERNEL_TYPE Type; ULONG KernelsTested = 0; ULONG TrcTypesTested; for ( Type = JpkfbtKernelRetail; Type <= JpkfbtKernelMax; Type++ ) { JPKFBT_TRACING_TYPE TracingType; TEST_SUCCESS( JpkfbtIsKernelTypeSupported( Type, &KernelSupported ) ); if ( ! KernelSupported ) { continue; } TEST_SUCCESS( JpkfbtAttach( Type, &Session ) ); TEST( Session ); // // Invalid type. // TEST_STATUS( STATUS_INVALID_PARAMETER, JpkfbtInitializeTracing( Session, JpkfbtTracingTypeMax + 1, 0, 0, NULL ) ); // // Shutdown without being started. // TEST_STATUS( STATUS_FBT_NOT_INITIALIZED, JpkfbtShutdownTracing( Session ) ); // // Init & Shutdown using valid type. // TrcTypesTested = 0; for( TracingType = JpkfbtTracingTypeDefault; TracingType <= JpkfbtTracingTypeMax; TracingType++ ) { NTSTATUS Status; ULONG BufCount; ULONG BufSize; PWSTR LogFile; if ( TracingType == JpkfbtTracingTypeDefault ) { BufCount = 64; BufSize = 64; LogFile = L"__testkfbt.log"; DeleteFile( LogFile ); } else { BufCount = 0; BufSize = 0; LogFile = NULL; } TEST_STATUS( STATUS_INVALID_PARAMETER, JpkfbtInitializeTracing( Session, TracingType, BufCount, BufSize, TracingType == JpkfbtTracingTypeDefault ? NULL : L"foo" ) ); Status = JpkfbtInitializeTracing( Session, TracingType, BufCount, BufSize, LogFile ); CFIX_LOG( L"Status=%x", Status ); TEST( NT_SUCCESS( Status ) || STATUS_KFBT_TRCTYPE_NOT_SUPPORTED == Status ); if ( NT_SUCCESS( Status ) ) { TrcTypesTested++; TEST_SUCCESS( JpkfbtShutdownTracing( Session ) ); } } TEST( TrcTypesTested > 0 ); TEST_SUCCESS( JpkfbtDetach( Session, TRUE ) ); KernelsTested++; } TEST( KernelsTested > 0 ); }
static void FailingTeardown() { CFIX_LOG( L"In teardown" ); CFIX_ASSERT( !"Fail" ); CFIX_LOG( L"?" ); }
/*++ Routine Description: Teardown Routine -- will be called at the end of the testrun. --*/ static void __stdcall FixtureTeardown() { CFIX_LOG( L"Tearing down..." ); }
static void InconcTeardown() { CFIX_LOG( L"In teardown" ); CFIX_ASSERT( !"Fail" ); CFIX_LOG( L"?" ); }
static void InconcTest() { CFIX_LOG( L"Test" ); CFIX_ASSERT( !"Fail" ); CFIX_LOG( L"?" ); }
static void SucTest() { CFIX_LOG( L"Test" ); }
static void Nulls() { CFIX_ASSERT_MESSAGE( TRUE, NULL ); CFIX_LOG( NULL ); //CFIX_INCONCLUSIVE( NULL ); }
void SucSetup() { CFIX_LOG( L"In setup" ); }
static void InconcSetup() { CFIX_LOG( L"In setup" ); CFIX_ASSERT( !"Fail" ); CFIX_LOG( L"?" ); }
void SucTeardown() { CFIX_LOG( L"In teardown" ); }
void FailingTest() { CFIX_LOG( L"Test" ); CFIX_ASSERT( !"Fail" ); CFIX_LOG( L"?" ); }