Skip to content

Remove branch specification from CI workflow #1

Remove branch specification from CI workflow

Remove branch specification from CI workflow #1

GitHub Actions / unittests failed Dec 4, 2024 in 1s

2252 passed, 342 failed and 10 skipped

Tests failed

Report Passed Failed Skipped Time
./artifacts/_fv-az1771-126_2024-12-04_04_36_40.trx 565✅ 82❌ 4⚪ 7s
./artifacts/_fv-az1771-126_2024-12-04_04_36_42.trx 565✅ 82❌ 4⚪ 9s
./artifacts/_fv-az1771-126_2024-12-04_04_36_43.trx 568✅ 82❌ 1⚪ 9s
./artifacts/_fv-az1771-126_2024-12-04_04_36_45.trx 554✅ 96❌ 1⚪ 14s

❌ ./artifacts/_fv-az1771-126_2024-12-04_04_36_40.trx

651 tests were completed in 7s with 565 passed, 82 failed and 4 skipped.

Test suite Passed Failed Skipped Time
NodaMoney.Tests.CurrencyBuilderSpec.GivenIWantToCreateCustomCurrency 5✅ 6❌ 10ms
NodaMoney.Tests.CurrencyBuilderSpec.GivenIWantToReplaceIsoCurrencyWithOwnVersion 1❌ 1ms
NodaMoney.Tests.CurrencyBuilderSpec.GivenIWantToUnregisterCurrency 4✅ 3❌ 16ms
NodaMoney.Tests.CurrencyInfoSpec.GivenIWantCurrencyFromRegionOrCulture 8✅ 102ms
NodaMoney.Tests.CurrencyInfoSpec.GivenIWantCurrencyInfoFromIsoCode 4✅ 2ms
NodaMoney.Tests.CurrencyInfoSpec.GivenIWantCurrentCurrency 3✅ 1ms
NodaMoney.Tests.CurrencyInfoSpec.GivenIWantToInitiateInternallyACurrency 3✅ 3❌ 37ms
NodaMoney.Tests.CurrencyInfoSpec.GivenIWantToKnowAllCurrencies 1✅ 4ms
NodaMoney.Tests.CurrencyInfoSpec.GivenIWantToKnowSmallestPossibleAmountOfCurrency 5✅ 2ms
NodaMoney.Tests.CurrencyInfoSpec.GivenIWantToValidateTheDateRange 3✅ 9ms
NodaMoney.Tests.CurrencySpec.GivenIWantCurrencyFromIsoCode 4✅ 4ms
NodaMoney.Tests.CurrencySpec.GivenIWantDefaultCurrency 2✅ 3ms
NodaMoney.Tests.CurrencySpec.GivenIWantToCompareCurrencies 4✅ 8ms
NodaMoney.Tests.CurrencySpec.GivenIWantToDeconstructCurrency 1✅ 21ms
NodaMoney.Tests.CurrencyUnitSpec.CreateCurrencyV2 11✅ 86ms
NodaMoney.Tests.ExchangeRateSpec.GivenIWantToCompareExchangeRates 5✅ 1ms
NodaMoney.Tests.ExchangeRateSpec.GivenIWantToConvertExchangeRateToString 2✅ 1ms
NodaMoney.Tests.ExchangeRateSpec.GivenIWantToConvertMoney 3✅ 40ms
NodaMoney.Tests.ExchangeRateSpec.GivenIWantToCreateAnExchangeRateWithCurrencies 9✅ 3ms
NodaMoney.Tests.ExchangeRateSpec.GivenIWantToCreateAnExchangeRateWithCurrenciesAsStrings 6✅ 3ms
NodaMoney.Tests.ExchangeRateSpec.GivenIWantToDeconstructExchangeRate 1✅ 1ms
NodaMoney.Tests.ExchangeRateSpec.GivenIWantToParseACurrencyPair 6✅ 17ms
NodaMoney.Tests.ExchangeRateSpec.GivenIWantToTryParseACurrencyPair 6✅ 4ms
NodaMoney.Tests.Extensions.MoneyExtensionsSafeDivideSpec.GivenIWantToSafelyDivideMoney 6✅ 64ms
NodaMoney.Tests.Iso4127Spec.GivenIWantToCompareNodaMoneyWithIso4127 2✅ 2❌ 1⚪ 24ms
NodaMoney.Tests.MoneyBinaryOperatorsSpec.GivenIWantToAddAndSubtractMoney 48✅ 17ms
NodaMoney.Tests.MoneyBinaryOperatorsSpec.GivenIWantToAddAndSubtractMoneyWithDecimal 24✅ 19ms
NodaMoney.Tests.MoneyBinaryOperatorsSpec.GivenIWantToMultiplyAndDivideMoney 34✅ 10❌ 73ms
NodaMoney.Tests.MoneyComparableSpec.GivenIWantToCompareMoney 10✅ 25ms
NodaMoney.Tests.MoneyConvertibleSpec.GivenIWantToCastNumericTypeToMoneyWithImplicitCurrencyFromTheCurrentCulture 11✅ 8ms
NodaMoney.Tests.MoneyConvertibleSpec.GivenIWantToConvertMoney 3✅ 30ms
NodaMoney.Tests.MoneyConvertibleSpec.GivenIWantToExplicitCastMoneyToNumericType 7✅ 28ms
NodaMoney.Tests.MoneyFiveMostUsedCurrenciesSpec.GivenIWantDollars 6✅ 2ms
NodaMoney.Tests.MoneyFiveMostUsedCurrenciesSpec.GivenIWantEuros 6✅ 2ms
NodaMoney.Tests.MoneyFiveMostUsedCurrenciesSpec.GivenIWantPonds 6✅ 19ms
NodaMoney.Tests.MoneyFiveMostUsedCurrenciesSpec.GivenIWantYens 6✅ 7ms
NodaMoney.Tests.MoneyFiveMostUsedCurrenciesSpec.GivenIWantYuan 6✅ 2ms
NodaMoney.Tests.MoneyFormattableSpec.GivenIWantMoneyAsString 12✅ 15ms
NodaMoney.Tests.MoneyFormattableSpec.GivenIWantMoneyAsStringWithCurrencyCode 8✅ 7ms
NodaMoney.Tests.MoneyFormattableSpec.GivenIWantMoneyAsStringWithCurrencySymbol 8✅ 7ms
NodaMoney.Tests.MoneyFormattableSpec.GivenIWantMoneyAsStringWithEnglishCurrencyName 7✅ 22ms
NodaMoney.Tests.MoneyParsableSpec.GivenIWantToParseExplicitCurrency 12✅ 13ms
NodaMoney.Tests.MoneyParsableSpec.GivenIWantToParseImplicitCurrency 13✅ 51ms
NodaMoney.Tests.MoneyParsableSpec.GivenIWantToParseMoneyWithMoreDecimalPossibleForCurrency 2✅ 1ms
NodaMoney.Tests.MoneyParsableSpec.GivenIWantToParseNegativeMoney 6✅ 4ms
NodaMoney.Tests.MoneyParsableSpec.GivenIWantToTryParseExplicitCurrency 8✅ 11ms
NodaMoney.Tests.MoneyParsableSpec.GivenIWantToTryParseImplicitCurrency 11✅ 12ms
NodaMoney.Tests.MoneySpec.GivenIWantDefaultMoney 1✅ 5ms
NodaMoney.Tests.MoneySpec.GivenIWantMoneyFromNumericTypeAndAnExplicitCurrencyObject 16✅ 2ms
NodaMoney.Tests.MoneySpec.GivenIWantMoneyFromNumericTypeAndAnExplicitIsoCurrencyCode 12✅ 3ms
NodaMoney.Tests.MoneySpec.GivenIWantMoneyImplicit 4✅ 24ms
NodaMoney.Tests.MoneySpec.GivenIWantMoneyInMalagasyAriaryWhichHasFiveSubunits 29✅ 1ms
NodaMoney.Tests.MoneySpec.GivenIWantMoneyWithDifferentRounding 1✅ 1❌ 174ms
NodaMoney.Tests.MoneySpec.GivenIWantToCreateMoneyWithDoubleValue 2✅ 2❌ 2ms
NodaMoney.Tests.MoneySpec.GivenIWantToDeconstructMoney 1✅ 0ms
NodaMoney.Tests.Serialization.BinaryFormatterSpec.GivenIWantToSerializeMoney 3⚪ 3ms
NodaMoney.Tests.Serialization.DataContractSerializerSpec.GivenIWantToSerializeMoney 3✅ 93ms
NodaMoney.Tests.Serialization.NewtonsoftJsonSerializerSpec.GivenIWantToDeserializeMoney 31✅ 8❌ 93ms
NodaMoney.Tests.Serialization.NewtonsoftJsonSerializerSpec.GivenIWantToSerializeCurrency 4✅ 18ms
NodaMoney.Tests.Serialization.NewtonsoftJsonSerializerSpec.GivenIWantToSerializeMoney 6✅ 18❌ 17ms
NodaMoney.Tests.Serialization.RavenDbSerializationSpec.GivenIWantToStoreInRavenDb 2❌ 5s
NodaMoney.Tests.Serialization.SystemTextJsonSerializationSpec.GivenIWantToDeserializeMoney 31✅ 8❌ 90ms
NodaMoney.Tests.Serialization.SystemTextJsonSerializationSpec.GivenIWantToSerializeCurrency 4✅ 35ms
NodaMoney.Tests.Serialization.SystemTextJsonSerializationSpec.GivenIWantToSerializeMoney 6✅ 18❌ 72ms
NodaMoney.Tests.Serialization.XmlSerializationSpec.GivenIWantToDeserializeMoney 23✅ 274ms
NodaMoney.Tests.Serialization.XmlSerializationSpec.GivenIWantToSerializeCurrencyWithXmlSerializer 3✅ 52ms
NodaMoney.Tests.Serialization.XmlSerializationSpec.GivenIWantToSerializeMoney 20✅ 49ms
NodaMoney.Tests.UnaryOperatorsSpec.GivenIWantToAddAndSubtractMoneyUnary 2✅ 1ms
NodaMoney.Tests.UnaryOperatorsSpec.GivenIWantToIncrementAndDecrementMoneyUnary 8✅ 1ms

