diff --git a/README.md b/README.md new file mode 100644 index 0000000..abece53 --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# CodeOfChaos.Testing.TUnit +Some extension methods on the TUnit testing framework. \ No newline at end of file diff --git a/src/CodeOfChaos.Testing.TUnit/CodeOfChaos.Testing.TUnit.csproj b/src/CodeOfChaos.Testing.TUnit/CodeOfChaos.Testing.TUnit.csproj index a0e7415..e5d5e76 100644 --- a/src/CodeOfChaos.Testing.TUnit/CodeOfChaos.Testing.TUnit.csproj +++ b/src/CodeOfChaos.Testing.TUnit/CodeOfChaos.Testing.TUnit.csproj @@ -5,16 +5,37 @@ latest enable enable + + + CodeOfChaos.Testing.TUnit + 0.1.0 + Anna Sas + A small library housing extensions to the TUnit framework + https://github.com/code-of-chaos/cs_code-of_chaos-testing-tunit + extensions tunit testing + true + true + true + embedded + LICENSE + README.md + icon.png + + + + + + - - - - - - - + + + + + + + diff --git a/src/CodeOfChaos.Testing.TUnit/Conditions/CompilationContainsDiagnosticAssertCondition.cs b/src/CodeOfChaos.Testing.TUnit/Conditions/CompilationContainsDiagnosticAssertCondition.cs index d475242..82b9226 100644 --- a/src/CodeOfChaos.Testing.TUnit/Conditions/CompilationContainsDiagnosticAssertCondition.cs +++ b/src/CodeOfChaos.Testing.TUnit/Conditions/CompilationContainsDiagnosticAssertCondition.cs @@ -15,7 +15,7 @@ public class CompilationContainsDiagnosticAssertCondition(string expectedId) protected override string GetExpectation() => $"to have a diagnostic with Id \"{ExpectedValue}\""; - protected override AssertionResult GetResult(Compilation? actualValue, string? expectedValue) { + protected override Task GetResult(Compilation? actualValue, string? expectedValue) { if (actualValue is null) return AssertionResult.Fail("Compilation is null"); if (expectedValue is null) return AssertionResult.Fail("Expected value is null"); diff --git a/src/CodeOfChaos.Testing.TUnit/Conditions/CompilationContainsDiagnosticsExclusivelyAssertCondition.cs b/src/CodeOfChaos.Testing.TUnit/Conditions/CompilationContainsDiagnosticsExclusivelyAssertCondition.cs index c16f468..c90bba0 100644 --- a/src/CodeOfChaos.Testing.TUnit/Conditions/CompilationContainsDiagnosticsExclusivelyAssertCondition.cs +++ b/src/CodeOfChaos.Testing.TUnit/Conditions/CompilationContainsDiagnosticsExclusivelyAssertCondition.cs @@ -15,7 +15,7 @@ public class CompilationContainsDiagnosticsExclusivelyAssertCondition(string[] e protected override string GetExpectation() => $"to have a compilation output with the following Ids \"{ExpectedValue}\""; - protected override AssertionResult GetResult(Compilation? compilation, string[]? expectedValues) { + protected override Task GetResult(Compilation? compilation, string[]? expectedValues) { if (compilation is null) return AssertionResult.Fail("Compilation is null"); if (expectedValues is null) return AssertionResult.Fail("Expected value is null"); diff --git a/src/CodeOfChaos.Testing.TUnit/Conditions/CompilationDoesNotContainDiagnosticAssertCondition.cs b/src/CodeOfChaos.Testing.TUnit/Conditions/CompilationDoesNotContainDiagnosticAssertCondition.cs index 7cbe016..150cfc5 100644 --- a/src/CodeOfChaos.Testing.TUnit/Conditions/CompilationDoesNotContainDiagnosticAssertCondition.cs +++ b/src/CodeOfChaos.Testing.TUnit/Conditions/CompilationDoesNotContainDiagnosticAssertCondition.cs @@ -15,7 +15,7 @@ public class CompilationDoesNotContainDiagnosticAssertCondition(string expectedI protected override string GetExpectation() => $"to not have a diagnostic with Id \"{ExpectedValue}\""; - protected override AssertionResult GetResult(Compilation? actualValue, string? expectedValue) { + protected override Task GetResult(Compilation? actualValue, string? expectedValue) { if (actualValue is null) return AssertionResult.Fail("Compilation is null"); if (expectedValue is null) return AssertionResult.Fail("Expected value is null"); diff --git a/src/CodeOfChaos.Testing.TUnit/Conditions/CompilationHasSourceTextEqualToCondition.cs b/src/CodeOfChaos.Testing.TUnit/Conditions/CompilationHasSourceTextEqualToCondition.cs index 7d6f679..be6d9fa 100644 --- a/src/CodeOfChaos.Testing.TUnit/Conditions/CompilationHasSourceTextEqualToCondition.cs +++ b/src/CodeOfChaos.Testing.TUnit/Conditions/CompilationHasSourceTextEqualToCondition.cs @@ -3,6 +3,7 @@ // --------------------------------------------------------------------------------------------------------------------- using Microsoft.CodeAnalysis; using TUnit.Assertions.AssertConditions; +using TUnit.Assertions.AssertConditions.String; namespace CodeOfChaos.Testing.TUnit.Conditions; @@ -11,9 +12,13 @@ namespace CodeOfChaos.Testing.TUnit.Conditions; // --------------------------------------------------------------------------------------------------------------------- public class CompilationHasSourceTextEqualToCondition(string filename, string expected, StringComparison stringComparison, bool ignoreWhiteSpace, bool withTrimming) : ExpectedValueAssertCondition(expected) { + private readonly string _expected = expected; + // ----------------------------------------------------------------------------------------------------------------- + // Methods + // ----------------------------------------------------------------------------------------------------------------- protected override string GetExpectation() => throw new NotImplementedException(); - protected override AssertionResult GetResult(GeneratorDriverRunResult? runResult, string? expectedValue) { + protected async override Task GetResult(GeneratorDriverRunResult? runResult, string? expectedValue) { if (runResult is null) return AssertionResult.Fail("Compilation is null"); if (expectedValue is null) return AssertionResult.Fail("Expected string is null"); @@ -26,10 +31,17 @@ protected override AssertionResult GetResult(GeneratorDriverRunResult? runResult if (generatedSource.Value.SourceText is not {} sourceText) return AssertionResult.Fail("Source text is null"); string sourceTextString = sourceText.ToString(); - if (ignoreWhiteSpace) sourceTextString = string.Join(string.Empty, sourceTextString.Where(c => !char.IsWhiteSpace(c))); - if (withTrimming) sourceTextString = sourceTextString.Trim(); + // Use the TUnit Equals String so it follows the same structure + var stringEqualsAssertCondition = new StringEqualsExpectedValueAssertCondition(_expected, stringComparison); + if(withTrimming) stringEqualsAssertCondition.WithTrimming(); + if(ignoreWhiteSpace) stringEqualsAssertCondition.IgnoringWhitespace(); - return AssertionResult - .FailIf(!string.Equals(sourceTextString, expectedValue, stringComparison), "Source text does not match"); + return await stringEqualsAssertCondition.GetAssertionResult(sourceTextString, null); + + // if (ignoreWhiteSpace) sourceTextString = string.Join(string.Empty, sourceTextString.Where(c => !char.IsWhiteSpace(c))); + // if (withTrimming) sourceTextString = sourceTextString.Trim(); + // + // return AssertionResult + // .FailIf(!string.Equals(sourceTextString, expectedValue, stringComparison), "Source text does not match"); } } diff --git a/src/CodeOfChaos.Testing.TUnit/Extensions/TUnitExtensionsCompilation.cs b/src/CodeOfChaos.Testing.TUnit/Extensions/TUnitExtensionsCompilation.cs index 94297ac..f026458 100644 --- a/src/CodeOfChaos.Testing.TUnit/Extensions/TUnitExtensionsCompilation.cs +++ b/src/CodeOfChaos.Testing.TUnit/Extensions/TUnitExtensionsCompilation.cs @@ -4,9 +4,9 @@ using CodeOfChaos.Testing.TUnit.Conditions; using Microsoft.CodeAnalysis; using System.Runtime.CompilerServices; +using TUnit.Assertions.AssertConditions; using TUnit.Assertions.AssertConditions.Interfaces; using TUnit.Assertions.AssertionBuilders; -using TUnit.Assertions.AssertionBuilders.Wrappers; namespace CodeOfChaos.Testing.TUnit; diff --git a/src/Tools.CodeOfChaos.Testing.TUnit/Program.cs b/src/Tools.CodeOfChaos.Testing.TUnit/Program.cs index da89515..ada3673 100644 --- a/src/Tools.CodeOfChaos.Testing.TUnit/Program.cs +++ b/src/Tools.CodeOfChaos.Testing.TUnit/Program.cs @@ -23,7 +23,7 @@ public static async Task Main(string[] args) { // Sometimes CLI params is not the answer. // Code is the true saviour string projects = string.Join(";", - "TEMPLATE" + "CodeOfChaos.Testing.TUnit" ); string oneLineArgs = InputHelper.ToOneLine(args).Replace("%PROJECTS%", projects); diff --git a/src/Tools.CodeOfChaos.Testing.TUnit/Tools.CodeOfChaos.Testing.TUnit.csproj b/src/Tools.CodeOfChaos.Testing.TUnit/Tools.CodeOfChaos.Testing.TUnit.csproj index d51bdeb..f552d73 100644 --- a/src/Tools.CodeOfChaos.Testing.TUnit/Tools.CodeOfChaos.Testing.TUnit.csproj +++ b/src/Tools.CodeOfChaos.Testing.TUnit/Tools.CodeOfChaos.Testing.TUnit.csproj @@ -9,7 +9,7 @@ - + diff --git a/tests/Tests.CodeOfChaos.Testing.TUnit/TUnitExtensionTests.cs b/tests/Tests.CodeOfChaos.Testing.TUnit/TUnitExtensionTests.cs index 70938d0..88db18a 100644 --- a/tests/Tests.CodeOfChaos.Testing.TUnit/TUnitExtensionTests.cs +++ b/tests/Tests.CodeOfChaos.Testing.TUnit/TUnitExtensionTests.cs @@ -3,6 +3,10 @@ // --------------------------------------------------------------------------------------------------------------------- using CodeOfChaos.Testing.TUnit; using Microsoft.CodeAnalysis; +using System.Runtime.CompilerServices; +using TUnit.Assertions.AssertConditions; +using TUnit.Assertions.AssertConditions.Interfaces; +using TUnit.Assertions.AssertionBuilders; namespace Tests.CodeOfChaos.Testing.TUnit; diff --git a/tests/Tests.CodeOfChaos.Testing.TUnit/Tests.CodeOfChaos.Testing.TUnit.csproj b/tests/Tests.CodeOfChaos.Testing.TUnit/Tests.CodeOfChaos.Testing.TUnit.csproj index 5e6a8e9..e2d694c 100644 --- a/tests/Tests.CodeOfChaos.Testing.TUnit/Tests.CodeOfChaos.Testing.TUnit.csproj +++ b/tests/Tests.CodeOfChaos.Testing.TUnit/Tests.CodeOfChaos.Testing.TUnit.csproj @@ -13,7 +13,7 @@ - +