/*++ Copyright (c) 1989 Microsoft Corporation Module Name: trtl.c Abstract: Test program for the NT OS Runtime Library (RTL) Author: Steve Wood (stevewo) 31-Mar-1989 Revision History: --*/ #include #include #include #include "nt.h" #include "ntrtl.h" char *TestMemoryStrings[] = { "", "1", "12", "123", "1234", "12345", "123456", "1234567", "12345678", "123456789", "123456789A", NULL }; BOOLEAN StringCompare( IN PSTRING String1, IN PSTRING String2, IN BOOLEAN CaseInSensitive, IN LONG ExpectedResult ) { LONG Result = RtlCompareString( String1, String2, CaseInSensitive ); if (Result < 0) { Result = -1L; } else { if (Result > 0) { Result = 1L; } } if (Result != ExpectedResult) { DbgPrint( "RtlCompareString( \"%.*s\", \"%.*s\", %d ) == %ld (%ld)\n", String1->Length, String1->Buffer, String2->Length, String2->Buffer, CaseInSensitive, Result, ExpectedResult ); return( FALSE ); } else { return( TRUE ); } } BOOLEAN StringEqual( IN PSTRING String1, IN PSTRING String2, IN BOOLEAN CaseInSensitive, IN BOOLEAN ExpectedResult ) { BOOLEAN Result = RtlEqualString( String1, String2, CaseInSensitive ); if (Result != ExpectedResult) { DbgPrint( "RtlEqualString( \"%.*s\", \"%.*s\", %d ) == %d (%d)\n", String1->Length, String1->Buffer, String2->Length, String2->Buffer, CaseInSensitive, Result, ExpectedResult ); return( FALSE ); } else { return( TRUE ); } } VOID DumpString( IN PCH StringTitle, IN PSTRING String ) { DbgPrint( "%s: (%d, %d) \"%.*s\"\n", StringTitle, String->MaximumLength, String->Length, String->Length, String->Buffer ); } BOOLEAN TestString( void ) { BOOLEAN Result; char buffer5[ 80 ], buffer6[ 15 ], buffer7[ 3 ]; STRING String1, String2, String3, String4; STRING String5, String6, String7, String8; // 1 2 //12345678901234567890 // RtlInitString( &String1, " One" ); RtlInitString( &String2, " Two" ); RtlInitString( &String3, " Three" ); RtlInitString( &String4, " Four" ); String5.Buffer = buffer5; String5.MaximumLength = sizeof( buffer5 ); String5.Length = 0; String6.Buffer = buffer6; String6.MaximumLength = sizeof( buffer6 ); String6.Length = 0; String7.Buffer = buffer7; String7.MaximumLength = sizeof( buffer7 ); String7.Length = 0; String8.Buffer = NULL; String8.MaximumLength = 0; String8.Length = 0; RtlCopyString( &String5, &String1 ); RtlCopyString( &String6, &String2 ); RtlCopyString( &String7, &String3 ); RtlCopyString( &String8, &String4 ); DumpString( "String1", &String1 ); DumpString( "String2", &String2 ); DumpString( "String3", &String3 ); DumpString( "String4", &String4 ); DumpString( "String5", &String5 ); DumpString( "String6", &String6 ); DumpString( "String7", &String7 ); DumpString( "String8", &String8 ); Result = TRUE; Result &= StringCompare( &String1, &String1, FALSE, 0L ); Result &= StringCompare( &String1, &String2, FALSE, -1L); Result &= StringCompare( &String1, &String3, FALSE, -1L); Result &= StringCompare( &String1, &String4, FALSE, 1L ); Result &= StringCompare( &String1, &String5, FALSE, 0L ); Result &= StringCompare( &String1, &String6, FALSE, -1L); Result &= StringCompare( &String1, &String7, FALSE, -1L); Result &= StringCompare( &String1, &String8, FALSE, 1L ); Result &= StringEqual( &String1, &String1, FALSE, 1 ); Result &= StringEqual( &String1, &String2, FALSE, 0 ); Result &= StringEqual( &String1, &String3, FALSE, 0 ); Result &= StringEqual( &String1, &String4, FALSE, 0 ); Result &= StringEqual( &String1, &String5, FALSE, 1 ); Result &= StringEqual( &String1, &String6, FALSE, 0 ); Result &= StringEqual( &String1, &String7, FALSE, 0 ); Result &= StringEqual( &String1, &String8, FALSE, 0 ); return( Result ); } int _CDECL main( int argc, char *argv[] ) { if (!TestString()) { DbgPrint( "TRTL: TestString failed\n" ); exit( 1 ); } exit( 0 ); return( 0 ); }