using System; using Developpez.Dotnet.Algorithms; using NUnit.Framework; namespace Developpez.Dotnet.Tests.Algorithms { [TestFixture] public class LuhnTests { #region Check method with strings [Test] public void CheckStandardString() { Assert.AreEqual(true, Luhn.Check("732829320")); Assert.AreEqual(true, Luhn.Check("7328", LuhnCheckType.None)); Assert.AreEqual(true, Luhn.Check("732829320", LuhnCheckType.Siren)); Assert.AreEqual(true, Luhn.Check("73282932000009", LuhnCheckType.Siret)); Assert.AreEqual(true, Luhn.Check("7322293245668758", LuhnCheckType.CreditCard)); } [Test] public void CheckIncorrectString() { Assert.AreEqual(false, Luhn.Check("7328293200")); Assert.AreEqual(false, Luhn.Check("7327", LuhnCheckType.None)); Assert.AreEqual(false, Luhn.Check("732829321", LuhnCheckType.Siren)); Assert.AreEqual(false, Luhn.Check("73282932000008", LuhnCheckType.Siret)); Assert.AreEqual(false, Luhn.Check("7322293245668757", LuhnCheckType.CreditCard)); } [Test] [ExpectedException(typeof(ArgumentNullException))] public void CheckEmptyString() { Luhn.Check(string.Empty); } [Test] [ExpectedException(typeof(ArgumentNullException))] public void CheckNullString() { Luhn.Check(null); } [Test] [ExpectedException(typeof(ArgumentOutOfRangeException))] public void CheckZeroString() { Luhn.Check("0"); } [Test] [ExpectedException(typeof(ArgumentException))] public void CheckNotANumberString() { Luhn.Check("Foo"); } #endregion #region Check method with numbers [Test] public void CheckStandardNumber() { Assert.AreEqual(true, Luhn.Check(732829320)); Assert.AreEqual(true, Luhn.Check(7328, LuhnCheckType.None)); Assert.AreEqual(true, Luhn.Check(732829320, LuhnCheckType.Siren)); Assert.AreEqual(true, Luhn.Check(73282932000009, LuhnCheckType.Siret)); Assert.AreEqual(true, Luhn.Check(7322293245668758, LuhnCheckType.CreditCard)); } [Test] public void CheckIncorrectNumber() { Assert.AreEqual(false, Luhn.Check(7328293200)); Assert.AreEqual(false, Luhn.Check(7327, LuhnCheckType.None)); Assert.AreEqual(false, Luhn.Check(732829321, LuhnCheckType.Siren)); Assert.AreEqual(false, Luhn.Check(73282932000008, LuhnCheckType.Siret)); Assert.AreEqual(false, Luhn.Check(7322293245668757, LuhnCheckType.CreditCard)); } [Test] [ExpectedException(typeof(ArgumentOutOfRangeException))] public void CheckZeroNumber() { Luhn.Check(0); } [Test] [ExpectedException(typeof(ArgumentOutOfRangeException))] public void CheckNegativeNumber() { Luhn.Check(-5); } #endregion } }