Refactor benchmarks and improve currency initialization. #3
1244 passed, 106 failed and 8 skipped
Report | Passed | Failed | Skipped | Time |
---|---|---|---|---|
./artifacts/_fv-az1913-517_2025-01-11_12_58_15.trx | 210ms | |||
./artifacts/_fv-az1913-517_2025-01-11_12_58_15[1].trx | 164ms | |||
./artifacts/_fv-az1913-517_2025-01-11_12_58_16.trx | 622✅ | 53❌ | 4⚪ | 3s |
./artifacts/_fv-az1913-517_2025-01-11_12_58_16[1].trx | 622✅ | 53❌ | 4⚪ | 3s |
✅ ./artifacts/_fv-az1913-517_2025-01-11_12_58_15.trx
No tests found
✅ ./artifacts/_fv-az1913-517_2025-01-11_12_58_15[1].trx
No tests found
❌ ./artifacts/_fv-az1913-517_2025-01-11_12_58_16.trx
679 tests were completed in 3s with 622 passed, 53 failed and 4 skipped.
Test suite | Passed | Failed | Skipped | Time |
---|---|---|---|---|
NodaMoney.Tests.CurrencyInfoBuilderSpec.GivenIWantToCreateCustomCurrencyInfo | 9✅ | 17ms | ||
NodaMoney.Tests.CurrencyInfoBuilderSpec.GivenIWantToReplaceIsoCurrencyWithOwnVersion | 1✅ | 0ms | ||
NodaMoney.Tests.CurrencyInfoBuilderSpec.GivenIWantToUnregisterCurrency | 5✅ | 6ms | ||
NodaMoney.Tests.CurrencyInfoSpec.GivenIWantCurrencyFromRegionOrCulture | 8✅ | 118ms | ||
NodaMoney.Tests.CurrencyInfoSpec.GivenIWantCurrencyInfoFromIsoCode | 4✅ | 2ms | ||
NodaMoney.Tests.CurrencyInfoSpec.GivenIWantCurrentCurrency | 3✅ | 1ms | ||
NodaMoney.Tests.CurrencyInfoSpec.GivenIWantToInitiateInternallyACurrency | 6✅ | 64ms | ||
NodaMoney.Tests.CurrencyInfoSpec.GivenIWantToKnowAllCurrencies | 1✅ | 12ms | ||
NodaMoney.Tests.CurrencyInfoSpec.GivenIWantToKnowSmallestPossibleAmountOfCurrency | 5✅ | 8ms | ||
NodaMoney.Tests.CurrencyInfoSpec.GivenIWantToValidateTheDateRange | 3✅ | 33ms | ||
NodaMoney.Tests.CurrencySpec.GivenIWantCurrencyFromIsoCode | 4✅ | 2ms | ||
NodaMoney.Tests.CurrencySpec.GivenIWantDefaultCurrency | 2✅ | 32ms | ||
NodaMoney.Tests.CurrencySpec.GivenIWantToCompareCurrencies | 4✅ | 3ms | ||
NodaMoney.Tests.CurrencySpec.GivenIWantToDeconstructCurrency | 1✅ | 0ms | ||
NodaMoney.Tests.CurrencyUnitSpec.CreateCurrencyV2 | 11✅ | 15ms | ||
NodaMoney.Tests.ExchangeRateSpec.GivenIWantToCompareExchangeRates | 5✅ | 1ms | ||
NodaMoney.Tests.ExchangeRateSpec.GivenIWantToConvertExchangeRateToString | 2✅ | 1ms | ||
NodaMoney.Tests.ExchangeRateSpec.GivenIWantToConvertMoney | 3✅ | 2ms | ||
NodaMoney.Tests.ExchangeRateSpec.GivenIWantToCreateAnExchangeRateWithCurrencies | 9✅ | 38ms | ||
NodaMoney.Tests.ExchangeRateSpec.GivenIWantToCreateAnExchangeRateWithCurrenciesAsStrings | 6✅ | 7ms | ||
NodaMoney.Tests.ExchangeRateSpec.GivenIWantToDeconstructExchangeRate | 1✅ | 0ms | ||
NodaMoney.Tests.ExchangeRateSpec.GivenIWantToParseACurrencyPair | 6✅ | 5ms | ||
NodaMoney.Tests.ExchangeRateSpec.GivenIWantToTryParseACurrencyPair | 6✅ | 4ms | ||
NodaMoney.Tests.Extensions.MoneyExtensionsSafeDivideSpec.GivenIWantToSafelyDivideMoney | 6✅ | 60ms | ||
NodaMoney.Tests.Iso4127Spec.GivenIWantToCompareNodaMoneyWithIso4127 | 4✅ | 1⚪ | 14ms | |
NodaMoney.Tests.MoneyBinaryOperatorsSpec.GivenIWantToAddAndSubtractMoney | 48✅ | 45ms | ||
NodaMoney.Tests.MoneyBinaryOperatorsSpec.GivenIWantToAddAndSubtractMoneyWithDecimal | 24✅ | 4ms | ||
NodaMoney.Tests.MoneyBinaryOperatorsSpec.GivenIWantToMultiplyAndDivideMoney | 34✅ | 10❌ | 343ms | |
NodaMoney.Tests.MoneyComparableSpec.GivenIWantToCompareMoney | 10✅ | 78ms | ||
NodaMoney.Tests.MoneyConvertibleSpec.GivenIWantToCastNumericTypeToMoneyWithImplicitCurrencyFromTheCurrentCulture | 11✅ | 4ms | ||
NodaMoney.Tests.MoneyConvertibleSpec.GivenIWantToConvertMoney | 3✅ | 11ms | ||
NodaMoney.Tests.MoneyConvertibleSpec.GivenIWantToExplicitCastMoneyToNumericType | 7✅ | 17ms | ||
NodaMoney.Tests.MoneyFiveMostUsedCurrenciesSpec.GivenIWantDollars | 6✅ | 12ms | ||
NodaMoney.Tests.MoneyFiveMostUsedCurrenciesSpec.GivenIWantEuros | 6✅ | 38ms | ||
NodaMoney.Tests.MoneyFiveMostUsedCurrenciesSpec.GivenIWantPonds | 6✅ | 11ms | ||
NodaMoney.Tests.MoneyFiveMostUsedCurrenciesSpec.GivenIWantYens | 6✅ | 2ms | ||
NodaMoney.Tests.MoneyFiveMostUsedCurrenciesSpec.GivenIWantYuan | 6✅ | 2ms | ||
NodaMoney.Tests.MoneyFormattableSpec.GivenIWantMoneyAsString | 12✅ | 9ms | ||
NodaMoney.Tests.MoneyFormattableSpec.GivenIWantMoneyAsStringWithCurrencyCode | 8✅ | 6ms | ||
NodaMoney.Tests.MoneyFormattableSpec.GivenIWantMoneyAsStringWithCurrencySymbol | 8✅ | 6ms | ||
NodaMoney.Tests.MoneyFormattableSpec.GivenIWantMoneyAsStringWithEnglishCurrencyName | 7✅ | 11ms | ||
NodaMoney.Tests.MoneyParsableSpec.GivenIWantToParseExplicitCurrency | 12✅ | 10ms | ||
NodaMoney.Tests.MoneyParsableSpec.GivenIWantToParseImplicitCurrency | 13✅ | 29ms | ||
NodaMoney.Tests.MoneyParsableSpec.GivenIWantToParseMoneyWithMoreDecimalPossibleForCurrency | 2✅ | 1ms | ||
NodaMoney.Tests.MoneyParsableSpec.GivenIWantToParseNegativeMoney | 6✅ | 5ms | ||
NodaMoney.Tests.MoneyParsableSpec.GivenIWantToTryParseExplicitCurrency | 8✅ | 6ms | ||
NodaMoney.Tests.MoneyParsableSpec.GivenIWantToTryParseImplicitCurrency | 11✅ | 7ms | ||
NodaMoney.Tests.MoneySpec.GivenIWantDefaultMoney | 1✅ | 1ms | ||
NodaMoney.Tests.MoneySpec.GivenIWantMoneyFromNumericTypeAndAnExplicitCurrencyObject | 16✅ | 15ms | ||
NodaMoney.Tests.MoneySpec.GivenIWantMoneyFromNumericTypeAndAnExplicitIsoCurrencyCode | 12✅ | 4ms | ||
NodaMoney.Tests.MoneySpec.GivenIWantMoneyImplicit | 4✅ | 15ms | ||
NodaMoney.Tests.MoneySpec.GivenIWantMoneyInMalagasyAriaryWhichHasFiveSubunits | 29✅ | 1ms | ||
NodaMoney.Tests.MoneySpec.GivenIWantMoneyWithDifferentRounding | 1✅ | 1❌ | 7ms | |
NodaMoney.Tests.MoneySpec.GivenIWantToCreateMoneyWithDoubleValue | 2✅ | 2❌ | 11ms | |
NodaMoney.Tests.MoneySpec.GivenIWantToDeconstructMoney | 1✅ | 0ms | ||
NodaMoney.Tests.Serialization.BinaryFormatterSpec.GivenIWantToSerializeMoney | 3⚪ | 3ms | ||
NodaMoney.Tests.Serialization.DataContractSerializerSpec.GivenIWantToSerializeMoney | 3✅ | 112ms | ||
NodaMoney.Tests.Serialization.NewtonsoftJsonSerializerSpec.GivenIWantToDeserializeMoney | 17✅ | 39❌ | 153ms | |
NodaMoney.Tests.Serialization.NewtonsoftJsonSerializerSpec.GivenIWantToSerializeCurrency | 6✅ | 1ms | ||
NodaMoney.Tests.Serialization.NewtonsoftJsonSerializerSpec.GivenIWantToSerializeMoney | 24✅ | 172ms | ||
NodaMoney.Tests.Serialization.RavenDbSerializationSpec.GivenIWantToStoreInRavenDb | 1❌ | 818ms | ||
NodaMoney.Tests.Serialization.SystemTextJsonSerializationSpec.GivenIWantToDeserializeMoney | 56✅ | 285ms | ||
NodaMoney.Tests.Serialization.SystemTextJsonSerializationSpec.GivenIWantToSerializeCurrency | 6✅ | 219ms | ||
NodaMoney.Tests.Serialization.SystemTextJsonSerializationSpec.GivenIWantToSerializeMoney | 19✅ | 66ms | ||
NodaMoney.Tests.Serialization.XmlSerializationSpec.GivenIWantToDeserializeMoney | 23✅ | 58ms | ||
NodaMoney.Tests.Serialization.XmlSerializationSpec.GivenIWantToSerializeCurrencyWithXmlSerializer | 3✅ | 18ms | ||
NodaMoney.Tests.Serialization.XmlSerializationSpec.GivenIWantToSerializeMoney | 20✅ | 69ms | ||
NodaMoney.Tests.UnaryOperatorsSpec.GivenIWantToAddAndSubtractMoneyUnary | 2✅ | 1ms | ||
NodaMoney.Tests.UnaryOperatorsSpec.GivenIWantToIncrementAndDecrementMoneyUnary | 8✅ | 36ms |
❌ NodaMoney.Tests.MoneyBinaryOperatorsSpec.GivenIWantToMultiplyAndDivideMoney
✅ WhenUsingDivisionMethodWithDecimal_ThenMoneyShouldBeDivided(expected: -100.12, divider: 0.5, value: -50.06)
✅ WhenUsingDivisionMethodWithDecimal_ThenMoneyShouldBeDivided(expected: -100.12, divider: 5, value: -500.60)
✅ WhenUsingDivisionMethodWithDecimal_ThenMoneyShouldBeDivided(expected: 10, divider: 15, value: 150)
✅ WhenUsingDivisionMethodWithDecimal_ThenMoneyShouldBeDivided(expected: 100.12, divider: 0.5, value: 50.06)
✅ WhenUsingDivisionMethodWithDecimal_ThenMoneyShouldBeDivided(expected: 100.12, divider: 5, value: 500.60)
✅ WhenUsingDivisionMethodWithInteger_ThenMoneyShouldBeDivided(expected: -100.12, divider: 3, value: -300.36)
✅ WhenUsingDivisionMethodWithInteger_ThenMoneyShouldBeDivided(expected: -100.12, divider: 5, value: -500.60)
✅ WhenUsingDivisionMethodWithInteger_ThenMoneyShouldBeDivided(expected: 10, divider: 15, value: 150)
✅ WhenUsingDivisionMethodWithInteger_ThenMoneyShouldBeDivided(expected: 100.12, divider: 3, value: 300.36)
✅ WhenUsingDivisionMethodWithInteger_ThenMoneyShouldBeDivided(expected: 100.12, divider: 5, value: 500.60)
❌ WhenUsingDivisionMethodWithMoney_ThenResultShouldBeRatio(value1: 100.12, value2: 3, expected: 33.373333333333333333333333333)
Expected result to be 33.373333333333333333333333333M, but found 33.333333333333333333333333333M (difference of -0.040000000000000000000000000).
✅ WhenUsingDivisionMethodWithMoney_ThenResultShouldBeRatio(value1: 150, value2: 15, expected: 10)
✅ WhenUsingDivisionOperatorWithDecimal_ThenMoneyShouldBeDivided(expected: -100.12, divider: 0.5, value: -50.06)
✅ WhenUsingDivisionOperatorWithDecimal_ThenMoneyShouldBeDivided(expected: -100.12, divider: 5, value: -500.60)
✅ WhenUsingDivisionOperatorWithDecimal_ThenMoneyShouldBeDivided(expected: 10, divider: 15, value: 150)
✅ WhenUsingDivisionOperatorWithDecimal_ThenMoneyShouldBeDivided(expected: 100.12, divider: 0.5, value: 50.06)
✅ WhenUsingDivisionOperatorWithDecimal_ThenMoneyShouldBeDivided(expected: 100.12, divider: 5, value: 500.60)
✅ WhenUsingDivisionOperatorWithInteger_ThenMoneyShouldBeDivided(expected: -100.12, divider: 3, value: -300.36)
✅ WhenUsingDivisionOperatorWithInteger_ThenMoneyShouldBeDivided(expected: -100.12, divider: 5, value: -500.60)
✅ WhenUsingDivisionOperatorWithInteger_ThenMoneyShouldBeDivided(expected: 10, divider: 15, value: 150)
✅ WhenUsingDivisionOperatorWithInteger_ThenMoneyShouldBeDivided(expected: 100.12, divider: 3, value: 300.36)
✅ WhenUsingDivisionOperatorWithInteger_ThenMoneyShouldBeDivided(expected: 100.12, divider: 5, value: 500.60)
❌ WhenUsingDivisionOperatorWithMoney_ThenResultShouldBeRatio(value1: 100.12, value2: 3, expected: 33.373333333333333333333333333)
Expected result to be 33.373333333333333333333333333M, but found 33.333333333333333333333333333M (difference of -0.040000000000000000000000000).
✅ WhenUsingDivisionOperatorWithMoney_ThenResultShouldBeRatio(value1: 150, value2: 15, expected: 10)
✅ WhenUsingMultiplyMethodWithDecimal_ThenMoneyShouldBeMultiplied(value: -100.12, multiplier: 0.5, expected: -50.06)
❌ WhenUsingMultiplyMethodWithDecimal_ThenMoneyShouldBeMultiplied(value: -100.12, multiplier: 5, expected: -500.60)
Expected result to be equal to (¤501), but found (¤500).
✅ WhenUsingMultiplyMethodWithDecimal_ThenMoneyShouldBeMultiplied(value: 10, multiplier: 15, expected: 150)
✅ WhenUsingMultiplyMethodWithDecimal_ThenMoneyShouldBeMultiplied(value: 100.12, multiplier: 0.5, expected: 50.06)
❌ WhenUsingMultiplyMethodWithDecimal_ThenMoneyShouldBeMultiplied(value: 100.12, multiplier: 5, expected: 500.60)
Expected result to be equal to ¤501, but found ¤500.
✅ WhenUsingMultiplyMethodWithInteger_ThenMoneyShouldBeMultiplied(value: -100.12, multiplier: 3, expected: -300.36)
❌ WhenUsingMultiplyMethodWithInteger_ThenMoneyShouldBeMultiplied(value: -100.12, multiplier: 5, expected: -500.60)
Expected result to be equal to (¤501), but found (¤500).
✅ WhenUsingMultiplyMethodWithInteger_ThenMoneyShouldBeMultiplied(value: 10, multiplier: 15, expected: 150)
✅ WhenUsingMultiplyMethodWithInteger_ThenMoneyShouldBeMultiplied(value: 100.12, multiplier: 3, expected: 300.36)
❌ WhenUsingMultiplyMethodWithInteger_ThenMoneyShouldBeMultiplied(value: 100.12, multiplier: 5, expected: 500.60)
Expected result to be equal to ¤501, but found ¤500.
✅ WhenUsingMultiplyOperatorWithDecimal_ThenMoneyShouldBeMultiplied(value: -100.12, multiplier: 0.5, expected: -50.06)
❌ WhenUsingMultiplyOperatorWithDecimal_ThenMoneyShouldBeMultiplied(value: -100.12, multiplier: 5, expected: -500.60)
Expected result1 to be equal to (¤501), but found (¤500).
✅ WhenUsingMultiplyOperatorWithDecimal_ThenMoneyShouldBeMultiplied(value: 10, multiplier: 15, expected: 150)
✅ WhenUsingMultiplyOperatorWithDecimal_ThenMoneyShouldBeMultiplied(value: 100.12, multiplier: 0.5, expected: 50.06)
❌ WhenUsingMultiplyOperatorWithDecimal_ThenMoneyShouldBeMultiplied(value: 100.12, multiplier: 5, expected: 500.60)
Expected result1 to be equal to ¤501, but found ¤500.
✅ WhenUsingMultiplyOperatorWithInteger_ThenMoneyShouldBeMultiplied(value: -100.12, multiplier: 3, expected: -300.36)
❌ WhenUsingMultiplyOperatorWithInteger_ThenMoneyShouldBeMultiplied(value: -100.12, multiplier: 5, expected: -500.60)
Expected result1 to be equal to (¤501), but found (¤500).
✅ WhenUsingMultiplyOperatorWithInteger_ThenMoneyShouldBeMultiplied(value: 10, multiplier: 15, expected: 150)
✅ WhenUsingMultiplyOperatorWithInteger_ThenMoneyShouldBeMultiplied(value: 100.12, multiplier: 3, expected: 300.36)
❌ WhenUsingMultiplyOperatorWithInteger_ThenMoneyShouldBeMultiplied(value: 100.12, multiplier: 5, expected: 500.60)
Expected result1 to be equal to ¤501, but found ¤500.
❌ NodaMoney.Tests.MoneySpec.GivenIWantMoneyWithDifferentRounding
✅ WhenAmountAndCode_ThenItShouldRoundUp
❌ WhenOnlyAmount_ThenItShouldRoundUp
Expected defaultRounding.Amount to be 0.52M, but found 1M (difference of 0.48).
❌ NodaMoney.Tests.MoneySpec.GivenIWantToCreateMoneyWithDoubleValue
✅ WhenValueIsDoubleAndWithCurrency_ThenMoneyShouldBeCorrect(input: 0.029999999999999999, expected: 0.03)
✅ WhenValueIsDoubleAndWithCurrency_ThenMoneyShouldBeCorrect(input: 0.33333333333333331, expected: 0.33)
❌ WhenValueIsDoubleWithoutCurrency_ThenMoneyShouldBeCorrect(input: 0.029999999999999999, expected: 0.03)
Expected money.Amount to be 0.03M, but found 0M (difference of -0.03).
❌ WhenValueIsDoubleWithoutCurrency_ThenMoneyShouldBeCorrect(input: 0.33333333333333331, expected: 0.33)
Expected money.Amount to be 0.33M, but found 0M (difference of -0.33).
❌ NodaMoney.Tests.Serialization.NewtonsoftJsonSerializerSpec.GivenIWantToDeserializeMoney
❌ WhenDeserializingV1_ThenThisShouldSucceed(json: "{ \"amount\": \"234.25\", \"currency\": \"EUR;ISO-"···, expected: €234.25)
Newtonsoft.Json.JsonSerializationException : Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'NodaMoney.Money' because the type requires a JSON string value to deserialize correctly.
To fix this error either change the JSON to a JSON string value or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List<T>) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.
Path 'amount', line 1, position 11.
❌ WhenDeserializingV1_ThenThisShouldSucceed(json: "{ \"Amount\": \"234.25\", \"Currency\": \"EUR;ISO-"···, expected: €234.25)
Newtonsoft.Json.JsonSerializationException : Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'NodaMoney.Money' because the type requires a JSON string value to deserialize correctly.
To fix this error either change the JSON to a JSON string value or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List<T>) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.
Path 'Amount', line 1, position 11.
❌ WhenDeserializingV1_ThenThisShouldSucceed(json: "{ \"amount\": \"234.25\", \"currency\": \"EUR\" }", expected: €234.25)
Newtonsoft.Json.JsonSerializationException : Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'NodaMoney.Money' because the type requires a JSON string value to deserialize correctly.
To fix this error either change the JSON to a JSON string value or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List<T>) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.
Path 'amount', line 1, position 11.
❌ WhenDeserializingV1_ThenThisShouldSucceed(json: "{ \"Amount\": \"234.25\", \"Currency\": \"EUR\" }", expected: €234.25)
Newtonsoft.Json.JsonSerializationException : Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'NodaMoney.Money' because the type requires a JSON string value to deserialize correctly.
To fix this error either change the JSON to a JSON string value or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List<T>) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.
Path 'Amount', line 1, position 11.
❌ WhenDeserializingV1_ThenThisShouldSucceed(json: "{ \"Amount\": 234.25, \"Currency\": \"EUR;\" }", expected: €234.25)
Newtonsoft.Json.JsonSerializationException : Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'NodaMoney.Money' because the type requires a JSON string value to deserialize correctly.
To fix this error either change the JSON to a JSON string value or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List<T>) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.
Path 'Amount', line 1, position 11.
❌ WhenDeserializingV1_ThenThisShouldSucceed(json: "{ \"amount\": 234.25, \"currency\": \"EUR;ISO-4217"···, expected: €234.25)
Newtonsoft.Json.JsonSerializationException : Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'NodaMoney.Money' because the type requires a JSON string value to deserialize correctly.
To fix this error either change the JSON to a JSON string value or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List<T>) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.
Path 'amount', line 1, position 11.
❌ WhenDeserializingV1_ThenThisShouldSucceed(json: "{ \"Amount\": 234.25, \"Currency\": \"EUR;ISO-4217"···, expected: €234.25)
Newtonsoft.Json.JsonSerializationException : Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'NodaMoney.Money' because the type requires a JSON string value to deserialize correctly.
To fix this error either change the JSON to a JSON string value or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List<T>) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.
Path 'Amount', line 1, position 11.
❌ WhenDeserializingV1_ThenThisShouldSucceed(json: "{ \"amount\": 234.25, \"currency\": \"EUR\" }", expected: €234.25)
Newtonsoft.Json.JsonSerializationException : Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'NodaMoney.Money' because the type requires a JSON string value to deserialize correctly.
To fix this error either change the JSON to a JSON string value or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List<T>) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.
Path 'amount', line 1, position 11.
❌ WhenDeserializingV1_ThenThisShouldSucceed(json: "{ \"Amount\": 234.25, \"Currency\": \"EUR\" }", expected: €234.25)
Newtonsoft.Json.JsonSerializationException : Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'NodaMoney.Money' because the type requires a JSON string value to deserialize correctly.
To fix this error either change the JSON to a JSON string value or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List<T>) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.
Path 'Amount', line 1, position 11.
❌ WhenDeserializingV1_ThenThisShouldSucceed(json: "{ \"currency\": \"EUR;ISO-4217\", \"amount\": \"23"···, expected: €234.25)
Newtonsoft.Json.JsonSerializationException : Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'NodaMoney.Money' because the type requires a JSON string value to deserialize correctly.
To fix this error either change the JSON to a JSON string value or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List<T>) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.
Path 'currency', line 1, position 13.
❌ WhenDeserializingV1_ThenThisShouldSucceed(json: "{ \"Currency\": \"EUR;ISO-4217\", \"Amount\": \"23"···, expected: €234.25)
Newtonsoft.Json.JsonSerializationException : Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'NodaMoney.Money' because the type requires a JSON string value to deserialize correctly.
To fix this error either change the JSON to a JSON string value or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List<T>) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.
Path 'Currency', line 1, position 13.
❌ WhenDeserializingV1_ThenThisShouldSucceed(json: "{ \"currency\": \"EUR;ISO-4217\", \"amount\": 234."···, expected: €234.25)
Newtonsoft.Json.JsonSerializationException : Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'NodaMoney.Money' because the type requires a JSON string value to deserialize correctly.
To fix this error either change the JSON to a JSON string value or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List<T>) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.
Path 'currency', line 1, position 13.
❌ WhenDeserializingV1_ThenThisShouldSucceed(json: "{ \"Currency\": \"EUR;ISO-4217\", \"Amount\": 234."···, expected: €234.25)
Newtonsoft.Json.JsonSerializationException : Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'NodaMoney.Money' because the type requires a JSON string value to deserialize correctly.
To fix this error either change the JSON to a JSON string value or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List<T>) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.
Path 'Currency', line 1, position 13.
❌ WhenDeserializingV1_ThenThisShouldSucceed(json: "{ \"currency\": \"EUR\", \"amount\": \"234.25\" }", expected: €234.25)
Newtonsoft.Json.JsonSerializationException : Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'NodaMoney.Money' because the type requires a JSON string value to deserialize correctly.
To fix this error either change the JSON to a JSON string value or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List<T>) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.
Path 'currency', line 1, position 13.
❌ WhenDeserializingV1_ThenThisShouldSucceed(json: "{ \"Currency\": \"EUR\", \"Amount\": \"234.25\" }", expected: €234.25)
Newtonsoft.Json.JsonSerializationException : Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'NodaMoney.Money' because the type requires a JSON string value to deserialize correctly.
To fix this error either change the JSON to a JSON string value or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List<T>) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.
Path 'Currency', line 1, position 13.
❌ WhenDeserializingV1_ThenThisShouldSucceed(json: "{ \"currency\": \"EUR\", \"amount\": 234.25 }", expected: €234.25)
Newtonsoft.Json.JsonSerializationException : Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'NodaMoney.Money' because the type requires a JSON string value to deserialize correctly.
To fix this error either change the JSON to a JSON string value or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List<T>) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.
Path 'currency', line 1, position 13.
❌ WhenDeserializingV1_ThenThisShouldSucceed(json: "{ \"Currency\": \"EUR\", \"Amount\": 234.25 }", expected: €234.25)
Newtonsoft.Json.JsonSerializationException : Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'NodaMoney.Money' because the type requires a JSON string value to deserialize correctly.
To fix this error either change the JSON to a JSON string value or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List<T>) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.
Path 'Currency', line 1, position 13.
✅ WhenDeserializingV2_ThenThisShouldSucceed(json: "\"234.25 BTC\"", expected: ₿234.25000000)
✅ WhenDeserializingV2_ThenThisShouldSucceed(json: "\"234.25 EUR\"", expected: €234.25)
✅ WhenDeserializingV2_ThenThisShouldSucceed(json: "\"BTC 234.25\"", expected: ₿234.25000000)
✅ WhenDeserializingV2_ThenThisShouldSucceed(json: "\"EUR 234.25\"", expected: €234.25)
❌ WhenDeserializingWithInvalidJSONV1_ThenThisShouldFail(json: "{ \"Amount\": \"234.25\" }")
Expected a <System.Runtime.Serialization.SerializationException> to be thrown, but found <Newtonsoft.Json.JsonSerializationException>:
Newtonsoft.Json.JsonSerializationException: Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'NodaMoney.Money' because the type requires a JSON string value to deserialize correctly.
To fix this error either change the JSON to a JSON string value or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List<T>) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.
Path 'Amount', line 1, position 11.
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonSerializer.Deserialize(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value)
at NodaMoney.Tests.Serialization.NewtonsoftJsonSerializerSpec.GivenIWantToDeserializeMoney.<>c__DisplayClass1_0.<WhenDeserializingWithInvalidJSONV1_ThenThisShouldFail>b__0() in /home/runner/work/NodaMoney/NodaMoney/tests/NodaMoney.Tests/Serialization/NewtonsoftJsonSerializer.cs:line 110
at FluentAssertions.Specialized.ActionAssertions.InvokeSubject()
at FluentAssertions.Specialized.DelegateAssertions`2.InvokeSubjectWithInterception().
❌ WhenDeserializingWithInvalidJSONV1_ThenThisShouldFail(json: "{ \"Amount\": \"ABC\", \"Currency\": \"EUR\" }")
Expected a <System.Runtime.Serialization.SerializationException> to be thrown, but found <Newtonsoft.Json.JsonSerializationException>:
Newtonsoft.Json.JsonSerializationException: Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'NodaMoney.Money' because the type requires a JSON string value to deserialize correctly.
To fix this error either change the JSON to a JSON string value or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List<T>) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.
Path 'Amount', line 1, position 11.
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonSerializer.Deserialize(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value)
at NodaMoney.Tests.Serialization.NewtonsoftJsonSerializerSpec.GivenIWantToDeserializeMoney.<>c__DisplayClass1_0.<WhenDeserializingWithInvalidJSONV1_ThenThisShouldFail>b__0() in /home/runner/work/NodaMoney/NodaMoney/tests/NodaMoney.Tests/Serialization/NewtonsoftJsonSerializer.cs:line 110
at FluentAssertions.Specialized.ActionAssertions.InvokeSubject()
at FluentAssertions.Specialized.DelegateAssertions`2.InvokeSubjectWithInterception().
❌ WhenDeserializingWithInvalidJSONV1_ThenThisShouldFail(json: "{ \"amount\": 234.25 }")
Expected a <System.Runtime.Serialization.SerializationException> to be thrown, but found <Newtonsoft.Json.JsonSerializationException>:
Newtonsoft.Json.JsonSerializationException: Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'NodaMoney.Money' because the type requires a JSON string value to deserialize correctly.
To fix this error either change the JSON to a JSON string value or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List<T>) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.
Path 'amount', line 1, position 11.
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonSerializer.Deserialize(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value)
at NodaMoney.Tests.Serialization.NewtonsoftJsonSerializerSpec.GivenIWantToDeserializeMoney.<>c__DisplayClass1_0.<WhenDeserializingWithInvalidJSONV1_ThenThisShouldFail>b__0() in /home/runner/work/NodaMoney/NodaMoney/tests/NodaMoney.Tests/Serialization/NewtonsoftJsonSerializer.cs:line 110
at FluentAssertions.Specialized.ActionAssertions.InvokeSubject()
at FluentAssertions.Specialized.DelegateAssertions`2.InvokeSubjectWithInterception().
❌ WhenDeserializingWithInvalidJSONV1_ThenThisShouldFail(json: "{ \"Amount\": 234.25 }")
Expected a <System.Runtime.Serialization.SerializationException> to be thrown, but found <Newtonsoft.Json.JsonSerializationException>:
Newtonsoft.Json.JsonSerializationException: Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'NodaMoney.Money' because the type requires a JSON string value to deserialize correctly.
To fix this error either change the JSON to a JSON string value or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List<T>) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.
Path 'Amount', line 1, position 11.
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonSerializer.Deserialize(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value)
at NodaMoney.Tests.Serialization.NewtonsoftJsonSerializerSpec.GivenIWantToDeserializeMoney.<>c__DisplayClass1_0.<WhenDeserializingWithInvalidJSONV1_ThenThisShouldFail>b__0() in /home/runner/work/NodaMoney/NodaMoney/tests/NodaMoney.Tests/Serialization/NewtonsoftJsonSerializer.cs:line 110
at FluentAssertions.Specialized.ActionAssertions.InvokeSubject()
at FluentAssertions.Specialized.DelegateAssertions`2.InvokeSubjectWithInterception().
❌ WhenDeserializingWithInvalidJSONV1_ThenThisShouldFail(json: "{ \"currency\": \"EUR\" }")
Expected a <System.Runtime.Serialization.SerializationException> to be thrown, but found <Newtonsoft.Json.JsonSerializationException>:
Newtonsoft.Json.JsonSerializationException: Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'NodaMoney.Money' because the type requires a JSON string value to deserialize correctly.
To fix this error either change the JSON to a JSON string value or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List<T>) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.
Path 'currency', line 1, position 13.
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonSerializer.Deserialize(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value)
at NodaMoney.Tests.Serialization.NewtonsoftJsonSerializerSpec.GivenIWantToDeserializeMoney.<>c__DisplayClass1_0.<WhenDeserializingWithInvalidJSONV1_ThenThisShouldFail>b__0() in /home/runner/work/NodaMoney/NodaMoney/tests/NodaMoney.Tests/Serialization/NewtonsoftJsonSerializer.cs:line 110
at FluentAssertions.Specialized.ActionAssertions.InvokeSubject()
at FluentAssertions.Specialized.DelegateAssertions`2.InvokeSubjectWithInterception().
❌ WhenDeserializingWithInvalidJSONV1_ThenThisShouldFail(json: "{ \"Currency\": \"EUR\" }")
Expected a <System.Runtime.Serialization.SerializationException> to be thrown, but found <Newtonsoft.Json.JsonSerializationException>:
Newtonsoft.Json.JsonSerializationException: Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'NodaMoney.Money' because the type requires a JSON string value to deserialize correctly.
To fix this error either change the JSON to a JSON string value or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List<T>) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.
Path 'Currency', line 1, position 13.
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonSerializer.Deserialize(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value)
at NodaMoney.Tests.Serialization.NewtonsoftJsonSerializerSpec.GivenIWantToDeserializeMoney.<>c__DisplayClass1_0.<WhenDeserializingWithInvalidJSONV1_ThenThisShouldFail>b__0() in /home/runner/work/NodaMoney/NodaMoney/tests/NodaMoney.Tests/Serialization/NewtonsoftJsonSerializer.cs:line 110
at FluentAssertions.Specialized.ActionAssertions.InvokeSubject()
at FluentAssertions.Specialized.DelegateAssertions`2.InvokeSubjectWithInterception().
❌ WhenDeserializingWithInvalidJSONV1_ThenThisShouldFail(json: "{ Amount: '234.25' }")
Expected a <System.Runtime.Serialization.SerializationException> to be thrown, but found <Newtonsoft.Json.JsonSerializationException>:
Newtonsoft.Json.JsonSerializationException: Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'NodaMoney.Money' because the type requires a JSON string value to deserialize correctly.
To fix this error either change the JSON to a JSON string value or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List<T>) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.
Path 'Amount', line 1, position 9.
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonSerializer.Deserialize(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value)
at NodaMoney.Tests.Serialization.NewtonsoftJsonSerializerSpec.GivenIWantToDeserializeMoney.<>c__DisplayClass1_0.<WhenDeserializingWithInvalidJSONV1_ThenThisShouldFail>b__0() in /home/runner/work/NodaMoney/NodaMoney/tests/NodaMoney.Tests/Serialization/NewtonsoftJsonSerializer.cs:line 110
at FluentAssertions.Specialized.ActionAssertions.InvokeSubject()
at FluentAssertions.Specialized.DelegateAssertions`2.InvokeSubjectWithInterception().
❌ WhenDeserializingWithInvalidJSONV1_ThenThisShouldFail(json: "{ Amount: \"234.25\" }")
Expected a <System.Runtime.Serialization.SerializationException> to be thrown, but found <Newtonsoft.Json.JsonSerializationException>:
Newtonsoft.Json.JsonSerializationException: Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'NodaMoney.Money' because the type requires a JSON string value to deserialize correctly.
To fix this error either change the JSON to a JSON string value or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List<T>) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.
Path 'Amount', line 1, position 9.
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonSerializer.Deserialize(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value)
at NodaMoney.Tests.Serialization.NewtonsoftJsonSerializerSpec.GivenIWantToDeserializeMoney.<>c__DisplayClass1_0.<WhenDeserializingWithInvalidJSONV1_ThenThisShouldFail>b__0() in /home/runner/work/NodaMoney/NodaMoney/tests/NodaMoney.Tests/Serialization/NewtonsoftJsonSerializer.cs:line 110
at FluentAssertions.Specialized.ActionAssertions.InvokeSubject()
at FluentAssertions.Specialized.DelegateAssertions`2.InvokeSubjectWithInterception().
❌ WhenDeserializingWithInvalidJSONV1_ThenThisShouldFail(json: "{ amount: 234.25 }")
Expected a <System.Runtime.Serialization.SerializationException> to be thrown, but found <Newtonsoft.Json.JsonSerializationException>:
Newtonsoft.Json.JsonSerializationException: Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'NodaMoney.Money' because the type requires a JSON string value to deserialize correctly.
To fix this error either change the JSON to a JSON string value or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List<T>) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.
Path 'amount', line 1, position 9.
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonSerializer.Deserialize(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value)
at NodaMoney.Tests.Serialization.NewtonsoftJsonSerializerSpec.GivenIWantToDeserializeMoney.<>c__DisplayClass1_0.<WhenDeserializingWithInvalidJSONV1_ThenThisShouldFail>b__0() in /home/runner/work/NodaMoney/NodaMoney/tests/NodaMoney.Tests/Serialization/NewtonsoftJsonSerializer.cs:line 110
at FluentAssertions.Specialized.ActionAssertions.InvokeSubject()
at FluentAssertions.Specialized.DelegateAssertions`2.InvokeSubjectWithInterception().
❌ WhenDeserializingWithInvalidJSONV1_ThenThisShouldFail(json: "{ Amount: 234.25 }")
Expected a <System.Runtime.Serialization.SerializationException> to be thrown, but found <Newtonsoft.Json.JsonSerializationException>:
Newtonsoft.Json.JsonSerializationException: Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'NodaMoney.Money' because the type requires a JSON string value to deserialize correctly.
To fix this error either change the JSON to a JSON string value or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List<T>) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.
Path 'Amount', line 1, position 9.
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonSerializer.Deserialize(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value)
at NodaMoney.Tests.Serialization.NewtonsoftJsonSerializerSpec.GivenIWantToDeserializeMoney.<>c__DisplayClass1_0.<WhenDeserializingWithInvalidJSONV1_ThenThisShouldFail>b__0() in /home/runner/work/NodaMoney/NodaMoney/tests/NodaMoney.Tests/Serialization/NewtonsoftJsonSerializer.cs:line 110
at FluentAssertions.Specialized.ActionAssertions.InvokeSubject()
at FluentAssertions.Specialized.DelegateAssertions`2.InvokeSubjectWithInterception().
❌ WhenDeserializingWithInvalidJSONV1_ThenThisShouldFail(json: "{ currency: 'EUR' }")
Expected a <System.Runtime.Serialization.SerializationException> to be thrown, but found <Newtonsoft.Json.JsonSerializationException>:
Newtonsoft.Json.JsonSerializationException: Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'NodaMoney.Money' because the type requires a JSON string value to deserialize correctly.
To fix this error either change the JSON to a JSON string value or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List<T>) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.
Path 'currency', line 1, position 11.
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonSerializer.Deserialize(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value)
at NodaMoney.Tests.Serialization.NewtonsoftJsonSerializerSpec.GivenIWantToDeserializeMoney.<>c__DisplayClass1_0.<WhenDeserializingWithInvalidJSONV1_ThenThisShouldFail>b__0() in /home/runner/work/NodaMoney/NodaMoney/tests/NodaMoney.Tests/Serialization/NewtonsoftJsonSerializer.cs:line 110
at FluentAssertions.Specialized.ActionAssertions.InvokeSubject()
at FluentAssertions.Specialized.DelegateAssertions`2.InvokeSubjectWithInterception().
❌ WhenDeserializingWithInvalidJSONV1_ThenThisShouldFail(json: "{ Currency: 'EUR' }")
Expected a <System.Runtime.Serialization.SerializationException> to be thrown, but found <Newtonsoft.Json.JsonSerializationException>:
Newtonsoft.Json.JsonSerializationException: Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'NodaMoney.Money' because the type requires a JSON string value to deserialize correctly.
To fix this error either change the JSON to a JSON string value or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List<T>) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.
Path 'Currency', line 1, position 11.
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonSerializer.Deserialize(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value)
at NodaMoney.Tests.Serialization.NewtonsoftJsonSerializerSpec.GivenIWantToDeserializeMoney.<>c__DisplayClass1_0.<WhenDeserializingWithInvalidJSONV1_ThenThisShouldFail>b__0() in /home/runner/work/NodaMoney/NodaMoney/tests/NodaMoney.Tests/Serialization/NewtonsoftJsonSerializer.cs:line 110
at FluentAssertions.Specialized.ActionAssertions.InvokeSubject()
at FluentAssertions.Specialized.DelegateAssertions`2.InvokeSubjectWithInterception().
❌ WhenDeserializingWithInvalidJSONV1_ThenThisShouldFail(json: "{ currency: \"EUR\" }")
Expected a <System.Runtime.Serialization.SerializationException> to be thrown, but found <Newtonsoft.Json.JsonSerializationException>:
Newtonsoft.Json.JsonSerializationException: Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'NodaMoney.Money' because the type requires a JSON string value to deserialize correctly.
To fix this error either change the JSON to a JSON string value or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List<T>) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.
Path 'currency', line 1, position 11.
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonSerializer.Deserialize(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value)
at NodaMoney.Tests.Serialization.NewtonsoftJsonSerializerSpec.GivenIWantToDeserializeMoney.<>c__DisplayClass1_0.<WhenDeserializingWithInvalidJSONV1_ThenThisShouldFail>b__0() in /home/runner/work/NodaMoney/NodaMoney/tests/NodaMoney.Tests/Serialization/NewtonsoftJsonSerializer.cs:line 110
at FluentAssertions.Specialized.ActionAssertions.InvokeSubject()
at FluentAssertions.Specialized.DelegateAssertions`2.InvokeSubjectWithInterception().
❌ WhenDeserializingWithInvalidJSONV1_ThenThisShouldFail(json: "{ Currency: \"EUR\" }")
Expected a <System.Runtime.Serialization.SerializationException> to be thrown, but found <Newtonsoft.Json.JsonSerializationException>:
Newtonsoft.Json.JsonSerializationException: Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'NodaMoney.Money' because the type requires a JSON string value to deserialize correctly.
To fix this error either change the JSON to a JSON string value or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List<T>) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.
Path 'Currency', line 1, position 11.
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonSerializer.Deserialize(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value)
at NodaMoney.Tests.Serialization.NewtonsoftJsonSerializerSpec.GivenIWantToDeserializeMoney.<>c__DisplayClass1_0.<WhenDeserializingWithInvalidJSONV1_ThenThisShouldFail>b__0() in /home/runner/work/NodaMoney/NodaMoney/tests/NodaMoney.Tests/Serialization/NewtonsoftJsonSerializer.cs:line 110
at FluentAssertions.Specialized.ActionAssertions.InvokeSubject()
at FluentAssertions.Specialized.DelegateAssertions`2.InvokeSubjectWithInterception().
✅ WhenDeserializingWithInvalidJSONV2_ThenThisShouldFail(json: "\"234.25 234.25\"")
✅ WhenDeserializingWithInvalidJSONV2_ThenThisShouldFail(json: "\"234.25\"")
✅ WhenDeserializingWithInvalidJSONV2_ThenThisShouldFail(json: "\"234.25EUR\"")
✅ WhenDeserializingWithInvalidJSONV2_ThenThisShouldFail(json: "\"EUR 234.25 123 EUR\"")
✅ WhenDeserializingWithInvalidJSONV2_ThenThisShouldFail(json: "\"EUR 234.25 123\"")
✅ WhenDeserializingWithInvalidJSONV2_ThenThisShouldFail(json: "\"EUR 234.25 EUR 123\"")
✅ WhenDeserializingWithInvalidJSONV2_ThenThisShouldFail(json: "\"EUR 234.25 EUR\"")
✅ WhenDeserializingWithInvalidJSONV2_ThenThisShouldFail(json: "\"EUR EUR\"")
✅ WhenDeserializingWithInvalidJSONV2_ThenThisShouldFail(json: "\"EUR\"")
✅ WhenDeserializingWithInvalidJSONV2_ThenThisShouldFail(json: "\"EUR234.25\"")
✅ WhenDeserializingWithInvalidJSONV2_ThenThisShouldFail(json: "EUR 234.25")
❌ WhenDeserializingWithNestedV1_ThenThisShouldSucceed(json: "{ \"id\": 123, \"name\": \"Abc\", \"total\": { \"a"···, expected: Order { Id = 123, Name = "Abc", Total = €234.25 })
Newtonsoft.Json.JsonSerializationException : Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'NodaMoney.Money' because the type requires a JSON string value to deserialize correctly.
To fix this error either change the JSON to a JSON string value or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List<T>) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.
Path 'total.amount', line 1, position 48.
❌ WhenDeserializingWithNestedV1_ThenThisShouldSucceed(json: "{ \"id\": 123, \"name\": \"Abc\", \"total\": { \"a"···, expected: Order { Id = 123, Name = "Abc", Total = €234.25 })
Newtonsoft.Json.JsonSerializationException : Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'NodaMoney.Money' because the type requires a JSON string value to deserialize correctly.
To fix this error either change the JSON to a JSON string value or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List<T>) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.
Path 'total.amount', line 1, position 48.
❌ WhenDeserializingWithNestedV1_ThenThisShouldSucceed(json: "{ \"Id\": 123, \"Name\": \"Abc\", \"Total\": { \"A"···, expected: Order { Id = 123, Name = "Abc", Total = €234.25 })
Newtonsoft.Json.JsonSerializationException : Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'NodaMoney.Money' because the type requires a JSON string value to deserialize correctly.
To fix this error either change the JSON to a JSON string value or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List<T>) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.
Path 'Total.Amount', line 1, position 48.
❌ WhenDeserializingWithNestedV1_ThenThisShouldSucceed(json: "{ \"Id\": 123, \"Name\": \"Abc\", \"Total\": { \"A"···, expected: Order { Id = 123, Name = "Abc", Total = €234.25 })
Newtonsoft.Json.JsonSerializationException : Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'NodaMoney.Money' because the type requires a JSON string value to deserialize correctly.
Report exceeded GitHub limit of 65535 bytes and has been trimmed
Annotations
Check failure on line 327 in tests/NodaMoney.Tests/MoneyBinaryOperatorsSpec.cs
github-actions / unittests
NodaMoney.Tests.MoneyBinaryOperatorsSpec.GivenIWantToMultiplyAndDivideMoney ► WhenUsingDivisionMethodWithMoney_ThenResultShouldBeRatio(value1: 100.12, value2: 3, expected: 33.373333333333333333333333333)
Failed test found in:
./artifacts/_fv-az1913-517_2025-01-11_12_58_16.trx
./artifacts/_fv-az1913-517_2025-01-11_12_58_16[1].trx
Error:
Expected result to be 33.373333333333333333333333333M, but found 33.333333333333333333333333333M (difference of -0.040000000000000000000000000).
Raw output
Expected result to be 33.373333333333333333333333333M, but found 33.333333333333333333333333333M (difference of -0.040000000000000000000000000).
at FluentAssertions.Execution.XUnit2TestFramework.Throw(String message)
at FluentAssertions.Execution.TestFrameworkProvider.Throw(String message)
at FluentAssertions.Execution.DefaultAssertionStrategy.HandleFailure(String message)
at FluentAssertions.Execution.AssertionScope.FailWith(Func`1 failReasonFunc)
at FluentAssertions.Execution.AssertionScope.FailWith(Func`1 failReasonFunc)
at FluentAssertions.Execution.AssertionScope.FailWith(String message, Object[] args)
at FluentAssertions.Numeric.NumericAssertions`2.Be(T expected, String because, Object[] becauseArgs)
at NodaMoney.Tests.MoneyBinaryOperatorsSpec.GivenIWantToMultiplyAndDivideMoney.WhenUsingDivisionMethodWithMoney_ThenResultShouldBeRatio(Decimal value1, Decimal value2, Decimal expected) in /home/runner/work/NodaMoney/NodaMoney/tests/NodaMoney.Tests/MoneyBinaryOperatorsSpec.cs:line 327
at InvokeStub_GivenIWantToMultiplyAndDivideMoney.WhenUsingDivisionMethodWithMoney_ThenResultShouldBeRatio(Object, Span`1)
at System.Reflection.MethodBaseInvoker.InvokeWithFewArgs(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
Check failure on line 316 in tests/NodaMoney.Tests/MoneyBinaryOperatorsSpec.cs
github-actions / unittests
NodaMoney.Tests.MoneyBinaryOperatorsSpec.GivenIWantToMultiplyAndDivideMoney ► WhenUsingDivisionOperatorWithMoney_ThenResultShouldBeRatio(value1: 100.12, value2: 3, expected: 33.373333333333333333333333333)
Failed test found in:
./artifacts/_fv-az1913-517_2025-01-11_12_58_16.trx
./artifacts/_fv-az1913-517_2025-01-11_12_58_16[1].trx
Error:
Expected result to be 33.373333333333333333333333333M, but found 33.333333333333333333333333333M (difference of -0.040000000000000000000000000).
Raw output
Expected result to be 33.373333333333333333333333333M, but found 33.333333333333333333333333333M (difference of -0.040000000000000000000000000).
at FluentAssertions.Execution.XUnit2TestFramework.Throw(String message)
at FluentAssertions.Execution.TestFrameworkProvider.Throw(String message)
at FluentAssertions.Execution.DefaultAssertionStrategy.HandleFailure(String message)
at FluentAssertions.Execution.AssertionScope.FailWith(Func`1 failReasonFunc)
at FluentAssertions.Execution.AssertionScope.FailWith(Func`1 failReasonFunc)
at FluentAssertions.Execution.AssertionScope.FailWith(String message, Object[] args)
at FluentAssertions.Numeric.NumericAssertions`2.Be(T expected, String because, Object[] becauseArgs)
at NodaMoney.Tests.MoneyBinaryOperatorsSpec.GivenIWantToMultiplyAndDivideMoney.WhenUsingDivisionOperatorWithMoney_ThenResultShouldBeRatio(Decimal value1, Decimal value2, Decimal expected) in /home/runner/work/NodaMoney/NodaMoney/tests/NodaMoney.Tests/MoneyBinaryOperatorsSpec.cs:line 316
at System.RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments, Signature sig, Boolean isConstructor)
at System.Reflection.MethodBaseInvoker.InvokeDirectByRefWithFewArgs(Object obj, Span`1 copyOfArgs, BindingFlags invokeAttr)
Check failure on line 220 in tests/NodaMoney.Tests/MoneyBinaryOperatorsSpec.cs
github-actions / unittests
NodaMoney.Tests.MoneyBinaryOperatorsSpec.GivenIWantToMultiplyAndDivideMoney ► WhenUsingMultiplyMethodWithDecimal_ThenMoneyShouldBeMultiplied(value: -100.12, multiplier: 5, expected: -500.60)
Failed test found in:
./artifacts/_fv-az1913-517_2025-01-11_12_58_16.trx
./artifacts/_fv-az1913-517_2025-01-11_12_58_16[1].trx
Error:
Expected result to be equal to (¤501), but found (¤500).
Raw output
Expected result to be equal to (¤501), but found (¤500).
at FluentAssertions.Execution.XUnit2TestFramework.Throw(String message)
at FluentAssertions.Execution.TestFrameworkProvider.Throw(String message)
at FluentAssertions.Execution.DefaultAssertionStrategy.HandleFailure(String message)
at FluentAssertions.Execution.AssertionScope.FailWith(Func`1 failReasonFunc)
at FluentAssertions.Execution.AssertionScope.FailWith(Func`1 failReasonFunc)
at FluentAssertions.Execution.AssertionScope.FailWith(String message, Object[] args)
at FluentAssertions.Numeric.ComparableTypeAssertions`2.Be(T expected, String because, Object[] becauseArgs)
at NodaMoney.Tests.MoneyBinaryOperatorsSpec.GivenIWantToMultiplyAndDivideMoney.WhenUsingMultiplyMethodWithDecimal_ThenMoneyShouldBeMultiplied(Decimal value, Decimal multiplier, Decimal expected) in /home/runner/work/NodaMoney/NodaMoney/tests/NodaMoney.Tests/MoneyBinaryOperatorsSpec.cs:line 220
at InvokeStub_GivenIWantToMultiplyAndDivideMoney.WhenUsingMultiplyMethodWithDecimal_ThenMoneyShouldBeMultiplied(Object, Span`1)
at System.Reflection.MethodBaseInvoker.InvokeWithFewArgs(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
Check failure on line 220 in tests/NodaMoney.Tests/MoneyBinaryOperatorsSpec.cs
github-actions / unittests
NodaMoney.Tests.MoneyBinaryOperatorsSpec.GivenIWantToMultiplyAndDivideMoney ► WhenUsingMultiplyMethodWithDecimal_ThenMoneyShouldBeMultiplied(value: 100.12, multiplier: 5, expected: 500.60)
Failed test found in:
./artifacts/_fv-az1913-517_2025-01-11_12_58_16.trx
./artifacts/_fv-az1913-517_2025-01-11_12_58_16[1].trx
Error:
Expected result to be equal to ¤501, but found ¤500.
Raw output
Expected result to be equal to ¤501, but found ¤500.
at FluentAssertions.Execution.XUnit2TestFramework.Throw(String message)
at FluentAssertions.Execution.TestFrameworkProvider.Throw(String message)
at FluentAssertions.Execution.DefaultAssertionStrategy.HandleFailure(String message)
at FluentAssertions.Execution.AssertionScope.FailWith(Func`1 failReasonFunc)
at FluentAssertions.Execution.AssertionScope.FailWith(Func`1 failReasonFunc)
at FluentAssertions.Execution.AssertionScope.FailWith(String message, Object[] args)
at FluentAssertions.Numeric.ComparableTypeAssertions`2.Be(T expected, String because, Object[] becauseArgs)
at NodaMoney.Tests.MoneyBinaryOperatorsSpec.GivenIWantToMultiplyAndDivideMoney.WhenUsingMultiplyMethodWithDecimal_ThenMoneyShouldBeMultiplied(Decimal value, Decimal multiplier, Decimal expected) in /home/runner/work/NodaMoney/NodaMoney/tests/NodaMoney.Tests/MoneyBinaryOperatorsSpec.cs:line 220
at InvokeStub_GivenIWantToMultiplyAndDivideMoney.WhenUsingMultiplyMethodWithDecimal_ThenMoneyShouldBeMultiplied(Object, Span`1)
at System.Reflection.MethodBaseInvoker.InvokeWithFewArgs(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
Check failure on line 276 in tests/NodaMoney.Tests/MoneyBinaryOperatorsSpec.cs
github-actions / unittests
NodaMoney.Tests.MoneyBinaryOperatorsSpec.GivenIWantToMultiplyAndDivideMoney ► WhenUsingMultiplyMethodWithInteger_ThenMoneyShouldBeMultiplied(value: -100.12, multiplier: 5, expected: -500.60)
Failed test found in:
./artifacts/_fv-az1913-517_2025-01-11_12_58_16.trx
./artifacts/_fv-az1913-517_2025-01-11_12_58_16[1].trx
Error:
Expected result to be equal to (¤501), but found (¤500).
Raw output
Expected result to be equal to (¤501), but found (¤500).
at FluentAssertions.Execution.XUnit2TestFramework.Throw(String message)
at FluentAssertions.Execution.TestFrameworkProvider.Throw(String message)
at FluentAssertions.Execution.DefaultAssertionStrategy.HandleFailure(String message)
at FluentAssertions.Execution.AssertionScope.FailWith(Func`1 failReasonFunc)
at FluentAssertions.Execution.AssertionScope.FailWith(Func`1 failReasonFunc)
at FluentAssertions.Execution.AssertionScope.FailWith(String message, Object[] args)
at FluentAssertions.Numeric.ComparableTypeAssertions`2.Be(T expected, String because, Object[] becauseArgs)
at NodaMoney.Tests.MoneyBinaryOperatorsSpec.GivenIWantToMultiplyAndDivideMoney.WhenUsingMultiplyMethodWithInteger_ThenMoneyShouldBeMultiplied(Decimal value, Int32 multiplier, Decimal expected) in /home/runner/work/NodaMoney/NodaMoney/tests/NodaMoney.Tests/MoneyBinaryOperatorsSpec.cs:line 276
at InvokeStub_GivenIWantToMultiplyAndDivideMoney.WhenUsingMultiplyMethodWithInteger_ThenMoneyShouldBeMultiplied(Object, Span`1)
at System.Reflection.MethodBaseInvoker.InvokeWithFewArgs(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
Check failure on line 276 in tests/NodaMoney.Tests/MoneyBinaryOperatorsSpec.cs
github-actions / unittests
NodaMoney.Tests.MoneyBinaryOperatorsSpec.GivenIWantToMultiplyAndDivideMoney ► WhenUsingMultiplyMethodWithInteger_ThenMoneyShouldBeMultiplied(value: 100.12, multiplier: 5, expected: 500.60)
Failed test found in:
./artifacts/_fv-az1913-517_2025-01-11_12_58_16.trx
./artifacts/_fv-az1913-517_2025-01-11_12_58_16[1].trx
Error:
Expected result to be equal to ¤501, but found ¤500.
Raw output
Expected result to be equal to ¤501, but found ¤500.
at FluentAssertions.Execution.XUnit2TestFramework.Throw(String message)
at FluentAssertions.Execution.TestFrameworkProvider.Throw(String message)
at FluentAssertions.Execution.DefaultAssertionStrategy.HandleFailure(String message)
at FluentAssertions.Execution.AssertionScope.FailWith(Func`1 failReasonFunc)
at FluentAssertions.Execution.AssertionScope.FailWith(Func`1 failReasonFunc)
at FluentAssertions.Execution.AssertionScope.FailWith(String message, Object[] args)
at FluentAssertions.Numeric.ComparableTypeAssertions`2.Be(T expected, String because, Object[] becauseArgs)
at NodaMoney.Tests.MoneyBinaryOperatorsSpec.GivenIWantToMultiplyAndDivideMoney.WhenUsingMultiplyMethodWithInteger_ThenMoneyShouldBeMultiplied(Decimal value, Int32 multiplier, Decimal expected) in /home/runner/work/NodaMoney/NodaMoney/tests/NodaMoney.Tests/MoneyBinaryOperatorsSpec.cs:line 276
at InvokeStub_GivenIWantToMultiplyAndDivideMoney.WhenUsingMultiplyMethodWithInteger_ThenMoneyShouldBeMultiplied(Object, Span`1)
at System.Reflection.MethodBaseInvoker.InvokeWithFewArgs(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
Check failure on line 207 in tests/NodaMoney.Tests/MoneyBinaryOperatorsSpec.cs
github-actions / unittests
NodaMoney.Tests.MoneyBinaryOperatorsSpec.GivenIWantToMultiplyAndDivideMoney ► WhenUsingMultiplyOperatorWithDecimal_ThenMoneyShouldBeMultiplied(value: -100.12, multiplier: 5, expected: -500.60)
Failed test found in:
./artifacts/_fv-az1913-517_2025-01-11_12_58_16.trx
./artifacts/_fv-az1913-517_2025-01-11_12_58_16[1].trx
Error:
Expected result1 to be equal to (¤501), but found (¤500).
Raw output
Expected result1 to be equal to (¤501), but found (¤500).
at FluentAssertions.Execution.XUnit2TestFramework.Throw(String message)
at FluentAssertions.Execution.TestFrameworkProvider.Throw(String message)
at FluentAssertions.Execution.DefaultAssertionStrategy.HandleFailure(String message)
at FluentAssertions.Execution.AssertionScope.FailWith(Func`1 failReasonFunc)
at FluentAssertions.Execution.AssertionScope.FailWith(Func`1 failReasonFunc)
at FluentAssertions.Execution.AssertionScope.FailWith(String message, Object[] args)
at FluentAssertions.Numeric.ComparableTypeAssertions`2.Be(T expected, String because, Object[] becauseArgs)
at NodaMoney.Tests.MoneyBinaryOperatorsSpec.GivenIWantToMultiplyAndDivideMoney.WhenUsingMultiplyOperatorWithDecimal_ThenMoneyShouldBeMultiplied(Decimal value, Decimal multiplier, Decimal expected) in /home/runner/work/NodaMoney/NodaMoney/tests/NodaMoney.Tests/MoneyBinaryOperatorsSpec.cs:line 207
at InvokeStub_GivenIWantToMultiplyAndDivideMoney.WhenUsingMultiplyOperatorWithDecimal_ThenMoneyShouldBeMultiplied(Object, Span`1)
at System.Reflection.MethodBaseInvoker.InvokeWithFewArgs(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
Check failure on line 207 in tests/NodaMoney.Tests/MoneyBinaryOperatorsSpec.cs
github-actions / unittests
NodaMoney.Tests.MoneyBinaryOperatorsSpec.GivenIWantToMultiplyAndDivideMoney ► WhenUsingMultiplyOperatorWithDecimal_ThenMoneyShouldBeMultiplied(value: 100.12, multiplier: 5, expected: 500.60)
Failed test found in:
./artifacts/_fv-az1913-517_2025-01-11_12_58_16.trx
./artifacts/_fv-az1913-517_2025-01-11_12_58_16[1].trx
Error:
Expected result1 to be equal to ¤501, but found ¤500.
Raw output
Expected result1 to be equal to ¤501, but found ¤500.
at FluentAssertions.Execution.XUnit2TestFramework.Throw(String message)
at FluentAssertions.Execution.TestFrameworkProvider.Throw(String message)
at FluentAssertions.Execution.DefaultAssertionStrategy.HandleFailure(String message)
at FluentAssertions.Execution.AssertionScope.FailWith(Func`1 failReasonFunc)
at FluentAssertions.Execution.AssertionScope.FailWith(Func`1 failReasonFunc)
at FluentAssertions.Execution.AssertionScope.FailWith(String message, Object[] args)
at FluentAssertions.Numeric.ComparableTypeAssertions`2.Be(T expected, String because, Object[] becauseArgs)
at NodaMoney.Tests.MoneyBinaryOperatorsSpec.GivenIWantToMultiplyAndDivideMoney.WhenUsingMultiplyOperatorWithDecimal_ThenMoneyShouldBeMultiplied(Decimal value, Decimal multiplier, Decimal expected) in /home/runner/work/NodaMoney/NodaMoney/tests/NodaMoney.Tests/MoneyBinaryOperatorsSpec.cs:line 207
at InvokeStub_GivenIWantToMultiplyAndDivideMoney.WhenUsingMultiplyOperatorWithDecimal_ThenMoneyShouldBeMultiplied(Object, Span`1)
at System.Reflection.MethodBaseInvoker.InvokeWithFewArgs(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
Check failure on line 263 in tests/NodaMoney.Tests/MoneyBinaryOperatorsSpec.cs
github-actions / unittests
NodaMoney.Tests.MoneyBinaryOperatorsSpec.GivenIWantToMultiplyAndDivideMoney ► WhenUsingMultiplyOperatorWithInteger_ThenMoneyShouldBeMultiplied(value: -100.12, multiplier: 5, expected: -500.60)
Failed test found in:
./artifacts/_fv-az1913-517_2025-01-11_12_58_16.trx
./artifacts/_fv-az1913-517_2025-01-11_12_58_16[1].trx
Error:
Expected result1 to be equal to (¤501), but found (¤500).
Raw output
Expected result1 to be equal to (¤501), but found (¤500).
at FluentAssertions.Execution.XUnit2TestFramework.Throw(String message)
at FluentAssertions.Execution.TestFrameworkProvider.Throw(String message)
at FluentAssertions.Execution.DefaultAssertionStrategy.HandleFailure(String message)
at FluentAssertions.Execution.AssertionScope.FailWith(Func`1 failReasonFunc)
at FluentAssertions.Execution.AssertionScope.FailWith(Func`1 failReasonFunc)
at FluentAssertions.Execution.AssertionScope.FailWith(String message, Object[] args)
at FluentAssertions.Numeric.ComparableTypeAssertions`2.Be(T expected, String because, Object[] becauseArgs)
at NodaMoney.Tests.MoneyBinaryOperatorsSpec.GivenIWantToMultiplyAndDivideMoney.WhenUsingMultiplyOperatorWithInteger_ThenMoneyShouldBeMultiplied(Decimal value, Int32 multiplier, Decimal expected) in /home/runner/work/NodaMoney/NodaMoney/tests/NodaMoney.Tests/MoneyBinaryOperatorsSpec.cs:line 263
at InvokeStub_GivenIWantToMultiplyAndDivideMoney.WhenUsingMultiplyOperatorWithInteger_ThenMoneyShouldBeMultiplied(Object, Span`1)
at System.Reflection.MethodBaseInvoker.InvokeWithFewArgs(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
Check failure on line 263 in tests/NodaMoney.Tests/MoneyBinaryOperatorsSpec.cs
github-actions / unittests
NodaMoney.Tests.MoneyBinaryOperatorsSpec.GivenIWantToMultiplyAndDivideMoney ► WhenUsingMultiplyOperatorWithInteger_ThenMoneyShouldBeMultiplied(value: 100.12, multiplier: 5, expected: 500.60)
Failed test found in:
./artifacts/_fv-az1913-517_2025-01-11_12_58_16.trx
./artifacts/_fv-az1913-517_2025-01-11_12_58_16[1].trx
Error:
Expected result1 to be equal to ¤501, but found ¤500.
Raw output
Expected result1 to be equal to ¤501, but found ¤500.
at FluentAssertions.Execution.XUnit2TestFramework.Throw(String message)
at FluentAssertions.Execution.TestFrameworkProvider.Throw(String message)
at FluentAssertions.Execution.DefaultAssertionStrategy.HandleFailure(String message)
at FluentAssertions.Execution.AssertionScope.FailWith(Func`1 failReasonFunc)
at FluentAssertions.Execution.AssertionScope.FailWith(Func`1 failReasonFunc)
at FluentAssertions.Execution.AssertionScope.FailWith(String message, Object[] args)
at FluentAssertions.Numeric.ComparableTypeAssertions`2.Be(T expected, String because, Object[] becauseArgs)
at NodaMoney.Tests.MoneyBinaryOperatorsSpec.GivenIWantToMultiplyAndDivideMoney.WhenUsingMultiplyOperatorWithInteger_ThenMoneyShouldBeMultiplied(Decimal value, Int32 multiplier, Decimal expected) in /home/runner/work/NodaMoney/NodaMoney/tests/NodaMoney.Tests/MoneyBinaryOperatorsSpec.cs:line 263
at InvokeStub_GivenIWantToMultiplyAndDivideMoney.WhenUsingMultiplyOperatorWithInteger_ThenMoneyShouldBeMultiplied(Object, Span`1)
at System.Reflection.MethodBaseInvoker.InvokeWithFewArgs(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
Check failure on line 308 in tests/NodaMoney.Tests/MoneySpec.cs
github-actions / unittests
NodaMoney.Tests.MoneySpec.GivenIWantMoneyWithDifferentRounding ► WhenOnlyAmount_ThenItShouldRoundUp
Failed test found in:
./artifacts/_fv-az1913-517_2025-01-11_12_58_16.trx
./artifacts/_fv-az1913-517_2025-01-11_12_58_16[1].trx
Error:
Expected defaultRounding.Amount to be 0.52M, but found 1M (difference of 0.48).
Raw output
Expected defaultRounding.Amount to be 0.52M, but found 1M (difference of 0.48).
at FluentAssertions.Execution.XUnit2TestFramework.Throw(String message)
at FluentAssertions.Execution.TestFrameworkProvider.Throw(String message)
at FluentAssertions.Execution.DefaultAssertionStrategy.HandleFailure(String message)
at FluentAssertions.Execution.AssertionScope.FailWith(Func`1 failReasonFunc)
at FluentAssertions.Execution.AssertionScope.FailWith(Func`1 failReasonFunc)
at FluentAssertions.Execution.AssertionScope.FailWith(String message, Object[] args)
at FluentAssertions.Numeric.NumericAssertions`2.Be(T expected, String because, Object[] becauseArgs)
at NodaMoney.Tests.MoneySpec.GivenIWantMoneyWithDifferentRounding.WhenOnlyAmount_ThenItShouldRoundUp() in /home/runner/work/NodaMoney/NodaMoney/tests/NodaMoney.Tests/MoneySpec.cs:line 308
at System.RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments, Signature sig, Boolean isConstructor)
at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)