Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
0497a38
Feature: Implement data-related logic for RangeData and update range …
Jan 31, 2026
d41fca7
Feature: Add validation method for RangeData to ensure data sequence …
Jan 31, 2026
3737b44
Feature: Add overview and implementation details for RangeData in REA…
Jan 31, 2026
48ea28f
Feature: Add unit tests for RangeData extensions to validate adjacenc…
Jan 31, 2026
19cb096
Feature: Add unit tests for RangeData extensions to validate equality…
Jan 31, 2026
8f049cb
Feature: Add benchmarks for RangeData and RangeDataExtensions to eval…
Jan 31, 2026
4da1502
Feature: Integrate Codecov coverage reporting into CI workflows for a…
Jan 31, 2026
3052b28
Feature: Enhance RangeData logic for sub-range and point access with …
Jan 31, 2026
d308e04
Feature: Update Microsoft.NET.Test.Sdk to version 17.11.1 in test pro…
Jan 31, 2026
2280763
Feature: Update Microsoft.NET.Test.Sdk to version 17.11.1 in test pro…
Jan 31, 2026
bbc3833
Feature: Update test execution paths and remove Codecov upload from D…
Jan 31, 2026
f004ba8
Feature: Update test paths in CI configuration and enhance documentat…
Feb 1, 2026
1b350a1
Feature: Update CI configuration to use test paths for dependency res…
Feb 1, 2026
5ce1777
Feature: Correct test path in CI configuration for Intervals.NET.Data…
Feb 1, 2026
69bf893
Feature: Update CI configuration to use test path for dependency rest…
Feb 1, 2026
880f1d0
Feature: Optimize null-check for domain parameter to avoid boxing in …
Feb 1, 2026
5067da8
Feature: Enhance test coverage for RangeData and DateTime domains wit…
Feb 1, 2026
83ce766
chore: get rid of redundant md files
Feb 1, 2026
002b025
Feature: Update range comments and improve test method naming for cla…
Feb 1, 2026
e54ecf1
Feature: Refine distance calculation and improve exception messages i…
Feb 1, 2026
d01bfab
Feature: Improve range validation logic to handle overflow and enhanc…
Feb 1, 2026
1231945
Feature: Enhance range validation to correctly handle infinity bounds…
Feb 1, 2026
9e414d0
Feature: Update range documentation for clarity and improve validatio…
Feb 1, 2026
5153fa5
Feature: Enhance TrimStart and TrimEnd methods to support inclusive/e…
Feb 1, 2026
84ff162
Feature: Update documentation for RangeData methods to clarify return…
Feb 1, 2026
489e346
Feature: Clarify documentation for range span calculation and return …
Feb 1, 2026
8422dff
Feature: Update test data in IsTouching method to clarify range eleme…
Feb 1, 2026
accaa4f
Feature: Update test data in IsBeforeAndAdjacentTo method to clarify …
Feb 1, 2026
2a45cc9
Feature: Refine documentation and logic in RangeData extensions for c…
Feb 3, 2026
a28da1b
Feature: Enhance documentation for domain interfaces and implementati…
Feb 3, 2026
ffd2926
Feature: Update README to enhance structure and clarity of RangeData …
Feb 3, 2026
c7390d3
Fix TryGet returning false for empty subranges with exclusive parent …
Copilot Feb 3, 2026
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
4 changes: 2 additions & 2 deletions .github/workflows/domain-abstractions.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ jobs:

- name: Build Domain.Abstractions
run: dotnet build ${{ env.PROJECT_PATH }} --configuration Release --no-restore