❌ NodaMoney.Tests.CurrencyBuilderSpec.GivenIWantToCreateCustomCurrency

❌ WhenBuildBitCoin_ThenItShouldSucceedButNotBeRegistered
	NodaMoney.InvalidCurrencyException : BTD is unknown currency code!
✅ WhenCodeIsEmpty_ThenThrowException
✅ WhenCodeIsNull_ThenThrowException
✅ WhenFromExistingCurrency_ThenThisShouldSucceed
✅ WhenNamespaceIsEmpty_ThenThrowException
✅ WhenNamespaceIsNull_ThenThrowException
❌ WhenRegisterAsSimpleAsPossible_ThenShouldBeAvailableWithDefaults
	NodaMoney.InvalidCurrencyException : The currency BTA is already registered in ISO-4217.
❌ WhenRegisterBitCoin_ThenShouldBeAvailableByExplicitNamespace
	Expected bitcoin.Symbol to be "฿", but "₿" differs near "₿" (index 0).
❌ WhenRegisterBitCoinInIsoNamespace_ThenShouldBeAvailable
	NodaMoney.InvalidCurrencyException : The currency BTB is already registered in ISO-4217.
❌ WhenRegisterExistingCurrency_ThenThrowException
	Expected a <NodaMoney.InvalidCurrencyException> to be thrown, but no exception was thrown.
❌ WhenSymbolIsEmpty_ThenSymbolMustBeDefaultCurrencySign
	NodaMoney.InvalidCurrencyException : The currency BTH is already registered in ISO-4217.

❌ NodaMoney.Tests.CurrencyBuilderSpec.GivenIWantToReplaceIsoCurrencyWithOwnVersion

❌ WhenReplacingEuroWithCustom_ThenThisShouldSucceed
	NodaMoney.InvalidCurrencyException : Currency { Code = PAB, IsIso4217 = True, MinimalAmount = 0.01, Symbol = B/. } is unknown currency code!

❌ NodaMoney.Tests.CurrencyBuilderSpec.GivenIWantToUnregisterCurrency

✅ WhenCodeIsEmpty_ThenThrowException
✅ WhenCodeIsNull_ThenThrowException
❌ WhenCurrencyDoesNotExist_ThenThrowException
	Expected exception message to match the equivalent of "*specifies a currency that is not found*", but "ABC is unknown currency code!" does not.
	
✅ WhenNamespaceIsEmpty_ThenThrowException
✅ WhenNamespaceIsNull_ThenThrowException
❌ WhenUnregisterCustomCurrency_ThenThisMustSucceed
	NodaMoney.InvalidCurrencyException : The currency XYZ is already registered in virtual.
❌ WhenUnregisterIsoCurrency_ThenThisMustSucceed
	Expected a <NodaMoney.InvalidCurrencyException> to be thrown, but no exception was thrown.

❌ NodaMoney.Tests.CurrencyInfoSpec.GivenIWantToInitiateInternallyACurrency

❌ WhenCodeIsNull_ThenCreatingShouldThrow
	Expected a <System.ArgumentException> to be thrown, but no exception was thrown.
✅ WhenDecimalDigitIsLowerThenMinusOne_ThenCreatingShouldThrow
❌ WhenEnglishNameIsNull_ThenEnglishNameShouldDefaultToEmpty
	Expected eur.EnglishName to be "", but found <null>.
✅ WhenNumberIsNull_ThenNumberShouldDefaultToEmpty
✅ WhenParamsAreCorrect_ThenCreatingShouldSucceed
❌ WhenSignIsNull_ThenSignShouldDefaultToGenericCurrencySign
	Expected eur.Symbol to be "¤", but found <null>.

❌ NodaMoney.Tests.Iso4127Spec.GivenIWantToCompareNodaMoneyWithIso4127

⚪ WhenCompareCurrencies_ThenTheyShouldHaveTheSameEnglishName
✅ WhenCompareCurrencies_ThenTheyShouldHaveTheSameNumber
✅ WhenCompareCurrencies_ThenTheyShouldHaveTheSameNumberOfMinorDigits
❌ WhenCurrenciesInIso4127List_ThenShouldAlsoExistInNodaMoney
	Expected missingCurrencies to contain 0 item(s) because expected defined currencies to contain ZWG Zimbabwe Gold, but found 1: 
	{
	    NodaMoney.Tests.Iso4127Spec.Iso4127Currency
	    {
	        CountryName = "ZIMBABWE", 
	        Currency = "ZWG", 
	        CurrencyMinorUnits = "2", 
	        CurrencyName = "Zimbabwe Gold", 
	        CurrencyNumber = "924"
	    }
	}.
❌ WhenCurrenciesInRegistryAndCurrent_ThenTheyShouldAlsoBeDefinedInTheIsoList
	Expected notDefinedCurrencies to contain 0 item(s) because did not expect currencies to contain ZWL, but found 1: 
	{
	    NodaMoney.CurrencyInfo
	    {
	        Code = "ZWL", 
	        DecimalDigits = 2, 
	        EnglishName = "Zimbabwean dollar", 
	        ExpiredOn = <null>, 
	        IntroducedOn = <null>, 
	        IsHistoric = False, 
	        IsIso4217 = True, 
	        MinimalAmount = 0.01M, 
	        MinorUnit = MinorUnit.Two {value: 2}, 
	        MinorUnitAsExponentOfBase10 = 2.0, 
	        MinorUnits = 100.0, 
	        Number = 932s, 
	        NumericCode = "932", 
	        Symbol = "$"
	    }
	}.

❌ 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

✅ WhenDeserializing_ThenThisShouldSucceed(json: "{ \"amount\": \"234.25\", \"currency\": \"EUR;ISO-"···, expected: €234.25)
✅ WhenDeserializing_ThenThisShouldSucceed(json: "{ \"Amount\": \"234.25\", \"Currency\": \"EUR;ISO-"···, expected: €234.25)
✅ WhenDeserializing_ThenThisShouldSucceed(json: "{ \"amount\": \"234.25\", \"currency\": \"EUR\" }", expected: €234.25)
✅ WhenDeserializing_ThenThisShouldSucceed(json: "{ \"Amount\": \"234.25\", \"Currency\": \"EUR\" }", expected: €234.25)
✅ WhenDeserializing_ThenThisShouldSucceed(json: "{ \"Amount\": 234.25, \"Currency\": \"EUR;\" }", expected: €234.25)
✅ WhenDeserializing_ThenThisShouldSucceed(json: "{ \"amount\": 234.25, \"currency\": \"EUR;ISO-4217"···, expected: €234.25)
✅ WhenDeserializing_ThenThisShouldSucceed(json: "{ \"Amount\": 234.25, \"Currency\": \"EUR;ISO-4217"···, expected: €234.25)
✅ WhenDeserializing_ThenThisShouldSucceed(json: "{ \"amount\": 234.25, \"currency\": \"EUR\" }", expected: €234.25)
✅ WhenDeserializing_ThenThisShouldSucceed(json: "{ \"Amount\": 234.25, \"Currency\": \"EUR\" }", expected: €234.25)
✅ WhenDeserializing_ThenThisShouldSucceed(json: "{ \"currency\": \"EUR;ISO-4217\", \"amount\": \"23"···, expected: €234.25)
✅ WhenDeserializing_ThenThisShouldSucceed(json: "{ \"Currency\": \"EUR;ISO-4217\", \"Amount\": \"23"···, expected: €234.25)
✅ WhenDeserializing_ThenThisShouldSucceed(json: "{ \"currency\": \"EUR;ISO-4217\", \"amount\": 234."···, expected: €234.25)
✅ WhenDeserializing_ThenThisShouldSucceed(json: "{ \"Currency\": \"EUR;ISO-4217\", \"Amount\": 234."···, expected: €234.25)
✅ WhenDeserializing_ThenThisShouldSucceed(json: "{ \"currency\": \"EUR\", \"amount\": \"234.25\" }", expected: €234.25)
✅ WhenDeserializing_ThenThisShouldSucceed(json: "{ \"Currency\": \"EUR\", \"Amount\": \"234.25\" }", expected: €234.25)
✅ WhenDeserializing_ThenThisShouldSucceed(json: "{ \"currency\": \"EUR\", \"amount\": 234.25 }", expected: €234.25)
✅ WhenDeserializing_ThenThisShouldSucceed(json: "{ \"Currency\": \"EUR\", \"Amount\": 234.25 }", expected: €234.25)
✅ WhenDeserializingWithInvalidJSON_ThenThisShouldFail(json: "{ \"Amount\": \"234.25\" }")
✅ WhenDeserializingWithInvalidJSON_ThenThisShouldFail(json: "{ \"Amount\": \"ABC\", \"Currency\": \"EUR\" }")
✅ WhenDeserializingWithInvalidJSON_ThenThisShouldFail(json: "{ \"amount\": 234.25 }")
✅ WhenDeserializingWithInvalidJSON_ThenThisShouldFail(json: "{ \"Amount\": 234.25 }")
✅ WhenDeserializingWithInvalidJSON_ThenThisShouldFail(json: "{ \"currency\": \"EUR\" }")
✅ WhenDeserializingWithInvalidJSON_ThenThisShouldFail(json: "{ \"Currency\": \"EUR\" }")
✅ WhenDeserializingWithInvalidJSON_ThenThisShouldFail(json: "{ Amount: '234.25' }")
✅ WhenDeserializingWithInvalidJSON_ThenThisShouldFail(json: "{ Amount: \"234.25\" }")
✅ WhenDeserializingWithInvalidJSON_ThenThisShouldFail(json: "{ amount: 234.25 }")
✅ WhenDeserializingWithInvalidJSON_ThenThisShouldFail(json: "{ Amount: 234.25 }")
✅ WhenDeserializingWithInvalidJSON_ThenThisShouldFail(json: "{ currency: 'EUR' }")
✅ WhenDeserializingWithInvalidJSON_ThenThisShouldFail(json: "{ Currency: 'EUR' }")
✅ WhenDeserializingWithInvalidJSON_ThenThisShouldFail(json: "{ currency: \"EUR\" }")
✅ WhenDeserializingWithInvalidJSON_ThenThisShouldFail(json: "{ Currency: \"EUR\" }")
❌ WhenDeserializingWithNested_ThenThisShouldSucceed(json: "{ \"id\": 123, \"name\": \"Abc\", \"price\": { \"a"···, expected: Order { Id = 123, Name = "Abc", Total = €234.25 })
	Expected property clone.Total to be €234.25, but found ¤0.
	
	With configuration:
	- Use declared types and members
	- Compare enums by value
	- Compare tuples by their properties
	- Compare anonymous types by their properties
	- Compare records by their members
	- Include non-browsable members
	- Match member by name (or throw)
	- Be strict about the order of items in byte arrays
	- Without automatic conversion.
	
