/// <inheritdoc /> protected override async Task <Result <T, IError> > Run( IStateMonad stateMonad, CancellationToken cancellationToken) { var entity = await Entity.Run(stateMonad, cancellationToken); if (entity.IsFailure) { return(entity.ConvertFailure <T>()); } var propertyResult = await Property.Run(stateMonad, cancellationToken) .Map(x => x.GetStringAsync()); if (propertyResult.IsFailure) { return(propertyResult.ConvertFailure <T>()); } var epk = new EntityPropertyKey(propertyResult.Value); var entityValue = entity.Value.TryGetValue(epk); if (entityValue.HasNoValue) { return(EntityValue.GetDefaultValue <T>()); } var result = entityValue.Value.TryGetValue <T>() .MapError(x => x.WithLocation(this)); return(result); }
public void TestGetDefaultValue() { EntityValue.GetDefaultValue <Entity>().Should().Equal(Entity.Empty); EntityValue.GetDefaultValue <StringStream>().Should().Be(StringStream.Empty); EntityValue.GetDefaultValue <string>().Should().Be(string.Empty); EntityValue.GetDefaultValue <int>().Should().Be(0); EntityValue.GetDefaultValue <double>().Should().Be(0.0); EntityValue.GetDefaultValue <bool>().Should().Be(false); EntityValue.GetDefaultValue <Array <int> >().Should().Be(Array <int> .Empty); EntityValue.GetDefaultValue <Array <double> >().Should().Be(Array <double> .Empty); }