publish-nuget:
runs-on: ubuntu-latest
needs: build-and-test
Expand Down Expand Up @@ -66,4 +66,4 @@ jobs:
uses: actions/upload-artifact@v4
with:
name: domain-abstractions-package
path: ./artifacts/*.nupkg
path: ./artifacts/*.nupkg
17 changes: 13 additions & 4 deletions .github/workflows/domain-default.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,13 +36,22 @@ jobs:
dotnet-version: ${{ env.DOTNET_VERSION }}

- name: Restore dependencies
run: dotnet restore ${{ env.PROJECT_PATH }}
run: dotnet restore ${{ env.TEST_PATH }}

- name: Build Domain.Default
run: dotnet build ${{ env.PROJECT_PATH }} --configuration Release --no-restore
run: dotnet build ${{ env.TEST_PATH }} --configuration Release --no-restore

- name: Run Domain.Default tests
run: dotnet test ${{ env.TEST_PATH }} --configuration Release --verbosity normal
run: dotnet test ${{ env.TEST_PATH }} --configuration Release --no-build --verbosity normal --collect:"XPlat Code Coverage" --results-directory ./TestResults

- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v4
with:
files: ./TestResults/**/coverage.cobertura.xml
fail_ci_if_error: false
verbose: true
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

publish-nuget:
runs-on: ubuntu-latest
Expand Down Expand Up @@ -74,4 +83,4 @@ jobs:
uses: actions/upload-artifact@v4
with:
name: domain-default-package
path: ./artifacts/*.nupkg
path: ./artifacts/*.nupkg
17 changes: 13 additions & 4 deletions .github/workflows/domain-extensions.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,13 +38,22 @@ jobs:
dotnet-version: ${{ env.DOTNET_VERSION }}

- name: Restore dependencies
run: dotnet restore ${{ env.PROJECT_PATH }}
run: dotnet restore ${{ env.TEST_PATH }}

- name: Build Domain.Extensions
run: dotnet build ${{ env.PROJECT_PATH }} --configuration Release --no-restore
run: dotnet build ${{ env.TEST_PATH }} --configuration Release --no-restore

- name: Run Domain.Extensions tests
run: dotnet test ${{ env.TEST_PATH }} --configuration Release --verbosity normal
run: dotnet test ${{ env.TEST_PATH }} --configuration Release --no-build --verbosity normal --collect:"XPlat Code Coverage" --results-directory ./TestResults

- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v4
with:
files: ./TestResults/**/coverage.cobertura.xml
fail_ci_if_error: false
verbose: true
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

publish-nuget:
runs-on: ubuntu-latest
Expand Down Expand Up @@ -76,4 +85,4 @@ jobs:
uses: actions/upload-artifact@v4
with:
name: domain-extensions-package
path: ./artifacts/*.nupkg
path: ./artifacts/*.nupkg
126 changes: 126 additions & 0 deletions .github/workflows/intervals-net-data.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
name: CI/CD - Intervals.NET.Data

on:
push:
branches: [ master, main ]
paths:
- 'src/Intervals.NET.Data/**'
- 'tests/Intervals.NET.Data.Tests/**'
- 'global.json'
- '.github/workflows/intervals-net-data.yml'
pull_request:
branches: [ master, main ]
paths:
- 'src/Intervals.NET.Data/**'
- 'tests/Intervals.NET.Data.Tests/**'
- 'global.json'
- '.github/workflows/intervals-net-data.yml'
workflow_dispatch:

env:
DOTNET_VERSION: '8.x.x'
PROJECT_PATH: 'src/Intervals.NET.Data/Intervals.NET.Data.csproj'
TEST_PATH: 'tests/Intervals.NET.Data.Tests/Intervals.NET.Data.Tests.csproj'

permissions:
contents: read
packages: write

concurrency:
group: "intervals-net-data-${{ github.ref }}"
cancel-in-progress: true

jobs:
build-and-test:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: ${{ env.DOTNET_VERSION }}

- name: Cache NuGet packages
uses: actions/cache@v4
with:
path: ~/.nuget/packages
key: nuget-packages-${{ runner.os }}-${{ hashFiles('src/Intervals.NET.Data/Intervals.NET.Data.csproj', 'tests/Intervals.NET.Data.Tests/Intervals.NET.Data.Tests.csproj', 'global.json') }}
restore-keys: |
nuget-packages-${{ runner.os }}-

- name: Restore dependencies
run: dotnet restore ${{ env.TEST_PATH }}

- name: Build
run: dotnet build ${{ env.TEST_PATH }} --configuration Release --no-restore

- name: Run tests (if present)
if: always()
run: |
if [ -f "${{ env.TEST_PATH }}" ]; then
dotnet test ${{ env.TEST_PATH }} --configuration Release --no-build --verbosity normal --collect:"XPlat Code Coverage" --results-directory ./TestResults --logger "trx;LogFileName=test_results.trx"
mkdir -p test-artifacts || true
cp ./TestResults/*/test_results.trx test-artifacts/ || true
echo "Tests executed"
else
echo "No test project found at ${{ env.TEST_PATH }}"
fi