❌ WhenDeserializingWithNested_ThenThisShouldSucceed(json: "{ \"id\": 123, \"name\": \"Abc\", \"price\": { \"a"···, expected: Order { Id = 123, Name = "Abc", Total = €234.25 })
	Expected property clone.Total to be €234.25, but found ¤0.
	
	With configuration:
	- Use declared types and members
	- Compare enums by value
	- Compare tuples by their properties
	- Compare anonymous types by their properties
	- Compare records by their members
	- Include non-browsable members
	- Match member by name (or throw)
	- Be strict about the order of items in byte arrays
	- Without automatic conversion.
	
❌ WhenDeserializingWithNested_ThenThisShouldSucceed(json: "{ \"Id\": 123, \"Name\": \"Abc\", \"Price\": { \"A"···, expected: Order { Id = 123, Name = "Abc", Total = €234.25 })
	Expected property clone.Total to be €234.25, but found ¤0.
	
	With configuration:
	- Use declared types and members
	- Compare enums by value
	- Compare tuples by their properties
	- Compare anonymous types by their properties
	- Compare records by their members
	- Include non-browsable members
	- Match member by name (or throw)
	- Be strict about the order of items in byte arrays
	- Without automatic conversion.
	
❌ WhenDeserializingWithNested_ThenThisShouldSucceed(json: "{ \"Id\": 123, \"Name\": \"Abc\", \"Price\": { \"A"···, expected: Order { Id = 123, Name = "Abc", Total = €234.25 })
	Expected property clone.Total to be €234.25, but found ¤0.
	
	With configuration:
	- Use declared types and members
	- Compare enums by value
	- Compare tuples by their properties
	- Compare anonymous types by their properties
	- Compare records by their members
	- Include non-browsable members
	- Match member by name (or throw)
	- Be strict about the order of items in byte arrays
	- Without automatic conversion.
	
❌ WhenDeserializingWithNested_ThenThisShouldSucceed(json: "{ \"Id\": 123, \"Name\": \"Abc\", \"Price\": { \"A"···, expected: Order { Id = 123, Name = "Abc", Total = €234.25 })
	Expected property clone.Total to be €234.25, but found ¤0.
	
	With configuration:
	- Use declared types and members
	- Compare enums by value
	- Compare tuples by their properties
	- Compare anonymous types by their properties
	- Compare records by their members
	- Include non-browsable members
	- Match member by name (or throw)
	- Be strict about the order of items in byte arrays
	- Without automatic conversion.
	
❌ WhenDeserializingWithNested_ThenThisShouldSucceed(json: "{ \"Id\": 123, \"Name\": \"Abc\", \"Price\": { \"A"···, expected: Order { Id = 123, Name = "Abc", Total = €234.25 })
	Expected property clone.Total to be €234.25, but found ¤0.
	
	With configuration:
	- Use declared types and members
	- Compare enums by value
	- Compare tuples by their properties
	- Compare anonymous types by their properties
	- Compare records by their members
	- Include non-browsable members
	- Match member by name (or throw)
	- Be strict about the order of items in byte arrays
	- Without automatic conversion.
	
❌ WhenDeserializingWithNested_ThenThisShouldSucceed(json: "{ \"Id\": 123, \"Name\": \"Abc\", \"Price\": { \"C"···, expected: Order { Id = 123, Name = "Abc", Total = €234.25 })
	Expected property clone.Total to be €234.25, but found ¤0.
	
	With configuration:
	- Use declared types and members
	- Compare enums by value
	- Compare tuples by their properties
	- Compare anonymous types by their properties
	- Compare records by their members
	- Include non-browsable members
	- Match member by name (or throw)
	- Be strict about the order of items in byte arrays
	- Without automatic conversion.
	
❌ WhenDeserializingWithNested_ThenThisShouldSucceed(json: "{ \"Id\": 123, \"Name\": \"Abc\", \"Price\": { \"C"···, expected: Order { Id = 123, Name = "Abc", Total = €234.25 })
	Expected property clone.Total to be €234.25, but found ¤0.
	
	With configuration:
	- Use declared types and members
	- Compare enums by value
	- Compare tuples by their properties
	- Compare anonymous types by their properties
	- Compare records by their members
	- Include non-browsable members
	- Match member by name (or throw)
	- Be strict about the order of items in byte arrays
	- Without automatic conversion.
	

❌ NodaMoney.Tests.Serialization.NewtonsoftJsonSerializerSpec.GivenIWantToSerializeMoney

❌ WhenNullableOrder_ThenThisShouldSucceed(money: ¤0, expectedCurrency: "XXX", expectedMoney: "XXX 0")
	Expected json to be "{"Id":123,"Name":"Foo","Price":"XXX 0"}" with a length of 39, but "{"Id":123,"Total":{"Amount":0.0,"Currency":"XXX"},"Name":"Foo"}" has a length of 63, differs near "Tot" (index 11).
❌ WhenNullableOrder_ThenThisShouldSucceed(money: $765.43, expectedCurrency: "USD", expectedMoney: "USD 765.43")
	Expected json to be "{"Id":123,"Name":"Foo","Price":"USD 765.43"}" with a length of 44, but "{"Id":123,"Total":{"Amount":765.43,"Currency":"USD"},"Name":"Foo"}" has a length of 66, differs near "Tot" (index 11).
❌ WhenNullableOrder_ThenThisShouldSucceed(money: ¥765, expectedCurrency: "JPY", expectedMoney: "JPY 765")
	Expected json to be "{"Id":123,"Name":"Foo","Price":"JPY 765"}" with a length of 41, but "{"Id":123,"Total":{"Amount":765.0,"Currency":"JPY"},"Name":"Foo"}" has a length of 65, differs near "Tot" (index 11).
❌ WhenNullableOrder_ThenThisShouldSucceed(money: €765.43, expectedCurrency: "EUR", expectedMoney: "EUR 765.43")
	Expected json to be "{"Id":123,"Name":"Foo","Price":"EUR 765.43"}" with a length of 44, but "{"Id":123,"Total":{"Amount":765.43,"Currency":"EUR"},"Name":"Foo"}" has a length of 66, differs near "Tot" (index 11).
❌ WhenNullableOrder_ThenThisShouldSucceed(money: ₿765.43210000, expectedCurrency: "BTC", expectedMoney: "BTC 765.43210000")
	Expected json to be "{"Id":123,"Name":"Foo","Price":"BTC 765.43210000"}" with a length of 50, but "{"Id":123,"Total":{"Amount":765.43210000,"Currency":"BTC"},"Name":"Foo"}" has a length of 72, differs near "Tot" (index 11).
❌ WhenNullableOrder_ThenThisShouldSucceed(money: BD765.432, expectedCurrency: "BHD", expectedMoney: "BHD 765.432")
	Expected json to be "{"Id":123,"Name":"Foo","Price":"BHD 765.432"}" with a length of 45, but "{"Id":123,"Total":{"Amount":765.432,"Currency":"BHD"},"Name":"Foo"}" has a length of 67, differs near "Tot" (index 11).
❌ WhenOnlyMoney_ThenThisShouldSucceed(money: ¤0, expectedCurrency: "XXX", expectedMoney: "XXX 0")
	Expected json to be ""XXX 0"" with a length of 7, but "{"Amount":0.0,"Currency":"XXX"}" has a length of 31, differs near "{"A" (index 0).
❌ WhenOnlyMoney_ThenThisShouldSucceed(money: $765.43, expectedCurrency: "USD", expectedMoney: "USD 765.43")
	Expected json to be ""USD 765.43"" with a length of 12, but "{"Amount":765.43,"Currency":"USD"}" has a length of 34, differs near "{"A" (index 0).
