class.c 1.14 KB
#include <assert.h>
#include <json/json.h>

#include "token/cclass.h"
#include "class.h"

char _called;

void
inline
_reset()
{
    _called = 0;
}

static
void
__construct(struct MOCK_CLASS * _this, va_list * params)
{
    _called = 1;
    _this->value = va_arg(* params, int);
}

static
void
__jsonConst(struct MOCK_CLASS * _this, json_object * json)
{
    _called = 1;
    assert(json_type_int == json_object_get_type(json));

    _this->value = json_object_get_int(json);
}

static
void
__destruct(struct MOCK_CLASS * _this)
{
    _called = 1;
}

static
struct json_object *
__toJson(struct MOCK_CLASS * _this)
{
    struct json_object * json = json_object_new_int(_this->value);

    _called = 1;
    return json;
}

INIT_CCLASS(MOCK_CLASS, __jsonConst, __toJson);

/**
 * ~~~ method implementations ~~~~~~~~
 */

int
mock_class_getValue(struct MOCK_CLASS * _this)
{
    return _this->value;
}

void
mock_class_setValue(struct MOCK_CLASS * _this, int value)
{
    _this->value = value;
}

/**
 * ~~~ helper for mock assertions ~~~~~~~~
 */
void *
getConstruct()
{
    return __construct;
}

void *
getJsonConst()
{
    return __jsonConst;
}
// vim: set et ts=4 sw=4: