Exemple #1
0
        /// <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);
        }
Exemple #2
0
 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);
 }