Skip to content

Commit

Permalink
test: compilation of fizzy_parse, fizzy_instantiate, fizzy_execute
Browse files Browse the repository at this point in the history
  • Loading branch information
gumb0 committed Oct 1, 2020
1 parent ebe85c0 commit c517410
Showing 1 changed file with 80 additions and 3 deletions.
83 changes: 80 additions & 3 deletions test/compilation/compilation_test.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,86 @@

#include <fizzy/fizzy.h>

bool dummy(void);
bool validate(const uint8_t* binary, size_t size);
bool parse(const uint8_t* binary, size_t size);
bool instantiate(const uint8_t* binary, size_t size);
struct FizzyExecutionResult dummy_host_func(void* context, struct FizzyInstance* instance,
const union FizzyValue* args, size_t args_size, int depth);
bool instantiate_with_host_func(const uint8_t* binary, size_t size);
bool execute(const uint8_t* binary, size_t size);

bool dummy()
bool validate(const uint8_t* binary, size_t size)
{
return fizzy_validate(NULL, 0);
return fizzy_validate(binary, size);
}

bool parse(const uint8_t* binary, size_t size)
{
struct FizzyModule* module = fizzy_parse(binary, size);
if (!module)
return false;

fizzy_free_module(module);
return true;
}

bool instantiate(const uint8_t* binary, size_t size)
{
struct FizzyModule* module = fizzy_parse(binary, size);
if (!module)
return false;

struct FizzyInstance* instance = fizzy_instantiate(module, NULL, 0);
if (!instance)
return false;

fizzy_free_instance(instance);
return true;
}

struct FizzyExecutionResult dummy_host_func(void* context, struct FizzyInstance* instance,
const union FizzyValue* args, size_t args_size, int depth)
{
(void)context;
(void)instance;
(void)args;
(void)args_size;
(void)depth;
struct FizzyExecutionResult res = {true, false, {0}};
return res;
}

bool instantiate_with_host_func(const uint8_t* binary, size_t size)
{
struct FizzyModule* module = fizzy_parse(binary, size);
if (!module)
return false;

FizzyExternalFunction host_funcs[] = {{dummy_host_func, NULL}};

struct FizzyInstance* instance = fizzy_instantiate(module, host_funcs, 1);
if (!instance)
return false;

fizzy_free_instance(instance);
return true;
}

bool execute(const uint8_t* binary, size_t size)
{
struct FizzyModule* module = fizzy_parse(binary, size);
if (!module)
return false;

struct FizzyInstance* instance = fizzy_instantiate(module, NULL, 0);
if (!instance)
return false;

fizzy_execute(instance, 0, NULL, 0, 0);

union FizzyValue args[] = {{1}, {2}};
fizzy_execute(instance, 1, args, 2, 0);

fizzy_free_instance(instance);
return true;
}

0 comments on commit c517410

Please sign in to comment.