graphql-idl-parser-ffi 0.1.3

An FFI interface for the GraphQL IDL format parser.
Documentation
#include "clar.h"
#include "clar_test.h"
#include <stdio.h>
#include <string.h>

static char *fixture;

void test_input_objects__initialize(void)
{
  global_test_counter++;
}

void test_input_objects__cleanup(void)
{
  if (fixture != NULL) {
    free(fixture);
  }
}

void test_input_objects__inline(void)
{
  fixture = read_fixture("input_objects.graphql");

  GraphQLTypes* types = NULL;
  size_t types_len = 0;
  uint8_t err;

  err = gqlidl_parse_schema(fixture, &types, &types_len);

  cl_assert_equal_i(err, 0);

  cl_assert_equal_s(types[0].typename, "input_object");
  cl_assert_equal_s("UpdateTopicsInput", types[0].input_object_type.name);
  cl_assert_equal_s("Autogenerated input type of UpdateTopics", types[0].input_object_type.description);
  cl_assert_equal_i(3, types[0].input_object_type.fields.length);
  cl_assert_equal_s("clientMutationId", types[0].input_object_type.fields.data[0].name);
  cl_assert_equal_s("A unique identifier for the client performing the mutation.", types[0].input_object_type.fields.data[0].description);
  cl_assert_equal_s("String", types[0].input_object_type.fields.data[0].type_info.name);
  cl_assert_equal_s("", types[0].input_object_type.fields.data[0].type_info.info);
  cl_assert_equal_s("repositoryId", types[0].input_object_type.fields.data[1].name);
  cl_assert_equal_s("The Node ID of the repository.", types[0].input_object_type.fields.data[1].description);
  cl_assert_equal_s("ID", types[0].input_object_type.fields.data[1].type_info.name);
  cl_assert_equal_s("!", types[0].input_object_type.fields.data[1].type_info.info);
  cl_assert_equal_s("topicNames", types[0].input_object_type.fields.data[2].name);
  cl_assert_equal_s("An array of topic names.", types[0].input_object_type.fields.data[2].description);
  cl_assert_equal_s("String", types[0].input_object_type.fields.data[2].type_info.name);
  cl_assert_equal_s("[!]!", types[0].input_object_type.fields.data[2].type_info.info);
}