using System.Collections.Generic; using Developpez.Dotnet.Language.Grammar; using NUnit.Framework; namespace Developpez.Dotnet.Tests { [TestFixture] public class NumberConverterTests { #region Spell method with int values [Test] public void SpellMethodWithUnitsAndTens() { string[] unitsAndTens = new string[100] { string.Empty, "un", "deux", "trois", "quatre", "cinq", "six", "sept", "huit", "neuf", "dix", "onze", "douze", "treize", "quatorze", "quinze", "seize", "dix-sept", "dix-huit", "dix-neuf", "vingt", "vingt et un", "vingt-deux", "vingt-trois", "vingt-quatre", "vingt-cinq", "vingt-six", "vingt-sept", "vingt-huit", "vingt-neuf", "trente", "trente et un", "trente-deux", "trente-trois", "trente-quatre", "trente-cinq", "trente-six", "trente-sept", "trente-huit", "trente-neuf", "quarante", "quarante et un", "quarante-deux", "quarante-trois", "quarante-quatre", "quarante-cinq", "quarante-six", "quarante-sept", "quarante-huit", "quarante-neuf", "cinquante", "cinquante et un", "cinquante-deux", "cinquante-trois", "cinquante-quatre", "cinquante-cinq", "cinquante-six", "cinquante-sept", "cinquante-huit", "cinquante-neuf", "soixante", "soixante et un", "soixante-deux", "soixante-trois", "soixante-quatre", "soixante-cinq", "soixante-six", "soixante-sept", "soixante-huit", "soixante-neuf", "soixante-dix", "soixante et onze", "soixante-douze", "soixante-treize", "soixante-quatorze", "soixante-quinze", "soixante-seize", "soixante-dix-sept", "soixante-dix-huit", "soixante-dix-neuf", "quatre-vingts", "quatre-vingt-un", "quatre-vingt-deux", "quatre-vingt-trois", "quatre-vingt-quatre", "quatre-vingt-cinq", "quatre-vingt-six", "quatre-vingt-sept", "quatre-vingt-huit", "quatre-vingt-neuf", "quatre-vingt-dix", "quatre-vingt-onze", "quatre-vingt-douze", "quatre-vingt-treize", "quatre-vingt-quatorze", "quatre-vingt-quinze", "quatre-vingt-seize", "quatre-vingt-dix-sept", "quatre-vingt-dix-huit", "quatre-vingt-dix-neuf" }; // Nombres positifs : Dictionary unitsAndTensNumbers = new Dictionary(100); unitsAndTensNumbers.Add(0, "zéro"); for (int i = 1; i < unitsAndTens.Length; i++) { unitsAndTensNumbers.Add(i, unitsAndTens[i]); } foreach (int number in unitsAndTensNumbers.Keys) { Assert.AreEqual(unitsAndTensNumbers[number], NumberConverter.Spell(number)); } } [Test] public void SpellMethodWithUnitsAndTensAndMinus() { string[] unitsAndTens = new string[100] { string.Empty, "un", "deux", "trois", "quatre", "cinq", "six", "sept", "huit", "neuf", "dix", "onze", "douze", "treize", "quatorze", "quinze", "seize", "dix-sept", "dix-huit", "dix-neuf", "vingt", "vingt et un", "vingt-deux", "vingt-trois", "vingt-quatre", "vingt-cinq", "vingt-six", "vingt-sept", "vingt-huit", "vingt-neuf", "trente", "trente et un", "trente-deux", "trente-trois", "trente-quatre", "trente-cinq", "trente-six", "trente-sept", "trente-huit", "trente-neuf", "quarante", "quarante et un", "quarante-deux", "quarante-trois", "quarante-quatre", "quarante-cinq", "quarante-six", "quarante-sept", "quarante-huit", "quarante-neuf", "cinquante", "cinquante et un", "cinquante-deux", "cinquante-trois", "cinquante-quatre", "cinquante-cinq", "cinquante-six", "cinquante-sept", "cinquante-huit", "cinquante-neuf", "soixante", "soixante et un", "soixante-deux", "soixante-trois", "soixante-quatre", "soixante-cinq", "soixante-six", "soixante-sept", "soixante-huit", "soixante-neuf", "soixante-dix", "soixante et onze", "soixante-douze", "soixante-treize", "soixante-quatorze", "soixante-quinze", "soixante-seize", "soixante-dix-sept", "soixante-dix-huit", "soixante-dix-neuf", "quatre-vingts", "quatre-vingt-un", "quatre-vingt-deux", "quatre-vingt-trois", "quatre-vingt-quatre", "quatre-vingt-cinq", "quatre-vingt-six", "quatre-vingt-sept", "quatre-vingt-huit", "quatre-vingt-neuf", "quatre-vingt-dix", "quatre-vingt-onze", "quatre-vingt-douze", "quatre-vingt-treize", "quatre-vingt-quatorze", "quatre-vingt-quinze", "quatre-vingt-seize", "quatre-vingt-dix-sept", "quatre-vingt-dix-huit", "quatre-vingt-dix-neuf" }; // Nombres négatifs : Dictionary unitsAndTensNumbers = new Dictionary(100); unitsAndTensNumbers.Add(0, "zéro"); for (int i = 1; i < unitsAndTens.Length; i++) { unitsAndTensNumbers.Add(-i, "moins " + unitsAndTens[i]); } foreach (int number in unitsAndTensNumbers.Keys) { Assert.AreEqual(unitsAndTensNumbers[number], NumberConverter.Spell(number)); } } [Test] public void SpellMethodWithUnitsAndTensAndFeminine() { string[] unitsAndTens = new string[100] { string.Empty, "une", "deux", "trois", "quatre", "cinq", "six", "sept", "huit", "neuf", "dix", "onze", "douze", "treize", "quatorze", "quinze", "seize", "dix-sept", "dix-huit", "dix-neuf", "vingt", "vingt et une", "vingt-deux", "vingt-trois", "vingt-quatre", "vingt-cinq", "vingt-six", "vingt-sept", "vingt-huit", "vingt-neuf", "trente", "trente et une", "trente-deux", "trente-trois", "trente-quatre", "trente-cinq", "trente-six", "trente-sept", "trente-huit", "trente-neuf", "quarante", "quarante et une", "quarante-deux", "quarante-trois", "quarante-quatre", "quarante-cinq", "quarante-six", "quarante-sept", "quarante-huit", "quarante-neuf", "cinquante", "cinquante et une", "cinquante-deux", "cinquante-trois", "cinquante-quatre", "cinquante-cinq", "cinquante-six", "cinquante-sept", "cinquante-huit", "cinquante-neuf", "soixante", "soixante et une", "soixante-deux", "soixante-trois", "soixante-quatre", "soixante-cinq", "soixante-six", "soixante-sept", "soixante-huit", "soixante-neuf", "soixante-dix", "soixante et onze", "soixante-douze", "soixante-treize", "soixante-quatorze", "soixante-quinze", "soixante-seize", "soixante-dix-sept", "soixante-dix-huit", "soixante-dix-neuf", "quatre-vingts", "quatre-vingt-une", "quatre-vingt-deux", "quatre-vingt-trois", "quatre-vingt-quatre", "quatre-vingt-cinq", "quatre-vingt-six", "quatre-vingt-sept", "quatre-vingt-huit", "quatre-vingt-neuf", "quatre-vingt-dix", "quatre-vingt-onze", "quatre-vingt-douze", "quatre-vingt-treize", "quatre-vingt-quatorze", "quatre-vingt-quinze", "quatre-vingt-seize", "quatre-vingt-dix-sept", "quatre-vingt-dix-huit", "quatre-vingt-dix-neuf" }; // Nombres positifs féminins : Dictionary unitsAndTensNumbers = new Dictionary(100); unitsAndTensNumbers.Add(0, "zéro"); for (int i = 1; i < unitsAndTens.Length; i++) { unitsAndTensNumbers.Add(i, unitsAndTens[i]); } foreach (int number in unitsAndTensNumbers.Keys) { Assert.AreEqual(unitsAndTensNumbers[number], NumberConverter.Spell(number, Gender.Feminine)); } } [Test] public void SpellMethodWithUnitsAndTensAndMinusAndFeminine() { string[] unitsAndTens = new string[100] { string.Empty, "une", "deux", "trois", "quatre", "cinq", "six", "sept", "huit", "neuf", "dix", "onze", "douze", "treize", "quatorze", "quinze", "seize", "dix-sept", "dix-huit", "dix-neuf", "vingt", "vingt et une", "vingt-deux", "vingt-trois", "vingt-quatre", "vingt-cinq", "vingt-six", "vingt-sept", "vingt-huit", "vingt-neuf", "trente", "trente et une", "trente-deux", "trente-trois", "trente-quatre", "trente-cinq", "trente-six", "trente-sept", "trente-huit", "trente-neuf", "quarante", "quarante et une", "quarante-deux", "quarante-trois", "quarante-quatre", "quarante-cinq", "quarante-six", "quarante-sept", "quarante-huit", "quarante-neuf", "cinquante", "cinquante et une", "cinquante-deux", "cinquante-trois", "cinquante-quatre", "cinquante-cinq", "cinquante-six", "cinquante-sept", "cinquante-huit", "cinquante-neuf", "soixante", "soixante et une", "soixante-deux", "soixante-trois", "soixante-quatre", "soixante-cinq", "soixante-six", "soixante-sept", "soixante-huit", "soixante-neuf", "soixante-dix", "soixante et onze", "soixante-douze", "soixante-treize", "soixante-quatorze", "soixante-quinze", "soixante-seize", "soixante-dix-sept", "soixante-dix-huit", "soixante-dix-neuf", "quatre-vingts", "quatre-vingt-une", "quatre-vingt-deux", "quatre-vingt-trois", "quatre-vingt-quatre", "quatre-vingt-cinq", "quatre-vingt-six", "quatre-vingt-sept", "quatre-vingt-huit", "quatre-vingt-neuf", "quatre-vingt-dix", "quatre-vingt-onze", "quatre-vingt-douze", "quatre-vingt-treize", "quatre-vingt-quatorze", "quatre-vingt-quinze", "quatre-vingt-seize", "quatre-vingt-dix-sept", "quatre-vingt-dix-huit", "quatre-vingt-dix-neuf" }; // Nombres négatifs féminins : Dictionary unitsAndTensNumbers = new Dictionary(100); unitsAndTensNumbers.Add(0, "zéro"); for (int i = 1; i < unitsAndTens.Length; i++) { unitsAndTensNumbers.Add(-i, "moins " + unitsAndTens[i]); } foreach (int number in unitsAndTensNumbers.Keys) { Assert.AreEqual(unitsAndTensNumbers[number], NumberConverter.Spell(number, Gender.Feminine)); } } [Test] public void SpellMethodWithTwenties() { Dictionary twentiesNumbers = new Dictionary(); twentiesNumbers.Add(20, "vingt"); twentiesNumbers.Add(25, "vingt-cinq"); twentiesNumbers.Add(80, "quatre-vingts"); twentiesNumbers.Add(85, "quatre-vingt-cinq"); twentiesNumbers.Add(120, "cent vingt"); twentiesNumbers.Add(180, "cent quatre-vingts"); twentiesNumbers.Add(520, "cinq cent vingt"); twentiesNumbers.Add(580, "cinq cent quatre-vingts"); twentiesNumbers.Add(1020, "mille vingt"); twentiesNumbers.Add(1080, "mille quatre-vingts"); twentiesNumbers.Add(20000, "vingt mille"); twentiesNumbers.Add(80000, "quatre-vingt mille"); twentiesNumbers.Add(20000000, "vingt millions"); twentiesNumbers.Add(80000000, "quatre-vingts millions"); foreach (int number in twentiesNumbers.Keys) { Assert.AreEqual(twentiesNumbers[number], NumberConverter.Spell(number)); } } [Test] public void SpellMethodWithTwentiesAndOrdinal() { Dictionary twentiesNumbers = new Dictionary(); twentiesNumbers.Add(20, "vingt"); twentiesNumbers.Add(25, "vingt-cinq"); twentiesNumbers.Add(80, "quatre-vingt"); twentiesNumbers.Add(85, "quatre-vingt-cinq"); twentiesNumbers.Add(120, "cent vingt"); twentiesNumbers.Add(180, "cent quatre-vingt"); twentiesNumbers.Add(520, "cinq cent vingt"); twentiesNumbers.Add(580, "cinq cent quatre-vingt"); twentiesNumbers.Add(1020, "mille vingt"); twentiesNumbers.Add(1080, "mille quatre-vingt"); twentiesNumbers.Add(20000, "vingt mille"); twentiesNumbers.Add(80000, "quatre-vingt mille"); twentiesNumbers.Add(20000000, "vingt millions"); twentiesNumbers.Add(80000000, "quatre-vingt millions"); foreach (int number in twentiesNumbers.Keys) { Assert.AreEqual(twentiesNumbers[number], NumberConverter.Spell(number, Gender.Masculine, NumeralAdjective.Ordinal)); } } [Test] public void SpellMethodWithHundreds() { Dictionary hundredsNumbers = new Dictionary(144); hundredsNumbers.Add(100, "cent"); hundredsNumbers.Add(101, "cent un"); hundredsNumbers.Add(110, "cent dix"); hundredsNumbers.Add(111, "cent onze"); hundredsNumbers.Add(200, "deux cents"); hundredsNumbers.Add(202, "deux cent deux"); hundredsNumbers.Add(220, "deux cent vingt"); hundredsNumbers.Add(222, "deux cent vingt-deux"); hundredsNumbers.Add(300, "trois cents"); hundredsNumbers.Add(303, "trois cent trois"); hundredsNumbers.Add(330, "trois cent trente"); hundredsNumbers.Add(333, "trois cent trente-trois"); hundredsNumbers.Add(400, "quatre cents"); hundredsNumbers.Add(404, "quatre cent quatre"); hundredsNumbers.Add(440, "quatre cent quarante"); hundredsNumbers.Add(444, "quatre cent quarante-quatre"); hundredsNumbers.Add(500, "cinq cents"); hundredsNumbers.Add(505, "cinq cent cinq"); hundredsNumbers.Add(550, "cinq cent cinquante"); hundredsNumbers.Add(555, "cinq cent cinquante-cinq"); hundredsNumbers.Add(600, "six cents"); hundredsNumbers.Add(606, "six cent six"); hundredsNumbers.Add(660, "six cent soixante"); hundredsNumbers.Add(666, "six cent soixante-six"); hundredsNumbers.Add(700, "sept cents"); hundredsNumbers.Add(707, "sept cent sept"); hundredsNumbers.Add(770, "sept cent soixante-dix"); hundredsNumbers.Add(777, "sept cent soixante-dix-sept"); hundredsNumbers.Add(800, "huit cents"); hundredsNumbers.Add(808, "huit cent huit"); hundredsNumbers.Add(880, "huit cent quatre-vingts"); hundredsNumbers.Add(888, "huit cent quatre-vingt-huit"); hundredsNumbers.Add(900, "neuf cents"); hundredsNumbers.Add(909, "neuf cent neuf"); hundredsNumbers.Add(990, "neuf cent quatre-vingt-dix"); hundredsNumbers.Add(999, "neuf cent quatre-vingt-dix-neuf"); hundredsNumbers.Add(100000, "cent mille"); hundredsNumbers.Add(101000, "cent un mille"); hundredsNumbers.Add(110000, "cent dix mille"); hundredsNumbers.Add(111000, "cent onze mille"); hundredsNumbers.Add(200000, "deux cent mille"); hundredsNumbers.Add(202000, "deux cent deux mille"); hundredsNumbers.Add(220000, "deux cent vingt mille"); hundredsNumbers.Add(222000, "deux cent vingt-deux mille"); hundredsNumbers.Add(300000, "trois cent mille"); hundredsNumbers.Add(303000, "trois cent trois mille"); hundredsNumbers.Add(330000, "trois cent trente mille"); hundredsNumbers.Add(333000, "trois cent trente-trois mille"); hundredsNumbers.Add(400000, "quatre cent mille"); hundredsNumbers.Add(404000, "quatre cent quatre mille"); hundredsNumbers.Add(440000, "quatre cent quarante mille"); hundredsNumbers.Add(444000, "quatre cent quarante-quatre mille"); hundredsNumbers.Add(500000, "cinq cent mille"); hundredsNumbers.Add(505000, "cinq cent cinq mille"); hundredsNumbers.Add(550000, "cinq cent cinquante mille"); hundredsNumbers.Add(555000, "cinq cent cinquante-cinq mille"); hundredsNumbers.Add(600000, "six cent mille"); hundredsNumbers.Add(606000, "six cent six mille"); hundredsNumbers.Add(660000, "six cent soixante mille"); hundredsNumbers.Add(666000, "six cent soixante-six mille"); hundredsNumbers.Add(700000, "sept cent mille"); hundredsNumbers.Add(707000, "sept cent sept mille"); hundredsNumbers.Add(770000, "sept cent soixante-dix mille"); hundredsNumbers.Add(777000, "sept cent soixante-dix-sept mille"); hundredsNumbers.Add(800000, "huit cent mille"); hundredsNumbers.Add(808000, "huit cent huit mille"); hundredsNumbers.Add(880000, "huit cent quatre-vingt mille"); hundredsNumbers.Add(888000, "huit cent quatre-vingt-huit mille"); hundredsNumbers.Add(900000, "neuf cent mille"); hundredsNumbers.Add(909000, "neuf cent neuf mille"); hundredsNumbers.Add(990000, "neuf cent quatre-vingt-dix mille"); hundredsNumbers.Add(999000, "neuf cent quatre-vingt-dix-neuf mille"); hundredsNumbers.Add(100000000, "cent millions"); hundredsNumbers.Add(101000000, "cent un millions"); hundredsNumbers.Add(110000000, "cent dix millions"); hundredsNumbers.Add(111000000, "cent onze millions"); hundredsNumbers.Add(200000000, "deux cents millions"); hundredsNumbers.Add(202000000, "deux cent deux millions"); hundredsNumbers.Add(220000000, "deux cent vingt millions"); hundredsNumbers.Add(222000000, "deux cent vingt-deux millions"); hundredsNumbers.Add(300000000, "trois cents millions"); hundredsNumbers.Add(303000000, "trois cent trois millions"); hundredsNumbers.Add(330000000, "trois cent trente millions"); hundredsNumbers.Add(333000000, "trois cent trente-trois millions"); hundredsNumbers.Add(400000000, "quatre cents millions"); hundredsNumbers.Add(404000000, "quatre cent quatre millions"); hundredsNumbers.Add(440000000, "quatre cent quarante millions"); hundredsNumbers.Add(444000000, "quatre cent quarante-quatre millions"); hundredsNumbers.Add(500000000, "cinq cents millions"); hundredsNumbers.Add(505000000, "cinq cent cinq millions"); hundredsNumbers.Add(550000000, "cinq cent cinquante millions"); hundredsNumbers.Add(555000000, "cinq cent cinquante-cinq millions"); hundredsNumbers.Add(600000000, "six cents millions"); hundredsNumbers.Add(606000000, "six cent six millions"); hundredsNumbers.Add(660000000, "six cent soixante millions"); hundredsNumbers.Add(666000000, "six cent soixante-six millions"); hundredsNumbers.Add(700000000, "sept cents millions"); hundredsNumbers.Add(707000000, "sept cent sept millions"); hundredsNumbers.Add(770000000, "sept cent soixante-dix millions"); hundredsNumbers.Add(777000000, "sept cent soixante-dix-sept millions"); hundredsNumbers.Add(800000000, "huit cents millions"); hundredsNumbers.Add(808000000, "huit cent huit millions"); hundredsNumbers.Add(880000000, "huit cent quatre-vingts millions"); hundredsNumbers.Add(888000000, "huit cent quatre-vingt-huit millions"); hundredsNumbers.Add(900000000, "neuf cents millions"); hundredsNumbers.Add(909000000, "neuf cent neuf millions"); hundredsNumbers.Add(990000000, "neuf cent quatre-vingt-dix millions"); hundredsNumbers.Add(999000000, "neuf cent quatre-vingt-dix-neuf millions"); hundredsNumbers.Add(100000000000, "cent milliards"); hundredsNumbers.Add(101000000000, "cent un milliards"); hundredsNumbers.Add(110000000000, "cent dix milliards"); hundredsNumbers.Add(111000000000, "cent onze milliards"); hundredsNumbers.Add(200000000000, "deux cents milliards"); hundredsNumbers.Add(202000000000, "deux cent deux milliards"); hundredsNumbers.Add(220000000000, "deux cent vingt milliards"); hundredsNumbers.Add(222000000000, "deux cent vingt-deux milliards"); hundredsNumbers.Add(300000000000, "trois cents milliards"); hundredsNumbers.Add(303000000000, "trois cent trois milliards"); hundredsNumbers.Add(330000000000, "trois cent trente milliards"); hundredsNumbers.Add(333000000000, "trois cent trente-trois milliards"); hundredsNumbers.Add(400000000000, "quatre cents milliards"); hundredsNumbers.Add(404000000000, "quatre cent quatre milliards"); hundredsNumbers.Add(440000000000, "quatre cent quarante milliards"); hundredsNumbers.Add(444000000000, "quatre cent quarante-quatre milliards"); hundredsNumbers.Add(500000000000, "cinq cents milliards"); hundredsNumbers.Add(505000000000, "cinq cent cinq milliards"); hundredsNumbers.Add(550000000000, "cinq cent cinquante milliards"); hundredsNumbers.Add(555000000000, "cinq cent cinquante-cinq milliards"); hundredsNumbers.Add(600000000000, "six cents milliards"); hundredsNumbers.Add(606000000000, "six cent six milliards"); hundredsNumbers.Add(660000000000, "six cent soixante milliards"); hundredsNumbers.Add(666000000000, "six cent soixante-six milliards"); hundredsNumbers.Add(700000000000, "sept cents milliards"); hundredsNumbers.Add(707000000000, "sept cent sept milliards"); hundredsNumbers.Add(770000000000, "sept cent soixante-dix milliards"); hundredsNumbers.Add(777000000000, "sept cent soixante-dix-sept milliards"); hundredsNumbers.Add(800000000000, "huit cents milliards"); hundredsNumbers.Add(808000000000, "huit cent huit milliards"); hundredsNumbers.Add(880000000000, "huit cent quatre-vingts milliards"); hundredsNumbers.Add(888000000000, "huit cent quatre-vingt-huit milliards"); hundredsNumbers.Add(900000000000, "neuf cents milliards"); hundredsNumbers.Add(909000000000, "neuf cent neuf milliards"); hundredsNumbers.Add(990000000000, "neuf cent quatre-vingt-dix milliards"); hundredsNumbers.Add(999000000000, "neuf cent quatre-vingt-dix-neuf milliards"); foreach (long number in hundredsNumbers.Keys) { Assert.AreEqual(hundredsNumbers[number], NumberConverter.Spell(number)); } } [Test] public void SpellMethodWithHundredsAndOrdinal() { Dictionary hundredsNumbers = new Dictionary(144); hundredsNumbers.Add(100, "cent"); hundredsNumbers.Add(101, "cent un"); hundredsNumbers.Add(110, "cent dix"); hundredsNumbers.Add(111, "cent onze"); hundredsNumbers.Add(200, "deux cent"); hundredsNumbers.Add(202, "deux cent deux"); hundredsNumbers.Add(220, "deux cent vingt"); hundredsNumbers.Add(222, "deux cent vingt-deux"); hundredsNumbers.Add(300, "trois cent"); hundredsNumbers.Add(303, "trois cent trois"); hundredsNumbers.Add(330, "trois cent trente"); hundredsNumbers.Add(333, "trois cent trente-trois"); hundredsNumbers.Add(400, "quatre cent"); hundredsNumbers.Add(404, "quatre cent quatre"); hundredsNumbers.Add(440, "quatre cent quarante"); hundredsNumbers.Add(444, "quatre cent quarante-quatre"); hundredsNumbers.Add(500, "cinq cent"); hundredsNumbers.Add(505, "cinq cent cinq"); hundredsNumbers.Add(550, "cinq cent cinquante"); hundredsNumbers.Add(555, "cinq cent cinquante-cinq"); hundredsNumbers.Add(600, "six cent"); hundredsNumbers.Add(606, "six cent six"); hundredsNumbers.Add(660, "six cent soixante"); hundredsNumbers.Add(666, "six cent soixante-six"); hundredsNumbers.Add(700, "sept cent"); hundredsNumbers.Add(707, "sept cent sept"); hundredsNumbers.Add(770, "sept cent soixante-dix"); hundredsNumbers.Add(777, "sept cent soixante-dix-sept"); hundredsNumbers.Add(800, "huit cent"); hundredsNumbers.Add(808, "huit cent huit"); hundredsNumbers.Add(880, "huit cent quatre-vingt"); hundredsNumbers.Add(888, "huit cent quatre-vingt-huit"); hundredsNumbers.Add(900, "neuf cent"); hundredsNumbers.Add(909, "neuf cent neuf"); hundredsNumbers.Add(990, "neuf cent quatre-vingt-dix"); hundredsNumbers.Add(999, "neuf cent quatre-vingt-dix-neuf"); hundredsNumbers.Add(100000, "cent mille"); hundredsNumbers.Add(101000, "cent un mille"); hundredsNumbers.Add(110000, "cent dix mille"); hundredsNumbers.Add(111000, "cent onze mille"); hundredsNumbers.Add(200000, "deux cent mille"); hundredsNumbers.Add(202000, "deux cent deux mille"); hundredsNumbers.Add(220000, "deux cent vingt mille"); hundredsNumbers.Add(222000, "deux cent vingt-deux mille"); hundredsNumbers.Add(300000, "trois cent mille"); hundredsNumbers.Add(303000, "trois cent trois mille"); hundredsNumbers.Add(330000, "trois cent trente mille"); hundredsNumbers.Add(333000, "trois cent trente-trois mille"); hundredsNumbers.Add(400000, "quatre cent mille"); hundredsNumbers.Add(404000, "quatre cent quatre mille"); hundredsNumbers.Add(440000, "quatre cent quarante mille"); hundredsNumbers.Add(444000, "quatre cent quarante-quatre mille"); hundredsNumbers.Add(500000, "cinq cent mille"); hundredsNumbers.Add(505000, "cinq cent cinq mille"); hundredsNumbers.Add(550000, "cinq cent cinquante mille"); hundredsNumbers.Add(555000, "cinq cent cinquante-cinq mille"); hundredsNumbers.Add(600000, "six cent mille"); hundredsNumbers.Add(606000, "six cent six mille"); hundredsNumbers.Add(660000, "six cent soixante mille"); hundredsNumbers.Add(666000, "six cent soixante-six mille"); hundredsNumbers.Add(700000, "sept cent mille"); hundredsNumbers.Add(707000, "sept cent sept mille"); hundredsNumbers.Add(770000, "sept cent soixante-dix mille"); hundredsNumbers.Add(777000, "sept cent soixante-dix-sept mille"); hundredsNumbers.Add(800000, "huit cent mille"); hundredsNumbers.Add(808000, "huit cent huit mille"); hundredsNumbers.Add(880000, "huit cent quatre-vingt mille"); hundredsNumbers.Add(888000, "huit cent quatre-vingt-huit mille"); hundredsNumbers.Add(900000, "neuf cent mille"); hundredsNumbers.Add(909000, "neuf cent neuf mille"); hundredsNumbers.Add(990000, "neuf cent quatre-vingt-dix mille"); hundredsNumbers.Add(999000, "neuf cent quatre-vingt-dix-neuf mille"); hundredsNumbers.Add(100000000, "cent millions"); hundredsNumbers.Add(101000000, "cent un millions"); hundredsNumbers.Add(110000000, "cent dix millions"); hundredsNumbers.Add(111000000, "cent onze millions"); hundredsNumbers.Add(200000000, "deux cent millions"); hundredsNumbers.Add(202000000, "deux cent deux millions"); hundredsNumbers.Add(220000000, "deux cent vingt millions"); hundredsNumbers.Add(222000000, "deux cent vingt-deux millions"); hundredsNumbers.Add(300000000, "trois cent millions"); hundredsNumbers.Add(303000000, "trois cent trois millions"); hundredsNumbers.Add(330000000, "trois cent trente millions"); hundredsNumbers.Add(333000000, "trois cent trente-trois millions"); hundredsNumbers.Add(400000000, "quatre cent millions"); hundredsNumbers.Add(404000000, "quatre cent quatre millions"); hundredsNumbers.Add(440000000, "quatre cent quarante millions"); hundredsNumbers.Add(444000000, "quatre cent quarante-quatre millions"); hundredsNumbers.Add(500000000, "cinq cent millions"); hundredsNumbers.Add(505000000, "cinq cent cinq millions"); hundredsNumbers.Add(550000000, "cinq cent cinquante millions"); hundredsNumbers.Add(555000000, "cinq cent cinquante-cinq millions"); hundredsNumbers.Add(600000000, "six cent millions"); hundredsNumbers.Add(606000000, "six cent six millions"); hundredsNumbers.Add(660000000, "six cent soixante millions"); hundredsNumbers.Add(666000000, "six cent soixante-six millions"); hundredsNumbers.Add(700000000, "sept cent millions"); hundredsNumbers.Add(707000000, "sept cent sept millions"); hundredsNumbers.Add(770000000, "sept cent soixante-dix millions"); hundredsNumbers.Add(777000000, "sept cent soixante-dix-sept millions"); hundredsNumbers.Add(800000000, "huit cent millions"); hundredsNumbers.Add(808000000, "huit cent huit millions"); hundredsNumbers.Add(880000000, "huit cent quatre-vingt millions"); hundredsNumbers.Add(888000000, "huit cent quatre-vingt-huit millions"); hundredsNumbers.Add(900000000, "neuf cent millions"); hundredsNumbers.Add(909000000, "neuf cent neuf millions"); hundredsNumbers.Add(990000000, "neuf cent quatre-vingt-dix millions"); hundredsNumbers.Add(999000000, "neuf cent quatre-vingt-dix-neuf millions"); hundredsNumbers.Add(100000000000, "cent milliards"); hundredsNumbers.Add(101000000000, "cent un milliards"); hundredsNumbers.Add(110000000000, "cent dix milliards"); hundredsNumbers.Add(111000000000, "cent onze milliards"); hundredsNumbers.Add(200000000000, "deux cent milliards"); hundredsNumbers.Add(202000000000, "deux cent deux milliards"); hundredsNumbers.Add(220000000000, "deux cent vingt milliards"); hundredsNumbers.Add(222000000000, "deux cent vingt-deux milliards"); hundredsNumbers.Add(300000000000, "trois cent milliards"); hundredsNumbers.Add(303000000000, "trois cent trois milliards"); hundredsNumbers.Add(330000000000, "trois cent trente milliards"); hundredsNumbers.Add(333000000000, "trois cent trente-trois milliards"); hundredsNumbers.Add(400000000000, "quatre cent milliards"); hundredsNumbers.Add(404000000000, "quatre cent quatre milliards"); hundredsNumbers.Add(440000000000, "quatre cent quarante milliards"); hundredsNumbers.Add(444000000000, "quatre cent quarante-quatre milliards"); hundredsNumbers.Add(500000000000, "cinq cent milliards"); hundredsNumbers.Add(505000000000, "cinq cent cinq milliards"); hundredsNumbers.Add(550000000000, "cinq cent cinquante milliards"); hundredsNumbers.Add(555000000000, "cinq cent cinquante-cinq milliards"); hundredsNumbers.Add(600000000000, "six cent milliards"); hundredsNumbers.Add(606000000000, "six cent six milliards"); hundredsNumbers.Add(660000000000, "six cent soixante milliards"); hundredsNumbers.Add(666000000000, "six cent soixante-six milliards"); hundredsNumbers.Add(700000000000, "sept cent milliards"); hundredsNumbers.Add(707000000000, "sept cent sept milliards"); hundredsNumbers.Add(770000000000, "sept cent soixante-dix milliards"); hundredsNumbers.Add(777000000000, "sept cent soixante-dix-sept milliards"); hundredsNumbers.Add(800000000000, "huit cent milliards"); hundredsNumbers.Add(808000000000, "huit cent huit milliards"); hundredsNumbers.Add(880000000000, "huit cent quatre-vingt milliards"); hundredsNumbers.Add(888000000000, "huit cent quatre-vingt-huit milliards"); hundredsNumbers.Add(900000000000, "neuf cent milliards"); hundredsNumbers.Add(909000000000, "neuf cent neuf milliards"); hundredsNumbers.Add(990000000000, "neuf cent quatre-vingt-dix milliards"); hundredsNumbers.Add(999000000000, "neuf cent quatre-vingt-dix-neuf milliards"); foreach (long number in hundredsNumbers.Keys) { Assert.AreEqual(hundredsNumbers[number], NumberConverter.Spell(number, Gender.Masculine, NumeralAdjective.Ordinal)); } } #endregion #region Spell method with long values [Test] public void SpellMethodWithRoundNumbers() { Dictionary roundNumbers = new Dictionary(20); roundNumbers.Add(1, "un"); roundNumbers.Add(10, "dix"); roundNumbers.Add(100, "cent"); roundNumbers.Add(1000, "mille"); roundNumbers.Add(10000, "dix mille"); roundNumbers.Add(100000, "cent mille"); roundNumbers.Add(1000000, "un million"); roundNumbers.Add(10000000, "dix millions"); roundNumbers.Add(100000000, "cent millions"); roundNumbers.Add(1000000000, "un milliard"); roundNumbers.Add(10000000000, "dix milliards"); roundNumbers.Add(100000000000, "cent milliards"); roundNumbers.Add(1000000000000, "un billion"); roundNumbers.Add(10000000000000, "dix billions"); roundNumbers.Add(100000000000000, "cent billions"); roundNumbers.Add(1000000000000000, "mille billions"); roundNumbers.Add(10000000000000000, "dix mille billions"); roundNumbers.Add(100000000000000000, "cent mille billions"); roundNumbers.Add(1000000000000000000, "un trillion"); roundNumbers.Add(10000000000000000000, "dix trillions"); foreach (ulong number in roundNumbers.Keys) { Assert.AreEqual(roundNumbers[number], NumberConverter.Spell(number)); } } #endregion #region Spell method with special values [Test] public void SpellMethodWithIntBoundaryValues() { Dictionary borderNumbers = new Dictionary(2); borderNumbers.Add(int.MinValue, "moins deux milliards cent quarante-sept millions quatre cent quatre-vingt-trois mille six cent quarante-huit"); borderNumbers.Add(int.MaxValue, "deux milliards cent quarante-sept millions quatre cent quatre-vingt-trois mille six cent quarante-sept"); foreach (int number in borderNumbers.Keys) { Assert.AreEqual(borderNumbers[number], NumberConverter.Spell(number)); } } [Test] public void SpellMethodWithUIntBoundaryValues() { Dictionary borderNumbers = new Dictionary(2); borderNumbers.Add(uint.MinValue, "zéro"); borderNumbers.Add(uint.MaxValue, "quatre milliards deux cent quatre-vingt-quatorze millions neuf cent soixante-sept mille deux cent quatre-vingt-quinze"); foreach (uint number in borderNumbers.Keys) { Assert.AreEqual(borderNumbers[number], NumberConverter.Spell(number)); } } [Test] public void SpellMethodWithLongBoundaryValues() { Dictionary borderNumbers = new Dictionary(2); borderNumbers.Add(long.MinValue, "moins neuf trillions deux cent vingt-trois mille trois cent soixante-douze billions trente-six milliards huit cent cinquante-quatre millions sept cent soixante-quinze mille huit cent huit"); borderNumbers.Add(long.MaxValue, "neuf trillions deux cent vingt-trois mille trois cent soixante-douze billions trente-six milliards huit cent cinquante-quatre millions sept cent soixante-quinze mille huit cent sept"); foreach (long number in borderNumbers.Keys) { Assert.AreEqual(borderNumbers[number], NumberConverter.Spell(number)); } } [Test] public void SpellMethodWithULongBoundaryValues() { Dictionary borderNumbers = new Dictionary(2); borderNumbers.Add(ulong.MinValue, "zéro"); borderNumbers.Add(ulong.MaxValue, "dix-huit trillions quatre cent quarante-six mille sept cent quarante-quatre billions soixante-treize milliards sept cent neuf millions cinq cent cinquante et un mille six cent quinze"); foreach (ulong number in borderNumbers.Keys) { Assert.AreEqual(borderNumbers[number], NumberConverter.Spell(number)); } } #endregion } }