wasmer/lib/emscripten/emtests/test_emscripten_api.cpp
2019-01-10 21:38:10 -08:00

44 lines
1.3 KiB
C++

// Copyright 2016 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 <assert.h>
#include <limits.h>
#include <stdio.h>
#include "emscripten.h"
extern "C" {
void save_me_aimee() { printf("mann\n"); }
}
int main() {
// EMSCRIPTEN_COMMENT("hello from the source");
emscripten_run_script("out('hello world' + '!')");
printf("*%d*\n", emscripten_run_script_int("5*20"));
printf("*%s*\n", emscripten_run_script_string("'five'+'six'"));
emscripten_run_script("Module['_save_me_aimee']()");
//
double d = 0.1234567891231219886553;
int len = emscripten_print_double(d, NULL, -1);
char buffer[len+1];
buffer[len] = CHAR_MAX;
emscripten_print_double(d, buffer, len+1);
assert(buffer[len] == 0); // null terminated
double e;
sscanf(buffer, "%lf", &e);
printf("%.30lf : %s : %.30lf (%d)\n", d, buffer, e, len);
buffer[0] = 1;
buffer[1] = 2;
buffer[2] = 3;
int n = emscripten_print_double(d, buffer, 2);
assert(n == 1);
assert(buffer[0] == '0'); // touched
assert(buffer[1] == 0); // touched
assert(buffer[2] == 3); // untouched
puts("success\n");
return 0;
}