mirror of
https://github.com/fluencelabs/wasmer
synced 2025-06-21 20:51:32 +00:00
Isolated emscripten in new lib
This commit is contained in:
70
lib/emscripten/emtests/test_wprintf.cpp
Normal file
70
lib/emscripten/emtests/test_wprintf.cpp
Normal file
@ -0,0 +1,70 @@
|
||||
// Copyright 2017 The Emscripten Authors. All rights reserved.
|
||||
// Emscripten is available under two separate licenses, the MIT license and the
|
||||
// University of Illinois/NCSA Open Source License. Both these licenses can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdarg.h>
|
||||
#include <wchar.h>
|
||||
|
||||
void PrintWide ( const wchar_t * format, ... )
|
||||
{
|
||||
wchar_t buffer[256];
|
||||
memset(buffer, 0, 256);
|
||||
va_list args;
|
||||
va_start ( args, format );
|
||||
wprintf(L"format starts with 0x%x\n", *(int*)format);
|
||||
wprintf(L"fmt continues with 0x%x\n", *(((int*)format) + 1));
|
||||
wprintf(L"fmt continues with 0x%x\n", *(((int*)format) + 2));
|
||||
int r = vswprintf ( buffer, 256, format, args );
|
||||
wprintf(L"vswprintf told us %d\n", r);
|
||||
wprintf(L"vswoutput st-rts with 0x%x\n", *(int*)buffer);
|
||||
wprintf(L"vsw continues with 0x%x\n", *(((int*)buffer) + 1));
|
||||
wprintf(L"vsw continues with 0x%x\n", *(((int*)buffer) + 2));
|
||||
wprintf(buffer);
|
||||
va_end ( args );
|
||||
}
|
||||
|
||||
int main ()
|
||||
{
|
||||
FILE *f = fopen("test.dat", "wb");
|
||||
int num = fwprintf(f, L"hello %d", 5);
|
||||
wprintf(L"fwprintf told us %d\n", num);
|
||||
fclose(f);
|
||||
f = fopen("test.dat", "rb");
|
||||
fseek(f, 0, SEEK_END);
|
||||
int size = ftell(f);
|
||||
fclose(f);
|
||||
wprintf(L"file size is %d\n", size);
|
||||
|
||||
wchar_t str[] = L"test string has %d wide characters.\n";
|
||||
wprintf(L"str starts with 0x%x\n", *(int*)str);
|
||||
wprintf(L"str continues with 0x%x\n", *(((int*)str) + 1));
|
||||
wprintf(L"str continues with 0x%x\n", *(((int*)str) + 2));
|
||||
PrintWide ( str, wcslen(str) );
|
||||
PrintWide ( str, wcslen(str) );
|
||||
PrintWide ( str, wcslen(str) );
|
||||
|
||||
wprintf (L"Characters: %lc %lc \n", L'a', 65);
|
||||
wprintf (L"Decimals: %d %ld\n", 1977, 650000L);
|
||||
wprintf (L"Preceding with blanks: %10d \n", 1977);
|
||||
wprintf (L"Preceding with zeros: %010d \n", 1977);
|
||||
wprintf (L"Some different radixes: %d %x %o %#x %#o \n", 100, 100, 100, 100, 100);
|
||||
wprintf (L"floats: %4.2f %+.0e %E \n", 3.1416, 3.1416, 3.1416);
|
||||
wprintf (L"Width trick: %*d \n", 5, 10);
|
||||
wprintf (L"%ls \n", L"A wide string");
|
||||
|
||||
wchar_t buffer [100];
|
||||
memset(buffer, 0, sizeof(buffer));
|
||||
int cx;
|
||||
cx = swprintf(buffer, 100, L"The half of %d is %d", 80, 80/2);
|
||||
wprintf(L"swprintf told us %d\n", cx);
|
||||
for (int i = 0; i < 10; i++) wprintf(L"pre %d\n", ((int*)buffer)[i]);
|
||||
swprintf (buffer+cx, 100-cx-1, L", and the half of that is %d.\n", 80/2/2);
|
||||
for (int i = 0; i < 10; i++) wprintf(L"post %d\n", ((int*)buffer)[i]);
|
||||
wprintf(buffer);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user