❌ WhenOnlyMoney_ThenThisShouldSucceed(money: ¥765, expectedCurrency: "JPY", expectedMoney: "JPY 765")
	Expected json to be ""JPY 765"" with a length of 9, but "{"Amount":765.0,"Currency":"JPY"}" has a length of 33, differs near "{"A" (index 0).
❌ WhenOnlyMoney_ThenThisShouldSucceed(money: €765.43, expectedCurrency: "EUR", expectedMoney: "EUR 765.43")
	Expected json to be ""EUR 765.43"" with a length of 12, but "{"Amount":765.43,"Currency":"EUR"}" has a length of 34, differs near "{"A" (index 0).
❌ WhenOnlyMoney_ThenThisShouldSucceed(money: ₿765.43210000, expectedCurrency: "BTC", expectedMoney: "BTC 765.43210000")
	Expected json to be ""BTC 765.43210000"" with a length of 18, but "{"Amount":765.43210000,"Currency":"BTC"}" has a length of 40, differs near "{"A" (index 0).
❌ WhenOnlyMoney_ThenThisShouldSucceed(money: BD765.432, expectedCurrency: "BHD", expectedMoney: "BHD 765.432")
	Expected json to be ""BHD 765.432"" with a length of 13, but "{"Amount":765.432,"Currency":"BHD"}" has a length of 35, differs near "{"A" (index 0).
❌ WhenOrder_ThenThisShouldSucceed(money: ¤0, expectedCurrency: "XXX", expectedMoney: "XXX 0")
	Expected json to be "{"Id":123,"Name":"Foo","Total":"XXX 0"}" with a length of 39, but "{"Id":123,"Total":{"Amount":0.0,"Currency":"XXX"},"Name":"Foo"}" has a length of 63, differs near "Tot" (index 11).
❌ WhenOrder_ThenThisShouldSucceed(money: $765.43, expectedCurrency: "USD", expectedMoney: "USD 765.43")
	Expected json to be "{"Id":123,"Name":"Foo","Total":"USD 765.43"}" with a length of 44, but "{"Id":123,"Total":{"Amount":765.43,"Currency":"USD"},"Name":"Foo"}" has a length of 66, differs near "Tot" (index 11).
❌ WhenOrder_ThenThisShouldSucceed(money: ¥765, expectedCurrency: "JPY", expectedMoney: "JPY 765")
	Expected json to be "{"Id":123,"Name":"Foo","Total":"JPY 765"}" with a length of 41, but "{"Id":123,"Total":{"Amount":765.0,"Currency":"JPY"},"Name":"Foo"}" has a length of 65, differs near "Tot" (index 11).
❌ WhenOrder_ThenThisShouldSucceed(money: €765.43, expectedCurrency: "EUR", expectedMoney: "EUR 765.43")
	Expected json to be "{"Id":123,"Name":"Foo","Total":"EUR 765.43"}" with a length of 44, but "{"Id":123,"Total":{"Amount":765.43,"Currency":"EUR"},"Name":"Foo"}" has a length of 66, differs near "Tot" (index 11).
❌ WhenOrder_ThenThisShouldSucceed(money: ₿765.43210000, expectedCurrency: "BTC", expectedMoney: "BTC 765.43210000")
	Expected json to be "{"Id":123,"Name":"Foo","Total":"BTC 765.43210000"}" with a length of 50, but "{"Id":123,"Total":{"Amount":765.43210000,"Currency":"BTC"},"Name":"Foo"}" has a length of 72, differs near "Tot" (index 11).
❌ WhenOrder_ThenThisShouldSucceed(money: BD765.432, expectedCurrency: "BHD", expectedMoney: "BHD 765.432")
	Expected json to be "{"Id":123,"Name":"Foo","Total":"BHD 765.432"}" with a length of 45, but "{"Id":123,"Total":{"Amount":765.432,"Currency":"BHD"},"Name":"Foo"}" has a length of 67, differs near "Tot" (index 11).
✅ WhenSerializingCurrency_ThenThisShouldSucceed(money: ¤0, expectedCurrency: "XXX", expectedMoney: "XXX 0")
✅ WhenSerializingCurrency_ThenThisShouldSucceed(money: $765.43, expectedCurrency: "USD", expectedMoney: "USD 765.43")
✅ WhenSerializingCurrency_ThenThisShouldSucceed(money: ¥765, expectedCurrency: "JPY", expectedMoney: "JPY 765")
✅ WhenSerializingCurrency_ThenThisShouldSucceed(money: €765.43, expectedCurrency: "EUR", expectedMoney: "EUR 765.43")
✅ WhenSerializingCurrency_ThenThisShouldSucceed(money: ₿765.43210000, expectedCurrency: "BTC", expectedMoney: "BTC 765.43210000")
✅ WhenSerializingCurrency_ThenThisShouldSucceed(money: BD765.432, expectedCurrency: "BHD", expectedMoney: "BHD 765.432")

❌ NodaMoney.Tests.Serialization.RavenDbSerializationSpec.GivenIWantToStoreInRavenDb

❌ WhenMoneyAsRoot_ThenThisMustWork
	System.InvalidOperationException : Unable to start the RavenDB Server
	Output:
	       _____                       _____  ____ 
	      |  __ \                     |  __ \|  _ \ 
	      | |__) |__ ___   _____ _ __ | |  | | |_) |
	      |  _  // _` \ \ / / _ \ '_ \| |  | |  _ < 
	      | | \ \ (_| |\ V /  __/ | | | |__| | |_) |
	      |_|  \_\__,_| \_/ \___|_| |_|_____/|____/ 
	
	
	      Safe by default, optimized for efficiency
	
	 Build 62005, Version 6.2, SemVer 6.2.1, Commit 8428b32
	 PID 2723, 64 bits, 4 Cores, Phys Mem 15.606 GBytes, Arch: X64
	 Source Code (git repo): https://github.com/ravendb/ravendb
	 Built with love by Hibernating Rhinos and awesome contributors!
	+---------------------------------------------------------------+
	The RavenDB server cannot start due to a missing license. Please review the details below to resolve the issue:
	
	We attempted to obtain a valid license using the configuration key 'License', but this process was not successful for the following reason:
	- The license is not provided in the configuration or environment variable.
	
	We attempted to obtain a valid license using the configuration key 'License.Path', but this process was not successful for the following reason:
	- An error occurred while trying to read the license from the file:
	  Could not find file '/home/runner/work/NodaMoney/NodaMoney/tests/NodaMoney.Tests/bin/Release/net9.0/RavenDBServer/license.json'.
	
	To resolve this issue, you may consider the following options:
	- Ensure your license key is correctly embedded in 'settings.json', set as an environment variable, or included in your 'ServerOptions' if using an embedded server or Raven.TestDriver.
	- Alternatively, check the 'License.Path' in your configuration to ensure it points to a valid 'license.json' file.
	- Configure the 'License.ThrowOnInvalidOrMissingLicense' option by setting it to 'False' to disable this strict licensing requirement for server startup.
	
	
	Raven.Client.Exceptions.Server.ServerLoadFailureException: Failed to load system storage 
	At :memory:
	 ---> Raven.Server.Commercial.LicenseExpiredException: The RavenDB server cannot start due to a missing license. Please review the details below to resolve the issue:
	
	We attempted to obtain a valid license using the configuration key 'License', but this process was not successful for the following reason:
	- The license is not provided in the configuration or environment variable.
	
	We attempted to obtain a valid license using the configuration key 'License.Path', but this process was not successful for the following reason:
	- An error occurred while trying to read the license from the file:
	  Could not find file '/home/runner/work/NodaMoney/NodaMoney/tests/NodaMoney.Tests/bin/Release/net9.0/RavenDBServer/license.json'.
	
	To resolve this issue, you may consider the following options:
	- Ensure your license key is correctly embedded in 'settings.json', set as an environment variable, or included in your 'ServerOptions' if using an embedded server or Raven.TestDriver.
	- Alternatively, check the 'License.Path' in your configuration to ensure it points to a valid 'license.json' file.
	- Configure the 'License.ThrowOnInvalidOrMissingLicense' option by setting it to 'False' to disable this strict licensing requirement for server startup.
	
	   at Raven.Server.RavenServer.VerifyLicense(StorageEnvironment storageEnvironment) in /_/62005/src/Raven.Server/RavenServer.cs:line 3277
	   at Voron.StorageEnvironment.CreateNewDatabase() in /_/62005/src/Voron/StorageEnvironment.cs:line 473
	   at Voron.StorageEnvironment..ctor(StorageEnvironmentOptions options) in /_/62005/src/Voron/StorageEnvironment.cs:line 171
	   at Raven.Server.Storage.Layout.StorageLoader.OpenEnvironment(StorageEnvironmentOptions options, StorageEnvironmentType type) in /_/62005/src/Raven.Server/Storage/Layout/StorageLoader.cs:line 21
	   at Raven.Server.ServerWide.ServerStore.PreInitialize() in /_/62005/src/Raven.Server/ServerWide/ServerStore.cs:line 818
	   --- End of inner exception stack trace ---
	   at Raven.Server.ServerWide.ServerStore.PreInitialize() in /_/62005/src/Raven.Server/ServerWide/ServerStore.cs:line 822
	   at Raven.Server.RavenServer.Initialize() in /_/62005/src/Raven.Server/RavenServer.cs:line 207
	   at Raven.Server.Program.Main(String[] args) in /_/62005/src/Raven.Server/Program.cs:line 210
	
	
