Esempio n. 1
0
LONGBOW_TEST_CASE(parc_JSONArray, parcJSONArray_BuildString)
{
    PARCJSONArray *array = parcJSONArray_Create();
    PARCJSONValue *expected = parcJSONValue_CreateFromInteger(10);
    parcJSONArray_AddValue(array, expected);

    PARCBufferComposer *composer = parcBufferComposer_Create();
    parcJSONArray_BuildString(array, composer, false);

    PARCBuffer *tempBuffer = parcBufferComposer_ProduceBuffer(composer);
    parcBufferComposer_Release(&composer);
    char *result = parcBuffer_ToString(tempBuffer);
    parcBuffer_Release(&tempBuffer);

    assertTrue(strlen(result) > 0, "Expected non-empty string result");

    parcMemory_Deallocate((void **) &result);

    composer = parcBufferComposer_Create();
    parcJSONArray_BuildString(array, composer, true);
    tempBuffer = parcBufferComposer_ProduceBuffer(composer);
    parcBufferComposer_Release(&composer);
    result = parcBuffer_ToString(tempBuffer);
    parcBuffer_Release(&tempBuffer);

    assertTrue(strlen(result) > 0, "Expected non-empty string result");

    parcMemory_Deallocate((void **) &result);

    parcJSONValue_Release(&expected);
    parcJSONArray_Release(&array);
}
Esempio n. 2
0
PARCBufferComposer *
parcJSONValue_BuildString(const PARCJSONValue *value, PARCBufferComposer *composer, bool compact)
{
    parcJSONValue_OptionalAssertValid(value);

    if (value->type == PARCJSONValueType_Boolean) {
        parcBufferComposer_PutString(composer, value->value.boolean ? "true" : "false");
    } else if (value->type == PARCJSONValueType_String) {
        _buildStringString(value, composer, compact);
    } else if (value->type == PARCJSONValueType_Number) {
        _buildStringNumber(value, composer);
    } else if (value->type == PARCJSONValueType_Array) {
        parcJSONArray_BuildString(value->value.array, composer, compact);
    } else if (value->type == PARCJSONValueType_JSON) {
        parcJSON_BuildString(value->value.object, composer, compact);
    } else if (value->type == PARCJSONValueType_Null) {
        parcBufferComposer_PutString(composer, "null");
    } else {
        trapIllegalValue(value->type, "Unknown value type: %d", value->type);
    }

    return composer;
}