public static async Task RegisteredType_AdditionalLink( Guid id, Guid parentId, UnequalNonNullPair <NonEmptyString> routes, JsonSerializerSettings serializerSettings) { if (serializerSettings is null) { throw new ArgumentNullException(nameof(serializerSettings)); } var dto = new Registered { Id = id, ParentId = parentId, }; var(route, parentRoute) = routes; var builder = new TransformationMap.Builder <Registered>(r => Const(new Uri($"https://example.invalid/registered/{r.Id}"))); ITransformationMap <Registered> transformationMap = builder; _ = transformationMap.Link("up", r => Const(new Uri($"https://example.invalid/parent/{r.ParentId}"))); var map = new Dictionary <Type, ITransformationInstructions> { [typeof(Registered)] = builder, }; await using var serviceProvider = new ServiceCollection() .AddScoped <ILinkBuilder <Constant>, LinkBuilder.Constant>() .BuildServiceProvider(); var repo = new HalRepository(map, serviceProvider); serializerSettings.Converters.Add(new LinkCollection.Converter()); var sut = new HalJsonOutputFormatter(serializerSettings, ArrayPool <char> .Shared, new MvcOptions(), repo); using var writer = new StringWriter(); var context = new OutputFormatterWriteContext( new DefaultHttpContext(), (_, _) => writer, typeof(Registered), dto); await sut.WriteResponseBodyAsync(context, new UTF8Encoding(encoderShouldEmitUTF8Identifier : false)).ConfigureAwait(false); var actual = JsonConvert.DeserializeObject <HollowHal>(writer.ToString(), serializerSettings); Assert.NotNull(actual); Assert.Empty(actual.Embedded); Assert.NotNull(actual.Links); Assert.Equal(2, actual.Links.Count); var self = Assert.Contains("self", actual.Links); Assert.NotNull(self); Assert.Equal($"https://example.invalid/registered/{id}", self.Href); var parent = Assert.Contains("up", actual.Links); Assert.NotNull(parent); Assert.Equal($"https://example.invalid/parent/{parentId}", parent.Href); }
public static void ObjectEquals_SomeSome_SameType_DifferentValue(UnequalNonNullPair <string> pair) { var left = Option.From(pair.Left); var right = Option.From(pair.Right); Assert.False(left.Equals(right)); Assert.False(right.Equals(left)); }
public static void OperatorLogicalOr_SomeSome(UnequalNonNullPair <string> pair) { var left = Option.From(pair.Left); var right = Option.From(pair.Right); Assert.Equal(left, left || right); Assert.Equal(right, right || left); }
public static void OperatorNotEquals_SomeSome_DifferentValue(UnequalNonNullPair <string> pair) { var left = Option.From(pair.Left); var right = Option.From(pair.Right); Assert.True(left != right); Assert.True(right != left); }
public static void NamedBitwiseOr_SomeSome(UnequalNonNullPair <string> pair) { var left = Option.From(pair.Left); var right = Option.From(pair.Right); Assert.Equal(left, left.BitwiseOr(right)); Assert.Equal(right, right.BitwiseOr(left)); }
public static async Task RegisteredType_NullLink( Guid id, Guid parentId, UnequalNonNullPair <NonEmptyString> routes, JsonSerializerSettings serializerSettings) { // arrange var dto = new Registered { Id = id, ParentId = parentId }; var(route, parentRoute) = routes; var builder = new TransformationMap.Builder <Registered>(r => Const(new Uri($"https://example.invalid/registered/{r.Id}"))); ITransformationMap <Registered> transformationMap = builder; transformationMap.Link("up", _ => (ILinkData)null); var map = new Dictionary <Type, ITransformationInstructions> { [typeof(Registered)] = builder }; var serviceProvider = new ServiceCollection() .AddScoped <ILinkBuilder <Constant>, LinkBuilder.Constant>() .BuildServiceProvider(); var repo = new HalRepository(map, serviceProvider); serializerSettings.Converters.Add(new LinkCollection.Converter()); var sut = new HalJsonOutputFormatter(serializerSettings, ArrayPool <char> .Shared, repo); var writer = new StringWriter(); var context = new OutputFormatterWriteContext( new DefaultHttpContext(), (_, __) => writer, typeof(Registered), dto); // act await sut.WriteResponseBodyAsync(context, new UTF8Encoding(encoderShouldEmitUTF8Identifier : false)).ConfigureAwait(false); var actual = JsonConvert.DeserializeObject <HollowHal>(writer.ToString(), serializerSettings); // assert Assert.NotNull(actual); Assert.Empty(actual.Embedded); Assert.NotNull(actual.Links); var(rel, link) = Assert.Single(actual.Links); Assert.Equal("self", rel); Assert.Equal($"https://example.invalid/registered/{id}", link.Href); }
public static void Equal_NotEqual(UnequalNonNullPair <Version> pair) { var left = Try.Ok(pair.Left); var right = Try.Ok(pair.Right); Assert.NotEqual(left, right); Assert.NotEqual(right, left); Assert.False(left.Equals(right)); Assert.False(right.Equals(left)); Assert.False(left == right); Assert.False(right == left); Assert.True(left != right); Assert.True(right != left); }
public static void Equal_NotEqual(UnequalNonNullPair <NonEmptyString> pair) { var left = Try.Err(pair.Left.Get); var right = Try.Err(pair.Right.Get); Assert.NotEqual(left, right); Assert.NotEqual(right, left); Assert.False(left.Equals(right)); Assert.False(right.Equals(left)); Assert.False(left == right); Assert.False(right == left); Assert.True(left != right); Assert.True(right != left); }
public static void Deconstruct <T>(this UnequalNonNullPair <T> pair, out T left, out T right) where T : class { left = pair.Left; right = pair.Right; }
public static void ComparerContains_Right_False(UnequalNonNullPair <string> values) => Assert.False(Either.From <Guid, string>(values.Right).Contains(values.Left, StringComparer.Ordinal));
public static void ComparerContains_Ok_False(UnequalNonNullPair <Version> pair) => Assert.False(Try <string, Version> .From(pair.Left).Contains(pair.Right, EqualityComparer <Version> .Default));
public static void ObjectEquals_SameType_SameState_DifferentValue(UnequalNonNullPair <string> values) => Assert.False(Either.From <string, int>(values.Left).Equals(Either.From <string, int>(values.Right)));
public static void Contains_Some_False(UnequalNonNullPair <string> pair) => Assert.False(Option.From(pair.Left).Contains(pair.Right));
public static void ComparerContains_Some_False(UnequalNonNullPair <string> pair) => Assert.False(Option.From(pair.Left).Contains(pair.Right, StringComparer.OrdinalIgnoreCase));