Enums
Enums are created as instances of EnumDefinition
. Special value converter EnumConverter
is used to convert enum values.
Examples
using System.Collections.Generic;
using System.Text;
using Tanka.GraphQL.Language.Nodes;
using Tanka.GraphQL.Language.Nodes.TypeSystem;
using Xunit;
namespace Tanka.GraphQL.Language.Tests.Nodes;
public class EnumDefinitionFacts
{
[Fact]
public void FromBytes()
{
/* Given */
/* When */
EnumDefinition original = "enum ENUM { V1, V2 }"u8;
/* Then */
Assert.Equal("ENUM", original.Name);
}
[Fact]
public void FromString()
{
/* Given */
/* When */
EnumDefinition original = "enum ENUM { V1, V2 }";
/* Then */
Assert.Equal("ENUM", original.Name);
}
[Fact]
public void WithDescription()
{
/* Given */
EnumDefinition original = @"enum ENUM { V1, V2 }";
/* When */
EnumDefinition modified = original
.WithDescription("Description");
/* Then */
Assert.Null(original.Description);
Assert.Equal("Description", modified.Description);
}
[Fact]
public void WithName()
{
/* Given */
EnumDefinition original = @"enum ENUM { V1, V2 }";
/* When */
EnumDefinition modified = original
.WithName("Renamed");
/* Then */
Assert.Equal("ENUM", original.Name);
Assert.Equal("Renamed", modified.Name);
}
[Fact]
public void WithValues()
{
/* Given */
EnumDefinition original = @"enum ENUM { V1, V2 }";
/* When */
EnumDefinition modified = original
.WithValues(new List<EnumValueDefinition> { "V3 @new" });
/* Then */
Assert.Equal(2, original.Values?.Count);
Assert.Equal(1, modified.Values?.Count);
}
[Fact]
public void WithDirectives()
{
/* Given */
EnumDefinition original = @"enum ENUM { V1, V2 }";
/* When */
EnumDefinition modified = original
.WithDirectives(new List<Directive> { "@a" });
/* Then */
Assert.Null(original.Directives);
Assert.NotNull(modified.Directives);
Directive a = Assert.Single(modified.Directives);
Assert.Equal("a", a?.Name);
}
}