Click here to Skip to main content
Click here to Skip to main content
Add your own
alternative version

A Money type for the CLR

, 18 Mar 2013 Ms-PL
A convenient, high-performance money structure for the CLR which handles arithmetic operations, currency types, formatting, and careful distribution and rounding without loss.
moneytype.zip
Money
lib
xunit.console.clr4.exe
xunit.console.clr4.x86.exe
xunit.console.exe
xunit.console.x86.exe
xunit.dll
xunit.dll.tdnet
xunit.extensions.dll
xunit.gui.clr4.exe
xunit.gui.clr4.x86.exe
xunit.gui.exe
xunit.gui.x86.exe
xunit.installer.exe
xunit.runner.msbuild.dll
xunit.runner.tdnet.dll
xunit.runner.utility.dll
xunitext.dll
xunitext.nunit.dll
xunitext.runner.jetbrains.dll
xunitext.runner.msbuild.dll
xunitext.runner.tdnet.dll
xunitext35.dll
src
Money.sln.DotSettings.user
Money.Tests
bin
Debug
Money.dll
Money.Tests.dll
xunit.dll
obj
Debug
Money.Tests.dll
Properties
Money.v11.suo
Money
bin
Debug
Money.dll
obj
Debug
Money.dll
Properties
using System;
using System.Globalization;
using Xunit;

namespace System.Tests
{
    public class CurrencyTests
    {
        [Fact]
        public void CurrencyFromCurrentCultureEqualsCurrentCultureCurrency()
        {
            // NOTE: I think this test could fail in certain cultures...
            var currency1 = new Currency(new RegionInfo(CultureInfo.CurrentCulture.LCID).ISOCurrencySymbol);
            var currency2 = Currency.FromCurrentCulture();

            Assert.Equal(currency1.Name, currency2.Name);
            Assert.Equal(currency1.Symbol, currency2.Symbol);
            Assert.Equal(currency1.Iso3LetterCode, currency2.Iso3LetterCode);
            Assert.Equal(currency1.IsoNumericCode, currency2.IsoNumericCode);
        }

        [Fact]
        public void CurrencyFromSpecificCultureInfoIsCorrect()
        {
            var currency = Currency.FromCultureInfo(new CultureInfo(1052));

            Assert.Equal(8, currency.IsoNumericCode);
        }

        [Fact]
        public void CurrencyFromSpecificIsoCodeIsCorrect()
        {
            var currency = Currency.FromIso3LetterCode("EUR");
            
            Assert.Equal(978, currency.IsoNumericCode);
        }

        [Fact]
        public void CurrencyHasValueEquality()
        {
            var currency1 = new Currency("USD");
            var currency2 = new Currency("USD");
            object boxedCurrency2 = currency2;

            Assert.True(currency1.Equals(currency2));
            Assert.True(currency1.Equals(boxedCurrency2));
        }
    }
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Microsoft Public License (Ms-PL)

Share

About the Author

codekaizen
Architect
United States United States
I'm a software engineer with 25 years of experience in areas from game and simulation development, enterprise development, systems management, machine learning, real-time and embedded systems development and geospaitial systems development.
 
You can find more of my work at http://www.codeplex.com and my articles at http://vectordotnet.blogspot.com/ and http://dotnoted.spaces.live.com.

| Advertise | Privacy | Terms of Use | Mobile
Web02 | 2.8.141030.1 | Last Updated 18 Mar 2013
Article Copyright 2008 by codekaizen
Everything else Copyright © CodeProject, 1999-2014
Layout: fixed | fluid