Files
osu-framework/osu.Framework.SourceGeneration.Tests/Dependencies/DependencyInjectionSourceGeneratorTests.cs
2025-12-06 17:22:05 +08:00

67 lines
2.7 KiB
C#

// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text.
using System.Threading.Tasks;
using Microsoft.CodeAnalysis;
using Xunit;
using VerifyCS = osu.Framework.SourceGeneration.Tests.Verifiers.CSharpSourceGeneratorVerifier<osu.Framework.SourceGeneration.Generators.Dependencies.DependencyInjectionSourceGenerator>;
namespace osu.Framework.SourceGeneration.Tests.Dependencies
{
public class DependencyInjectionSourceGeneratorTests : AbstractGeneratorTests
{
protected override string ResourceNamespace => "DependencyInjection";
[Theory]
// Non-partial-class tests:
[InlineData("EmptyFile")]
[InlineData("EmptyClass")]
[InlineData("EmptyDrawable")]
[InlineData("CachedClass")]
[InlineData("CachedDrawable")]
// Partial-class tests:
[InlineData("DependencyInjectionCandidateWithConflictingLocal")]
[InlineData("DependencyInjectionCandidateWithConflictingNestedClass")]
[InlineData("EmptyPartialDrawable")]
[InlineData("GenericEmptyPartialDrawable")]
[InlineData("PartialCachedClass")]
[InlineData("PartialCachedDrawable")]
[InlineData("PartialCachedMember")]
[InlineData("PartialCachedInterface")]
[InlineData("PartialResolvedMember")]
[InlineData("PartialResolvedBindable")]
[InlineData("PartialResolvedNullableBindable")]
[InlineData("PartialBackgroundDependencyLoadedDrawable")]
[InlineData("PartialNestedClasses")]
[InlineData("NestedCachedClass")]
[InlineData("MultipleCachedMember")]
[InlineData("CachedInheritedInterface")]
[InlineData("CachedBaseType")]
public Task Check(string name)
{
GetTestSources(name,
out (string filename, string content)[] commonSourceFiles,
out (string filename, string content)[] sourceFiles,
out (string filename, string content)[] commonGeneratedFiles,
out (string filename, string content)[] generatedFiles
);
return VerifyCS.VerifyAsync(commonSourceFiles, sourceFiles, commonGeneratedFiles, generatedFiles);
}
[Theory]
[InlineData("EmptyFile")]
public Task CheckDebugNoOutput(string name)
{
GetTestSources(name,
out (string filename, string content)[] commonSourceFiles,
out (string filename, string content)[] sourceFiles,
out _,
out _
);
return VerifyCS.VerifyAsync(commonSourceFiles, sourceFiles, [], [], OptimizationLevel.Debug);
}
}
}