-
Notifications
You must be signed in to change notification settings - Fork 1
Contributing
Arnel Robles edited this page Sep 28, 2026
·
1 revision
dotnet test Mapsicle.sln -c Release runs all of it, including the allocation budgets.
| Package | Tests | What it covers |
|---|---|---|
| Mapsicle | 284 | Core, plus regression, load, fault and untrusted input |
| Mapsicle.NamingConventions | 55 | Naming conventions |
| Mapsicle.Fluent | 39 | Fluent configuration and profiles |
| Mapsicle.Validation | 27 | FluentValidation integration |
| Mapsicle.Json | 26 | JSON serialization |
| Mapsicle.Audit | 26 | Change tracking |
| Mapsicle.Dapper | 25 | Dapper integration |
| Mapsicle.DataAnnotations | 24 | DataAnnotations validation |
| Mapsicle.AspNetCore | 23 | ASP.NET Core helpers |
| Mapsicle.Serilog | 22 | Serilog logging |
| Mapsicle.Caching | 21 | Caching integration |
| Mapsicle.EntityFramework | 19 | EF Core ProjectTo |
| Mapsicle.Performance | 8 | Allocation budgets on warm paths |
| Total | 599 |
Four of those suites exist because a passing test count on its own says very little:
-
IssueRegressionTestscarries one test per fixed defect, named by issue number. Reverted against the pre-fix source, 19 of its 28 fail. The 9 that pass are the controls, and they are supposed to pass either way. -
UntrustedInputTestspins the security statements in this README, so a change to any of them fails the build rather than quietly making the documentation wrong. -
FaultInjectionTestscovers what happens when a mapping fails: which exception surfaces, whether it is wrapped, whether the destination is left half-written, and whether a failure poisons the cache for later calls. -
LoadTestsverifies every mapping against the input that produced it, because the failure a shared compiled delegate produces under concurrency is a wrong answer rather than an exception.
Allocation budgets run under dotnet test rather than only in a benchmark, so a change that
starts boxing a value or allocating a closure on a warm path fails CI instead of being noticed in a
profiler later.
Mapsicle/
├── src/
│ ├── Mapsicle/ # Core - zero config
│ ├── Mapsicle.Fluent/ # Fluent + DI + Profiles
│ ├── Mapsicle.EntityFramework/ # EF Core ProjectTo
│ ├── Mapsicle.Validation/ # FluentValidation integration
│ ├── Mapsicle.NamingConventions/ # Naming convention support
│ ├── Mapsicle.Serilog/ # Serilog structured logging
│ ├── Mapsicle.Dapper/ # Dapper integration
│ ├── Mapsicle.Json/ # JSON serialization
│ ├── Mapsicle.AspNetCore/ # ASP.NET Core Minimal API
│ ├── Mapsicle.Caching/ # Memory/Distributed caching
│ ├── Mapsicle.Audit/ # Change tracking/diff
│ └── Mapsicle.DataAnnotations/ # DataAnnotations validation
├── tests/
│ ├── Mapsicle.Tests/
│ ├── Mapsicle.Fluent.Tests/
│ ├── Mapsicle.EntityFramework.Tests/
│ ├── Mapsicle.Validation.Tests/
│ ├── Mapsicle.NamingConventions.Tests/
│ ├── Mapsicle.Serilog.Tests/
│ ├── Mapsicle.Dapper.Tests/
│ ├── Mapsicle.Json.Tests/
│ ├── Mapsicle.AspNetCore.Tests/
│ ├── Mapsicle.Caching.Tests/
│ ├── Mapsicle.Audit.Tests/
│ ├── Mapsicle.DataAnnotations.Tests/
│ └── Mapsicle.Benchmarks/
└── examples/
└── Mapsicle.Examples/ # Working examples for all packages
dotnet run --project examples/Mapsicle.ExamplesPRs welcome. Areas for contribution:
- Performance optimizations
- Additional type coercion scenarios
- Documentation improvements
MIT License © Arnel Isiderio Robles
Stop configuring. Start mapping.
Free forever. Zero dependencies. Pure performance.
Mapsicle
Packages
- Core
- Fluent
- EntityFramework
- Validation
- NamingConventions
- Serilog
- Dapper
- AspNetCore
- Json
- Caching
- Audit
- DataAnnotations
Reference