Files
InterfaceGenerator/Speckle.InterfaceGenerator.Tests/GenericInterfaceTests.cs
T
2024-05-17 11:58:54 +01:00

40 lines
1.2 KiB
C#

using System;
using System.Reflection;
using FluentAssertions;
using Xunit;
namespace Speckle.InterfaceGenerator.Tests;
public class GenericInterfaceTests
{
[Fact]
public void GenericParametersGeneratedCorrectly()
{
var genericArgs = typeof(IGenericInterfaceTestsService<,>).GetGenericArguments();
genericArgs.Should().HaveCount(2);
genericArgs[0].Name.Should().Be("TX");
genericArgs[1].Name.Should().Be("TY");
genericArgs[0].IsClass.Should().BeTrue();
genericArgs[0]
.GenericParameterAttributes.Should()
.HaveFlag(GenericParameterAttributes.DefaultConstructorConstraint);
var iEquatableOfTx = typeof(IEquatable<>).MakeGenericType(genericArgs[0]);
genericArgs[0]
.GetGenericParameterConstraints()
.Should()
.HaveCount(1)
.And.Contain(iEquatableOfTx);
genericArgs[1].IsValueType.Should().BeTrue();
}
}
[GenerateAutoInterface]
// ReSharper disable once UnusedType.Global
internal class GenericInterfaceTestsService<TX, TY> : IGenericInterfaceTestsService<TX, TY>
where TX : class, IEquatable<TX>, new()
where TY : struct { }