Skip to content

Instantly share code, notes, and snippets.

View martincostello's full-sized avatar
🚀
Coding stuff

Martin Costello martincostello

🚀
Coding stuff
View GitHub Profile
@martincostello
martincostello / NSubstituteExtensions.cs
Last active August 11, 2023 11:05
Mocking Moq for NSubstitute
// Copyright (c) Martin Costello, 2023. All rights reserved.
// Licensed under the Apache 2.0 license.
using System.Linq.Expressions;
using NSubstitute.Core;
using NSubstitute.ExceptionExtensions;
namespace NSubstitute;
/// <summary>
@martincostello
martincostello / AddNumbers.Tests\AddNumbers.Tests.csproj
Created December 4, 2021 15:34
An extension method to turn a string into a sequence of numbers using .NET 6 Generic Math
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<EnablePreviewFeatures>true</EnablePreviewFeatures>
<ImplicitUsings>enable</ImplicitUsings>
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Shouldly" Version="4.0.3" />
</ItemGroup>
<ItemGroup>
@martincostello
martincostello / SystemTextJsonContentSerializerForSourceGenerator.cs
Last active February 6, 2024 09:10
A class for plugging the JSON source generator with Refit
using System.Net;
using System.Reflection;
using System.Text.Json;
using System.Text.Json.Serialization;
namespace Refit;
/// <summary>
/// A class representing an implementation of <see cref="IHttpContentSerializer"/> that can be
/// used with the <c>System.Text.Json</c> source generators. This class cannot be inherited.
@martincostello
martincostello / HttpResponseJsonExtensions.cs
Last active November 28, 2021 09:26
Extensions for using the JSON source generator with Minimal APIs
using System.Text.Json;
using System.Text.Json.Serialization;
using System.Text.Json.Serialization.Metadata;
namespace Microsoft.AspNetCore.Http;
/// <summary>
/// Provides extension methods for writing a JSON serialized value to the HTTP response.
/// </summary>
/// <remarks>
@martincostello
martincostello / Program.cs
Last active May 21, 2022 10:54
Converts C# source files to use file-scoped namespaces
// There may be corner cases where the naive string matching incorrectly
// changes your source file. Check your diff before committing any changes.
using System.Text;
// Change to whatever your favourite indentation is
const string Indent = " ";
// Get all the C# files in the specified directory
var fileNames = Directory.GetFiles(args[0], "*.cs", SearchOption.AllDirectories);
@martincostello
martincostello / Console.Tests\Console.Tests.csproj
Last active June 22, 2021 16:31
.NET global usings for code and tests
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.10.0" />
<PackageReference Include="xunit" Version="2.4.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3" />
</ItemGroup>
@martincostello
martincostello / update-dotnet-sdk.yml
Last active November 14, 2020 14:26
GitHub Actions workflow to update the .NET SDK
name: update-dotnet-sdk
on:
schedule:
- cron: '0 * * * *'
workflow_dispatch:
jobs:
update-dotnet-sdk:
name: Update .NET SDK
runs-on: ubuntu-latest
steps:
@martincostello
martincostello / nac.cpp
Created October 8, 2019 18:58
University Year 2 C++ Project - A Noughts and Crosses (Tic Tac Toe) Game
#include <iostream>
#include <cstdlib>
using namespace std;
char matrix[3][3];
int win(0);
int loss(0);
int draw(0);
char player;
@martincostello
martincostello / 2.2.401.md
Last active September 16, 2019 19:07
Project Euler Benchmarks for .NET Core 2.2 vs. 3.0

TODO

@martincostello
martincostello / 2.2.401.md
Last active September 15, 2019 11:35
Advent Of Code Benchmarks for .NET Core 2.2 vs. 3.0
BenchmarkDotNet=v0.11.5, OS=Windows 10.0.18362
Intel Core i7-6700HQ CPU 2.60GHz (Skylake), 1 CPU, 8 logical and 4 physical cores
.NET Core SDK=2.2.401
  [Host]     : .NET Core 2.2.6 (CoreCLR 4.6.27817.03, CoreFX 4.6.27818.02), 64bit RyuJIT
  DefaultJob : .NET Core 2.2.6 (CoreCLR 4.6.27817.03, CoreFX 4.6.27818.02), 64bit RyuJIT