- name: Upload coverage reports to Codecov
if: always()
uses: codecov/codecov-action@v4
with:
files: ./TestResults/**/coverage.cobertura.xml
fail_ci_if_error: false
verbose: true
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

- name: Upload test results
if: always()
uses: actions/upload-artifact@v4
with:
name: intervals-net-data-test-results
path: test-artifacts/

publish-nuget:
runs-on: ubuntu-latest
needs: build-and-test
if: github.event_name == 'push' && github.ref == 'refs/heads/main'

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: ${{ env.DOTNET_VERSION }}

- name: Restore
run: dotnet restore ${{ env.PROJECT_PATH }}

- name: Build
run: dotnet build ${{ env.PROJECT_PATH }} --configuration Release --no-restore

- name: Pack Intervals.NET.Data
run: dotnet pack ${{ env.PROJECT_PATH }} --configuration Release --no-build --output ./artifacts

- name: Publish Intervals.NET.Data to NuGet
env:
NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }}
run: |
if [ -z "${NUGET_API_KEY}" ]; then
echo "NUGET_API_KEY not set, skipping push"
exit 0
fi
dotnet nuget push ./artifacts/Intervals.NET.Data.*.nupkg --api-key ${NUGET_API_KEY} --source https://api.nuget.org/v3/index.json --skip-duplicate