❌ WhenObjectWithMoneyAttribute_ThenThisMustWork
	System.InvalidOperationException : Unable to start the RavenDB Server
	Output:
	       _____                       _____  ____ 
	      |  __ \                     |  __ \|  _ \ 
	      | |__) |__ ___   _____ _ __ | |  | | |_) |
	      |  _  // _` \ \ / / _ \ '_ \| |  | |  _ < 
	      | | \ \ (_| |\ V /  __/ | | | |__| | |_) |
	      |_|  \_\__,_| \_/ \___|_| |_|_____/|____/ 
	
	
	      Safe by default, optimized for efficiency
	
	 Build 62005, Version 6.2, SemVer 6.2.1, Commit 8428b32
	 PID 2723, 64 bits, 4 Cores, Phys Mem 15.606 GBytes, Arch: X64
	 Source Code (git repo): https://github.com/ravendb/ravendb
	 Built with love by Hibernating Rhinos and awesome contributors!
	+---------------------------------------------------------------+
	The RavenDB server cannot start due to a missing license. Please review the details below to resolve the issue:
	
	We attempted to obtain a valid license using the configuration key 'License', but this process was not successful for the following reason:
	- The license is not provided in the configuration or environment variable.
	
	We attempted to obtain a valid license using the configuration key 'License.Path', but this process was not successful for the following reason:
	- An error occurred while trying to read the license from the file:
	  Could not find file '/home/runner/work/NodaMoney/NodaMoney/tests/NodaMoney.Tests/bin/Release/net9.0/RavenDBServer/license.json'.
	
	To resolve this issue, you may consider the following options:
	- Ensure your license key is correctly embedded in 'settings.json', set as an environment variable, or included in your 'ServerOptions' if using an embedded server or Raven.TestDriver.
	- Alternatively, check the 'License.Path' in your configuration to ensure it points to a valid 'license.json' file.
	- Configure the 'License.ThrowOnInvalidOrMissingLicense' option by setting it to 'False' to disable this strict licensing requirement for server startup.
	
	
	Raven.Client.Exceptions.Server.ServerLoadFailureException: Failed to load system storage 
	At :memory:
	 ---> Raven.Server.Commercial.LicenseExpiredException: The RavenDB server cannot start due to a missing license. Please review the details below to resolve the issue:
	
	We attempted to obtain a valid license using the configuration key 'License', but this process was not successful for the following reason:
	- The license is not provided in the configuration or environment variable.
	
	We attempted to obtain a valid license using the configuration key 'License.Path', but this process was not successful for the following reason:
	- An error occurred while trying to read the license from the file:
	  Could not find file '/home/runner/work/NodaMoney/NodaMoney/tests/NodaMoney.Tests/bin/Release/net9.0/RavenDBServer/license.json'.
	
	To resolve this issue, you may consider the following options:
	- Ensure your license key is correctly embedded in 'settings.json', set as an environment variable, or included in your 'ServerOptions' if using an embedded server or Raven.TestDriver.
	- Alternatively, check the 'License.Path' in your configuration to ensure it points to a valid 'license.json' file.
	- Configure the 'License.ThrowOnInvalidOrMissingLicense' option by setting it to 'False' to disable this strict licensing requirement for server startup.
	
	   at Raven.Server.RavenServer.VerifyLicense(StorageEnvironment storageEnvironment) in /_/62005/src/Raven.Server/RavenServer.cs:line 3277
	   at Voron.StorageEnvironment.CreateNewDatabase() in /_/62005/src/Voron/StorageEnvironment.cs:line 473
	   at Voron.StorageEnvironment..ctor(StorageEnvironmentOptions options) in /_/62005/src/Voron/StorageEnvironment.cs:line 171
	   at Raven.Server.Storage.Layout.StorageLoader.OpenEnvironment(StorageEnvironmentOptions options, StorageEnvironmentType type) in /_/62005/src/Raven.Server/Storage/Layout/StorageLoader.cs:line 21
	   at Raven.Server.ServerWide.ServerStore.PreInitialize() in /_/62005/src/Raven.Server/ServerWide/ServerStore.cs:line 818
	   --- End of inner exception stack trace ---
	   at Raven.Server.ServerWide.ServerStore.PreInitialize() in /_/62005/src/Raven.Server/ServerWide/ServerStore.cs:line 822
	   at Raven.Server.RavenServer.Initialize() in /_/62005/src/Raven.Server/RavenServer.cs:line 207
	   at Raven.Server.Program.Main(String[] args) in /_/62005/src/Raven.Server/Program.cs:line 210
	
	

❌ NodaMoney.Tests.Serialization.SystemTextJsonSerializationSpec.GivenIWantToDeserializeMoney

✅ WhenDeserializing_ThenThisShouldSucceed(json: "{ \"amount\": \"234.25\", \"currency\": \"EUR;ISO-"···, expected: €234.25)
✅ WhenDeserializing_ThenThisShouldSucceed(json: "{ \"Amount\": \"234.25\", \"Currency\": \"EUR;ISO-"···, expected: €234.25)
✅ WhenDeserializing_ThenThisShouldSucceed(json: "{ \"amount\": \"234.25\", \"currency\": \"EUR\" }", expected: €234.25)
✅ WhenDeserializing_ThenThisShouldSucceed(json: "{ \"Amount\": \"234.25\", \"Currency\": \"EUR\" }", expected: €234.25)
✅ WhenDeserializing_ThenThisShouldSucceed(json: "{ \"Amount\": 234.25, \"Currency\": \"EUR;\" }", expected: €234.25)
✅ WhenDeserializing_ThenThisShouldSucceed(json: "{ \"amount\": 234.25, \"currency\": \"EUR;ISO-4217"···, expected: €234.25)
✅ WhenDeserializing_ThenThisShouldSucceed(json: "{ \"Amount\": 234.25, \"Currency\": \"EUR;ISO-4217"···, expected: €234.25)
✅ WhenDeserializing_ThenThisShouldSucceed(json: "{ \"amount\": 234.25, \"currency\": \"EUR\" }", expected: €234.25)
✅ WhenDeserializing_ThenThisShouldSucceed(json: "{ \"Amount\": 234.25, \"Currency\": \"EUR\" }", expected: €234.25)
✅ WhenDeserializing_ThenThisShouldSucceed(json: "{ \"currency\": \"EUR;ISO-4217\", \"amount\": \"23"···, expected: €234.25)
✅ WhenDeserializing_ThenThisShouldSucceed(json: "{ \"Currency\": \"EUR;ISO-4217\", \"Amount\": \"23"···, expected: €234.25)
✅ WhenDeserializing_ThenThisShouldSucceed(json: "{ \"currency\": \"EUR;ISO-4217\", \"amount\": 234."···, expected: €234.25)
✅ WhenDeserializing_ThenThisShouldSucceed(json: "{ \"Currency\": \"EUR;ISO-4217\", \"Amount\": 234."···, expected: €234.25)
✅ WhenDeserializing_ThenThisShouldSucceed(json: "{ \"currency\": \"EUR\", \"amount\": \"234.25\" }", expected: €234.25)
✅ WhenDeserializing_ThenThisShouldSucceed(json: "{ \"Currency\": \"EUR\", \"Amount\": \"234.25\" }", expected: €234.25)
✅ WhenDeserializing_ThenThisShouldSucceed(json: "{ \"currency\": \"EUR\", \"amount\": 234.25 }", expected: €234.25)
✅ WhenDeserializing_ThenThisShouldSucceed(json: "{ \"Currency\": \"EUR\", \"Amount\": 234.25 }", expected: €234.25)
✅ WhenDeserializingWithInvalidJSON_ThenThisShouldFail(json: "{ \"Amount\": \"234.25\" }")
✅ WhenDeserializingWithInvalidJSON_ThenThisShouldFail(json: "{ \"Amount\": \"ABC\", \"Currency\": \"EUR\" }")
✅ WhenDeserializingWithInvalidJSON_ThenThisShouldFail(json: "{ \"amount\": 234.25 }")
✅ WhenDeserializingWithInvalidJSON_ThenThisShouldFail(json: "{ \"Amount\": 234.25 }")
✅ WhenDeserializingWithInvalidJSON_ThenThisShouldFail(json: "{ \"currency\": \"EUR\" }")
✅ WhenDeserializingWithInvalidJSON_ThenThisShouldFail(json: "{ \"Currency\": \"EUR\" }")
✅ WhenDeserializingWithInvalidJSON_ThenThisShouldFail(json: "{ Amount: '234.25' }")
✅ WhenDeserializingWithInvalidJSON_ThenThisShouldFail(json: "{ Amount: \"234.25\" }")
✅ WhenDeserializingWithInvalidJSON_ThenThisShouldFail(json: "{ amount: 234.25 }")
✅ WhenDeserializingWithInvalidJSON_ThenThisShouldFail(json: "{ Amount: 234.25 }")
✅ WhenDeserializingWithInvalidJSON_ThenThisShouldFail(json: "{ currency: 'EUR' }")
✅ WhenDeserializingWithInvalidJSON_ThenThisShouldFail(json: "{ Currency: 'EUR' }")
✅ WhenDeserializingWithInvalidJSON_ThenThisShouldFail(json: "{ currency: \"EUR\" }")
✅ WhenDeserializingWithInvalidJSON_ThenThisShouldFail(json: "{ Currency: \"EUR\" }")
❌ WhenDeserializingWithNested_ThenThisShouldSucceed(json: "{ \"id\": 123, \"name\": \"Abc\", \"price\": { \"a"···, expected: Order { Id = 123, Name = "Abc", Total = €234.25 })
	Expected property clone.Total to be €234.25, but found ¤0.
	
	With configuration:
	- Use declared types and members
	- Compare enums by value
	- Compare tuples by their properties
	- Compare anonymous types by their properties
	- Compare records by their members
	- Include non-browsable members
	- Match member by name (or throw)
	- Be strict about the order of items in byte arrays
	- Without automatic conversion.
	
