From c92b2910ef68c83111d977c64e51ee677054bd1f Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Thu, 29 Jan 2026 01:27:49 +0000
Subject: [PATCH 1/3] Initial plan
From bcdfebcbf37ffc1c9a19f002cb36e1f2e69da231 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Thu, 29 Jan 2026 01:31:08 +0000
Subject: [PATCH 2/3] Create comprehensive documentation files
(getting-started.md, introduction.md, readme.md, setup.md)
Co-authored-by: Chris-Wolfgang <210299580+Chris-Wolfgang@users.noreply.github.com>
---
docs/getting-started.md | 191 +++++++++++++++++++++
docs/introduction.md | 82 +++++++++
docs/readme.md | 250 ++++++++++++++++++++++++++++
docs/setup.md | 357 ++++++++++++++++++++++++++++++++++++++++
4 files changed, 880 insertions(+)
create mode 100644 docs/getting-started.md
create mode 100644 docs/introduction.md
create mode 100644 docs/readme.md
create mode 100644 docs/setup.md
diff --git a/docs/getting-started.md b/docs/getting-started.md
new file mode 100644
index 0000000..44c563a
--- /dev/null
+++ b/docs/getting-started.md
@@ -0,0 +1,191 @@
+# Getting Started
+
+This guide will help you quickly start using Wolfgang.Extensions.IComparable in your .NET projects.
+
+## Prerequisites
+
+- .NET 8.0 or later
+- A C# project (any project type: console, web, library, etc.)
+
+## Installation
+
+### Using NuGet Package Manager
+
+```bash
+dotnet add package Wolfgang.Extensions.IComparable
+```
+
+### Using Package Manager Console (Visual Studio)
+
+```powershell
+Install-Package Wolfgang.Extensions.IComparable
+```
+
+### Using .csproj File
+
+Add the following package reference to your `.csproj` file:
+
+```xml
+
+
+
+```
+
+## Basic Usage
+
+### 1. Add the Using Directive
+
+Add the namespace to your C# file:
+
+```csharp
+using Wolfgang.Extensions.IComparable;
+```
+
+### 2. Use IsBetween Method
+
+Check if a value is strictly between two bounds (exclusive):
+
+```csharp
+int temperature = 25;
+
+if (temperature.IsBetween(0, 30))
+{
+ Console.WriteLine("Temperature is between 0 and 30 (exclusive)");
+}
+```
+
+**Example Results:**
+- `5.IsBetween(1, 10)` → `true` (5 is greater than 1 and less than 10)
+- `1.IsBetween(1, 10)` → `false` (1 is not greater than 1)
+- `10.IsBetween(1, 10)` → `false` (10 is not less than 10)
+
+### 3. Use IsInRange Method
+
+Check if a value is within a range (inclusive):
+
+```csharp
+int score = 85;
+
+if (score.IsInRange(0, 100))
+{
+ Console.WriteLine("Score is within the valid range of 0-100");
+}
+```
+
+**Example Results:**
+- `5.IsInRange(1, 10)` → `true` (5 is between 1 and 10)
+- `1.IsInRange(1, 10)` → `true` (1 equals the lower bound)
+- `10.IsInRange(1, 10)` → `true` (10 equals the upper bound)
+
+## Common Examples
+
+### Validating User Input
+
+```csharp
+int age = GetUserAge();
+
+if (age.IsInRange(0, 120))
+{
+ Console.WriteLine("Valid age entered");
+}
+else
+{
+ Console.WriteLine("Age must be between 0 and 120");
+}
+```
+
+### Working with Decimals
+
+```csharp
+decimal price = 49.99m;
+
+if (price.IsBetween(0m, 100m))
+{
+ Console.WriteLine("Price is in the medium range");
+}
+```
+
+### Working with Dates
+
+```csharp
+DateTime checkDate = DateTime.Now;
+DateTime startDate = new DateTime(2024, 1, 1);
+DateTime endDate = new DateTime(2024, 12, 31);
+
+if (checkDate.IsInRange(startDate, endDate))
+{
+ Console.WriteLine("Date falls within 2024");
+}
+```
+
+### Working with Strings
+
+```csharp
+string value = "M";
+
+// String comparison is alphabetical
+if (value.IsBetween("A", "Z"))
+{
+ Console.WriteLine("Value is between A and Z (exclusive)");
+}
+```
+
+### Working with Custom Types
+
+```csharp
+public class Employee : IComparable
+{
+ public string Name { get; set; }
+ public decimal Salary { get; set; }
+
+ public int CompareTo(Employee other)
+ {
+ return Salary.CompareTo(other.Salary);
+ }
+}
+
+var employee = new Employee { Name = "John", Salary = 50000 };
+var minSalary = new Employee { Salary = 30000 };
+var maxSalary = new Employee { Salary = 100000 };
+
+if (employee.IsInRange(minSalary, maxSalary))
+{
+ Console.WriteLine("Employee salary is within the expected range");
+}
+```
+
+## Quick Reference
+
+| Method | Comparison Type | Lower Bound | Upper Bound | Example |
+|--------|----------------|-------------|-------------|---------|
+| `IsBetween` | Exclusive | `>` | `<` | `5.IsBetween(1, 10)` → `true` |
+| `IsInRange` | Inclusive | `>=` | `<=` | `1.IsInRange(1, 10)` → `true` |
+
+## Next Steps
+
+- Explore more [advanced usage examples](./readme.md)
+- Learn about [setting up your development environment](./setup.md)
+- Read the full [introduction](./introduction.md) to understand the library's design
+
+## Troubleshooting
+
+### Namespace Not Found
+
+If you get a compile error that the namespace cannot be found:
+1. Ensure the package is properly installed (`dotnet restore`)
+2. Verify you're using .NET 8.0 or later
+3. Check that your IDE has indexed the new package (restart if necessary)
+
+### Method Not Available
+
+If the extension methods don't appear:
+1. Ensure you've added the `using Wolfgang.Extensions.IComparable;` directive
+2. Verify your type implements `IComparable`
+3. Check that IntelliSense has refreshed (rebuild the solution)
+
+## Getting Help
+
+If you encounter any issues:
+- Check the [GitHub Issues](https://github.com/Chris-Wolfgang/IComparable-Extensions/issues)
+- Review the [examples](../examples/) in the repository
+- Read the [API documentation](../README.md)
diff --git a/docs/introduction.md b/docs/introduction.md
new file mode 100644
index 0000000..9e522d3
--- /dev/null
+++ b/docs/introduction.md
@@ -0,0 +1,82 @@
+# Introduction
+
+## Overview
+
+**Wolfgang.Extensions.IComparable** is a lightweight .NET library that provides powerful extension methods for types implementing the `IComparable` interface. This library simplifies common comparison operations, making your code more readable and expressive.
+
+## What is IComparable?
+
+The `IComparable` interface is a fundamental part of .NET that allows objects to be compared for ordering purposes. Types that implement this interface can be sorted and compared using standardized methods.
+
+## Why Use This Library?
+
+When working with comparable types in C#, you often need to check if a value falls within a specific range. Without this library, such checks can be verbose and error-prone:
+
+```csharp
+// Without Wolfgang.Extensions.IComparable
+if (value.CompareTo(min) >= 0 && value.CompareTo(max) <= 0)
+{
+ // Value is in range
+}
+
+// With Wolfgang.Extensions.IComparable
+if (value.IsInRange(min, max))
+{
+ // Value is in range - much clearer!
+}
+```
+
+## Key Features
+
+- **Intuitive API**: Extension methods that read like natural language
+- **Type-Safe**: Works with any type that implements `IComparable`
+- **Zero Dependencies**: Lightweight library with no external dependencies
+- **Well-Tested**: Comprehensive test coverage to ensure reliability
+- **Performance-Optimized**: Minimal overhead compared to manual comparison operations
+
+## Available Extension Methods
+
+### IsBetween
+
+Determines if a value is **strictly between** two bounds (exclusive comparison):
+
+```csharp
+int value = 5;
+bool result = value.IsBetween(1, 10); // true (5 > 1 AND 5 < 10)
+```
+
+### IsInRange
+
+Determines if a value is **within the range** of two bounds (inclusive comparison):
+
+```csharp
+int value = 5;
+bool result = value.IsInRange(5, 10); // true (5 >= 5 AND 5 <= 10)
+```
+
+## Use Cases
+
+This library is particularly useful in scenarios such as:
+
+- **Validation**: Checking if user input falls within acceptable ranges
+- **Business Logic**: Implementing rules that depend on value ranges
+- **Data Processing**: Filtering or categorizing data based on value ranges
+- **Game Development**: Checking bounds for positions, scores, or other metrics
+- **Financial Applications**: Validating amounts, dates, or other comparable values
+
+## Supported Types
+
+Any type that implements `IComparable` can use these extension methods, including:
+
+- Numeric types: `int`, `double`, `decimal`, `float`, etc.
+- Date and time types: `DateTime`, `DateTimeOffset`, `TimeSpan`
+- String comparisons
+- Custom types that implement `IComparable`
+
+## License
+
+This project is licensed under the Mozilla Public License 2.0. See the [LICENSE](../LICENSE) file for details.
+
+## Contributing
+
+We welcome contributions! Please see our [CONTRIBUTING.md](../CONTRIBUTING.md) guide for more information.
diff --git a/docs/readme.md b/docs/readme.md
new file mode 100644
index 0000000..ef0ce7b
--- /dev/null
+++ b/docs/readme.md
@@ -0,0 +1,250 @@
+# Wolfgang.Extensions.IComparable
+
+A powerful and intuitive .NET library that extends the `IComparable` interface with convenient range-checking methods.
+
+## What Does It Do?
+
+This library provides two essential extension methods that make range comparisons simple and readable:
+
+### IsBetween (Exclusive Range)
+
+Returns `true` when a value is **strictly greater than** the lower bound AND **strictly less than** the upper bound.
+
+```csharp
+5.IsBetween(1, 10) // true (5 > 1 AND 5 < 10)
+1.IsBetween(1, 10) // false (1 is not > 1)
+10.IsBetween(1, 10) // false (10 is not < 10)
+```
+
+### IsInRange (Inclusive Range)
+
+Returns `true` when a value is **greater than or equal to** the lower bound AND **less than or equal to** the upper bound.
+
+```csharp
+5.IsInRange(1, 10) // true (5 >= 1 AND 5 <= 10)
+1.IsInRange(1, 10) // true (1 >= 1 AND 1 <= 10)
+10.IsInRange(1, 10) // true (10 >= 1 AND 10 <= 10)
+```
+
+## Installation
+
+Install via NuGet:
+
+```bash
+dotnet add package Wolfgang.Extensions.IComparable
+```
+
+## Quick Start
+
+```csharp
+using Wolfgang.Extensions.IComparable;
+
+// Check if a number is in a valid range
+int temperature = 22;
+if (temperature.IsInRange(18, 26))
+{
+ Console.WriteLine("Temperature is comfortable");
+}
+
+// Check if a date is between two dates (exclusive)
+DateTime today = DateTime.Now;
+DateTime start = new DateTime(2024, 1, 1);
+DateTime end = new DateTime(2024, 12, 31);
+
+if (today.IsBetween(start, end))
+{
+ Console.WriteLine("Date is within 2024 (exclusive of boundaries)");
+}
+```
+
+## Detailed Examples
+
+### Numeric Validation
+
+```csharp
+// Age validation
+int age = 25;
+bool isAdult = age.IsInRange(18, 120);
+
+// Percentage validation
+decimal percentage = 85.5m;
+bool isValidPercentage = percentage.IsInRange(0m, 100m);
+
+// Temperature monitoring
+double temp = 98.6;
+bool hasFeaver = temp.IsBetween(98.6, 103.0); // false (not > 98.6)
+```
+
+### String Comparisons
+
+```csharp
+string grade = "B";
+
+// Check if grade is between A and C (alphabetically)
+bool isPassing = grade.IsInRange("A", "D"); // true
+
+// Check for specific range (exclusive)
+bool isBetweenAandC = grade.IsBetween("A", "C"); // true (B is after A and before C)
+```
+
+### DateTime Operations
+
+```csharp
+DateTime appointmentTime = new DateTime(2024, 6, 15, 14, 30, 0);
+DateTime officeOpen = new DateTime(2024, 6, 15, 9, 0, 0);
+DateTime officeClosed = new DateTime(2024, 6, 15, 17, 0, 0);
+
+// Check if appointment is during business hours
+bool isDuringBusinessHours = appointmentTime.IsInRange(officeOpen, officeClosed);
+
+// Check if time is strictly between opening and closing
+bool isNotAtBoundary = appointmentTime.IsBetween(officeOpen, officeClosed);
+```
+
+### Custom Types
+
+Any type implementing `IComparable` works automatically:
+
+```csharp
+public class Version : IComparable
+{
+ public int Major { get; set; }
+ public int Minor { get; set; }
+
+ public int CompareTo(Version other)
+ {
+ int result = Major.CompareTo(other.Major);
+ return result != 0 ? result : Minor.CompareTo(other.Minor);
+ }
+}
+
+var currentVersion = new Version { Major = 2, Minor = 5 };
+var minVersion = new Version { Major = 2, Minor = 0 };
+var maxVersion = new Version { Major = 3, Minor = 0 };
+
+bool isSupported = currentVersion.IsInRange(minVersion, maxVersion);
+```
+
+## Real-World Use Cases
+
+### Input Validation
+
+```csharp
+public bool ValidateInput(int value)
+{
+ const int MIN_VALUE = 1;
+ const int MAX_VALUE = 100;
+
+ return value.IsInRange(MIN_VALUE, MAX_VALUE);
+}
+```
+
+### Business Hours Checker
+
+```csharp
+public bool IsWithinBusinessHours(DateTime timestamp)
+{
+ var openTime = new TimeSpan(9, 0, 0); // 9:00 AM
+ var closeTime = new TimeSpan(17, 0, 0); // 5:00 PM
+
+ return timestamp.TimeOfDay.IsInRange(openTime, closeTime);
+}
+```
+
+### Price Range Filtering
+
+```csharp
+public List FilterByPriceRange(List products, decimal min, decimal max)
+{
+ return products.Where(p => p.Price.IsInRange(min, max)).ToList();
+}
+```
+
+### Game Development - Boundary Checking
+
+```csharp
+public class GameCharacter
+{
+ public bool IsInPlayArea(float x, float y)
+ {
+ const float MIN_X = 0f;
+ const float MAX_X = 100f;
+ const float MIN_Y = 0f;
+ const float MAX_Y = 100f;
+
+ return x.IsInRange(MIN_X, MAX_X) && y.IsInRange(MIN_Y, MAX_Y);
+ }
+}
+```
+
+## API Reference
+
+### IsBetween<T>
+
+```csharp
+public static bool IsBetween(this T value, T lowerBound, T upperBound)
+ where T : IComparable
+```
+
+**Parameters:**
+- `value`: The value to compare
+- `lowerBound`: The lower end of the range (exclusive)
+- `upperBound`: The upper end of the range (exclusive)
+
+**Returns:** `true` if `value > lowerBound AND value < upperBound`, otherwise `false`
+
+### IsInRange<T>
+
+```csharp
+public static bool IsInRange(this T value, T lowerBound, T upperBound)
+ where T : IComparable
+```
+
+**Parameters:**
+- `value`: The value to compare
+- `lowerBound`: The lower end of the range (inclusive)
+- `upperBound`: The upper end of the range (inclusive)
+
+**Returns:** `true` if `value >= lowerBound AND value <= upperBound`, otherwise `false`
+
+## Performance
+
+Both methods are lightweight wrappers around the `CompareTo` method with minimal overhead:
+
+- **IsBetween**: 2 comparison operations
+- **IsInRange**: 2 comparison operations
+
+Performance is equivalent to writing the comparisons manually but with significantly improved readability.
+
+## Requirements
+
+- .NET 8.0 or later
+- Any C# project type (console, web, library, etc.)
+
+## Documentation
+
+- [Introduction](./introduction.md) - Learn about the library and its benefits
+- [Getting Started](./getting-started.md) - Installation and basic usage
+- [Setup Guide](./setup.md) - Development environment setup
+
+## Contributing
+
+Contributions are welcome! Please read our [Contributing Guidelines](../CONTRIBUTING.md) before submitting pull requests.
+
+## Code of Conduct
+
+This project follows the [Contributor Covenant Code of Conduct](../CODE_OF_CONDUCT.md). Please be respectful and constructive in all interactions.
+
+## License
+
+This project is licensed under the [Mozilla Public License 2.0](../LICENSE).
+
+## Support
+
+- Report bugs or request features via [GitHub Issues](https://github.com/Chris-Wolfgang/IComparable-Extensions/issues)
+- View examples in the [examples folder](../examples/)
+- Check out the full source code on [GitHub](https://github.com/Chris-Wolfgang/IComparable-Extensions)
+
+## Acknowledgments
+
+Built with ❤️ by the Wolfgang Extensions team.
diff --git a/docs/setup.md b/docs/setup.md
new file mode 100644
index 0000000..52332c3
--- /dev/null
+++ b/docs/setup.md
@@ -0,0 +1,357 @@
+# Development Setup Guide
+
+This guide will help you set up your development environment to contribute to Wolfgang.Extensions.IComparable.
+
+## Prerequisites
+
+Before you begin, ensure you have the following installed:
+
+### Required Software
+
+1. **.NET 8.0 SDK** or later
+ - Download from [dotnet.microsoft.com](https://dotnet.microsoft.com/download)
+ - Verify installation: `dotnet --version`
+
+2. **Git**
+ - Download from [git-scm.com](https://git-scm.com/)
+ - Verify installation: `git --version`
+
+3. **A Code Editor** (choose one):
+ - [Visual Studio 2022](https://visualstudio.microsoft.com/) (Community, Professional, or Enterprise)
+ - [Visual Studio Code](https://code.visualstudio.com/) with C# extension
+ - [JetBrains Rider](https://www.jetbrains.com/rider/)
+
+### Recommended Tools
+
+1. **ReportGenerator** (for code coverage reports)
+ ```bash
+ dotnet tool install -g dotnet-reportgenerator-globaltool
+ ```
+
+2. **DevSkim CLI** (for security scanning)
+ ```bash
+ dotnet tool install --global Microsoft.CST.DevSkim.CLI
+ ```
+
+## Getting the Source Code
+
+### 1. Fork the Repository
+
+1. Navigate to [https://github.com/Chris-Wolfgang/IComparable-Extensions](https://github.com/Chris-Wolfgang/IComparable-Extensions)
+2. Click the **Fork** button in the upper right
+3. Select your GitHub account as the destination
+
+### 2. Clone Your Fork
+
+```bash
+# Clone your fork
+git clone https://github.com/YOUR-USERNAME/IComparable-Extensions.git
+
+# Navigate to the repository
+cd IComparable-Extensions
+
+# Add upstream remote
+git remote add upstream https://github.com/Chris-Wolfgang/IComparable-Extensions.git
+```
+
+### 3. Verify Your Setup
+
+```bash
+# Check remotes
+git remote -v
+
+# Should show:
+# origin https://github.com/YOUR-USERNAME/IComparable-Extensions.git (fetch)
+# origin https://github.com/YOUR-USERNAME/IComparable-Extensions.git (push)
+# upstream https://github.com/Chris-Wolfgang/IComparable-Extensions.git (fetch)
+# upstream https://github.com/Chris-Wolfgang/IComparable-Extensions.git (push)
+```
+
+## Building the Project
+
+### 1. Restore Dependencies
+
+```bash
+dotnet restore
+```
+
+### 2. Build the Solution
+
+```bash
+# Build in Debug mode
+dotnet build
+
+# Build in Release mode (recommended for testing)
+dotnet build --configuration Release
+```
+
+Expected output:
+```
+Build succeeded.
+ 0 Warning(s)
+ 0 Error(s)
+```
+
+## Running Tests
+
+### Run All Tests
+
+```bash
+dotnet test --configuration Release
+```
+
+### Run Tests with Code Coverage
+
+```bash
+# Run tests and collect coverage
+dotnet test --configuration Release --collect:"XPlat Code Coverage" --results-directory "./TestResults"
+
+# Generate coverage report (if ReportGenerator is installed)
+reportgenerator -reports:"TestResults/**/coverage.cobertura.xml" \
+ -targetdir:"CoverageReport" \
+ -reporttypes:"Html;TextSummary"
+
+# View the report
+# Open CoverageReport/index.html in your browser
+```
+
+### Run Specific Test Projects
+
+```bash
+# Run only unit tests
+dotnet test tests/Wolfgang.Extensions.IComparable.Tests/Wolfgang.Extensions.IComparable.Tests.csproj
+```
+
+## Code Quality Checks
+
+### Run Security Scanning
+
+```bash
+# Run DevSkim security analysis
+devskim analyze --source-code . -f text --output-file devskim-results.txt
+
+# View results
+cat devskim-results.txt
+```
+
+### Check Code Style
+
+The project uses `.editorconfig` for consistent code style. Most IDEs will automatically apply these rules.
+
+To manually check:
+```bash
+# Format code
+dotnet format
+
+# Verify formatting
+dotnet format --verify-no-changes
+```
+
+## Running Benchmarks
+
+If you're working on performance improvements:
+
+```bash
+# Navigate to benchmarks
+cd benchmarks
+
+# Run benchmarks
+dotnet run --configuration Release
+```
+
+## Project Structure
+
+```
+IComparable-Extensions/
+├── src/
+│ └── Wolfgang.Extensions.IComparable/
+│ ├── Wolfgang.Extensions.IComparable.csproj
+│ └── IComparableExtensions.cs
+├── tests/
+│ └── Wolfgang.Extensions.IComparable.Tests/
+│ ├── Wolfgang.Extensions.IComparable.Tests.csproj
+│ └── IComparableExtensionsTests.cs
+├── benchmarks/
+│ └── (Benchmark projects)
+├── examples/
+│ └── (Example projects)
+├── docs/
+│ ├── introduction.md
+│ ├── getting-started.md
+│ ├── readme.md
+│ └── setup.md
+├── .github/
+│ └── workflows/
+│ └── pr.yaml (CI/CD pipeline)
+├── .editorconfig (Code style rules)
+├── .gitignore
+├── IComparable Extensions.slnx (Solution file)
+├── README.md
+└── LICENSE
+```
+
+## Development Workflow
+
+### 1. Create a Feature Branch
+
+```bash
+# Update your main branch
+git checkout main
+git pull upstream main
+
+# Create a new feature branch
+git checkout -b feature/your-feature-name
+```
+
+### 2. Make Your Changes
+
+- Write code following the existing style
+- Add or update tests for your changes
+- Ensure tests pass: `dotnet test`
+- Ensure coverage meets requirements (≥80%)
+
+### 3. Commit Your Changes
+
+```bash
+# Stage your changes
+git add .
+
+# Commit with a descriptive message
+git commit -m "Add feature: description of your changes"
+```
+
+### 4. Push and Create Pull Request
+
+```bash
+# Push to your fork
+git push origin feature/your-feature-name
+```
+
+Then:
+1. Go to your fork on GitHub
+2. Click "Compare & pull request"
+3. Fill out the PR template
+4. Submit the pull request
+
+## CI/CD Pipeline
+
+The project uses GitHub Actions for continuous integration. On every pull request:
+
+1. **Build Check**: Code is built in Release mode
+2. **Test Execution**: All tests are run
+3. **Code Coverage**: Coverage is collected and must be ≥80%
+4. **Security Scan**: DevSkim analyzes for security vulnerabilities
+5. **Artifacts**: Coverage reports and scan results are uploaded
+
+### Local CI Simulation
+
+To simulate the CI pipeline locally:
+
+```bash
+# Clean previous builds
+dotnet clean
+
+# Restore dependencies
+dotnet restore
+
+# Build in Release mode
+dotnet build --no-restore --configuration Release
+
+# Run tests with coverage
+find ./tests -type f -name '*Test*.csproj' | while read proj; do
+ dotnet test "$proj" --no-build --configuration Release \
+ --collect:"XPlat Code Coverage" \
+ --results-directory "./TestResults"
+done
+
+# Generate coverage report
+reportgenerator -reports:"TestResults/**/coverage.cobertura.xml" \
+ -targetdir:"CoverageReport" \
+ -reporttypes:"Html;TextSummary;MarkdownSummaryGithub;CsvSummary"
+
+# Run security scan
+devskim analyze --source-code . -f text --output-file devskim-results.txt -E
+```
+
+## Troubleshooting
+
+### Build Errors
+
+**Problem**: `The SDK 'Microsoft.NET.Sdk' specified could not be found`
+- **Solution**: Install .NET 8.0 SDK from [dotnet.microsoft.com](https://dotnet.microsoft.com/download)
+
+**Problem**: `Package restore failed`
+- **Solution**:
+ ```bash
+ dotnet nuget locals all --clear
+ dotnet restore
+ ```
+
+### Test Failures
+
+**Problem**: Tests pass locally but fail in CI
+- **Solution**: Ensure you're building in Release mode: `dotnet test --configuration Release`
+
+**Problem**: Code coverage below 80%
+- **Solution**: Add tests for uncovered code paths
+
+### Git Issues
+
+**Problem**: Merge conflicts
+- **Solution**:
+ ```bash
+ git fetch upstream
+ git merge upstream/main
+ # Resolve conflicts in your editor
+ git add .
+ git commit -m "Merge upstream changes"
+ ```
+
+## Editor Configuration
+
+### Visual Studio Code
+
+Recommended extensions:
+- C# (Microsoft)
+- C# Dev Kit (Microsoft)
+- EditorConfig for VS Code
+
+Settings (`.vscode/settings.json`):
+```json
+{
+ "dotnet.defaultSolution": "IComparable Extensions.slnx",
+ "editor.formatOnSave": true,
+ "editor.codeActionsOnSave": {
+ "source.fixAll": true
+ }
+}
+```
+
+### Visual Studio
+
+The solution should work out of the box. Ensure:
+- Code cleanup is configured to use `.editorconfig` rules
+- Code analysis is enabled
+
+### JetBrains Rider
+
+Rider automatically respects `.editorconfig`. Additional settings:
+- Enable "Reformat code on save"
+- Enable "Optimize imports on save"
+
+## Getting Help
+
+If you encounter issues:
+
+1. Check [existing GitHub issues](https://github.com/Chris-Wolfgang/IComparable-Extensions/issues)
+2. Review the [CONTRIBUTING.md](../CONTRIBUTING.md) guide
+3. Ask questions in a new GitHub issue
+
+## Next Steps
+
+- Read the [Contributing Guidelines](../CONTRIBUTING.md)
+- Review the [Code of Conduct](../CODE_OF_CONDUCT.md)
+- Explore the [examples](../examples/) folder
+- Join the community discussions
+
+Happy coding! 🚀
From fdbc9f8d7ec18df35f874b98a8d3a9b06a95360a Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Thu, 29 Jan 2026 01:32:41 +0000
Subject: [PATCH 3/3] Fix spelling error, improve date examples, and update
version specification
Co-authored-by: Chris-Wolfgang <210299580+Chris-Wolfgang@users.noreply.github.com>
---
docs/getting-started.md | 4 ++--
docs/readme.md | 6 +++---
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/docs/getting-started.md b/docs/getting-started.md
index 44c563a..cd397bc 100644
--- a/docs/getting-started.md
+++ b/docs/getting-started.md
@@ -27,7 +27,7 @@ Add the following package reference to your `.csproj` file:
```xml
-
+
```
@@ -108,7 +108,7 @@ if (price.IsBetween(0m, 100m))
### Working with Dates
```csharp
-DateTime checkDate = DateTime.Now;
+DateTime checkDate = new DateTime(2024, 6, 15);
DateTime startDate = new DateTime(2024, 1, 1);
DateTime endDate = new DateTime(2024, 12, 31);
diff --git a/docs/readme.md b/docs/readme.md
index ef0ce7b..63c5aa8 100644
--- a/docs/readme.md
+++ b/docs/readme.md
@@ -47,11 +47,11 @@ if (temperature.IsInRange(18, 26))
}
// Check if a date is between two dates (exclusive)
-DateTime today = DateTime.Now;
+DateTime checkDate = new DateTime(2024, 6, 15);
DateTime start = new DateTime(2024, 1, 1);
DateTime end = new DateTime(2024, 12, 31);
-if (today.IsBetween(start, end))
+if (checkDate.IsBetween(start, end))
{
Console.WriteLine("Date is within 2024 (exclusive of boundaries)");
}
@@ -72,7 +72,7 @@ bool isValidPercentage = percentage.IsInRange(0m, 100m);
// Temperature monitoring
double temp = 98.6;
-bool hasFeaver = temp.IsBetween(98.6, 103.0); // false (not > 98.6)
+bool hasFever = temp.IsBetween(98.6, 103.0); // false (98.6 is not > 98.6, boundary is excluded)
```
### String Comparisons