Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
| GenerateAllCombinations | Setup #8 | 22.56 us | 0.163 us | 0.153 us |
| GenerateAllCombinations | Setup #9 | 80.94 us | 0.447 us | 0.396 us |
*/
public class CombinatorialMachineBenchmark
internal class CombinatorialMachineBenchmark
{
private CombinatorialMachine _machine;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
| BuildConstructionGraphs | Setup #6 | 24.91 us | 0.175 us | 0.164 us | 6.0425 | 0.1221 | - | 49.47 KB |
*/
[MemoryDiagnoser]
public class ConstructionManagerBenchmark
internal class ConstructionManagerBenchmark
{
private CleanTestAssemblyData _assemblyData;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,13 @@ public async Task CombinationsShouldBeGeneratedSuccessfully(EnvironmentSetup set
}
}

public static IEnumerable<object[]> GetCombinatorialMachineSetups()
=> TestParameters.ConstructObservableCombinatorialMachineSetups()
.Select(combinatorialMachineSetup => new object[] { combinatorialMachineSetup.EnvironmentSetup, combinatorialMachineSetup.ExpectedCombinationsCount });
public static TheoryData<EnvironmentSetup, int> GetCombinatorialMachineSetups()
{
var result = new TheoryData<EnvironmentSetup, int>();

foreach (var setup in TestParameters.ConstructObservableCombinatorialMachineSetups())
result.Add(setup.EnvironmentSetup, setup.ExpectedCombinationsCount);

return result;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@
using Xunit.Abstractions;
using Xunit.Sdk;

public static class DiscoveryExtensions
internal static class DiscoveryExtensions
{
private const int DelayBetweenDiscoveryRetries = 50;
private const int MaxDiscoveryRetries = 20;

public static async Task<IEnumerable<IXunitTestCase>> DiscoverTestCasesAsync(this IAssemblyInfo assembly, CleanTestAssemblyData assemblyData, TestComponentMocksSuite testComponentMocks)
internal static async Task<IEnumerable<IXunitTestCase>> DiscoverTestCasesAsync(this IAssemblyInfo assembly, CleanTestAssemblyData assemblyData, TestComponentMocksSuite testComponentMocks)
{
Assert.NotNull(assembly);
Assert.NotNull(assemblyData);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
using TryAtSoftware.CleanTests.Core.XUnit;
using TryAtSoftware.CleanTests.UnitTests.Parametrization;

public static class ParametrizationExtensions
internal static class ParametrizationExtensions
{
public static CombinatorialMachine MaterializeAsCombinatorialMachine(this EnvironmentSetup environmentSetup)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@ public EnvironmentSetup WithCategory(string category, int utilitiesCount)
if (string.IsNullOrWhiteSpace(category)) throw new ArgumentNullException(nameof(category));
if (utilitiesCount <= 0) throw new ArgumentException("The number of utilities for each category must be at least 1", nameof(utilitiesCount));

if (this._numberOfUtilitiesPerCategory.ContainsKey(category)) throw new InvalidOperationException("Category with that name has already been registered.");
this._numberOfUtilitiesPerCategory[category] = utilitiesCount;
if (!this._numberOfUtilitiesPerCategory.TryAdd(category, utilitiesCount))
throw new InvalidOperationException("Category with that name has already been registered.");
return this;
}

Expand Down Expand Up @@ -77,7 +77,7 @@ public EnvironmentSetup WithOuterDemands(string utilityCategory, int utilityId,
return this;
}

public ICleanTestInitializationCollection<ICleanUtilityDescriptor> Materialize()
internal ICleanTestInitializationCollection<ICleanUtilityDescriptor> Materialize()
{
var utilitiesCollection = new CleanTestInitializationCollection<ICleanUtilityDescriptor>();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

using System.Text;

public static class TestParameters
internal static class TestParameters
{
public static IEnumerable<object?[]> GetInvalidStringParameters()
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@
<IsPackable>false</IsPackable>
</PropertyGroup>

<ItemGroup>
<InternalsVisibleTo Include="TryAtSoftware.CleanTests.Benchmark" />
</ItemGroup>

<ItemGroup>
<PackageReference Include="coverlet.msbuild" Version="6.0.2">
<PrivateAssets>all</PrivateAssets>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
using TryAtSoftware.CleanTests.Core.Interfaces;
using TryAtSoftware.Extensions.Collections;

public class CleanTestInitializationCollection<TValue> : ICleanTestInitializationCollection<TValue>
internal class CleanTestInitializationCollection<TValue> : ICleanTestInitializationCollection<TValue>
{
private readonly IDictionary<string, List<TValue>> _data = new Dictionary<string, List<TValue>>();

Expand Down
2 changes: 1 addition & 1 deletion TryAtSoftware.CleanTests.Core/CleanUtilityDescriptor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
using TryAtSoftware.CleanTests.Core.Interfaces;
using TryAtSoftware.Extensions.Collections;

public class CleanUtilityDescriptor : ICleanUtilityDescriptor
internal class CleanUtilityDescriptor : ICleanUtilityDescriptor
{
private readonly HashSet<string> _characteristics = new();
private readonly HashSet<string> _internalRequirements = new ();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
using TryAtSoftware.CleanTests.Core.XUnit;
using TryAtSoftware.Extensions.Collections;

public class ConstructionManager(CleanTestAssemblyData cleanTestAssemblyData) : IConstructionManager
internal class ConstructionManager(CleanTestAssemblyData cleanTestAssemblyData) : IConstructionManager
{
private readonly CleanTestAssemblyData _cleanTestAssemblyData = cleanTestAssemblyData ?? throw new ArgumentNullException(nameof(cleanTestAssemblyData));
private readonly Dictionary<string, FullCleanUtilityConstructionGraph?> _constructionGraphsById = new();
Expand All @@ -36,12 +36,12 @@ public IndividualCleanUtilityConstructionGraph[][] BuildIndividualConstructionGr
{
if (this._constructionGraphsById.TryGetValue(utilityId, out var memoizedResult)) return memoizedResult;

var graph = this.BuildConstructionGraph(utilityId, new HashSet<string>());
var graph = this.BuildConstructionGraph(utilityId, []);
this._constructionGraphsById[utilityId] = graph;
return graph;
}

private FullCleanUtilityConstructionGraph? BuildConstructionGraph(string utilityId, ISet<string> usedUtilities)
private FullCleanUtilityConstructionGraph? BuildConstructionGraph(string utilityId, HashSet<string> usedUtilities)
{
var utility = this._cleanTestAssemblyData.CleanUtilitiesById[utilityId];
var graph = new FullCleanUtilityConstructionGraph(utilityId);
Expand Down Expand Up @@ -142,7 +142,7 @@ private static void ExtractConstructionGraphs(IEnumerable<string> utilityIds, ID
}
}

private void ExtractDependencies(ICleanUtilityDescriptor utilityDescriptor, string requirement, ISet<string> usedUtilities, ICleanTestInitializationCollection<ICleanUtilityDescriptor> dependenciesCollection, IDictionary<string, FullCleanUtilityConstructionGraph> dependencyGraphsById)
private void ExtractDependencies(ICleanUtilityDescriptor utilityDescriptor, string requirement, HashSet<string> usedUtilities, CleanTestInitializationCollection<ICleanUtilityDescriptor> dependenciesCollection, IDictionary<string, FullCleanUtilityConstructionGraph> dependencyGraphsById)
{
var localDemands = utilityDescriptor.InternalDemands.Get(requirement);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
/// </summary>
/// <param name="Id">The value that should be set to the <see cref="Id"/> property.</param>
/// <remarks>If a full construction graph has no construction descriptors, this means that there are no required dependencies.</remarks>
public record FullCleanUtilityConstructionGraph(string Id)
internal record FullCleanUtilityConstructionGraph(string Id)
{
public string Id { get; } = Id;
public List<FullCleanUtilityConstructionGraph[]> ConstructionDescriptors { get; } = new ();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
/// | Service 1A | | Service 2B | | Service 3A |
/// </summary>
/// <param name="Id">The value that should be set to the <see cref="Id"/> property.</param>
public record IndividualCleanUtilityConstructionGraph(string Id)
internal record IndividualCleanUtilityConstructionGraph(string Id)
{
public string Id { get; } = Id;
public List<IndividualCleanUtilityConstructionGraph> Dependencies { get; } = new ();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
using TryAtSoftware.Extensions.Collections;
using Xunit.Sdk;

public static class CleanTestsFrameworkExtensions
internal static class CleanTestsFrameworkExtensions
{
public static void CopyTo<T>(this ICleanTestInitializationCollection<T> source, ICleanTestInitializationCollection<T> target)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

using TryAtSoftware.CleanTests.Core.Construction;

public static class ConstructionGraphExtensions
internal static class ConstructionGraphExtensions
{
public static FullCleanUtilityConstructionGraph Copy(this FullCleanUtilityConstructionGraph graph)
{
Expand Down
3 changes: 2 additions & 1 deletion TryAtSoftware.CleanTests.Core/Extensions/StringExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,6 @@

internal static class StringExtensions
{
internal static string SurroundWith(this string text, string prefix, string suffix) => string.Join(string.Empty, new[] { prefix, text, suffix }.IgnoreNullOrWhitespaceValues());
internal static string SurroundWith(this string text, string prefix, string suffix)
=> string.Join(string.Empty, new[] { prefix, text, suffix }.IgnoreNullOrWhitespaceValues());
}
2 changes: 1 addition & 1 deletion TryAtSoftware.CleanTests.Core/GlobalUtilitiesProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
using System.Collections.Generic;
using TryAtSoftware.CleanTests.Core.Interfaces;

public class GlobalUtilitiesProvider : IGlobalUtilitiesProvider
internal class GlobalUtilitiesProvider : IGlobalUtilitiesProvider
{
private readonly Dictionary<string, object> _utilities = new ();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

using System.Collections.Generic;

public interface ICleanTestInitializationCollection<TValue> : IEnumerable<KeyValuePair<string, IEnumerable<TValue>>>
internal interface ICleanTestInitializationCollection<TValue> : IEnumerable<KeyValuePair<string, IEnumerable<TValue>>>
{
IReadOnlyCollection<string> Categories { get; }
IEnumerable<TValue> Get(string category);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
using System;
using System.Collections.Generic;

public interface ICleanUtilityDescriptor
internal interface ICleanUtilityDescriptor
{
string Category { get; }
string Id => $"c:{this.Category}|n:{this.Name}";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
using System.Collections.Generic;
using TryAtSoftware.CleanTests.Core.Construction;

public interface IConstructionManager
internal interface IConstructionManager
{
IndividualCleanUtilityConstructionGraph[][] BuildIndividualConstructionGraphs(IEnumerable<string> utilityIds);
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ namespace TryAtSoftware.CleanTests.Core.Interfaces;
/// <remarks>
/// The `uniqueId` parameters correspond to the `UniqueId` of an `Individual clean utility dependency node`.
/// </remarks>
public interface IGlobalUtilitiesProvider
internal interface IGlobalUtilitiesProvider
{
bool RegisterUtility(string uniqueId, object instance);
bool IsRegistered(string uniqueId);
Expand Down
2 changes: 1 addition & 1 deletion TryAtSoftware.CleanTests.Core/Internal/Validator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

using System;

public static class Validator
internal static class Validator
{
public static void ValidateMaxDegreeOfParallelism(int value)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,11 @@
<PackageTags>tryatsoftware testing combinatorics</PackageTags>
<PackageReadmeFile>README.md</PackageReadmeFile>
</PropertyGroup>

<ItemGroup>
<InternalsVisibleTo Include="TryAtSoftware.CleanTests.Benchmark" />
<InternalsVisibleTo Include="TryAtSoftware.CleanTests.UnitTests" />
</ItemGroup>

<ItemGroup>
<PackageReference Include="SonarAnalyzer.CSharp" Version="9.29.0.95321">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
using TryAtSoftware.CleanTests.Core.Interfaces;
using TryAtSoftware.Extensions.Collections;

public class CombinatorialMachine(ICleanTestInitializationCollection<ICleanUtilityDescriptor> utilities)
internal class CombinatorialMachine(ICleanTestInitializationCollection<ICleanUtilityDescriptor> utilities)
{
private readonly ICleanTestInitializationCollection<ICleanUtilityDescriptor> _utilities = utilities ?? throw new ArgumentNullException(nameof(utilities));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
using TryAtSoftware.Extensions.Reflection;
using TryAtSoftware.Extensions.Reflection.Interfaces;

public class CleanTestAssemblyData
internal class CleanTestAssemblyData
{
private IHierarchyScanner _hierarchyScanner = new HierarchyScanner();

Expand Down
2 changes: 1 addition & 1 deletion TryAtSoftware.CleanTests.Core/XUnit/CleanTestCase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ namespace TryAtSoftware.CleanTests.Core.XUnit;
using Xunit.Abstractions;
using Xunit.Sdk;

public class CleanTestCase : XunitTestCase, ICleanTestCase
internal class CleanTestCase : XunitTestCase, ICleanTestCase
{
private CleanTestCaseData? _cleanTestCaseData;

Expand Down
2 changes: 1 addition & 1 deletion TryAtSoftware.CleanTests.Core/XUnit/CleanTestCaseData.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
using TryAtSoftware.CleanTests.Core.Construction;
using TryAtSoftware.Extensions.Collections;

public class CleanTestCaseData(IDictionary<Type, Type>? genericTypesMap, IEnumerable<IndividualCleanUtilityConstructionGraph>? cleanUtilities, string? displayNamePrefix)
internal class CleanTestCaseData(IDictionary<Type, Type>? genericTypesMap, IEnumerable<IndividualCleanUtilityConstructionGraph>? cleanUtilities, string? displayNamePrefix)
{
public IDictionary<Type, Type> GenericTypesMap { get; } = genericTypesMap.OrEmptyIfNull();
public IReadOnlyCollection<IndividualCleanUtilityConstructionGraph> CleanUtilities { get; } = cleanUtilities.OrEmptyIfNull().IgnoreNullValues().AsReadOnlyCollection();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@
using Xunit.Abstractions;
using Xunit.Sdk;

public abstract class BaseTestCaseDiscoverer(IMessageSink diagnosticMessageSink, TestCaseDiscoveryOptions testCaseDiscoveryOptions, ICleanTestInitializationCollection<ICleanUtilityDescriptor> initializationUtilitiesCollection, IConstructionManager constructionManager, CleanTestAssemblyData cleanTestAssemblyData)
internal abstract class BaseTestCaseDiscoverer(IMessageSink diagnosticMessageSink, TestCaseDiscoveryOptions testCaseDiscoveryOptions, ICleanTestInitializationCollection<ICleanUtilityDescriptor> initializationUtilitiesCollection, IConstructionManager constructionManager, CleanTestAssemblyData cleanTestAssemblyData)
: IXunitTestCaseDiscoverer
{
{
private readonly IMessageSink _diagnosticMessageSink = diagnosticMessageSink ?? throw new ArgumentNullException(nameof(diagnosticMessageSink));
private readonly TestCaseDiscoveryOptions _testCaseDiscoveryOptions = testCaseDiscoveryOptions ?? throw new ArgumentNullException(nameof(testCaseDiscoveryOptions));
private readonly ICleanTestInitializationCollection<ICleanUtilityDescriptor> _initializationUtilitiesCollection = initializationUtilitiesCollection ?? throw new ArgumentNullException(nameof(initializationUtilitiesCollection));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
using TryAtSoftware.CleanTests.Core.Interfaces;
using Xunit.Abstractions;

public class CleanFactTestCaseDiscoverer(IMessageSink diagnosticMessageSink, TestCaseDiscoveryOptions testCaseDiscoveryOptions, ICleanTestInitializationCollection<ICleanUtilityDescriptor> initializationUtilitiesCollection, IConstructionManager constructionManager, CleanTestAssemblyData cleanTestAssemblyData)
internal class CleanFactTestCaseDiscoverer(IMessageSink diagnosticMessageSink, TestCaseDiscoveryOptions testCaseDiscoveryOptions, ICleanTestInitializationCollection<ICleanUtilityDescriptor> initializationUtilitiesCollection, IConstructionManager constructionManager, CleanTestAssemblyData cleanTestAssemblyData)
: BaseTestCaseDiscoverer(diagnosticMessageSink, testCaseDiscoveryOptions, initializationUtilitiesCollection, constructionManager, cleanTestAssemblyData)
{
protected override IEnumerable<object[]> GetTestMethodArguments(IMessageSink diagnosticMessageSink,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ namespace TryAtSoftware.CleanTests.Core.XUnit.Discovery;
using Xunit.Abstractions;
using Xunit.Sdk;

public class CleanTestFrameworkDiscoverer : TestFrameworkDiscoverer
internal class CleanTestFrameworkDiscoverer : TestFrameworkDiscoverer
{
private readonly FallbackTestFrameworkDiscoverer _fallbackTestFrameworkDiscoverer;
private readonly CleanTestAssemblyData _cleanTestAssemblyData;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
using Xunit.Abstractions;
using Xunit.Sdk;

public class CleanTheoryTestCaseDiscoverer(IMessageSink diagnosticMessageSink, TestCaseDiscoveryOptions testCaseDiscoveryOptions, ICleanTestInitializationCollection<ICleanUtilityDescriptor> initializationUtilitiesCollection, IConstructionManager constructionManager, CleanTestAssemblyData cleanTestAssemblyData)
internal class CleanTheoryTestCaseDiscoverer(IMessageSink diagnosticMessageSink, TestCaseDiscoveryOptions testCaseDiscoveryOptions, ICleanTestInitializationCollection<ICleanUtilityDescriptor> initializationUtilitiesCollection, IConstructionManager constructionManager, CleanTestAssemblyData cleanTestAssemblyData)
: BaseTestCaseDiscoverer(diagnosticMessageSink, testCaseDiscoveryOptions, initializationUtilitiesCollection, constructionManager, cleanTestAssemblyData)
{
protected override IEnumerable<object[]> GetTestMethodArguments(IMessageSink diagnosticMessageSink, ITestMethod testMethod)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
using Xunit.Abstractions;
using Xunit.Sdk;

public class FallbackTestFrameworkDiscoverer(IAssemblyInfo assemblyInfo, ISourceInformationProvider sourceProvider, IMessageSink diagnosticMessageSink, IXunitTestCollectionFactory? collectionFactory = null)
internal class FallbackTestFrameworkDiscoverer(IAssemblyInfo assemblyInfo, ISourceInformationProvider sourceProvider, IMessageSink diagnosticMessageSink, IXunitTestCollectionFactory? collectionFactory = null)
: XunitTestFrameworkDiscoverer(assemblyInfo, sourceProvider, diagnosticMessageSink, collectionFactory)
{
public void DiscoverFallbackTests(ITestMethod testMethod, bool includeSourceInformation, IMessageBus messageBus, ITestFrameworkDiscoveryOptions discoveryOptions)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
using System.Collections.Generic;
using TryAtSoftware.Extensions.Collections;

public class TestCaseDiscoveryOptions(IDictionary<Type, Type>? genericTypes = null)
internal class TestCaseDiscoveryOptions(IDictionary<Type, Type>? genericTypes = null)
{
public IDictionary<Type, Type> GenericTypes { get; } = genericTypes.OrEmptyIfNull();
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
using Xunit.Abstractions;
using Xunit.Sdk;

public class CleanTestAssemblyRunner(ITestAssembly testAssembly, IEnumerable<IXunitTestCase> testCases, IMessageSink diagnosticMessageSink, IMessageSink executionMessageSink, ITestFrameworkExecutionOptions executionOptions, CleanTestAssemblyData assemblyData)
internal class CleanTestAssemblyRunner(ITestAssembly testAssembly, IEnumerable<IXunitTestCase> testCases, IMessageSink diagnosticMessageSink, IMessageSink executionMessageSink, ITestFrameworkExecutionOptions executionOptions, CleanTestAssemblyData assemblyData)
: XunitTestAssemblyRunner(testAssembly, testCases, diagnosticMessageSink, executionMessageSink, executionOptions)
{
private readonly CleanTestAssemblyData _assemblyData = assemblyData ?? throw new ArgumentNullException(nameof(assemblyData));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
using TryAtSoftware.CleanTests.Core.XUnit.Interfaces;
using Xunit.Sdk;

public class CleanTestCaseRunner(ICleanTestCase testCase, IMessageBus messageBus, ExceptionAggregator aggregator, CancellationTokenSource cancellationTokenSource, object[] constructorArguments)
internal class CleanTestCaseRunner(ICleanTestCase testCase, IMessageBus messageBus, ExceptionAggregator aggregator, CancellationTokenSource cancellationTokenSource, object[] constructorArguments)
: TestCaseRunner<ICleanTestCase>(testCase, messageBus, aggregator, cancellationTokenSource)
{
private readonly object[] _constructorArguments = constructorArguments ?? throw new ArgumentNullException(nameof(constructorArguments));
Expand Down
Loading