❌ WhenDeserializingWithNested_ThenThisShouldSucceed(json: "{ \"id\": 123, \"name\": \"Abc\", \"price\": { \"a"···, expected: Order { Id = 123, Name = "Abc", Total = €234.25 })
	Expected property clone.Total to be €234.25, but found ¤0.
	
	With configuration:
	- Use declared types and members
	- Compare enums by value
	- Compare tuples by their properties
	- Compare anonymous types by their properties
	- Compare records by their members
	- Include non-browsable members
	- Match member by name (or throw)
	- Be strict about the order of items in byte arrays
	- Without automatic conversion.
	
❌ WhenDeserializingWithNested_ThenThisShouldSucceed(json: "{ \"Id\": 123, \"Name\": \"Abc\", \"Price\": { \"A"···, expected: Order { Id = 123, Name = "Abc", Total = €234.25 })
	Expected property clone.Total to be €234.25, but found ¤0.
	
	With configuration:
	- Use declared types and members
	- Compare enums by value
	- Compare tuples by their properties
	- Compare anonymous types by their properties
	- Compare records by their members
	- Include non-browsable members
	- Match member by name (or throw)
	- Be strict about the order of items in byte arrays
	- Without automatic conversion.
	
❌ WhenDeserializingWithNested_ThenThisShouldSucceed(json: "{ \"Id\": 123, \"Name\": \"Abc\", \"Price\": { \"A"···, expected: Order { Id = 123, Name = "Abc", Total = €234.25 })
	Expected property clone.Total to be €234.25, but found ¤0.
	
	With configuration:
	- Use declared types and members
	- Compare enums by value
	- Compare tuples by their properties
	- Compare anonymous types by their properties
	- Compare records by their members
	- Include non-browsable members
	- Match member by name (or throw)
	- Be strict about the order of items in byte arrays
	- Without automatic conversion.
	
❌ WhenDeserializingWithNested_ThenThisShouldSucceed(json: "{ \"Id\": 123, \"Name\": \"Abc\", \"Price\": { \"A"···, expected: Order { Id = 123, Name = "Abc", Total = €234.25 })
	Expected property clone.Total to be €234.25, but found ¤0.
	
	With configuration:
	- Use declared types and members
	- Compare enums by value
	- Compare tuples by their properties
	- Compare anonymous types by their properties
	- Compare records by their members
	- Include non-browsable members
	- Match member by name (or throw)
	- Be strict about the order of items in byte arrays
	- Without automatic conversion.
	
❌ WhenDeserializingWithNested_ThenThisShouldSucceed(json: "{ \"Id\": 123, \"Name\": \"Abc\", \"Price\": { \"A"···, expected: Order { Id = 123, Name = "Abc", Total = €234.25 })
	Expected property clone.Total to be €234.25, but found ¤0.
	
	With configuration:
	- Use declared types and members
	- Compare enums by value
	- Compare tuples by their properties
	- Compare anonymous types by their properties
	- Compare records by their members
	- Include non-browsable members
	- Match member by name (or throw)
	- Be strict about the order of items in byte arrays
	- Without automatic conversion.
	
❌ WhenDeserializingWithNested_ThenThisShouldSucceed(json: "{ \"Id\": 123, \"Name\": \"Abc\", \"Price\": { \"C"···, expected: Order { Id = 123, Name = "Abc", Total = €234.25 })
	Expected property clone.Total to be €234.25, but found ¤0.
	
	With configuration:
	- Use declared types and members
	- Compare enums by value
	- Compare tuples by their properties
	- Compare anonymous types by their properties
	- Compare records by their members
	- Include non-browsable members
	- Match member by name (or throw)
	- Be strict about the order of items in byte arrays
	- Without automatic conversion.
	
❌ WhenDeserializingWithNested_ThenThisShouldSucceed(json: "{ \"Id\": 123, \"Name\": \"Abc\", \"Price\": { \"C"···, expected: Order { Id = 123, Name = "Abc", Total = €234.25 })
	Expected property clone.Total to be €234.25, but found ¤0.
	
	With configuration:
	- Use declared types and members
	- Compare enums by value
	- Compare tuples by their properties
	- Compare anonymous types by their properties
	- Compare records by their members
	- Include non-browsable members
	- Match member by name (or throw)
	- Be strict about the order of items in byte arrays
	- Without automatic conversion.
	

❌ NodaMoney.Tests.Serialization.SystemTextJsonSerializationSpec.GivenIWantToSerializeMoney

❌ WhenNullableOrder_ThenThisShouldSucceed(money: ¤0, expectedCurrency: "XXX", expectedMoney: "XXX 0")
	Expected json to be "{"Id":123,"Name":"Foo","Total":"XXX 0" with a length of 37, but "{"Id":123,"Total":"XXX 0","Name":"Foo"}" has a length of 39, differs near "Tot" (index 11).
❌ WhenNullableOrder_ThenThisShouldSucceed(money: $765.43, expectedCurrency: "USD", expectedMoney: "USD 765.43")
	Expected json to be "{"Id":123,"Name":"Foo","Total":"USD 765.43" with a length of 42, but "{"Id":123,"Total":"USD 765.43","Name":"Foo"}" has a length of 44, differs near "Tot" (index 11).
❌ WhenNullableOrder_ThenThisShouldSucceed(money: ¥765, expectedCurrency: "JPY", expectedMoney: "JPY 765")
	Expected json to be "{"Id":123,"Name":"Foo","Total":"JPY 765" with a length of 39, but "{"Id":123,"Total":"JPY 765","Name":"Foo"}" has a length of 41, differs near "Tot" (index 11).
❌ WhenNullableOrder_ThenThisShouldSucceed(money: €765.43, expectedCurrency: "EUR", expectedMoney: "EUR 765.43")
	Expected json to be "{"Id":123,"Name":"Foo","Total":"EUR 765.43" with a length of 42, but "{"Id":123,"Total":"EUR 765.43","Name":"Foo"}" has a length of 44, differs near "Tot" (index 11).
❌ WhenNullableOrder_ThenThisShouldSucceed(money: ₿765.43210000, expectedCurrency: "BTC", expectedMoney: "BTC 765.43210000")
	Expected json to be "{"Id":123,"Name":"Foo","Total":"BTC 765.43210000" with a length of 48, but "{"Id":123,"Total":"BTC 765.43210000","Name":"Foo"}" has a length of 50, differs near "Tot" (index 11).
❌ WhenNullableOrder_ThenThisShouldSucceed(money: BD765.432, expectedCurrency: "BHD", expectedMoney: "BHD 765.432")
	Expected json to be "{"Id":123,"Name":"Foo","Total":"BHD 765.432" with a length of 43, but "{"Id":123,"Total":"BHD 765.432","Name":"Foo"}" has a length of 45, differs near "Tot" (index 11).
✅ WhenOnlyMoney_ThenThisShouldSucceed(money: ¤0, expectedCurrency: "XXX", expectedMoney: "XXX 0")
✅ WhenOnlyMoney_ThenThisShouldSucceed(money: $765.43, expectedCurrency: "USD", expectedMoney: "USD 765.43")
✅ WhenOnlyMoney_ThenThisShouldSucceed(money: ¥765, expectedCurrency: "JPY", expectedMoney: "JPY 765")
✅ WhenOnlyMoney_ThenThisShouldSucceed(money: €765.43, expectedCurrency: "EUR", expectedMoney: "EUR 765.43")
✅ WhenOnlyMoney_ThenThisShouldSucceed(money: ₿765.43210000, expectedCurrency: "BTC", expectedMoney: "BTC 765.43210000")
✅ WhenOnlyMoney_ThenThisShouldSucceed(money: BD765.432, expectedCurrency: "BHD", expectedMoney: "BHD 765.432")
❌ WhenOrderWithPriceAndNullableDiscount_ThenThisShouldSucceed(money: ¤0, expectedCurrency: "XXX", expectedMoney: "XXX 0")
	Expected json to be "{"Id":123,"Name":"Foo","Total":"XXX 0","Discount":null}" with a length of 55, but "{"Id":123,"Total":"XXX 0","Name":"Foo"}" has a length of 39, differs near "Tot" (index 11).
❌ WhenOrderWithPriceAndNullableDiscount_ThenThisShouldSucceed(money: $765.43, expectedCurrency: "USD", expectedMoney: "USD 765.43")
	Expected json to be "{"Id":123,"Name":"Foo","Total":"USD 765.43","Discount":null}" with a length of 60, but "{"Id":123,"Total":"USD 765.43","Name":"Foo"}" has a length of 44, differs near "Tot" (index 11).
❌ WhenOrderWithPriceAndNullableDiscount_ThenThisShouldSucceed(money: ¥765, expectedCurrency: "JPY", expectedMoney: "JPY 765")
	Expected json to be "{"Id":123,"Name":"Foo","Total":"JPY 765","Discount":null}" with a length of 57, but "{"Id":123,"Total":"JPY 765","Name":"Foo"}" has a length of 41, differs near "Tot" (index 11).
❌ WhenOrderWithPriceAndNullableDiscount_ThenThisShouldSucceed(money: €765.43, expectedCurrency: "EUR", expectedMoney: "EUR 765.43")
	Expected json to be "{"Id":123,"Name":"Foo","Total":"EUR 765.43","Discount":null}" with a length of 60, but "{"Id":123,"Total":"EUR 765.43","Name":"Foo"}" has a length of 44, differs near "Tot" (index 11).
