2 // SqlDecimalTest.cs - NUnit Test Cases for System.Data.SqlTypes.SqlDecimal
\r
5 // Ville Palo (vi64pa@koti.soon.fi)
\r
6 // Martin Willemoes Hansen
\r
8 // (C) 2002 Ville Palo
\r
9 // (C) 2003 Martin Willemoes Hansen
\r
13 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
15 // Permission is hereby granted, free of charge, to any person obtaining
16 // a copy of this software and associated documentation files (the
17 // "Software"), to deal in the Software without restriction, including
18 // without limitation the rights to use, copy, modify, merge, publish,
19 // distribute, sublicense, and/or sell copies of the Software, and to
20 // permit persons to whom the Software is furnished to do so, subject to
21 // the following conditions:
23 // The above copyright notice and this permission notice shall be
24 // included in all copies or substantial portions of the Software.
26 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
27 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
28 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
29 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
30 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
31 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
32 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
35 using NUnit.Framework;
\r
37 using System.Data.SqlTypes;
\r
38 using System.Threading;
\r
39 using System.Globalization;
\r
41 namespace MonoTests.System.Data.SqlTypes
\r
44 public class SqlDecimalTest : Assertion {
\r
46 private SqlDecimal Test1;
\r
47 private SqlDecimal Test2;
\r
48 private SqlDecimal Test3;
\r
49 private SqlDecimal Test4;
\r
52 public void GetReady()
\r
54 Thread.CurrentThread.CurrentCulture = new CultureInfo ("en-US");
\r
55 Test1 = new SqlDecimal (6464.6464m);
\r
56 Test2 = new SqlDecimal (10000.00m);
\r
57 Test3 = new SqlDecimal (10000.00m);
\r
58 Test4 = new SqlDecimal (-6m);
\r
63 public void Create()
\r
65 // SqlDecimal (decimal)
\r
66 SqlDecimal Test = new SqlDecimal (30.3098m);
\r
67 AssertEquals ("#A01", (decimal)30.3098, Test.Value);
\r
70 SqlDecimal test = new SqlDecimal (Decimal.MaxValue + 1);
\r
72 } catch (Exception e) {
\r
73 AssertEquals ("#A03", typeof (OverflowException), e.GetType ());
\r
76 // SqlDecimal (double)
\r
77 Test = new SqlDecimal (10E+10d);
\r
78 AssertEquals ("#A05", 100000000000.00000m, Test.Value);
\r
81 SqlDecimal test = new SqlDecimal (10E+200d);
\r
83 } catch (Exception e) {
\r
84 AssertEquals ("#A07", typeof (OverflowException), e.GetType ());
\r
88 Test = new SqlDecimal (-1);
\r
89 AssertEquals ("#A08", -1m, Test.Value);
\r
91 // SqlDecimal (long)
\r
92 Test = new SqlDecimal ((long)(-99999));
\r
93 AssertEquals ("#A09", -99999m, Test.Value);
\r
95 // SqlDecimal (byte, byte, bool. int[]
\r
96 Test = new SqlDecimal (10, 3, false, new int [4] {200, 1, 0, 0});
\r
97 AssertEquals ("#A10", -4294967.496m, Test.Value);
\r
100 Test = new SqlDecimal (100, 100, false,
\r
101 new int [4] {Int32.MaxValue,
\r
102 Int32.MaxValue, Int32.MaxValue,
\r
105 } catch (SqlTypeException) {
\r
108 // sqlDecimal (byte, byte, bool, int, int, int, int)
\r
109 Test = new SqlDecimal (12, 2, true, 100, 100, 0, 0);
\r
110 AssertEquals ("#A13", 4294967297.00m, Test.Value);
\r
113 Test = new SqlDecimal (100, 100, false,
\r
115 Int32.MaxValue, Int32.MaxValue,
\r
118 } catch (SqlTypeException) {
\r
122 // Test public fields
\r
124 public void PublicFields()
\r
126 AssertEquals ("#B01", (byte)38, SqlDecimal.MaxPrecision);
\r
127 AssertEquals ("#B02", (byte)38, SqlDecimal.MaxScale);
\r
129 // FIXME: on windows: Conversion overflow
\r
130 AssertEquals ("#B03a", 1262177448, SqlDecimal.MaxValue.Data [3]);
\r
133 AssertEquals ("#B04", 1262177448, SqlDecimal.MinValue.Data [3]);
\r
134 Assert ("#B05", SqlDecimal.Null.IsNull);
\r
135 Assert ("#B06", !Test1.IsNull);
\r
140 public void Properties()
\r
142 byte[] b = Test1.BinData;
\r
143 AssertEquals ("#C01", (byte)64, b [0]);
\r
145 int[] i = Test1.Data;
\r
146 AssertEquals ("#C02", 64646464, i [0]);
\r
148 Assert ("#C03", SqlDecimal.Null.IsNull);
\r
149 Assert ("#C04", Test1.IsPositive);
\r
150 Assert ("#C05", !Test4.IsPositive);
\r
151 AssertEquals ("#C06", (byte)8, Test1.Precision);
\r
152 AssertEquals ("#C07", (byte)2, Test2.Scale);
\r
153 AssertEquals ("#C08", 6464.6464m, Test1.Value);
\r
154 AssertEquals ("#C09", (byte)4, Test1.Scale);
\r
155 AssertEquals ("#C10", (byte)7, Test2.Precision);
\r
156 AssertEquals ("#C11", (byte)1, Test4.Precision);
\r
161 public void ArithmeticMethods()
\r
165 AssertEquals ("#D01", (SqlDecimal)6m, SqlDecimal.Abs (Test4));
\r
166 AssertEquals ("#D02", new SqlDecimal (6464.6464m).Value, SqlDecimal.Abs (Test1).Value);
\r
168 AssertEquals ("#D03", SqlDecimal.Null, SqlDecimal.Abs (SqlDecimal.Null));
\r
171 AssertEquals ("#D04", 16464.6464m, SqlDecimal.Add (Test1, Test2).Value);
\r
174 SqlDecimal test = SqlDecimal.Add (SqlDecimal.MaxValue, SqlDecimal.MaxValue);
\r
176 } catch (OverflowException) {
\r
179 AssertEquals ("#D07", (SqlDecimal)6465m, SqlDecimal.Ceiling(Test1));
\r
180 AssertEquals ("#D08", SqlDecimal.Null, SqlDecimal.Ceiling(SqlDecimal.Null));
\r
183 AssertEquals ("#D09", (SqlDecimal)(-1077.441066m), SqlDecimal.Divide (Test1, Test4));
\r
184 AssertEquals ("#D10", 1.54687501546m, SqlDecimal.Divide (Test2, Test1).Value);
\r
187 SqlDecimal test = SqlDecimal.Divide(Test1, new SqlDecimal(0)).Value;
\r
189 } catch(Exception e) {
\r
190 AssertEquals ("#D12", typeof (DivideByZeroException), e.GetType ());
\r
193 AssertEquals ("#D13", (SqlDecimal)6464m, SqlDecimal.Floor (Test1));
\r
196 AssertEquals ("#D14", 64646464.000000m, SqlDecimal.Multiply (Test1, Test2).Value);
\r
197 AssertEquals ("#D15", -38787.8784m, SqlDecimal.Multiply (Test1, Test4).Value);
\r
200 SqlDecimal test = SqlDecimal.Multiply (SqlDecimal.MaxValue, Test1);
\r
202 } catch (Exception e) {
\r
203 AssertEquals ("#D17", typeof (OverflowException), e.GetType ());
\r
207 AssertEquals ("#D18", (SqlDecimal)41791653.0770m, SqlDecimal.Power (Test1, 2));
\r
210 AssertEquals ("#D19", (SqlDecimal)6464.65m, SqlDecimal.Round (Test1, 2));
\r
213 AssertEquals ("#D20", -3535.3536m, SqlDecimal.Subtract (Test1, Test3).Value);
\r
216 SqlDecimal test = SqlDecimal.Subtract(SqlDecimal.MinValue, SqlDecimal.MaxValue);
\r
218 } catch (Exception e) {
\r
219 AssertEquals ("#D22", typeof (OverflowException), e.GetType ());
\r
222 AssertEquals ("#D23", (SqlInt32)1, SqlDecimal.Sign (Test1));
\r
223 AssertEquals ("#D24", new SqlInt32(-1), SqlDecimal.Sign (Test4));
\r
227 public void AdjustScale()
\r
229 AssertEquals ("#E01", "6464.646400", SqlDecimal.AdjustScale (Test1, 2, false).Value.ToString ());
\r
230 AssertEquals ("#E02", "6464.65", SqlDecimal.AdjustScale (Test1, -2, true).Value.ToString ());
\r
231 AssertEquals ("#E03", "6464.64", SqlDecimal.AdjustScale (Test1, -2, false).Value.ToString ());
\r
232 AssertEquals ("#E01", "10000.000000000000", SqlDecimal.AdjustScale (Test2, 10, false).Value.ToString ());
\r
236 public void ConvertToPrecScale()
\r
238 AssertEquals ("#F01", new SqlDecimal(6464.6m).Value, SqlDecimal.ConvertToPrecScale (Test1, 5, 1).Value);
\r
241 SqlDecimal test = SqlDecimal.ConvertToPrecScale (Test1, 6, 5);
\r
243 } catch (Exception e) {
\r
244 AssertEquals ("#F03", typeof (SqlTruncateException), e.GetType ());
\r
247 AssertEquals ("#F01", (SqlString)"10000.00", SqlDecimal.ConvertToPrecScale (Test2, 7, 2).ToSqlString ());
\r
251 public void CompareTo()
\r
253 SqlString TestString = new SqlString ("This is a test");
\r
255 Assert ("#G01", Test1.CompareTo (Test3) < 0);
\r
256 Assert ("#G02", Test2.CompareTo (Test1) > 0);
\r
257 Assert ("#G03", Test2.CompareTo (Test3) == 0);
\r
258 Assert ("#G04", Test4.CompareTo (SqlDecimal.Null) > 0);
\r
261 Test1.CompareTo (TestString);
\r
263 } catch(Exception e) {
\r
264 AssertEquals ("#G06", typeof (ArgumentException), e.GetType ());
\r
269 public void EqualsMethods()
\r
271 Assert ("#H01", !Test1.Equals (Test2));
\r
272 Assert ("#H02", !Test2.Equals (new SqlString ("TEST")));
\r
273 Assert ("#H03", Test2.Equals (Test3));
\r
275 // Static Equals()-method
\r
276 Assert ("#H05", SqlDecimal.Equals (Test2, Test2).Value);
\r
277 Assert ("#H06", !SqlDecimal.Equals (Test1, Test2).Value);
\r
280 Assert ("#H07", SqlDecimal.NotEquals (Test1, Test2).Value);
\r
281 Assert ("#H08", SqlDecimal.NotEquals (Test4, Test1).Value);
\r
282 Assert ("#H09", !SqlDecimal.NotEquals (Test2, Test3).Value);
\r
283 Assert ("#H10", SqlDecimal.NotEquals (SqlDecimal.Null, Test3).IsNull);
\r
286 /* Don't do such environment-dependent test. It will never succeed under Portable.NET and MS.NET
\r
288 public void GetHashCodeTest()
\r
290 // FIXME: Better way to test HashCode
\r
291 AssertEquals ("#I01", -1281249885, Test1.GetHashCode ());
\r
296 public void GetTypeTest()
\r
298 AssertEquals ("#J01", "System.Data.SqlTypes.SqlDecimal",
\r
299 Test1.GetType ().ToString ());
\r
300 AssertEquals ("#J02", "System.Decimal", Test1.Value.GetType ().ToString ());
\r
304 public void Greaters()
\r
307 Assert ("#K01", !SqlDecimal.GreaterThan (Test1, Test2).Value);
\r
308 Assert ("#K02", SqlDecimal.GreaterThan (Test2, Test1).Value);
\r
309 Assert ("#K03", !SqlDecimal.GreaterThan (Test2, Test3).Value);
\r
311 // GreaterTharOrEqual ()
\r
312 Assert ("#K04", !SqlDecimal.GreaterThanOrEqual (Test1, Test2).Value);
\r
313 Assert ("#K05", SqlDecimal.GreaterThanOrEqual (Test2, Test1).Value);
\r
314 Assert ("#K06", SqlDecimal.GreaterThanOrEqual (Test2, Test3).Value);
\r
318 public void Lessers()
\r
321 Assert ("#L01", !SqlDecimal.LessThan (Test3, Test2).Value);
\r
322 Assert ("#L02", !SqlDecimal.LessThan (Test2, Test1).Value);
\r
323 Assert ("#L03", SqlDecimal.LessThan (Test1, Test2).Value);
\r
325 // LessThanOrEqual ()
\r
326 Assert ("#L04", SqlDecimal.LessThanOrEqual (Test1, Test2).Value);
\r
327 Assert ("#L05", !SqlDecimal.LessThanOrEqual (Test2, Test1).Value);
\r
328 Assert ("#L06", SqlDecimal.LessThanOrEqual (Test2, Test3).Value);
\r
329 Assert ("#L07", SqlDecimal.LessThanOrEqual (Test1, SqlDecimal.Null).IsNull);
\r
333 public void Parse()
\r
336 SqlDecimal.Parse (null);
\r
338 } catch (Exception e) {
\r
339 AssertEquals ("#M02", typeof (ArgumentNullException), e.GetType ());
\r
343 SqlDecimal.Parse ("not-a-number");
\r
345 } catch (Exception e) {
\r
346 AssertEquals ("#M04", typeof (FormatException), e.GetType ());
\r
350 SqlDecimal test = SqlDecimal.Parse ("9e300");
\r
352 } catch (FormatException) {
\r
355 AssertEquals("#M07", 150m, SqlDecimal.Parse ("150").Value);
\r
357 // decimal.Parse() does not pass this string.
\r
358 string max = "99999999999999999999999999999999999999";
\r
359 SqlDecimal dx = SqlDecimal.Parse (max);
\r
360 AssertEquals ("#M08", max, dx.ToString ());
\r
363 dx = SqlDecimal.Parse (max + ".0");
\r
365 } catch (FormatException) {
\r
370 public void Conversions()
\r
373 AssertEquals ("N01", 6464.6464, Test1.ToDouble ());
\r
376 AssertEquals ("#N02", new SqlBoolean(1), Test1.ToSqlBoolean ());
\r
378 SqlDecimal Test = new SqlDecimal (0);
\r
379 Assert ("#N03", !Test.ToSqlBoolean ().Value);
\r
381 Test = new SqlDecimal (0);
\r
382 Assert ("#N04", !Test.ToSqlBoolean ().Value);
\r
383 Assert ("#N05", SqlDecimal.Null.ToSqlBoolean ().IsNull);
\r
386 Test = new SqlDecimal (250);
\r
387 AssertEquals ("#N06", (byte)250, Test.ToSqlByte ().Value);
\r
390 SqlByte b = (byte)Test2.ToSqlByte ();
\r
392 } catch (Exception e) {
\r
393 AssertEquals ("#N08", typeof (OverflowException), e.GetType ());
\r
397 AssertEquals ("#N09", (SqlDouble)6464.6464, Test1.ToSqlDouble ());
\r
400 AssertEquals ("#N10", (short)1, new SqlDecimal (1).ToSqlInt16 ().Value);
\r
403 SqlInt16 test = SqlDecimal.MaxValue.ToSqlInt16().Value;
\r
405 } catch (Exception e) {
\r
406 AssertEquals ("#N12", typeof (OverflowException), e.GetType ());
\r
410 // LAMESPEC: 6464.6464 --> 64646464 ??? with windows
\r
411 // MS.NET seems to return the first 32 bit integer (i.e.
\r
412 // Data [0]) but we don't have to follow such stupidity.
\r
413 // AssertEquals ("#N13a", (int)64646464, Test1.ToSqlInt32 ().Value);
\r
414 // AssertEquals ("#N13b", (int)1212, new SqlDecimal(12.12m).ToSqlInt32 ().Value);
\r
417 SqlInt32 test = SqlDecimal.MaxValue.ToSqlInt32 ().Value;
\r
419 } catch (Exception e) {
\r
420 AssertEquals ("#N15", typeof (OverflowException), e.GetType ());
\r
424 AssertEquals ("#N16", (long)6464, Test1.ToSqlInt64 ().Value);
\r
427 AssertEquals ("#N17", (decimal)6464.6464, Test1.ToSqlMoney ().Value);
\r
430 SqlMoney test = SqlDecimal.MaxValue.ToSqlMoney ().Value;
\r
432 } catch (Exception e) {
\r
433 AssertEquals ("#N19", typeof (OverflowException), e.GetType ());
\r
437 AssertEquals ("#N20", (float)6464.6464, Test1.ToSqlSingle ().Value);
\r
440 AssertEquals ("#N21", "6464.6464", Test1.ToSqlString ().Value);
\r
443 AssertEquals ("#N22", "6464.6464", Test1.ToString ());
\r
444 AssertEquals ("#N23", (SqlDouble)1E+38, SqlDecimal.MaxValue.ToSqlDouble ());
\r
449 public void Truncate()
\r
451 // AssertEquals ("#O01", new SqlDecimal (6464.6400m).Value, SqlDecimal.Truncate (Test1, 2).Value);
\r
452 AssertEquals ("#O01", 6464.6400m, SqlDecimal.Truncate (Test1, 2).Value);
\r
458 public void ArithmeticOperators()
\r
461 AssertEquals ("#P01", new SqlDecimal(16464.6464m), Test1 + Test2);
\r
464 SqlDecimal test = SqlDecimal.MaxValue + SqlDecimal.MaxValue;
\r
466 } catch (Exception e) {
\r
467 AssertEquals ("#P03", typeof (OverflowException), e.GetType ());
\r
471 AssertEquals ("#P04", (SqlDecimal)1.54687501546m, Test2 / Test1);
\r
474 SqlDecimal test = Test3 / new SqlDecimal (0);
\r
476 } catch (Exception e) {
\r
477 AssertEquals ("#P06", typeof (DivideByZeroException), e.GetType ());
\r
481 AssertEquals ("#P07", (SqlDecimal)64646464m, Test1 * Test2);
\r
484 SqlDecimal test = SqlDecimal.MaxValue * Test1;
\r
486 } catch (Exception e) {
\r
487 AssertEquals ("#P09", typeof (OverflowException), e.GetType ());
\r
491 AssertEquals ("#P10", (SqlDecimal)3535.3536m, Test2 - Test1);
\r
494 SqlDecimal test = SqlDecimal.MinValue - SqlDecimal.MaxValue;
\r
496 } catch (Exception e) {
\r
497 AssertEquals ("#P12", typeof (OverflowException), e.GetType ());
\r
500 AssertEquals ("#P13", SqlDecimal.Null, SqlDecimal.Null + Test1);
\r
504 public void ThanOrEqualOperators()
\r
508 Assert ("#Q01", (Test2 == Test3).Value);
\r
509 Assert ("#Q02", !(Test1 == Test2).Value);
\r
510 Assert ("#Q03", (Test1 == SqlDecimal.Null).IsNull);
\r
513 Assert ("#Q04", !(Test2 != Test3).Value);
\r
514 Assert ("#Q05", (Test1 != Test3).Value);
\r
515 Assert ("#Q06", (Test4 != Test3).Value);
\r
516 Assert ("#Q07", (Test1 != SqlDecimal.Null).IsNull);
\r
519 Assert ("#Q08", (Test2 > Test1).Value);
\r
520 Assert ("#Q09", !(Test1 > Test3).Value);
\r
521 Assert ("#Q10", !(Test2 > Test3).Value);
\r
522 Assert ("#Q11", (Test1 > SqlDecimal.Null).IsNull);
\r
525 Assert ("#Q12", !(Test1 >= Test3).Value);
\r
526 Assert ("#Q13", (Test3 >= Test1).Value);
\r
527 Assert ("#Q14", (Test2 >= Test3).Value);
\r
528 Assert ("#Q15", (Test1 >= SqlDecimal.Null).IsNull);
\r
531 Assert ("#Q16", !(Test2 < Test1).Value);
\r
532 Assert ("#Q17", (Test1 < Test3).Value);
\r
533 Assert ("#Q18", !(Test2 < Test3).Value);
\r
534 Assert ("#Q19", (Test1 < SqlDecimal.Null).IsNull);
\r
537 Assert ("#Q20", (Test1 <= Test3).Value);
\r
538 Assert ("#Q21", !(Test3 <= Test1).Value);
\r
539 Assert ("#Q22", (Test2 <= Test3).Value);
\r
540 Assert ("#Q23", (Test1 <= SqlDecimal.Null).IsNull);
\r
544 public void UnaryNegation()
\r
546 AssertEquals ("#R01", 6m, -Test4.Value);
\r
547 AssertEquals ("#R02", -6464.6464m, -Test1.Value);
\r
548 AssertEquals ("#R03", SqlDecimal.Null, SqlDecimal.Null);
\r
552 public void SqlBooleanToSqlDecimal()
\r
554 SqlBoolean TestBoolean = new SqlBoolean (true);
\r
557 Result = (SqlDecimal)TestBoolean;
\r
559 AssertEquals ("#S01", 1m, Result.Value);
\r
561 Result = (SqlDecimal)SqlBoolean.Null;
\r
562 Assert ("#S02", Result.IsNull);
\r
563 AssertEquals ("#S03", SqlDecimal.Null, (SqlDecimal)SqlBoolean.Null);
\r
567 public void SqlDecimalToDecimal()
\r
569 AssertEquals ("#T01", 6464.6464m, (Decimal)Test1);
\r
573 public void SqlDoubleToSqlDecimal()
\r
575 SqlDouble Test = new SqlDouble (12E+10);
\r
576 AssertEquals ("#U01", 120000000000.00000m, ((SqlDecimal)Test).Value);
\r
580 public void SqlSingleToSqlDecimal()
\r
582 SqlSingle Test = new SqlSingle (1E+9);
\r
583 AssertEquals ("#V01", 1000000000.0000000m, ((SqlDecimal)Test).Value);
\r
586 SqlDecimal test = (SqlDecimal)SqlSingle.MaxValue;
\r
588 } catch (Exception e) {
\r
589 AssertEquals ("#V03", typeof (OverflowException), e.GetType ());
\r
594 public void SqlStringToSqlDecimal()
\r
596 SqlString TestString = new SqlString ("Test string");
\r
597 SqlString TestString100 = new SqlString ("100");
\r
599 AssertEquals ("#W01", 100m, ((SqlDecimal)TestString100).Value);
\r
602 SqlDecimal test = (SqlDecimal)TestString;
\r
604 } catch(Exception e) {
\r
605 AssertEquals ("#W03", typeof (FormatException), e.GetType ());
\r
609 SqlDecimal test = (SqlDecimal)new SqlString("9E+100");
\r
611 } catch (Exception e) {
\r
612 AssertEquals ("#W05", typeof (FormatException), e.GetType());
\r
617 public void DecimalToSqlDecimal()
\r
619 decimal d = 1000.1m;
\r
620 AssertEquals ("#X01", (SqlDecimal)1000.1m, (SqlDecimal)d);
\r
624 public void ByteToSqlDecimal()
\r
626 AssertEquals ("#Y01", 255m, ((SqlDecimal)SqlByte.MaxValue).Value);
\r
630 public void SqlIntToSqlDouble()
\r
632 SqlInt16 Test64 = new SqlInt16 (64);
\r
633 SqlInt32 Test640 = new SqlInt32 (640);
\r
634 SqlInt64 Test64000 = new SqlInt64 (64000);
\r
635 AssertEquals ("#Z01", 64m, ((SqlDecimal)Test64).Value);
\r
636 AssertEquals ("#Z02", 640m,((SqlDecimal)Test640).Value);
\r
637 AssertEquals ("#Z03", 64000m, ((SqlDecimal)Test64000).Value);
\r
641 public void SqlMoneyToSqlDecimal()
\r
643 SqlMoney TestMoney64 = new SqlMoney(64);
\r
644 AssertEquals ("#AA01", 64.0000M, ((SqlDecimal)TestMoney64).Value);
\r
648 public void ToStringTest ()
\r
650 AssertEquals ("#01", "Null", SqlDecimal.Null.ToString ());
\r
651 AssertEquals ("#02", "-99999999999999999999999999999999999999", SqlDecimal.MinValue.ToString ());
\r
652 AssertEquals ("#03", "99999999999999999999999999999999999999", SqlDecimal.MaxValue.ToString ());
\r
656 public void Value ()
\r
658 decimal d = decimal.Parse ("9999999999999999999999999999");
\r