1
0
forked from Mirror/wren

Add API tests for returning null or numbers.

This commit is contained in:
Bob Nystrom
2015-05-24 10:04:24 -07:00
parent 6c135e9941
commit d66556b713
9 changed files with 66 additions and 7 deletions

View File

@ -6,6 +6,11 @@
#include "wren.h"
#include "return_bool/return_bool.h"
#include "return_double/return_double.h"
#include "return_null/return_null.h"
#define REGISTER_TEST(name) \
if (strcmp(testName, #name) == 0) return name##BindForeign(fullName)
// The name of the currently executing API test.
const char* testName;
@ -25,13 +30,13 @@ static WrenForeignMethodFn bindForeign(
strcat(fullName, ".");
strcat(fullName, signature);
if (strcmp(testName, "return_bool") == 0)
{
return returnBoolBindForeign(fullName);
}
REGISTER_TEST(return_bool);
REGISTER_TEST(return_double);
REGISTER_TEST(return_null);
fprintf(stderr,
"Unknown foreign method '%s' for test '%s'\n", fullName, testName);
exit(1);
return NULL;
}

View File

@ -1,6 +1,6 @@
#include <string.h>
#include "wren.h"
#include "return_bool.h"
static void returnTrue(WrenVM* vm)
{
@ -12,7 +12,7 @@ static void returnFalse(WrenVM* vm)
wrenReturnBool(vm, false);
}
WrenForeignMethodFn returnBoolBindForeign(const char* signature)
WrenForeignMethodFn return_boolBindForeign(const char* signature)
{
if (strcmp(signature, "static Api.returnTrue") == 0) return returnTrue;
if (strcmp(signature, "static Api.returnFalse") == 0) return returnFalse;

View File

@ -1,3 +1,3 @@
#include "wren.h"
WrenForeignMethodFn returnBoolBindForeign(const char* signature);
WrenForeignMethodFn return_boolBindForeign(const char* signature);

View File

@ -0,0 +1,21 @@
#include <string.h>
#include "return_double.h"
static void returnInt(WrenVM* vm)
{
wrenReturnDouble(vm, 123456);
}
static void returnFloat(WrenVM* vm)
{
wrenReturnDouble(vm, 123.456);
}
WrenForeignMethodFn return_doubleBindForeign(const char* signature)
{
if (strcmp(signature, "static Api.returnInt") == 0) return returnInt;
if (strcmp(signature, "static Api.returnFloat") == 0) return returnFloat;
return NULL;
}

View File

@ -0,0 +1,3 @@
#include "wren.h"
WrenForeignMethodFn return_doubleBindForeign(const char* signature);

View File

@ -0,0 +1,7 @@
class Api {
foreign static returnInt
foreign static returnFloat
}
IO.print(Api.returnInt) // expect: 123456
IO.print(Api.returnFloat) // expect: 123.456

View File

@ -0,0 +1,15 @@
#include <string.h>
#include "return_null.h"
static void implicitNull(WrenVM* vm)
{
// Do nothing.
}
WrenForeignMethodFn return_nullBindForeign(const char* signature)
{
if (strcmp(signature, "static Api.implicitNull") == 0) return implicitNull;
return NULL;
}

View File

@ -0,0 +1,3 @@
#include "wren.h"
WrenForeignMethodFn return_nullBindForeign(const char* signature);

View File

@ -0,0 +1,5 @@
class Api {
foreign static implicitNull
}
IO.print(Api.implicitNull == null) // expect: true