❌ WhenOrderWithPriceAndNullableDiscount_ThenThisShouldSucceed(money: ₿765.43210000, expectedCurrency: "BTC", expectedMoney: "BTC 765.43210000")
	Expected json to be "{"Id":123,"Name":"Foo","Total":"BTC 765.43210000","Discount":null}" with a length of 66, but "{"Id":123,"Total":"BTC 765.43210000","Name":"Foo"}" has a length of 50, differs near "Tot" (index 11).
❌ WhenOrderWithPriceAndNullableDiscount_ThenThisShouldSucceed(money: BD765.432, expectedCurrency: "BHD", expectedMoney: "BHD 765.432")
	Expected json to be "{"Id":123,"Name":"Foo","Total":"BHD 765.432","Discount":null}" with a length of 61, but "{"Id":123,"Total":"BHD 765.432","Name":"Foo"}" has a length of 45, differs near "Tot" (index 11).
❌ WhenSerializingCurrency_ThenThisShouldSucceed(money: ¤0, expectedCurrency: "XXX", expectedMoney: "XXX 0")
	Expected json to be ""XXX"" with a length of 5, but "{"Code":"XXX","IsIso4217":true,"MinimalAmount":1,"Symbol":"\u00A4"}" has a length of 67, differs near "{"C" (index 0).
❌ WhenSerializingCurrency_ThenThisShouldSucceed(money: $765.43, expectedCurrency: "USD", expectedMoney: "USD 765.43")
	Expected json to be ""USD"" with a length of 5, but "{"Code":"USD","IsIso4217":true,"MinimalAmount":0.01,"Symbol":"$"}" has a length of 65, differs near "{"C" (index 0).
❌ WhenSerializingCurrency_ThenThisShouldSucceed(money: ¥765, expectedCurrency: "JPY", expectedMoney: "JPY 765")
	Expected json to be ""JPY"" with a length of 5, but "{"Code":"JPY","IsIso4217":true,"MinimalAmount":1,"Symbol":"\u00A5"}" has a length of 67, differs near "{"C" (index 0).
❌ WhenSerializingCurrency_ThenThisShouldSucceed(money: €765.43, expectedCurrency: "EUR", expectedMoney: "EUR 765.43")
	Expected json to be ""EUR"" with a length of 5, but "{"Code":"EUR","IsIso4217":true,"MinimalAmount":0.01,"Symbol":"\u20AC"}" has a length of 70, differs near "{"C" (index 0).
❌ WhenSerializingCurrency_ThenThisShouldSucceed(money: ₿765.43210000, expectedCurrency: "BTC", expectedMoney: "BTC 765.43210000")
	Expected json to be ""BTC"" with a length of 5, but "{"Code":"BTC","IsIso4217":true,"MinimalAmount":0.00000001,"Symbol":"\u20BF"}" has a length of 76, differs near "{"C" (index 0).
❌ WhenSerializingCurrency_ThenThisShouldSucceed(money: BD765.432, expectedCurrency: "BHD", expectedMoney: "BHD 765.432")
	Expected json to be ""BHD"" with a length of 5, but "{"Code":"BHD","IsIso4217":true,"MinimalAmount":0.001,"Symbol":"BD"}" has a length of 67, differs near "{"C" (index 0).

❌ ./artifacts/_fv-az1771-126_2024-12-04_04_36_42.trx

651 tests were completed in 9s with 565 passed, 82 failed and 4 skipped.
Report exceeded GitHub limit of 65535 bytes and has been trimmed

Annotations

Check failure on line 71 in tests/NodaMoney.Tests/CurrencyBuilderSpec.cs

See this annotation in the file changed.

@github-actions github-actions / unittests

NodaMoney.Tests.CurrencyBuilderSpec.GivenIWantToCreateCustomCurrency ► WhenBuildBitCoin_ThenItShouldSucceedButNotBeRegistered

Failed test found in:
  ./artifacts/_fv-az1771-126_2024-12-04_04_36_40.trx
  ./artifacts/_fv-az1771-126_2024-12-04_04_36_42.trx
Error:
  NodaMoney.InvalidCurrencyException : BTD is unknown currency code!
Raw output
NodaMoney.InvalidCurrencyException : BTD is unknown currency code!
   at NodaMoney.CurrencyRegistry.Get(String code) in /_/src/NodaMoney/CurrencyRegistry.cs:line 44
   at NodaMoney.CurrencyInfo.FromCode(String code) in /_/src/NodaMoney/CurrencyInfo.cs:line 162
   at NodaMoney.Currency.get_Symbol() in /_/src/NodaMoney/Currency.cs:line 89
   at NodaMoney.Tests.CurrencyBuilderSpec.GivenIWantToCreateCustomCurrency.WhenBuildBitCoin_ThenItShouldSucceedButNotBeRegistered() in /home/runner/work/NodaMoney/NodaMoney/tests/NodaMoney.Tests/CurrencyBuilderSpec.cs:line 71
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments, Signature sig, Boolean isConstructor)
   at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)

Check failure on line 14 in tests/NodaMoney.Tests/CurrencyBuilderSpec.cs

See this annotation in the file changed.

@github-actions github-actions / unittests

NodaMoney.Tests.CurrencyBuilderSpec.GivenIWantToCreateCustomCurrency ► WhenRegisterAsSimpleAsPossible_ThenShouldBeAvailableWithDefaults

Failed test found in:
  ./artifacts/_fv-az1771-126_2024-12-04_04_36_40.trx
  ./artifacts/_fv-az1771-126_2024-12-04_04_36_42.trx
Error:
  NodaMoney.InvalidCurrencyException : The currency BTA is already registered in ISO-4217.
Raw output
NodaMoney.InvalidCurrencyException : The currency BTA is already registered in ISO-4217.
   at NodaMoney.CurrencyBuilder.Register() in /_/src/NodaMoney/CurrencyBuilder.cs:line 139
   at NodaMoney.Tests.CurrencyBuilderSpec.GivenIWantToCreateCustomCurrency.WhenRegisterAsSimpleAsPossible_ThenShouldBeAvailableWithDefaults() in /home/runner/work/NodaMoney/NodaMoney/tests/NodaMoney.Tests/CurrencyBuilderSpec.cs:line 14
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments, Signature sig, Boolean isConstructor)
   at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)

Check failure on line 55 in tests/NodaMoney.Tests/CurrencyBuilderSpec.cs

See this annotation in the file changed.

@github-actions github-actions / unittests

NodaMoney.Tests.CurrencyBuilderSpec.GivenIWantToCreateCustomCurrency ► WhenRegisterBitCoin_ThenShouldBeAvailableByExplicitNamespace

Failed test found in:
  ./artifacts/_fv-az1771-126_2024-12-04_04_36_40.trx
  ./artifacts/_fv-az1771-126_2024-12-04_04_36_42.trx
Error:
  Expected bitcoin.Symbol to be "฿", but "₿" differs near "₿" (index 0).
