PineGuard.Testing
0.1.0-alpha.7
dotnet add package PineGuard.Testing --version 0.1.0-alpha.7
NuGet\Install-Package PineGuard.Testing -Version 0.1.0-alpha.7
<PackageReference Include="PineGuard.Testing" Version="0.1.0-alpha.7" />
<PackageVersion Include="PineGuard.Testing" Version="0.1.0-alpha.7" />
<PackageReference Include="PineGuard.Testing" />
paket add PineGuard.Testing --version 0.1.0-alpha.7
#r "nuget: PineGuard.Testing, 0.1.0-alpha.7"
#:package PineGuard.Testing@0.1.0-alpha.7
#addin nuget:?package=PineGuard.Testing&version=0.1.0-alpha.7&prerelease
#tool nuget:?package=PineGuard.Testing&version=0.1.0-alpha.7&prerelease
PineGuard.Testing
Test your validators the way PineGuard tests its own — 13,000+ cases strong.
PineGuard.Testing is the xUnit toolkit that powers PineGuard's internal test suite: base test classes, case records, expected-result types, and exhaustive fixture catalogs of valid/invalid inputs for every rule category. Install it in your test project and your validator tests read the same way — and reuse the same data — as PineGuard itself.
Use this package when you're writing tests for custom Must, Guard, Fluent, or DataAnnotation validators and want rigorous, consistent coverage without rebuilding fixture data from scratch.
Install
dotnet add package PineGuard.Testing
Targets net8.0, net10.0, and netstandard2.1. Depends on PineGuard.Core, xunit, and FluentValidation.
Example
using PineGuard.Testing.UnitTests.MustClauses;
// Test any of the canonical rules (Email, StrictEmail, OwaspSafe, HttpsUrl, …)
// with exhaustive fixture data that ships with the package.
public sealed class EmailMustTests : BaseMustUnitTest<string>
{
[Theory]
[MemberData(nameof(ValidCases))]
public void Valid_emails_pass(MustCase<string> testCase) =>
AssertMust(testCase, Must.Be.Email);
public static TheoryData<MustCase<string>> ValidCases() =>
new(EmailRulesFixtures.ValidEmails.Select(
email => new MustCase<string>(email, new MustExpected(IsValid: true))));
}
What you get
- Base unit test classes —
BaseMustUnitTest,BaseGuardUnitTest,BaseFluentUnitTest,BaseDataAnnotationUnitTest,BaseRuleUnitTest - Case records —
MustCase,GuardCase,FluentCase,DataAnnotationCase,RuleCase - Expected records — a uniform
IsValidboolean across every layer - Fixtures — exhaustive valid/invalid data for emails, URIs, OWASP input, network/HTTP identifiers, GUIDs, dates, times, numbers, collections, and more
See the full documentation for the complete base-class hierarchy and fixture catalog.
License
MIT © Steve McCormack
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- FluentValidation (>= 11.12.0)
- PineGuard.Core (>= 0.1.0-alpha.7)
- xunit (>= 2.9.3)
- xunit.abstractions (>= 2.0.3)
-
net8.0
- FluentValidation (>= 11.12.0)
- PineGuard.Core (>= 0.1.0-alpha.7)
- xunit (>= 2.9.3)
- xunit.abstractions (>= 2.0.3)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.1.0-alpha.7 | 173 | 4/20/2026 |
| 0.1.0-alpha.6 | 66 | 4/20/2026 |
| 0.1.0-alpha.5 | 68 | 4/18/2026 |