-//\r
-// DecimalFormatterTest.cs - NUnit Test Cases for System.DecimalFormatter\r
-//\r
-// Author:\r
-// Patrick Kalkman kalkman@cistron.nl\r
-//\r
-// (C) 2003 Patrick Kalkman\r
-// \r
-using NUnit.Framework;\r
-using System;\r
-using System.Threading;\r
-using System.Globalization;\r
-\r
-namespace MonoTests.System\r
-{\r
- public class FormatString\r
- {\r
- private int testnumber;\r
- private decimal number;\r
- private string format;\r
- private string expectedresult;\r
-\r
- public FormatString(int TestNumber, decimal Number, string Format, string ExpectedResult)\r
- {\r
- testnumber = TestNumber;\r
- number = Number;\r
- format = Format;\r
- expectedresult = ExpectedResult;\r
- }\r
- \r
- public int TestNumber \r
- {\r
- get { return testnumber; }\r
- set { testnumber = value; }\r
- }\r
-\r
- public decimal Number \r
- {\r
- get { return number; }\r
- set { number = value; }\r
- }\r
- \r
- public string Format\r
- {\r
- get { return format; }\r
- set { format = value; }\r
- }\r
- \r
- public string ExpectedResult\r
- {\r
- get { return expectedresult; }\r
- set { expectedresult = value; }\r
- }\r
- }\r
-\r
- [TestFixture]\r
- public class DecimalFormatterTest \r
- {\r
- [SetUp]\r
- public void GetReady() \r
- {\r
- CultureInfo EnUs = new CultureInfo ("en-us");\r
- EnUs.NumberFormat.CurrencyNegativePattern = 0; // -1 = (1)\r
- EnUs.NumberFormat.CurrencyDecimalSeparator = ".";\r
- EnUs.NumberFormat.NumberGroupSeparator = ",";\r
- EnUs.NumberFormat.NumberNegativePattern = 1; // -1 = -1\r
- \r
- //Set this culture for the current thread.\r
- Thread.CurrentThread.CurrentCulture = EnUs;\r
- }\r
- \r
- [TearDown]\r
- public void Clean() {}\r
- \r
- [Test]\r
- public void TestFormatStrings()\r
- {\r
- // Test all the formatstrings in the FormatTest array. \r
- // If a test fails the "DecF #" equals the index of the array.\r
- foreach (FormatString fTest in FormatTest) {\r
- Assertion.AssertEquals ("DecF #" + fTest.TestNumber, fTest.ExpectedResult, fTest.Number.ToString(fTest.Format)); \r
- }\r
- }\r
-\r
- \r
- [Test]\r
- [ExpectedException(typeof(FormatException))]\r
- public void TestToDecimal()\r
- {\r
- decimal x = 1.0000001m;\r
- string Result = x.ToString ("D2"); //To Decimal is for integral types only. \r
- }\r
- \r
- [Test]\r
- [ExpectedException(typeof(FormatException))]\r
- public void TestToHex()\r
- {\r
- decimal x = 1.0000001m;\r
- string Result = x.ToString ("X2"); //To Hex is for integral types only. \r
- }\r
-\r
- // Computer generated format array.\r
- FormatString[] FormatTest = new FormatString[] {\r
- new FormatString(0, 1.0034m, "C", "$1.00"), \r
- new FormatString(1, 1.0034m, "C0", "$1"), \r
- new FormatString(2, 1.0034m, "C1", "$1.0"), \r
- new FormatString(3, 1.0034m, "C2", "$1.00"), \r
- new FormatString(4, 1.0034m, "C3", "$1.003"), \r
- new FormatString(5, 1.0034m, "C4", "$1.0034"), \r
- new FormatString(6, 1.0034m, "C5", "$1.00340"), \r
- new FormatString(7, 1.0034m, "C6", "$1.003400"), \r
- new FormatString(8, 1.0034m, "C7", "$1.0034000"), \r
- new FormatString(9, 1.0034m, "C8", "$1.00340000"), \r
- new FormatString(10, 1.0034m, "C9", "$1.003400000"), \r
- new FormatString(11, 1.0034m, "E", "1.003400E+000"), \r
- new FormatString(12, 1.0034m, "E0", "1E+000"), \r
- new FormatString(13, 1.0034m, "E1", "1.0E+000"), \r
- new FormatString(14, 1.0034m, "E2", "1.00E+000"), \r
- new FormatString(15, 1.0034m, "E3", "1.003E+000"), \r
- new FormatString(16, 1.0034m, "E4", "1.0034E+000"), \r
- new FormatString(17, 1.0034m, "E5", "1.00340E+000"), \r
- new FormatString(18, 1.0034m, "E6", "1.003400E+000"), \r
- new FormatString(19, 1.0034m, "E7", "1.0034000E+000"), \r
- new FormatString(20, 1.0034m, "E8", "1.00340000E+000"), \r
- new FormatString(21, 1.0034m, "E9", "1.003400000E+000"), \r
- new FormatString(22, 1.0034m, "F", "1.00"), \r
- new FormatString(23, 1.0034m, "F0", "1"), \r
- new FormatString(24, 1.0034m, "F1", "1.0"), \r
- new FormatString(25, 1.0034m, "F2", "1.00"), \r
- new FormatString(26, 1.0034m, "F3", "1.003"), \r
- new FormatString(27, 1.0034m, "F4", "1.0034"), \r
- new FormatString(28, 1.0034m, "F5", "1.00340"), \r
- new FormatString(29, 1.0034m, "F6", "1.003400"), \r
- new FormatString(30, 1.0034m, "F7", "1.0034000"), \r
- new FormatString(31, 1.0034m, "F8", "1.00340000"), \r
- new FormatString(32, 1.0034m, "F9", "1.003400000"), \r
- new FormatString(33, 1.0034m, "G", "1.0034"), \r
- new FormatString(34, 1.0034m, "G0", "1.0034"), \r
- new FormatString(35, 1.0034m, "G1", "1"), \r
- new FormatString(36, 1.0034m, "G2", "1"), \r
- new FormatString(37, 1.0034m, "G3", "1"), \r
- new FormatString(38, 1.0034m, "G4", "1.003"), \r
- new FormatString(39, 1.0034m, "G5", "1.0034"), \r
- new FormatString(40, 1.0034m, "G6", "1.0034"), \r
- new FormatString(41, 1.0034m, "G7", "1.0034"), \r
- new FormatString(42, 1.0034m, "G8", "1.0034"), \r
- new FormatString(43, 1.0034m, "G9", "1.0034"), \r
- new FormatString(44, 1.0034m, "N", "1.00"), \r
- new FormatString(45, 1.0034m, "N0", "1"), \r
- new FormatString(46, 1.0034m, "N1", "1.0"), \r
- new FormatString(47, 1.0034m, "N2", "1.00"), \r
- new FormatString(48, 1.0034m, "N3", "1.003"), \r
- new FormatString(49, 1.0034m, "N4", "1.0034"), \r
- new FormatString(50, 1.0034m, "N5", "1.00340"), \r
- new FormatString(51, 1.0034m, "N6", "1.003400"), \r
- new FormatString(52, 1.0034m, "N7", "1.0034000"), \r
- new FormatString(53, 1.0034m, "N8", "1.00340000"), \r
- new FormatString(54, 1.0034m, "N9", "1.003400000"), \r
- new FormatString(55, 1.0034m, "P", "100.34 %"), \r
- new FormatString(56, 1.0034m, "P0", "100 %"), \r
- new FormatString(57, 1.0034m, "P1", "100.3 %"), \r
- new FormatString(58, 1.0034m, "P2", "100.34 %"), \r
- new FormatString(59, 1.0034m, "P3", "100.340 %"), \r
- new FormatString(60, 1.0034m, "P4", "100.3400 %"), \r
- new FormatString(61, 1.0034m, "P5", "100.34000 %"), \r
- new FormatString(62, 1.0034m, "P6", "100.340000 %"), \r
- new FormatString(63, 1.0034m, "P7", "100.3400000 %"), \r
- new FormatString(64, 1.0034m, "P8", "100.34000000 %"), \r
- new FormatString(65, 1.0034m, "P9", "100.340000000 %"), \r
- new FormatString(66, 343433.223m, "C", "$343,433.22"), \r
- new FormatString(67, 343433.223m, "C0", "$343,433"), \r
- new FormatString(68, 343433.223m, "C1", "$343,433.2"), \r
- new FormatString(69, 343433.223m, "C2", "$343,433.22"), \r
- new FormatString(70, 343433.223m, "C3", "$343,433.223"), \r
- new FormatString(71, 343433.223m, "C4", "$343,433.2230"), \r
- new FormatString(72, 343433.223m, "C5", "$343,433.22300"), \r
- new FormatString(73, 343433.223m, "C6", "$343,433.223000"), \r
- new FormatString(74, 343433.223m, "C7", "$343,433.2230000"), \r
- new FormatString(75, 343433.223m, "C8", "$343,433.22300000"), \r
- new FormatString(76, 343433.223m, "C9", "$343,433.223000000"), \r
- new FormatString(77, 343433.223m, "E", "3.434332E+005"), \r
- new FormatString(78, 343433.223m, "E0", "3E+005"), \r
- new FormatString(79, 343433.223m, "E1", "3.4E+005"), \r
- new FormatString(80, 343433.223m, "E2", "3.43E+005"), \r
- new FormatString(81, 343433.223m, "E3", "3.434E+005"), \r
- new FormatString(82, 343433.223m, "E4", "3.4343E+005"), \r
- new FormatString(83, 343433.223m, "E5", "3.43433E+005"), \r
- new FormatString(84, 343433.223m, "E6", "3.434332E+005"), \r
- new FormatString(85, 343433.223m, "E7", "3.4343322E+005"), \r
- new FormatString(86, 343433.223m, "E8", "3.43433223E+005"), \r
- new FormatString(87, 343433.223m, "E9", "3.434332230E+005"), \r
- new FormatString(88, 343433.223m, "F", "343433.22"), \r
- new FormatString(89, 343433.223m, "F0", "343433"), \r
- new FormatString(90, 343433.223m, "F1", "343433.2"), \r
- new FormatString(91, 343433.223m, "F2", "343433.22"), \r
- new FormatString(92, 343433.223m, "F3", "343433.223"), \r
- new FormatString(93, 343433.223m, "F4", "343433.2230"), \r
- new FormatString(94, 343433.223m, "F5", "343433.22300"), \r
- new FormatString(95, 343433.223m, "F6", "343433.223000"), \r
- new FormatString(96, 343433.223m, "F7", "343433.2230000"), \r
- new FormatString(97, 343433.223m, "F8", "343433.22300000"), \r
- new FormatString(98, 343433.223m, "F9", "343433.223000000"), \r
- new FormatString(99, 343433.223m, "G", "343433.223"), \r
- new FormatString(100, 343433.223m, "G0", "343433.223"), \r
- new FormatString(101, 343433.223m, "G1", "3E+05"), \r
- new FormatString(102, 343433.223m, "G2", "3.4E+05"), \r
- new FormatString(103, 343433.223m, "G3", "3.43E+05"), \r
- new FormatString(104, 343433.223m, "G4", "3.434E+05"), \r
- new FormatString(105, 343433.223m, "G5", "3.4343E+05"), \r
- new FormatString(106, 343433.223m, "G6", "343433"), \r
- new FormatString(107, 343433.223m, "G7", "343433.2"), \r
- new FormatString(108, 343433.223m, "G8", "343433.22"), \r
- new FormatString(109, 343433.223m, "G9", "343433.223"), \r
- new FormatString(110, 343433.223m, "N", "343,433.22"), \r
- new FormatString(111, 343433.223m, "N0", "343,433"), \r
- new FormatString(112, 343433.223m, "N1", "343,433.2"), \r
- new FormatString(113, 343433.223m, "N2", "343,433.22"), \r
- new FormatString(114, 343433.223m, "N3", "343,433.223"), \r
- new FormatString(115, 343433.223m, "N4", "343,433.2230"), \r
- new FormatString(116, 343433.223m, "N5", "343,433.22300"), \r
- new FormatString(117, 343433.223m, "N6", "343,433.223000"), \r
- new FormatString(118, 343433.223m, "N7", "343,433.2230000"), \r
- new FormatString(119, 343433.223m, "N8", "343,433.22300000"), \r
- new FormatString(120, 343433.223m, "N9", "343,433.223000000"), \r
- new FormatString(121, 343433.223m, "P", "34,343,322.30 %"), \r
- new FormatString(122, 343433.223m, "P0", "34,343,322 %"), \r
- new FormatString(123, 343433.223m, "P1", "34,343,322.3 %"), \r
- new FormatString(124, 343433.223m, "P2", "34,343,322.30 %"), \r
- new FormatString(125, 343433.223m, "P3", "34,343,322.300 %"), \r
- new FormatString(126, 343433.223m, "P4", "34,343,322.3000 %"), \r
- new FormatString(127, 343433.223m, "P5", "34,343,322.30000 %"), \r
- new FormatString(128, 343433.223m, "P6", "34,343,322.300000 %"), \r
- new FormatString(129, 343433.223m, "P7", "34,343,322.3000000 %"), \r
- new FormatString(130, 343433.223m, "P8", "34,343,322.30000000 %"), \r
- new FormatString(131, 343433.223m, "P9", "34,343,322.300000000 %"), \r
- new FormatString(132, -1.9292929332m, "C", "($1.93)"), \r
- new FormatString(133, -1.9292929332m, "C0", "($2)"), \r
- new FormatString(134, -1.9292929332m, "C1", "($1.9)"), \r
- new FormatString(135, -1.9292929332m, "C2", "($1.93)"), \r
- new FormatString(136, -1.9292929332m, "C3", "($1.929)"), \r
- new FormatString(137, -1.9292929332m, "C4", "($1.9293)"), \r
- new FormatString(138, -1.9292929332m, "C5", "($1.92929)"), \r
- new FormatString(139, -1.9292929332m, "C6", "($1.929293)"), \r
- new FormatString(140, -1.9292929332m, "C7", "($1.9292929)"), \r
- new FormatString(141, -1.9292929332m, "C8", "($1.92929293)"), \r
- new FormatString(142, -1.9292929332m, "C9", "($1.929292933)"), \r
- new FormatString(143, -1.9292929332m, "E", "-1.929293E+000"), \r
- new FormatString(144, -1.9292929332m, "E0", "-2E+000"), \r
- new FormatString(145, -1.9292929332m, "E1", "-1.9E+000"), \r
- new FormatString(146, -1.9292929332m, "E2", "-1.93E+000"), \r
- new FormatString(147, -1.9292929332m, "E3", "-1.929E+000"), \r
- new FormatString(148, -1.9292929332m, "E4", "-1.9293E+000"), \r
- new FormatString(149, -1.9292929332m, "E5", "-1.92929E+000"), \r
- new FormatString(150, -1.9292929332m, "E6", "-1.929293E+000"), \r
- new FormatString(151, -1.9292929332m, "E7", "-1.9292929E+000"), \r
- new FormatString(152, -1.9292929332m, "E8", "-1.92929293E+000"), \r
- new FormatString(153, -1.9292929332m, "E9", "-1.929292933E+000"), \r
- new FormatString(154, -1.9292929332m, "F", "-1.93"), \r
- new FormatString(155, -1.9292929332m, "F0", "-2"), \r
- new FormatString(156, -1.9292929332m, "F1", "-1.9"), \r
- new FormatString(157, -1.9292929332m, "F2", "-1.93"), \r
- new FormatString(158, -1.9292929332m, "F3", "-1.929"), \r
- new FormatString(159, -1.9292929332m, "F4", "-1.9293"), \r
- new FormatString(160, -1.9292929332m, "F5", "-1.92929"), \r
- new FormatString(161, -1.9292929332m, "F6", "-1.929293"), \r
- new FormatString(162, -1.9292929332m, "F7", "-1.9292929"), \r
- new FormatString(163, -1.9292929332m, "F8", "-1.92929293"), \r
- new FormatString(164, -1.9292929332m, "F9", "-1.929292933"), \r
- new FormatString(165, -1.9292929332m, "G", "-1.9292929332"), \r
- new FormatString(166, -1.9292929332m, "G0", "-1.9292929332"), \r
- new FormatString(167, -1.9292929332m, "G1", "-2"), \r
- new FormatString(168, -1.9292929332m, "G2", "-1.9"), \r
- new FormatString(169, -1.9292929332m, "G3", "-1.93"), \r
- new FormatString(170, -1.9292929332m, "G4", "-1.929"), \r
- new FormatString(171, -1.9292929332m, "G5", "-1.9293"), \r
- new FormatString(172, -1.9292929332m, "G6", "-1.92929"), \r
- new FormatString(173, -1.9292929332m, "G7", "-1.929293"), \r
- new FormatString(174, -1.9292929332m, "G8", "-1.9292929"), \r
- new FormatString(175, -1.9292929332m, "G9", "-1.92929293"), \r
- new FormatString(176, -1.9292929332m, "N", "-1.93"), \r
- new FormatString(177, -1.9292929332m, "N0", "-2"), \r
- new FormatString(178, -1.9292929332m, "N1", "-1.9"), \r
- new FormatString(179, -1.9292929332m, "N2", "-1.93"), \r
- new FormatString(180, -1.9292929332m, "N3", "-1.929"), \r
- new FormatString(181, -1.9292929332m, "N4", "-1.9293"), \r
- new FormatString(182, -1.9292929332m, "N5", "-1.92929"), \r
- new FormatString(183, -1.9292929332m, "N6", "-1.929293"), \r
- new FormatString(184, -1.9292929332m, "N7", "-1.9292929"), \r
- new FormatString(185, -1.9292929332m, "N8", "-1.92929293"), \r
- new FormatString(186, -1.9292929332m, "N9", "-1.929292933"), \r
- new FormatString(187, -1.9292929332m, "P", "-192.93 %"), \r
- new FormatString(188, -1.9292929332m, "P0", "-193 %"), \r
- new FormatString(189, -1.9292929332m, "P1", "-192.9 %"), \r
- new FormatString(190, -1.9292929332m, "P2", "-192.93 %"), \r
- new FormatString(191, -1.9292929332m, "P3", "-192.929 %"), \r
- new FormatString(192, -1.9292929332m, "P4", "-192.9293 %"), \r
- new FormatString(193, -1.9292929332m, "P5", "-192.92929 %"), \r
- new FormatString(194, -1.9292929332m, "P6", "-192.929293 %"), \r
- new FormatString(195, -1.9292929332m, "P7", "-192.9292933 %"), \r
- new FormatString(196, -1.9292929332m, "P8", "-192.92929332 %"), \r
- new FormatString(197, -1.9292929332m, "P9", "-192.929293320 %"), \r
- new FormatString(198, 67234234.23434343434341111m, "C", "$67,234,234.23"), \r
- new FormatString(199, 67234234.23434343434341111m, "C0", "$67,234,234"), \r
- new FormatString(200, 67234234.23434343434341111m, "C1", "$67,234,234.2"), \r
- new FormatString(201, 67234234.23434343434341111m, "C2", "$67,234,234.23"), \r
- new FormatString(202, 67234234.23434343434341111m, "C3", "$67,234,234.234"), \r
- new FormatString(203, 67234234.23434343434341111m, "C4", "$67,234,234.2343"), \r
- new FormatString(204, 67234234.23434343434341111m, "C5", "$67,234,234.23434"), \r
- new FormatString(205, 67234234.23434343434341111m, "C6", "$67,234,234.234343"), \r
- new FormatString(206, 67234234.23434343434341111m, "C7", "$67,234,234.2343434"), \r
- new FormatString(207, 67234234.23434343434341111m, "C8", "$67,234,234.23434343"), \r
- new FormatString(208, 67234234.23434343434341111m, "C9", "$67,234,234.234343434"), \r
- new FormatString(209, 67234234.23434343434341111m, "E", "6.723423E+007"), \r
- new FormatString(210, 67234234.23434343434341111m, "E0", "7E+007"), \r
- new FormatString(211, 67234234.23434343434341111m, "E1", "6.7E+007"), \r
- new FormatString(212, 67234234.23434343434341111m, "E2", "6.72E+007"), \r
- new FormatString(213, 67234234.23434343434341111m, "E3", "6.723E+007"), \r
- new FormatString(214, 67234234.23434343434341111m, "E4", "6.7234E+007"), \r
- new FormatString(215, 67234234.23434343434341111m, "E5", "6.72342E+007"), \r
- new FormatString(216, 67234234.23434343434341111m, "E6", "6.723423E+007"), \r
- new FormatString(217, 67234234.23434343434341111m, "E7", "6.7234234E+007"), \r
- new FormatString(218, 67234234.23434343434341111m, "E8", "6.72342342E+007"), \r
- new FormatString(219, 67234234.23434343434341111m, "E9", "6.723423423E+007"), \r
- new FormatString(220, 67234234.23434343434341111m, "F", "67234234.23"), \r
- new FormatString(221, 67234234.23434343434341111m, "F0", "67234234"), \r
- new FormatString(222, 67234234.23434343434341111m, "F1", "67234234.2"), \r
- new FormatString(223, 67234234.23434343434341111m, "F2", "67234234.23"), \r
- new FormatString(224, 67234234.23434343434341111m, "F3", "67234234.234"), \r
- new FormatString(225, 67234234.23434343434341111m, "F4", "67234234.2343"), \r
- new FormatString(226, 67234234.23434343434341111m, "F5", "67234234.23434"), \r
- new FormatString(227, 67234234.23434343434341111m, "F6", "67234234.234343"), \r
- new FormatString(228, 67234234.23434343434341111m, "F7", "67234234.2343434"), \r
- new FormatString(229, 67234234.23434343434341111m, "F8", "67234234.23434343"), \r
- new FormatString(230, 67234234.23434343434341111m, "F9", "67234234.234343434"), \r
- new FormatString(231, 67234234.23434343434341111m, "G", "67234234.23434343434341111"), \r
- new FormatString(232, 67234234.23434343434341111m, "G0", "67234234.23434343434341111"), \r
- new FormatString(233, 67234234.23434343434341111m, "G1", "7E+07"), \r
- new FormatString(234, 67234234.23434343434341111m, "G2", "6.7E+07"), \r
- new FormatString(235, 67234234.23434343434341111m, "G3", "6.72E+07"), \r
- new FormatString(236, 67234234.23434343434341111m, "G4", "6.723E+07"), \r
- new FormatString(237, 67234234.23434343434341111m, "G5", "6.7234E+07"), \r
- new FormatString(238, 67234234.23434343434341111m, "G6", "6.72342E+07"), \r
- new FormatString(239, 67234234.23434343434341111m, "G7", "6.723423E+07"), \r
- new FormatString(240, 67234234.23434343434341111m, "G8", "67234234"), \r
- new FormatString(241, 67234234.23434343434341111m, "G9", "67234234.2"), \r
- new FormatString(242, 67234234.23434343434341111m, "N", "67,234,234.23"), \r
- new FormatString(243, 67234234.23434343434341111m, "N0", "67,234,234"), \r
- new FormatString(244, 67234234.23434343434341111m, "N1", "67,234,234.2"), \r
- new FormatString(245, 67234234.23434343434341111m, "N2", "67,234,234.23"), \r
- new FormatString(246, 67234234.23434343434341111m, "N3", "67,234,234.234"), \r
- new FormatString(247, 67234234.23434343434341111m, "N4", "67,234,234.2343"), \r
- new FormatString(248, 67234234.23434343434341111m, "N5", "67,234,234.23434"), \r
- new FormatString(249, 67234234.23434343434341111m, "N6", "67,234,234.234343"), \r
- new FormatString(250, 67234234.23434343434341111m, "N7", "67,234,234.2343434"), \r
- new FormatString(251, 67234234.23434343434341111m, "N8", "67,234,234.23434343"), \r
- new FormatString(252, 67234234.23434343434341111m, "N9", "67,234,234.234343434"), \r
- new FormatString(253, 67234234.23434343434341111m, "P", "6,723,423,423.43 %"), \r
- new FormatString(254, 67234234.23434343434341111m, "P0", "6,723,423,423 %"), \r
- new FormatString(255, 67234234.23434343434341111m, "P1", "6,723,423,423.4 %"), \r
- new FormatString(256, 67234234.23434343434341111m, "P2", "6,723,423,423.43 %"), \r
- new FormatString(257, 67234234.23434343434341111m, "P3", "6,723,423,423.434 %"), \r
- new FormatString(258, 67234234.23434343434341111m, "P4", "6,723,423,423.4343 %"), \r
- new FormatString(259, 67234234.23434343434341111m, "P5", "6,723,423,423.43434 %"), \r
- new FormatString(260, 67234234.23434343434341111m, "P6", "6,723,423,423.434343 %"), \r
- new FormatString(261, 67234234.23434343434341111m, "P7", "6,723,423,423.4343434 %"), \r
- new FormatString(262, 67234234.23434343434341111m, "P8", "6,723,423,423.43434343 %"), \r
- new FormatString(263, 67234234.23434343434341111m, "P9", "6,723,423,423.434343434 %")\r
- };\r
- }\r
-}\r
- \r
-\r
+//
+// DecimalFormatterTest.cs - NUnit Test Cases for System.DecimalFormatter
+//
+// Author:
+// Patrick Kalkman kalkman@cistron.nl
+//
+// (C) 2003 Patrick Kalkman
+//
+using NUnit.Framework;
+using System;
+using System.Threading;
+using System.Globalization;
+
+namespace MonoTests.System
+{
+ public class FormatString
+ {
+ private int testnumber;
+ private decimal number;
+ private string format;
+ private string expectedresult;
+
+ public FormatString(int TestNumber, decimal Number, string Format, string ExpectedResult)
+ {
+ testnumber = TestNumber;
+ number = Number;
+ format = Format;
+ expectedresult = ExpectedResult;
+ }
+
+ public int TestNumber
+ {
+ get { return testnumber; }
+ set { testnumber = value; }
+ }
+
+ public decimal Number
+ {
+ get { return number; }
+ set { number = value; }
+ }
+
+ public string Format
+ {
+ get { return format; }
+ set { format = value; }
+ }
+
+ public string ExpectedResult
+ {
+ get { return expectedresult; }
+ set { expectedresult = value; }
+ }
+ }
+
+ [TestFixture]
+ public class DecimalFormatterTest
+ {
+ [SetUp]
+ public void GetReady()
+ {
+ CultureInfo EnUs = new CultureInfo ("en-us");
+ EnUs.NumberFormat.CurrencyNegativePattern = 0; // -1 = (1)
+ EnUs.NumberFormat.CurrencyDecimalSeparator = ".";
+ EnUs.NumberFormat.NumberGroupSeparator = ",";
+ EnUs.NumberFormat.NumberNegativePattern = 1; // -1 = -1
+
+ //Set this culture for the current thread.
+ Thread.CurrentThread.CurrentCulture = EnUs;
+ }
+
+ [TearDown]
+ public void Clean() {}
+
+ [Test]
+ public void TestFormatStrings()
+ {
+ // Test all the formatstrings in the FormatTest array.
+ // If a test fails the "DecF #" equals the index of the array.
+ foreach (FormatString fTest in FormatTest) {
+ Assertion.AssertEquals ("DecF #" + fTest.TestNumber, fTest.ExpectedResult, fTest.Number.ToString(fTest.Format));
+ }
+ }
+
+
+ [Test]
+ [ExpectedException(typeof(FormatException))]
+ public void TestToDecimal()
+ {
+ decimal x = 1.0000001m;
+ string Result = x.ToString ("D2"); //To Decimal is for integral types only.
+ }
+
+ [Test]
+ [ExpectedException(typeof(FormatException))]
+ public void TestToHex()
+ {
+ decimal x = 1.0000001m;
+ string Result = x.ToString ("X2"); //To Hex is for integral types only.
+ }
+
+ // Computer generated format array.
+ FormatString[] FormatTest = new FormatString[] {
+ new FormatString(0, 1.0034m, "C", "$1.00"),
+ new FormatString(1, 1.0034m, "C0", "$1"),
+ new FormatString(2, 1.0034m, "C1", "$1.0"),
+ new FormatString(3, 1.0034m, "C2", "$1.00"),
+ new FormatString(4, 1.0034m, "C3", "$1.003"),
+ new FormatString(5, 1.0034m, "C4", "$1.0034"),
+ new FormatString(6, 1.0034m, "C5", "$1.00340"),
+ new FormatString(7, 1.0034m, "C6", "$1.003400"),
+ new FormatString(8, 1.0034m, "C7", "$1.0034000"),
+ new FormatString(9, 1.0034m, "C8", "$1.00340000"),
+ new FormatString(10, 1.0034m, "C9", "$1.003400000"),
+ new FormatString(11, 1.0034m, "E", "1.003400E+000"),
+ new FormatString(12, 1.0034m, "E0", "1E+000"),
+ new FormatString(13, 1.0034m, "E1", "1.0E+000"),
+ new FormatString(14, 1.0034m, "E2", "1.00E+000"),
+ new FormatString(15, 1.0034m, "E3", "1.003E+000"),
+ new FormatString(16, 1.0034m, "E4", "1.0034E+000"),
+ new FormatString(17, 1.0034m, "E5", "1.00340E+000"),
+ new FormatString(18, 1.0034m, "E6", "1.003400E+000"),
+ new FormatString(19, 1.0034m, "E7", "1.0034000E+000"),
+ new FormatString(20, 1.0034m, "E8", "1.00340000E+000"),
+ new FormatString(21, 1.0034m, "E9", "1.003400000E+000"),
+ new FormatString(22, 1.0034m, "F", "1.00"),
+ new FormatString(23, 1.0034m, "F0", "1"),
+ new FormatString(24, 1.0034m, "F1", "1.0"),
+ new FormatString(25, 1.0034m, "F2", "1.00"),
+ new FormatString(26, 1.0034m, "F3", "1.003"),
+ new FormatString(27, 1.0034m, "F4", "1.0034"),
+ new FormatString(28, 1.0034m, "F5", "1.00340"),
+ new FormatString(29, 1.0034m, "F6", "1.003400"),
+ new FormatString(30, 1.0034m, "F7", "1.0034000"),
+ new FormatString(31, 1.0034m, "F8", "1.00340000"),
+ new FormatString(32, 1.0034m, "F9", "1.003400000"),
+ new FormatString(33, 1.0034m, "G", "1.0034"),
+ new FormatString(34, 1.0034m, "G0", "1.0034"),
+ new FormatString(35, 1.0034m, "G1", "1"),
+ new FormatString(36, 1.0034m, "G2", "1"),
+ new FormatString(37, 1.0034m, "G3", "1"),
+ new FormatString(38, 1.0034m, "G4", "1.003"),
+ new FormatString(39, 1.0034m, "G5", "1.0034"),
+ new FormatString(40, 1.0034m, "G6", "1.0034"),
+ new FormatString(41, 1.0034m, "G7", "1.0034"),
+ new FormatString(42, 1.0034m, "G8", "1.0034"),
+ new FormatString(43, 1.0034m, "G9", "1.0034"),
+ new FormatString(44, 1.0034m, "N", "1.00"),
+ new FormatString(45, 1.0034m, "N0", "1"),
+ new FormatString(46, 1.0034m, "N1", "1.0"),
+ new FormatString(47, 1.0034m, "N2", "1.00"),
+ new FormatString(48, 1.0034m, "N3", "1.003"),
+ new FormatString(49, 1.0034m, "N4", "1.0034"),
+ new FormatString(50, 1.0034m, "N5", "1.00340"),
+ new FormatString(51, 1.0034m, "N6", "1.003400"),
+ new FormatString(52, 1.0034m, "N7", "1.0034000"),
+ new FormatString(53, 1.0034m, "N8", "1.00340000"),
+ new FormatString(54, 1.0034m, "N9", "1.003400000"),
+ new FormatString(55, 1.0034m, "P", "100.34 %"),
+ new FormatString(56, 1.0034m, "P0", "100 %"),
+ new FormatString(57, 1.0034m, "P1", "100.3 %"),
+ new FormatString(58, 1.0034m, "P2", "100.34 %"),
+ new FormatString(59, 1.0034m, "P3", "100.340 %"),
+ new FormatString(60, 1.0034m, "P4", "100.3400 %"),
+ new FormatString(61, 1.0034m, "P5", "100.34000 %"),
+ new FormatString(62, 1.0034m, "P6", "100.340000 %"),
+ new FormatString(63, 1.0034m, "P7", "100.3400000 %"),
+ new FormatString(64, 1.0034m, "P8", "100.34000000 %"),
+ new FormatString(65, 1.0034m, "P9", "100.340000000 %"),
+ new FormatString(66, 343433.223m, "C", "$343,433.22"),
+ new FormatString(67, 343433.223m, "C0", "$343,433"),
+ new FormatString(68, 343433.223m, "C1", "$343,433.2"),
+ new FormatString(69, 343433.223m, "C2", "$343,433.22"),
+ new FormatString(70, 343433.223m, "C3", "$343,433.223"),
+ new FormatString(71, 343433.223m, "C4", "$343,433.2230"),
+ new FormatString(72, 343433.223m, "C5", "$343,433.22300"),
+ new FormatString(73, 343433.223m, "C6", "$343,433.223000"),
+ new FormatString(74, 343433.223m, "C7", "$343,433.2230000"),
+ new FormatString(75, 343433.223m, "C8", "$343,433.22300000"),
+ new FormatString(76, 343433.223m, "C9", "$343,433.223000000"),
+ new FormatString(77, 343433.223m, "E", "3.434332E+005"),
+ new FormatString(78, 343433.223m, "E0", "3E+005"),
+ new FormatString(79, 343433.223m, "E1", "3.4E+005"),
+ new FormatString(80, 343433.223m, "E2", "3.43E+005"),
+ new FormatString(81, 343433.223m, "E3", "3.434E+005"),
+ new FormatString(82, 343433.223m, "E4", "3.4343E+005"),
+ new FormatString(83, 343433.223m, "E5", "3.43433E+005"),
+ new FormatString(84, 343433.223m, "E6", "3.434332E+005"),
+ new FormatString(85, 343433.223m, "E7", "3.4343322E+005"),
+ new FormatString(86, 343433.223m, "E8", "3.43433223E+005"),
+ new FormatString(87, 343433.223m, "E9", "3.434332230E+005"),
+ new FormatString(88, 343433.223m, "F", "343433.22"),
+ new FormatString(89, 343433.223m, "F0", "343433"),
+ new FormatString(90, 343433.223m, "F1", "343433.2"),
+ new FormatString(91, 343433.223m, "F2", "343433.22"),
+ new FormatString(92, 343433.223m, "F3", "343433.223"),
+ new FormatString(93, 343433.223m, "F4", "343433.2230"),
+ new FormatString(94, 343433.223m, "F5", "343433.22300"),
+ new FormatString(95, 343433.223m, "F6", "343433.223000"),
+ new FormatString(96, 343433.223m, "F7", "343433.2230000"),
+ new FormatString(97, 343433.223m, "F8", "343433.22300000"),
+ new FormatString(98, 343433.223m, "F9", "343433.223000000"),
+ new FormatString(99, 343433.223m, "G", "343433.223"),
+ new FormatString(100, 343433.223m, "G0", "343433.223"),
+ new FormatString(101, 343433.223m, "G1", "3E+05"),
+ new FormatString(102, 343433.223m, "G2", "3.4E+05"),
+ new FormatString(103, 343433.223m, "G3", "3.43E+05"),
+ new FormatString(104, 343433.223m, "G4", "3.434E+05"),
+ new FormatString(105, 343433.223m, "G5", "3.4343E+05"),
+ new FormatString(106, 343433.223m, "G6", "343433"),
+ new FormatString(107, 343433.223m, "G7", "343433.2"),
+ new FormatString(108, 343433.223m, "G8", "343433.22"),
+ new FormatString(109, 343433.223m, "G9", "343433.223"),
+ new FormatString(110, 343433.223m, "N", "343,433.22"),
+ new FormatString(111, 343433.223m, "N0", "343,433"),
+ new FormatString(112, 343433.223m, "N1", "343,433.2"),
+ new FormatString(113, 343433.223m, "N2", "343,433.22"),
+ new FormatString(114, 343433.223m, "N3", "343,433.223"),
+ new FormatString(115, 343433.223m, "N4", "343,433.2230"),
+ new FormatString(116, 343433.223m, "N5", "343,433.22300"),
+ new FormatString(117, 343433.223m, "N6", "343,433.223000"),
+ new FormatString(118, 343433.223m, "N7", "343,433.2230000"),
+ new FormatString(119, 343433.223m, "N8", "343,433.22300000"),
+ new FormatString(120, 343433.223m, "N9", "343,433.223000000"),
+ new FormatString(121, 343433.223m, "P", "34,343,322.30 %"),
+ new FormatString(122, 343433.223m, "P0", "34,343,322 %"),
+ new FormatString(123, 343433.223m, "P1", "34,343,322.3 %"),
+ new FormatString(124, 343433.223m, "P2", "34,343,322.30 %"),
+ new FormatString(125, 343433.223m, "P3", "34,343,322.300 %"),
+ new FormatString(126, 343433.223m, "P4", "34,343,322.3000 %"),
+ new FormatString(127, 343433.223m, "P5", "34,343,322.30000 %"),
+ new FormatString(128, 343433.223m, "P6", "34,343,322.300000 %"),
+ new FormatString(129, 343433.223m, "P7", "34,343,322.3000000 %"),
+ new FormatString(130, 343433.223m, "P8", "34,343,322.30000000 %"),
+ new FormatString(131, 343433.223m, "P9", "34,343,322.300000000 %"),
+ new FormatString(132, -1.9292929332m, "C", "($1.93)"),
+ new FormatString(133, -1.9292929332m, "C0", "($2)"),
+ new FormatString(134, -1.9292929332m, "C1", "($1.9)"),
+ new FormatString(135, -1.9292929332m, "C2", "($1.93)"),
+ new FormatString(136, -1.9292929332m, "C3", "($1.929)"),
+ new FormatString(137, -1.9292929332m, "C4", "($1.9293)"),
+ new FormatString(138, -1.9292929332m, "C5", "($1.92929)"),
+ new FormatString(139, -1.9292929332m, "C6", "($1.929293)"),
+ new FormatString(140, -1.9292929332m, "C7", "($1.9292929)"),
+ new FormatString(141, -1.9292929332m, "C8", "($1.92929293)"),
+ new FormatString(142, -1.9292929332m, "C9", "($1.929292933)"),
+ new FormatString(143, -1.9292929332m, "E", "-1.929293E+000"),
+ new FormatString(144, -1.9292929332m, "E0", "-2E+000"),
+ new FormatString(145, -1.9292929332m, "E1", "-1.9E+000"),
+ new FormatString(146, -1.9292929332m, "E2", "-1.93E+000"),
+ new FormatString(147, -1.9292929332m, "E3", "-1.929E+000"),
+ new FormatString(148, -1.9292929332m, "E4", "-1.9293E+000"),
+ new FormatString(149, -1.9292929332m, "E5", "-1.92929E+000"),
+ new FormatString(150, -1.9292929332m, "E6", "-1.929293E+000"),
+ new FormatString(151, -1.9292929332m, "E7", "-1.9292929E+000"),
+ new FormatString(152, -1.9292929332m, "E8", "-1.92929293E+000"),
+ new FormatString(153, -1.9292929332m, "E9", "-1.929292933E+000"),
+ new FormatString(154, -1.9292929332m, "F", "-1.93"),
+ new FormatString(155, -1.9292929332m, "F0", "-2"),
+ new FormatString(156, -1.9292929332m, "F1", "-1.9"),
+ new FormatString(157, -1.9292929332m, "F2", "-1.93"),
+ new FormatString(158, -1.9292929332m, "F3", "-1.929"),
+ new FormatString(159, -1.9292929332m, "F4", "-1.9293"),
+ new FormatString(160, -1.9292929332m, "F5", "-1.92929"),
+ new FormatString(161, -1.9292929332m, "F6", "-1.929293"),
+ new FormatString(162, -1.9292929332m, "F7", "-1.9292929"),
+ new FormatString(163, -1.9292929332m, "F8", "-1.92929293"),
+ new FormatString(164, -1.9292929332m, "F9", "-1.929292933"),
+ new FormatString(165, -1.9292929332m, "G", "-1.9292929332"),
+ new FormatString(166, -1.9292929332m, "G0", "-1.9292929332"),
+ new FormatString(167, -1.9292929332m, "G1", "-2"),
+ new FormatString(168, -1.9292929332m, "G2", "-1.9"),
+ new FormatString(169, -1.9292929332m, "G3", "-1.93"),
+ new FormatString(170, -1.9292929332m, "G4", "-1.929"),
+ new FormatString(171, -1.9292929332m, "G5", "-1.9293"),
+ new FormatString(172, -1.9292929332m, "G6", "-1.92929"),
+ new FormatString(173, -1.9292929332m, "G7", "-1.929293"),
+ new FormatString(174, -1.9292929332m, "G8", "-1.9292929"),
+ new FormatString(175, -1.9292929332m, "G9", "-1.92929293"),
+ new FormatString(176, -1.9292929332m, "N", "-1.93"),
+ new FormatString(177, -1.9292929332m, "N0", "-2"),
+ new FormatString(178, -1.9292929332m, "N1", "-1.9"),
+ new FormatString(179, -1.9292929332m, "N2", "-1.93"),
+ new FormatString(180, -1.9292929332m, "N3", "-1.929"),
+ new FormatString(181, -1.9292929332m, "N4", "-1.9293"),
+ new FormatString(182, -1.9292929332m, "N5", "-1.92929"),
+ new FormatString(183, -1.9292929332m, "N6", "-1.929293"),
+ new FormatString(184, -1.9292929332m, "N7", "-1.9292929"),
+ new FormatString(185, -1.9292929332m, "N8", "-1.92929293"),
+ new FormatString(186, -1.9292929332m, "N9", "-1.929292933"),
+ new FormatString(187, -1.9292929332m, "P", "-192.93 %"),
+ new FormatString(188, -1.9292929332m, "P0", "-193 %"),
+ new FormatString(189, -1.9292929332m, "P1", "-192.9 %"),
+ new FormatString(190, -1.9292929332m, "P2", "-192.93 %"),
+ new FormatString(191, -1.9292929332m, "P3", "-192.929 %"),
+ new FormatString(192, -1.9292929332m, "P4", "-192.9293 %"),
+ new FormatString(193, -1.9292929332m, "P5", "-192.92929 %"),
+ new FormatString(194, -1.9292929332m, "P6", "-192.929293 %"),
+ new FormatString(195, -1.9292929332m, "P7", "-192.9292933 %"),
+ new FormatString(196, -1.9292929332m, "P8", "-192.92929332 %"),
+ new FormatString(197, -1.9292929332m, "P9", "-192.929293320 %"),
+ new FormatString(198, 67234234.23434343434341111m, "C", "$67,234,234.23"),
+ new FormatString(199, 67234234.23434343434341111m, "C0", "$67,234,234"),
+ new FormatString(200, 67234234.23434343434341111m, "C1", "$67,234,234.2"),
+ new FormatString(201, 67234234.23434343434341111m, "C2", "$67,234,234.23"),
+ new FormatString(202, 67234234.23434343434341111m, "C3", "$67,234,234.234"),
+ new FormatString(203, 67234234.23434343434341111m, "C4", "$67,234,234.2343"),
+ new FormatString(204, 67234234.23434343434341111m, "C5", "$67,234,234.23434"),
+ new FormatString(205, 67234234.23434343434341111m, "C6", "$67,234,234.234343"),
+ new FormatString(206, 67234234.23434343434341111m, "C7", "$67,234,234.2343434"),
+ new FormatString(207, 67234234.23434343434341111m, "C8", "$67,234,234.23434343"),
+ new FormatString(208, 67234234.23434343434341111m, "C9", "$67,234,234.234343434"),
+ new FormatString(209, 67234234.23434343434341111m, "E", "6.723423E+007"),
+ new FormatString(210, 67234234.23434343434341111m, "E0", "7E+007"),
+ new FormatString(211, 67234234.23434343434341111m, "E1", "6.7E+007"),
+ new FormatString(212, 67234234.23434343434341111m, "E2", "6.72E+007"),
+ new FormatString(213, 67234234.23434343434341111m, "E3", "6.723E+007"),
+ new FormatString(214, 67234234.23434343434341111m, "E4", "6.7234E+007"),
+ new FormatString(215, 67234234.23434343434341111m, "E5", "6.72342E+007"),
+ new FormatString(216, 67234234.23434343434341111m, "E6", "6.723423E+007"),
+ new FormatString(217, 67234234.23434343434341111m, "E7", "6.7234234E+007"),
+ new FormatString(218, 67234234.23434343434341111m, "E8", "6.72342342E+007"),
+ new FormatString(219, 67234234.23434343434341111m, "E9", "6.723423423E+007"),
+ new FormatString(220, 67234234.23434343434341111m, "F", "67234234.23"),
+ new FormatString(221, 67234234.23434343434341111m, "F0", "67234234"),
+ new FormatString(222, 67234234.23434343434341111m, "F1", "67234234.2"),
+ new FormatString(223, 67234234.23434343434341111m, "F2", "67234234.23"),
+ new FormatString(224, 67234234.23434343434341111m, "F3", "67234234.234"),
+ new FormatString(225, 67234234.23434343434341111m, "F4", "67234234.2343"),
+ new FormatString(226, 67234234.23434343434341111m, "F5", "67234234.23434"),
+ new FormatString(227, 67234234.23434343434341111m, "F6", "67234234.234343"),
+ new FormatString(228, 67234234.23434343434341111m, "F7", "67234234.2343434"),
+ new FormatString(229, 67234234.23434343434341111m, "F8", "67234234.23434343"),
+ new FormatString(230, 67234234.23434343434341111m, "F9", "67234234.234343434"),
+ new FormatString(231, 67234234.23434343434341111m, "G", "67234234.23434343434341111"),
+ new FormatString(232, 67234234.23434343434341111m, "G0", "67234234.23434343434341111"),
+ new FormatString(233, 67234234.23434343434341111m, "G1", "7E+07"),
+ new FormatString(234, 67234234.23434343434341111m, "G2", "6.7E+07"),
+ new FormatString(235, 67234234.23434343434341111m, "G3", "6.72E+07"),
+ new FormatString(236, 67234234.23434343434341111m, "G4", "6.723E+07"),
+ new FormatString(237, 67234234.23434343434341111m, "G5", "6.7234E+07"),
+ new FormatString(238, 67234234.23434343434341111m, "G6", "6.72342E+07"),
+ new FormatString(239, 67234234.23434343434341111m, "G7", "6.723423E+07"),
+ new FormatString(240, 67234234.23434343434341111m, "G8", "67234234"),
+ new FormatString(241, 67234234.23434343434341111m, "G9", "67234234.2"),
+ new FormatString(242, 67234234.23434343434341111m, "N", "67,234,234.23"),
+ new FormatString(243, 67234234.23434343434341111m, "N0", "67,234,234"),
+ new FormatString(244, 67234234.23434343434341111m, "N1", "67,234,234.2"),
+ new FormatString(245, 67234234.23434343434341111m, "N2", "67,234,234.23"),
+ new FormatString(246, 67234234.23434343434341111m, "N3", "67,234,234.234"),
+ new FormatString(247, 67234234.23434343434341111m, "N4", "67,234,234.2343"),
+ new FormatString(248, 67234234.23434343434341111m, "N5", "67,234,234.23434"),
+ new FormatString(249, 67234234.23434343434341111m, "N6", "67,234,234.234343"),
+ new FormatString(250, 67234234.23434343434341111m, "N7", "67,234,234.2343434"),
+ new FormatString(251, 67234234.23434343434341111m, "N8", "67,234,234.23434343"),
+ new FormatString(252, 67234234.23434343434341111m, "N9", "67,234,234.234343434"),
+ new FormatString(253, 67234234.23434343434341111m, "P", "6,723,423,423.43 %"),
+ new FormatString(254, 67234234.23434343434341111m, "P0", "6,723,423,423 %"),
+ new FormatString(255, 67234234.23434343434341111m, "P1", "6,723,423,423.4 %"),
+ new FormatString(256, 67234234.23434343434341111m, "P2", "6,723,423,423.43 %"),
+ new FormatString(257, 67234234.23434343434341111m, "P3", "6,723,423,423.434 %"),
+ new FormatString(258, 67234234.23434343434341111m, "P4", "6,723,423,423.4343 %"),
+ new FormatString(259, 67234234.23434343434341111m, "P5", "6,723,423,423.43434 %"),
+ new FormatString(260, 67234234.23434343434341111m, "P6", "6,723,423,423.434343 %"),
+ new FormatString(261, 67234234.23434343434341111m, "P7", "6,723,423,423.4343434 %"),
+ new FormatString(262, 67234234.23434343434341111m, "P8", "6,723,423,423.43434343 %"),
+ new FormatString(263, 67234234.23434343434341111m, "P9", "6,723,423,423.434343434 %")
+ };
+ }
+}
+
+