Raw output
Expected bitcoin.Symbol to be "฿", but "₿" differs near "₿" (index 0).
   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.Primitives.StringEqualityValidator.ValidateAgainstMismatch()
   at FluentAssertions.Primitives.StringValidator.Validate()
   at FluentAssertions.Primitives.StringAssertions`1.Be(String expected, String because, Object[] becauseArgs)
   at NodaMoney.Tests.CurrencyBuilderSpec.GivenIWantToCreateCustomCurrency.WhenRegisterBitCoin_ThenShouldBeAvailableByExplicitNamespace() in /home/runner/work/NodaMoney/NodaMoney/tests/NodaMoney.Tests/CurrencyBuilderSpec.cs:line 55
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments, Signature sig, Boolean isConstructor)
   at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)

Check failure on line 33 in tests/NodaMoney.Tests/CurrencyBuilderSpec.cs

See this annotation in the file changed.

@github-actions github-actions / unittests

NodaMoney.Tests.CurrencyBuilderSpec.GivenIWantToCreateCustomCurrency ► WhenRegisterBitCoinInIsoNamespace_ThenShouldBeAvailable

Failed test found in:
  ./artifacts/_fv-az1771-126_2024-12-04_04_36_40.trx
  ./artifacts/_fv-az1771-126_2024-12-04_04_36_42.trx
Error:
  NodaMoney.InvalidCurrencyException : The currency BTB is already registered in ISO-4217.
Raw output
NodaMoney.InvalidCurrencyException : The currency BTB is already registered in ISO-4217.
   at NodaMoney.CurrencyBuilder.Register() in /_/src/NodaMoney/CurrencyBuilder.cs:line 139
   at NodaMoney.Tests.CurrencyBuilderSpec.GivenIWantToCreateCustomCurrency.WhenRegisterBitCoinInIsoNamespace_ThenShouldBeAvailable() in /home/runner/work/NodaMoney/NodaMoney/tests/NodaMoney.Tests/CurrencyBuilderSpec.cs:line 33
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments, Signature sig, Boolean isConstructor)
   at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)

Check failure on line 107 in tests/NodaMoney.Tests/CurrencyBuilderSpec.cs

See this annotation in the file changed.

@github-actions github-actions / unittests

NodaMoney.Tests.CurrencyBuilderSpec.GivenIWantToCreateCustomCurrency ► WhenRegisterExistingCurrency_ThenThrowException

Failed test found in:
  ./artifacts/_fv-az1771-126_2024-12-04_04_36_40.trx
  ./artifacts/_fv-az1771-126_2024-12-04_04_36_42.trx
Error:
  Expected a <NodaMoney.InvalidCurrencyException> to be thrown, but no exception was thrown.
Raw output
Expected a <NodaMoney.InvalidCurrencyException> to be thrown, but no exception was thrown.
   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)
   at FluentAssertions.Specialized.DelegateAssertionsBase`2.ThrowInternal[TException](Exception exception, String because, Object[] becauseArgs)
   at FluentAssertions.Specialized.DelegateAssertions`2.Throw[TException](String because, Object[] becauseArgs)
   at NodaMoney.Tests.CurrencyBuilderSpec.GivenIWantToCreateCustomCurrency.WhenRegisterExistingCurrency_ThenThrowException() in /home/runner/work/NodaMoney/NodaMoney/tests/NodaMoney.Tests/CurrencyBuilderSpec.cs:line 107
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments, Signature sig, Boolean isConstructor)
   at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)

Check failure on line 145 in tests/NodaMoney.Tests/CurrencyBuilderSpec.cs

See this annotation in the file changed.

@github-actions github-actions / unittests

NodaMoney.Tests.CurrencyBuilderSpec.GivenIWantToCreateCustomCurrency ► WhenSymbolIsEmpty_ThenSymbolMustBeDefaultCurrencySign

Failed test found in:
  ./artifacts/_fv-az1771-126_2024-12-04_04_36_40.trx
  ./artifacts/_fv-az1771-126_2024-12-04_04_36_42.trx
Error:
  NodaMoney.InvalidCurrencyException : The currency BTH is already registered in ISO-4217.
Raw output
NodaMoney.InvalidCurrencyException : The currency BTH is already registered in ISO-4217.
   at NodaMoney.CurrencyBuilder.Register() in /_/src/NodaMoney/CurrencyBuilder.cs:line 139
   at NodaMoney.Tests.CurrencyBuilderSpec.GivenIWantToCreateCustomCurrency.WhenSymbolIsEmpty_ThenSymbolMustBeDefaultCurrencySign() in /home/runner/work/NodaMoney/NodaMoney/tests/NodaMoney.Tests/CurrencyBuilderSpec.cs:line 145
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments, Signature sig, Boolean isConstructor)
   at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)

Check failure on line 246 in tests/NodaMoney.Tests/CurrencyBuilderSpec.cs

See this annotation in the file changed.

@github-actions github-actions / unittests

NodaMoney.Tests.CurrencyBuilderSpec.GivenIWantToReplaceIsoCurrencyWithOwnVersion ► WhenReplacingEuroWithCustom_ThenThisShouldSucceed

Failed test found in:
  ./artifacts/_fv-az1771-126_2024-12-04_04_36_40.trx
  ./artifacts/_fv-az1771-126_2024-12-04_04_36_42.trx
Error:
  NodaMoney.InvalidCurrencyException : Currency { Code = PAB, IsIso4217 = True, MinimalAmount = 0.01, Symbol = B/. } is unknown currency code!
Raw output
NodaMoney.InvalidCurrencyException : Currency { Code = PAB, IsIso4217 = True, MinimalAmount = 0.01, Symbol = B/. } is unknown currency code!
   at NodaMoney.CurrencyRegistry.Get(Currency currency) in /_/src/NodaMoney/CurrencyRegistry.cs:line 53
   at NodaMoney.CurrencyInfo.FromCurrencyUnit(Currency currency) in /_/src/NodaMoney/CurrencyInfo.cs:line 164
   at NodaMoney.CurrencyBuilder.LoadDataFromCurrency(Currency currency) in /_/src/NodaMoney/CurrencyBuilder.cs:line 168
   at NodaMoney.Tests.CurrencyBuilderSpec.GivenIWantToReplaceIsoCurrencyWithOwnVersion.WhenReplacingEuroWithCustom_ThenThisShouldSucceed() in /home/runner/work/NodaMoney/NodaMoney/tests/NodaMoney.Tests/CurrencyBuilderSpec.cs:line 246
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments, Signature sig, Boolean isConstructor)
   at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)

Check failure on line 200 in tests/NodaMoney.Tests/CurrencyBuilderSpec.cs

See this annotation in the file changed.

@github-actions github-actions / unittests

NodaMoney.Tests.CurrencyBuilderSpec.GivenIWantToUnregisterCurrency ► WhenCurrencyDoesNotExist_ThenThrowException

Failed test found in:
  ./artifacts/_fv-az1771-126_2024-12-04_04_36_40.trx
Error:
  Expected exception message to match the equivalent of "*specifies a currency that is not found*", but "ABC is unknown currency code!" does not.
  
Raw output
Expected exception message to match the equivalent of "*specifies a currency that is not found*", but "ABC is unknown currency code!" does not.

   at FluentAssertions.Execution.XUnit2TestFramework.Throw(String message)
   at FluentAssertions.Execution.TestFrameworkProvider.Throw(String message)
   at FluentAssertions.Execution.CollectingAssertionStrategy.ThrowIfAny(IDictionary`2 context)
   at FluentAssertions.Execution.AssertionScope.Dispose()
   at FluentAssertions.Specialized.ExceptionAssertions`1.ExceptionMessageAssertion.Execute(IEnumerable`1 messages, String expectation, String because, Object[] becauseArgs)
   at FluentAssertions.Specialized.ExceptionAssertions`1.ExceptionMessageAssertion.Execute(IEnumerable`1 messages, String expectation, String because, Object[] becauseArgs)
   at FluentAssertions.Specialized.ExceptionAssertions`1.WithMessage(String expectedWildcardPattern, String because, Object[] becauseArgs)
   at NodaMoney.Tests.CurrencyBuilderSpec.GivenIWantToUnregisterCurrency.WhenCurrencyDoesNotExist_ThenThrowException() in /home/runner/work/NodaMoney/NodaMoney/tests/NodaMoney.Tests/CurrencyBuilderSpec.cs:line 200
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments, Signature sig, Boolean isConstructor)
   at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)

Check failure on line 184 in tests/NodaMoney.Tests/CurrencyBuilderSpec.cs

See this annotation in the file changed.

@github-actions github-actions / unittests

NodaMoney.Tests.CurrencyBuilderSpec.GivenIWantToUnregisterCurrency ► WhenUnregisterCustomCurrency_ThenThisMustSucceed

Failed test found in:
  ./artifacts/_fv-az1771-126_2024-12-04_04_36_40.trx
  ./artifacts/_fv-az1771-126_2024-12-04_04_36_42.trx
Error:
  NodaMoney.InvalidCurrencyException : The currency XYZ is already registered in virtual.
Raw output
NodaMoney.InvalidCurrencyException : The currency XYZ is already registered in virtual.
   at NodaMoney.CurrencyBuilder.Register() in /_/src/NodaMoney/CurrencyBuilder.cs:line 139
   at NodaMoney.Tests.CurrencyBuilderSpec.GivenIWantToUnregisterCurrency.WhenUnregisterCustomCurrency_ThenThisMustSucceed() in /home/runner/work/NodaMoney/NodaMoney/tests/NodaMoney.Tests/CurrencyBuilderSpec.cs:line 184
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments, Signature sig, Boolean isConstructor)
   at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)

Check failure on line 170 in tests/NodaMoney.Tests/CurrencyBuilderSpec.cs

See this annotation in the file changed.

@github-actions github-actions / unittests

NodaMoney.Tests.CurrencyBuilderSpec.GivenIWantToUnregisterCurrency ► WhenUnregisterIsoCurrency_ThenThisMustSucceed

Failed test found in:
  ./artifacts/_fv-az1771-126_2024-12-04_04_36_40.trx
  ./artifacts/_fv-az1771-126_2024-12-04_04_36_42.trx
Error:
  Expected a <NodaMoney.InvalidCurrencyException> to be thrown, but no exception was thrown.
Raw output
Expected a <NodaMoney.InvalidCurrencyException> to be thrown, but no exception was thrown.
   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)
   at FluentAssertions.Specialized.DelegateAssertionsBase`2.ThrowInternal[TException](Exception exception, String because, Object[] becauseArgs)
   at FluentAssertions.Specialized.DelegateAssertions`2.Throw[TException](String because, Object[] becauseArgs)
   at NodaMoney.Tests.CurrencyBuilderSpec.GivenIWantToUnregisterCurrency.WhenUnregisterIsoCurrency_ThenThisMustSucceed() in /home/runner/work/NodaMoney/NodaMoney/tests/NodaMoney.Tests/CurrencyBuilderSpec.cs:line 170
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments, Signature sig, Boolean isConstructor)
   at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)

Check failure on line 286 in tests/NodaMoney.Tests/CurrencyInfoSpec.cs

See this annotation in the file changed.

@github-actions github-actions / unittests

NodaMoney.Tests.CurrencyInfoSpec.GivenIWantToInitiateInternallyACurrency ► WhenCodeIsNull_ThenCreatingShouldThrow

Failed test found in:
  ./artifacts/_fv-az1771-126_2024-12-04_04_36_40.trx
  ./artifacts/_fv-az1771-126_2024-12-04_04_36_42.trx
Error:
  Expected a <System.ArgumentException> to be thrown, but no exception was thrown.
Raw output
Expected a <System.ArgumentException> to be thrown, but no exception was thrown.
   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)
   at FluentAssertions.Specialized.DelegateAssertionsBase`2.ThrowInternal[TException](Exception exception, String because, Object[] becauseArgs)
   at FluentAssertions.Specialized.DelegateAssertions`2.Throw[TException](String because, Object[] becauseArgs)
   at NodaMoney.Tests.CurrencyInfoSpec.GivenIWantToInitiateInternallyACurrency.WhenCodeIsNull_ThenCreatingShouldThrow() in /home/runner/work/NodaMoney/NodaMoney/tests/NodaMoney.Tests/CurrencyInfoSpec.cs:line 286
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments, Signature sig, Boolean isConstructor)
   at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)