view infinite_canvas/agent_response_test.c @ 281:c57149ad216e default tip

Copilot-Session: f68442b1-fa8f-46a0-9689-81710613bbd4
author MrJuneJune <me@mrjunejune.com>
date Tue, 18 Aug 2026 22:18:15 -0700
parents
children
line wrap: on
line source

#include "infinite_canvas/agent_response.h"

#include <assert.h>
#include <string.h>

int main(void)
{
    Canvas_Agent_Response response;
    assert(Canvas_Agent_Response_Parse(
        "{\"action\":\"create\",\"presentation\":\"action\","
        "\"conversation_id\":0,"
        "\"title\":\"Planning\",\"response\":\"Here is a calendar\","
        "\"entities\":[{\"kind\":\"calendar\",\"label\":\"August\","
        "\"x\":120,\"y\":80,\"width\":300,\"height\":260,\"value\":18},"
        "{\"kind\":\"card\",\"label\":\"Launch\",\"text\":\"Ship it\"}]}",
        &response));
    assert(strcmp(response.action, "create") == 0);
    assert(strcmp(response.presentation, "action") == 0);
    assert(response.entity_count == 2);
    assert(response.entities[0].type == CANVAS_ENTITY_CALENDAR);
    assert(response.entities[0].has_position);
    assert(response.entities[0].has_size);
    assert(response.entities[0].has_value);
    assert(response.entities[0].value == 18);
    assert(response.entities[1].type == CANVAS_ENTITY_CARD);
    assert(!response.entities[1].has_value);
    assert(strcmp(response.entities[1].text, "Ship it") == 0);

    assert(!Canvas_Agent_Response_Parse(
        "{\"action\":\"create\",\"presentation\":\"action\","
        "\"conversation_id\":0,"
        "\"response\":\"bad\",\"entities\":["
        "{\"kind\":\"web_content\",\"text\":\"file:///etc/passwd\"}]}",
        &response));
    assert(!Canvas_Agent_Response_Parse(
        "{\"action\":\"create\",\"presentation\":\"action\","
        "\"conversation_id\":0,"
        "\"response\":\"bad\",\"entities\":[{\"kind\":\"unknown\"}]}",
        &response));
    assert(!Canvas_Agent_Response_Parse(
        "{\"action\":\"append\",\"presentation\":\"action\","
        "\"conversation_id\":4,\"response\":\"bad\"}",
        &response));
    return 0;
}