JsonElement *RvalToJson(Rval rval) { assert(rval.item); switch (rval.type) { case RVAL_TYPE_SCALAR: return JsonStringCreate(RvalScalarValue(rval)); case RVAL_TYPE_LIST: return RlistToJson(RvalRlistValue(rval)); case RVAL_TYPE_FNCALL: return FnCallToJson(RvalFnCallValue(rval)); default: assert(false && "Invalid rval type"); return JsonStringCreate(""); } }
static void test_show_string(void **state) { JsonElement *str = JsonStringCreate("snookie"); Writer *writer = StringWriter(); JsonElementPrint(writer, str, 0); assert_string_equal("\"snookie\"", StringWriterClose(writer)); JsonElementDestroy(str); }
static void test_show_string(void) { JsonElement *str = JsonStringCreate("snookie"); Writer *writer = StringWriter(); JsonWrite(writer, str, 0); char *output = StringWriterClose(writer); assert_string_equal("\"snookie\"", output); JsonDestroy(str); free(output); }
JsonElement *RvalToJson(Rval rval) { assert(rval.item); switch (rval.type) { case RVAL_TYPE_SCALAR: return JsonStringCreate(RvalScalarValue(rval)); case RVAL_TYPE_LIST: return RlistToJson(RvalRlistValue(rval)); case RVAL_TYPE_FNCALL: return FnCallToJson(RvalFnCallValue(rval)); case RVAL_TYPE_CONTAINER: return JsonCopy(RvalContainerValue(rval)); case RVAL_TYPE_NOPROMISEE: assert(false); return JsonObjectCreate(1); } assert(false); return NULL; }