summaryrefslogblamecommitdiffstats
path: root/private/ntos/rtl/trtl.c
blob: 930b695d4da951268c7d5aecf2022a003a8e5215 (plain) (tree)





























































































































































































                                                                              
/*++

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 <os2.h>
#include <stdio.h>
#include <process.h>
#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 );
}