summaryrefslogtreecommitdiffstats
path: root/winsup/mingw/mingwex/testwmem.c
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/mingw/mingwex/testwmem.c')
-rw-r--r--winsup/mingw/mingwex/testwmem.c104
1 files changed, 104 insertions, 0 deletions
diff --git a/winsup/mingw/mingwex/testwmem.c b/winsup/mingw/mingwex/testwmem.c
new file mode 100644
index 000000000..1310718c9
--- /dev/null
+++ b/winsup/mingw/mingwex/testwmem.c
@@ -0,0 +1,104 @@
+#include <memory.h>
+#include <wchar.h>
+#include <stdio.h>
+
+wchar_t fmt1[] = L" 1 2 3 4 5";
+wchar_t fmt2[] = L"12345678901234567890123456789012345678901234567890";
+
+void test_wmemchr( void )
+{
+ wchar_t* dest;
+ wint_t result;
+ wint_t ch = L'r';
+ wchar_t str[] = L"lazy";
+ wchar_t string1[60] = L"The quick brown dog jumps over the lazy fox";
+
+ wprintf( L"Wmemchr\n" );
+ wprintf( L"String to be searched:\n\t\t%s\n", string1 );
+ wprintf( L"\t\t%s\n\t\t%s\n\n", fmt1, fmt2 );
+
+ wprintf( L"Search char:\t%c\n", ch );
+ dest = wmemchr( string1, ch, sizeof( string1 ) );
+ result = dest - string1 + 1;
+ if( dest != NULL )
+ wprintf( L"Result:\t\t%c found at position %d\n\n", ch, result );
+ else
+ wprintf( L"Result:\t\t%c not found\n\n" );
+return;
+}
+void test_wmemset( void )
+{/* 1 2
+ 0123456789012345678901234567890 */
+ wchar_t buffer[] = L"This is a test of the wmemset function";
+ wprintf( L"Before: %s\n", buffer );
+ wmemset( buffer+22, L'*', 7 );
+ wprintf( L"After: %s\n\n", buffer );
+return;
+}
+
+void test_wmemmove( void )
+{
+ wchar_t string1[60] = L"The quick brown dog jumps over the lazy fox";
+ wchar_t string2[60] = L"The quick brown fox jumps over the lazy dog";
+
+ wprintf( L"Wmemcpy without overlap\n" );
+ wprintf( L"Source:\t\t%s\n", string1 + 40 );
+ wprintf( L"Destination:\t%s\n", string1 + 16 );
+ wmemcpy( string1 + 16, string1 + 40, 3 );
+ wprintf( L"Result:\t\t%s\n", string1 );
+ wprintf( L"Length:\t\t%d characters\n\n", wcslen( string1 ) );
+ wmemcpy( string1 + 16, string2 + 40, 3 );
+
+ wprintf( L"Wmemmove with overlap\n" );
+ wprintf( L"Source:\t\t%s\n", string2 + 4 );
+ wprintf( L"Destination:\t%s\n", string2 + 10 );
+ wmemmove( string2 + 10, string2 + 4, 40 );
+ wprintf( L"Result:\t\t%s\n", string2 );
+ wprintf( L"Length:\t\t%d characters\n\n", wcslen( string2 ) );
+
+ wprintf( L"Wmemcpy with overlap\n" );
+ wprintf( L"Source:\t\t%s\n", string1 + 4 );
+ wprintf( L"Destination:\t%s\n", string1 + 10 );
+ wmemcpy( string1 + 10, string1 + 4, 40 );
+ wprintf( L"Result:\t\t%s\n", string1 );
+ wprintf( L"Length:\t\t%d characters\n\n", wcslen( string1 ) );
+}
+
+
+void test_wmemcmp( void )
+{
+ wchar_t first[] = L"12345678901234567890";
+ wchar_t second[] = L"12345678901234567891";
+ wint_t result;
+ wprintf(L"Wmemcmp\n");
+ wprintf( L"Compare '%.19s' to '%.19s':\n", first, second );
+ result = wmemcmp( first, second, 19 );
+ if( result < 0 )
+ wprintf( L"First is less than second.\n" );
+ else if( result == 0 )
+ wprintf( L"First is equal to second.\n" );
+ else if( result > 0 )
+ wprintf( L"First is greater than second.\n" );
+ wprintf( L"\nCompare '%.20s' to '%.20s':\n", first, second );
+ result = wmemcmp( first, second, 20 );
+ if( result < 0 )
+ wprintf( L"First is less than second.\n\n" );
+ else if( result == 0 )
+ wprintf( L"First is equal to second.\n\n" );
+ else if( result > 0 )
+ wprintf( L"First is greater than second.\n\n" );
+}
+
+
+
+int main(){
+test_wmemset();
+test_wmemmove();
+test_wmemchr();
+test_wmemcmp();
+return 0;
+}
+
+
+
+