#include "clar.h"
#include "clar_test.h"
#include <stdio.h>
#include <string.h>
static char *fixture;
void test_objects__initialize(void)
{
global_test_counter++;
}
void test_objects__cleanup(void)
{
if (fixture != NULL) {
free(fixture);
}
}
void test_objects__inline(void)
{
fixture = read_fixture("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, "object");
cl_assert_equal_s(NULL, types[0].object_type.description);
cl_assert_equal_s("CodeOfConduct", types[0].object_type.name);
cl_assert_equal_s(types[1].typename, "object");
cl_assert_equal_s("The Code of Conduct for a repository", types[1].object_type.description);
cl_assert_equal_s("CodeOfConduct", types[1].object_type.name);
cl_assert_equal_s(types[2].typename, "object");
cl_assert_equal_s(NULL, types[2].object_type.description);
cl_assert_equal_s("PushAllowance", types[2].object_type.name);
cl_assert_equal_i(1, types[2].object_type.implements.length);
cl_assert_equal_s("Node", types[2].object_type.implements.data[0]);
cl_assert_equal_s(types[3].typename, "object");
cl_assert_equal_s(NULL, types[3].object_type.description);
cl_assert_equal_s("Release", types[3].object_type.name);
cl_assert_equal_i(2, types[3].object_type.implements.length);
cl_assert_equal_s("Node", types[3].object_type.implements.data[0]);
cl_assert_equal_s("UniformResourceLocatable", types[3].object_type.implements.data[1]);
cl_assert_equal_s(types[4].typename, "object");
cl_assert_equal_s("The Code of Conduct for a repository", types[4].object_type.description);
cl_assert_equal_s("CodeOfConduct", types[4].object_type.name);
cl_assert_equal_i(1, types[4].object_type.fields.length);
cl_assert_equal_s("body", types[4].object_type.fields.data[0].name);
cl_assert_equal_s(NULL, types[4].object_type.fields.data[0].description);
cl_assert_equal_i(0, types[4].object_type.fields.data[0].directives.length);
cl_assert_equal_s(types[5].typename, "object");
cl_assert_equal_s("The Code of Conduct for a repository", types[5].object_type.description);
cl_assert_equal_s("CodeOfConduct", types[5].object_type.name);
cl_assert_equal_i(1, types[5].object_type.fields.length);
cl_assert_equal_s("body", types[5].object_type.fields.data[0].name);
cl_assert_equal_s("The body of the CoC", types[5].object_type.fields.data[0].description);
cl_assert_equal_i(0, types[5].object_type.fields.data[0].directives.length);
cl_assert_equal_s(types[6].typename, "object");
cl_assert_equal_s("key", types[6].object_type.fields.data[0].name);
cl_assert_equal_s("String", types[6].object_type.fields.data[0].type_info.name);
cl_assert_equal_s("!", types[6].object_type.fields.data[0].type_info.info);
cl_assert_equal_s(types[7].typename, "object");
cl_assert_equal_s("edges", types[7].object_type.fields.data[0].name);
cl_assert_equal_s("CommitCommentEdge", types[7].object_type.fields.data[0].type_info.name);
cl_assert_equal_s("[]", types[7].object_type.fields.data[0].type_info.info);
cl_assert_equal_s(types[8].typename, "object");
cl_assert_equal_s("suggestedReviewers", types[8].object_type.fields.data[0].name);
cl_assert_equal_s("SuggestedReviewer", types[8].object_type.fields.data[0].type_info.name);
cl_assert_equal_s("[]!", types[8].object_type.fields.data[0].type_info.info);
cl_assert_equal_s(types[9].typename, "object");
cl_assert_equal_s("viewerCannotUpdateReasons", types[9].object_type.fields.data[0].name);
cl_assert_equal_s("CommentCannotUpdateReason", types[9].object_type.fields.data[0].type_info.name);
cl_assert_equal_s("[!]!", types[9].object_type.fields.data[0].type_info.info);
cl_assert_equal_s(types[10].typename, "object");
cl_assert_equal_s("followers", types[10].object_type.fields.data[0].name);
cl_assert_equal_s("FollowerConnection", types[10].object_type.fields.data[0].type_info.name);
cl_assert_equal_s("!", types[10].object_type.fields.data[0].type_info.info);
cl_assert_equal_i(2, types[10].object_type.fields.data[0].arguments.length);
cl_assert_equal_s("Returns the elements in the list that come after the specified global ID.", types[10].object_type.fields.data[0].arguments.data[0].description);
cl_assert_equal_s("after", types[10].object_type.fields.data[0].arguments.data[0].name);
cl_assert_equal_s("String", types[10].object_type.fields.data[0].arguments.data[0].type_info.name);
cl_assert_equal_s("", types[10].object_type.fields.data[0].arguments.data[0].type_info.info);
cl_assert_equal_s("Returns the first _n_ elements from the list.", types[10].object_type.fields.data[0].arguments.data[1].description);
cl_assert_equal_s("first", types[10].object_type.fields.data[0].arguments.data[1].name);
cl_assert_equal_s("Int", types[10].object_type.fields.data[0].arguments.data[1].type_info.name);
cl_assert_equal_s("!", types[10].object_type.fields.data[0].arguments.data[1].type_info.info);
cl_assert_equal_s(types[11].typename, "object");
cl_assert_equal_s("User", types[11].object_type.name);
cl_assert_equal_i(1, types[11].object_type.fields.data[0].directives.length);
cl_assert_equal_s("deprecated", types[11].object_type.fields.data[0].directives.data[0].name);
cl_assert_equal_i(0, types[11].object_type.fields.data[0].directives.data[0].arguments.length);
cl_assert_equal_s(types[12].typename, "object");
cl_assert_equal_s("Issue", types[12].object_type.name);
cl_assert_equal_i(0, types[12].object_type.fields.data[0].arguments.length);
cl_assert_equal_i(1, types[12].object_type.fields.data[0].directives.length);
cl_assert_equal_s("deprecated", types[12].object_type.fields.data[0].directives.data[0].name);
cl_assert_equal_i(1, types[12].object_type.fields.data[0].directives.data[0].arguments.length);
cl_assert_equal_s("reason", types[12].object_type.fields.data[0].directives.data[0].arguments.data[0].name);
cl_assert_equal_s("Exposed database IDs will eventually be removed in favor of global Relay IDs.", types[12].object_type.fields.data[0].directives.data[0].arguments.data[0].value);
cl_assert_equal_s(types[13].typename, "object");
cl_assert_equal_s("Team", types[13].object_type.name);
cl_assert_equal_i(1, types[13].object_type.implements.length);
cl_assert_equal_s("Node", types[13].object_type.implements.data[0]);
cl_assert_equal_i(1, types[13].object_type.fields.length);
cl_assert_equal_s("childTeams", types[13].object_type.fields.data[0].name);
cl_assert_equal_i(1, types[13].object_type.fields.data[0].arguments.length);
cl_assert_equal_s("immediateOnly", types[13].object_type.fields.data[0].arguments.data[0].name);
cl_assert_equal_s("Boolean", types[13].object_type.fields.data[0].arguments.data[0].type_info.name);
cl_assert_equal_s("", types[13].object_type.fields.data[0].arguments.data[0].type_info.info);
cl_assert_equal_s("true", types[13].object_type.fields.data[0].arguments.data[0].default_value);
}