- name: Upload package artifacts
uses: actions/upload-artifact@v4
with:
name: intervals-net-data-package
path: ./artifacts/*.nupkg
23 changes: 23 additions & 0 deletions Intervals.NET.sln
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SolutionItems", "SolutionIt
.github\workflows\domain-default.yml = .github\workflows\domain-default.yml
.github\workflows\domain-extensions.yml = .github\workflows\domain-extensions.yml
.github\workflows\intervals-net.yml = .github\workflows\intervals-net.yml
.github\workflows\intervals-net-data.yml = .github\workflows\intervals-net-data.yml
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{EAF02F30-A5E4-4237-B402-6F946F2B2C09}"
Expand Down Expand Up @@ -39,6 +40,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Results", "Results", "{F375
benchmarks\Results\Intervals.NET.Benchmarks.Benchmarks.RealWorldScenariosBenchmarks-report-github.md = benchmarks\Results\Intervals.NET.Benchmarks.Benchmarks.RealWorldScenariosBenchmarks-report-github.md
benchmarks\Results\Intervals.NET.Benchmarks.Benchmarks.SetOperationsBenchmarks-report-github.md = benchmarks\Results\Intervals.NET.Benchmarks.Benchmarks.SetOperationsBenchmarks-report-github.md
benchmarks\Results\Intervals.NET.Benchmarks.Benchmarks.VariableStepDomainBenchmarks-report-github.md = benchmarks\Results\Intervals.NET.Benchmarks.Benchmarks.VariableStepDomainBenchmarks-report-github.md
benchmarks\Results\Intervals.NET.Benchmarks.Benchmarks.RangeDataBenchmarks-report-github.md = benchmarks\Results\Intervals.NET.Benchmarks.Benchmarks.RangeDataBenchmarks-report-github.md
benchmarks\Results\Intervals.NET.Benchmarks.Benchmarks.RangeDataExtensionsBenchmarks-report-github.md = benchmarks\Results\Intervals.NET.Benchmarks.Benchmarks.RangeDataExtensionsBenchmarks-report-github.md
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Intervals.NET.Domain.Abstractions", "src\Domain\Intervals.NET.Domain.Abstractions\Intervals.NET.Domain.Abstractions.csproj", "{EE258066-15D2-413B-B2F5-9122A0FA2387}"
Expand All @@ -55,6 +58,14 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Intervals.NET.Domain.Defaul
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Intervals.NET.Domain.Extensions.Tests", "tests\Intervals.NET.Domain.Extensions.Tests\Intervals.NET.Domain.Extensions.Tests.csproj", "{9F5470DF-88E2-44DC-B6D0-176EBFAF5A25}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Data", "Data", "{07DC76CB-F380-40B5-A4C5-7241D10D180C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Intervals.NET.Data", "src\Intervals.NET.Data\Intervals.NET.Data.csproj", "{B5095989-5E11-405B-A1C8-D38210B64C91}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Data", "Data", "{74428AFD-6630-46D5-8FE5-BD0B272DD619}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Intervals.NET.Data.Tests", "tests\Intervals.NET.Data.Tests\Intervals.NET.Data.Tests.csproj", "{AD1E4AC1-99BF-4C55-B63E-BEE289C9D144}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand Down Expand Up @@ -93,6 +104,14 @@ Global
{9F5470DF-88E2-44DC-B6D0-176EBFAF5A25}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9F5470DF-88E2-44DC-B6D0-176EBFAF5A25}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9F5470DF-88E2-44DC-B6D0-176EBFAF5A25}.Release|Any CPU.Build.0 = Release|Any CPU
{B5095989-5E11-405B-A1C8-D38210B64C91}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B5095989-5E11-405B-A1C8-D38210B64C91}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B5095989-5E11-405B-A1C8-D38210B64C91}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B5095989-5E11-405B-A1C8-D38210B64C91}.Release|Any CPU.Build.0 = Release|Any CPU
{AD1E4AC1-99BF-4C55-B63E-BEE289C9D144}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AD1E4AC1-99BF-4C55-B63E-BEE289C9D144}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AD1E4AC1-99BF-4C55-B63E-BEE289C9D144}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AD1E4AC1-99BF-4C55-B63E-BEE289C9D144}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{A2F7DF66-08BE-438A-A354-C09499B8B8B7} = {EAF02F30-A5E4-4237-B402-6F946F2B2C09}
Expand All @@ -106,5 +125,9 @@ Global
{592DCBFE-8570-44E3-B9DD-351AA775BFC8} = {28A5727D-3EDB-4F19-8B68-1DBD790EB8E2}
{EAC4D033-A7D7-4242-8661-3F231257B4FE} = {592DCBFE-8570-44E3-B9DD-351AA775BFC8}
{9F5470DF-88E2-44DC-B6D0-176EBFAF5A25} = {592DCBFE-8570-44E3-B9DD-351AA775BFC8}
{07DC76CB-F380-40B5-A4C5-7241D10D180C} = {EAF02F30-A5E4-4237-B402-6F946F2B2C09}
{B5095989-5E11-405B-A1C8-D38210B64C91} = {07DC76CB-F380-40B5-A4C5-7241D10D180C}
{74428AFD-6630-46D5-8FE5-BD0B272DD619} = {28A5727D-3EDB-4F19-8B68-1DBD790EB8E2}
{AD1E4AC1-99BF-4C55-B63E-BEE289C9D144} = {74428AFD-6630-46D5-8FE5-BD0B272DD619}
EndGlobalSection
EndGlobal
Loading
Loading