Types
Following types are supported:
ScalarType
ObjectType
InterfaceType
UnionType
EnumType
InputObjectType
These all exists in Tanka.GraphQL.type
namespace and implement INamedType
interface
public interface INamedType: IType
{
string Name { get; }
}
Wrapping types
Wrapping types implement the IWrappingType
public interface IWrappingType: IType
{
IType OfType { get; }
}
Two built-in implementations are provided
List
NonNull
Input and output types
Is input type?
[Theory]
[MemberData(nameof(ValidInputTypes))]
public void IsInputType(INamedType type)
{
/* Given */
/* When */
var isInput = TypeIs.IsInputType(type);
var isInputAsNonNull = TypeIs.IsInputType(
new NonNull(type));
var isInputAsList = TypeIs.IsInputType(
new List(type));
/* Then */
Assert.True(isInput);
Assert.True(isInputAsNonNull);
Assert.True(isInputAsList);
}
public static IEnumerable<object[]> ValidInputTypes
{
get
{
foreach (var scalarType in ScalarType.Standard.Select(s => s.Type))
{
yield return new object[] {scalarType};
}
yield return new object[]
{
new EnumType("Enum",
new EnumValues())
};
yield return new object[]
{
new InputObjectType("Input")
};
}
}
Is output type?
[Theory]
[MemberData(nameof(ValidOutputTypes))]
public void IsOutputType(INamedType type)
{
/* Given */
/* When */
var isOutput = TypeIs.IsOutputType(type);
var isOutputAsNonNull = TypeIs.IsOutputType(
new NonNull(type));
var isOutputAsList = TypeIs.IsOutputType(
new List(type));
/* Then */
Assert.True(isOutput);
Assert.True(isOutputAsNonNull);
Assert.True(isOutputAsList);
}
public static IEnumerable<object[]> ValidOutputTypes
{
get
{
foreach (var scalarType in ScalarType.Standard.Select(s => s.Type))
{
yield return new object[] {scalarType};
}
yield return new object[]
{
new ObjectType("Object"),
};
yield return new object[]
{
new InterfaceType("Interface"),
};
yield return new object[]
{
new UnionType("Union",
Enumerable.Empty<ObjectType>()),
};
yield return new object[]
{
new EnumType("Enum",
new EnumValues())
};
}
}