New test.
[mono.git] / mcs / class / System.Web / Test / System.Web.UI.WebControls / BaseCompareValidatorTest.cs
1 //
2 // Tests for System.Web.UI.WebControls.BaseCompareValidator 
3 //
4 // Author:
5 //      Chris Toshok (toshok@novell.com)
6 //
7
8 //
9 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
10 //
11 // Permission is hereby granted, free of charge, to any person obtaining
12 // a copy of this software and associated documentation files (the
13 // "Software"), to deal in the Software without restriction, including
14 // without limitation the rights to use, copy, modify, merge, publish,
15 // distribute, sublicense, and/or sell copies of the Software, and to
16 // permit persons to whom the Software is furnished to do so, subject to
17 // the following conditions:
18 // 
19 // The above copyright notice and this permission notice shall be
20 // included in all copies or substantial portions of the Software.
21 // 
22 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
23 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
25 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
26 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
27 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
28 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
29 //
30
31 using NUnit.Framework;
32 using System;
33 using System.IO;
34 using System.Globalization;
35 using System.Threading;
36 using System.Web;
37 using System.Web.UI;
38 using System.Web.UI.WebControls;
39
40 namespace MonoTests.System.Web.UI.WebControls
41 {
42         class BaseCompareValidatorPoker : BaseCompareValidator {
43                 public BaseCompareValidatorPoker ()
44                 {
45                         TrackViewState (); 
46                 }
47                 
48                 public object SaveState ()
49                 {
50                         return SaveViewState ();
51                 }
52
53                 public void LoadState (object o)
54                 {
55                         LoadViewState (o);
56                 }
57
58                 public void CheckControlProperties ()
59                 {
60                         ControlPropertiesValid ();
61                 }
62
63                 protected override bool EvaluateIsValid ()
64                 {
65                         return true;
66                 }
67
68                 public new bool Compare(string leftText,
69                                         string rightText,
70                                         ValidationCompareOperator op,
71                                         ValidationDataType type)
72                 {
73                         return BaseCompareValidator.Compare (leftText,
74                                                              rightText,
75                                                              op, type);
76                 }
77
78                 public new bool Convert (string text,
79                                          ValidationDataType type,
80                                          out object value)
81                 {
82                         return BaseCompareValidator.Convert (text, type, out value);
83                 }
84
85                 public new bool CanConvert(string text,
86                                            ValidationDataType type)
87                 {
88                         return BaseCompareValidator.CanConvert (text, type);
89                 }
90
91                 public new string GetDateElementOrder ()
92                 {
93                         return BaseCompareValidator.GetDateElementOrder();
94                 }
95
96                 public new int GetFullYear (int two_digit_year)
97                 {
98                         return BaseCompareValidator.GetFullYear (two_digit_year);
99                 }
100
101                 public int GetCutoffYear ()
102                 {
103                         return BaseCompareValidator.CutoffYear;
104                 }
105         }
106         
107         [TestFixture]   
108         public class BaseCompareValidatorTest : ValidatorTest {
109
110                 [Test]
111                 public void ViewState ()
112                 {
113                         BaseCompareValidatorPoker p = new BaseCompareValidatorPoker ();
114
115                         p.Type = ValidationDataType.String;
116                         Assert.AreEqual (p.Type, ValidationDataType.String, "A1");
117                 }
118
119                 [Test]
120                 public void CanConvert ()
121                 {
122                         BaseCompareValidatorPoker p = new BaseCompareValidatorPoker ();
123
124                         /* an integer constant */
125                         Assert.IsTrue (p.CanConvert ("10", ValidationDataType.String), "B1");
126                         Assert.IsTrue (p.CanConvert ("10", ValidationDataType.Integer), "B2");
127                         Assert.IsTrue (p.CanConvert ("10", ValidationDataType.Double), "B3");
128                         Assert.IsFalse (p.CanConvert ("10", ValidationDataType.Date), "B4");
129                         Assert.IsTrue (p.CanConvert ("10", ValidationDataType.Currency), "B5");
130
131                         /* a double constant */
132                         Assert.IsTrue (p.CanConvert ("10.5", ValidationDataType.String), "B6");
133                         Assert.IsFalse (p.CanConvert ("10.5", ValidationDataType.Integer), "B7");
134                         Assert.IsTrue (p.CanConvert ("10.5", ValidationDataType.Double), "B8");
135 // find a way to do this in a Culture independent way
136 //                      Assert.IsFalse (p.CanConvert ("10.5", ValidationDataType.Date), "B9");
137                         Assert.IsTrue (p.CanConvert ("10.5", ValidationDataType.Currency), "B10");
138
139                         /* a string constant */
140                         Assert.IsTrue (p.CanConvert ("hi", ValidationDataType.String), "B11");
141                         Assert.IsFalse (p.CanConvert ("hi", ValidationDataType.Integer), "B12");
142                         Assert.IsFalse (p.CanConvert ("hi", ValidationDataType.Double), "B13");
143                         Assert.IsFalse (p.CanConvert ("hi", ValidationDataType.Date), "B14");
144                         Assert.IsFalse (p.CanConvert ("hi", ValidationDataType.Currency), "B15");
145
146                         /* a currency constant? */
147                         Assert.IsTrue (p.CanConvert ("10.50", ValidationDataType.String), "B16");
148                         Assert.IsFalse (p.CanConvert ("10.50", ValidationDataType.Integer), "B17");
149                         Assert.IsTrue (p.CanConvert ("10.50", ValidationDataType.Double), "B18");
150                         Assert.IsFalse (p.CanConvert ("10.50", ValidationDataType.Date), "B19");
151                         Assert.IsTrue (p.CanConvert ("10.50", ValidationDataType.Currency), "B20");
152
153                         /* a date constant */
154                         DateTime dt = new DateTime (2005, 7, 19);
155                         string dt_str = dt.ToString("d");
156                         Assert.IsTrue  (p.CanConvert (dt_str, ValidationDataType.String), "B21");
157                         Assert.IsFalse (p.CanConvert (dt_str, ValidationDataType.Integer), "B22");
158                         Assert.IsFalse (p.CanConvert (dt_str, ValidationDataType.Double), "B23");
159                         Assert.IsTrue  (p.CanConvert (dt_str, ValidationDataType.Date), "B24");
160                         Assert.IsFalse (p.CanConvert (dt_str, ValidationDataType.Currency), "B25");
161
162                         /* null? */
163                         Assert.IsFalse (p.CanConvert (null, ValidationDataType.String), "B26");
164                         Assert.IsFalse (p.CanConvert (null, ValidationDataType.Integer), "B27");
165                         Assert.IsFalse (p.CanConvert (null, ValidationDataType.Double), "B28");
166                         Assert.IsFalse (p.CanConvert (null, ValidationDataType.Date), "B29");
167                         Assert.IsFalse (p.CanConvert (null, ValidationDataType.Currency), "B30");
168                 }
169
170                 [Test]
171                 public void Convert ()
172                 {
173                         BaseCompareValidatorPoker p = new BaseCompareValidatorPoker ();
174                         object result;
175
176                         /* an integer constant */
177                         Assert.IsTrue (p.Convert ("10", ValidationDataType.String, out result), "C1");
178                         Assert.AreEqual ("10", result, "C2");
179                         Assert.IsTrue (p.Convert ("10", ValidationDataType.Integer, out result), "C3");
180                         Assert.AreEqual (10, result, "C4");
181                         Assert.IsTrue (p.Convert ("10", ValidationDataType.Double, out result), "C5");
182                         Assert.AreEqual (10.0d, result, "C6");
183                         Assert.IsFalse (p.Convert ("10", ValidationDataType.Date, out result), "C7");
184                         Assert.IsNull (result, "C8");
185                         Assert.IsTrue (p.Convert ("10", ValidationDataType.Currency, out result), "C9");
186                         Assert.AreEqual (new Decimal (10.0f), result, "C10");
187
188                         /* a double constant */
189                         Assert.IsTrue (p.Convert ("10.5", ValidationDataType.String, out result), "C11");
190                         Assert.AreEqual ("10.5", result, "C12");
191                         Assert.IsFalse (p.Convert ("10.5", ValidationDataType.Integer, out result), "C13");
192                         Assert.IsNull (result, "C14");
193                         Assert.IsTrue (p.Convert ("10.5", ValidationDataType.Double, out result), "C15");
194                         Assert.AreEqual (10.5d, result, "C16");
195 // find a way to do this in a Culture independent way
196 //                      Assert.IsFalse (p.Convert ("10.5", ValidationDataType.Date, out result), "C17");
197 //                      Assert.IsNull (result, "C18");
198                         Assert.IsTrue (p.Convert ("10.5", ValidationDataType.Currency, out result), "C19");
199                         Assert.AreEqual (new Decimal (10.5f), result, "C20");
200
201                         /* a string constant */
202                         Assert.IsTrue (p.Convert ("hi", ValidationDataType.String, out result), "C21");
203                         Assert.AreEqual ("hi", result, "C22");
204                         Assert.IsFalse (p.Convert ("hi", ValidationDataType.Integer, out result), "C23");
205                         Assert.IsNull (result, "C24");
206                         Assert.IsFalse (p.Convert ("hi", ValidationDataType.Double, out result), "C25");
207                         Assert.IsNull (result, "C26");
208                         Assert.IsFalse (p.Convert ("hi", ValidationDataType.Date, out result), "C27");
209                         Assert.IsNull (result, "C28");
210                         Assert.IsFalse (p.Convert ("hi", ValidationDataType.Currency, out result), "C29");
211                         Assert.IsNull (result, "C30");
212
213                         /* a date constant */
214                         DateTime dt = new DateTime (2005, 7, 19);
215                         string dt_str = dt.ToString("d");
216                         Assert.IsTrue  (p.Convert (dt_str, ValidationDataType.String, out result), "C31");
217                         Assert.AreEqual (dt_str, result, "C32");
218                         Assert.IsFalse (p.Convert (dt_str, ValidationDataType.Integer, out result), "C33");
219                         Assert.IsNull (result, "C34");
220                         Assert.IsFalse (p.Convert (dt_str, ValidationDataType.Double, out result), "C35");
221                         Assert.IsNull (result, "C36");
222                         Assert.IsTrue  (p.Convert (dt_str, ValidationDataType.Date, out result), "C37");
223                         Assert.AreEqual (DateTime.Parse (dt_str), result, "C38");
224                         Assert.IsFalse (p.Convert (dt_str, ValidationDataType.Currency, out result), "C39");
225                         Assert.IsNull (result, "C40");
226
227                         /* a currency constant? */
228                         Assert.IsTrue (p.Convert ("10.50", ValidationDataType.String, out result), "C41");
229                         Assert.AreEqual ("10.50", result, "C42");
230                         Assert.IsFalse (p.Convert ("10.50", ValidationDataType.Integer, out result), "C43");
231                         Assert.IsNull (result, "C44");
232                         Assert.IsTrue (p.Convert ("10.50", ValidationDataType.Double, out result), "C45");
233                         Assert.AreEqual (10.50d, result, "C46");
234                         Assert.IsFalse (p.Convert ("10.50", ValidationDataType.Date, out result), "C47");
235                         Assert.IsNull (result, "C48");
236                         Assert.IsTrue (p.Convert ("10.50", ValidationDataType.Currency, out result), "C49");
237                         Assert.AreEqual (Decimal.Parse ("10.50"), result, "C50");
238                 }
239
240                 [Test]
241                 public void Compare ()
242                 {
243                         BaseCompareValidatorPoker p = new BaseCompareValidatorPoker ();
244
245                         /* integer comparisons */
246                         /* equal */
247                         Assert.IsTrue  (p.Compare ("10", "10", ValidationCompareOperator.Equal,            ValidationDataType.Integer), "D1");
248                         Assert.IsFalse (p.Compare ("10", "10", ValidationCompareOperator.NotEqual,         ValidationDataType.Integer), "D2");
249                         Assert.IsFalse (p.Compare ("10", "10", ValidationCompareOperator.LessThan,         ValidationDataType.Integer), "D3");
250                         Assert.IsTrue  (p.Compare ("10", "10", ValidationCompareOperator.LessThanEqual,    ValidationDataType.Integer), "D4");
251                         Assert.IsFalse (p.Compare ("10", "10", ValidationCompareOperator.GreaterThan,      ValidationDataType.Integer), "D5");
252                         Assert.IsTrue  (p.Compare ("10", "10", ValidationCompareOperator.GreaterThanEqual, ValidationDataType.Integer), "D6");
253                         /* less than */
254                         Assert.IsFalse (p.Compare ( "5", "10", ValidationCompareOperator.Equal,            ValidationDataType.Integer), "D7");
255                         Assert.IsTrue  (p.Compare ( "5", "10", ValidationCompareOperator.NotEqual,         ValidationDataType.Integer), "D8");
256                         Assert.IsTrue  (p.Compare ( "5", "10", ValidationCompareOperator.LessThan,         ValidationDataType.Integer), "D9");
257                         Assert.IsTrue  (p.Compare ( "5", "10", ValidationCompareOperator.LessThanEqual,    ValidationDataType.Integer), "D10");
258                         Assert.IsFalse (p.Compare ( "5", "10", ValidationCompareOperator.GreaterThan,      ValidationDataType.Integer), "D11");
259                         Assert.IsFalse (p.Compare ( "5", "10", ValidationCompareOperator.GreaterThanEqual, ValidationDataType.Integer), "D12");
260                         /* greater than */
261                         Assert.IsFalse (p.Compare ("10",  "5", ValidationCompareOperator.Equal,            ValidationDataType.Integer), "D13");
262                         Assert.IsTrue  (p.Compare ("10",  "5", ValidationCompareOperator.NotEqual,         ValidationDataType.Integer), "D14");
263                         Assert.IsFalse (p.Compare ("10",  "5", ValidationCompareOperator.LessThan,         ValidationDataType.Integer), "D15");
264                         Assert.IsFalse (p.Compare ("10",  "5", ValidationCompareOperator.LessThanEqual,    ValidationDataType.Integer), "D16");
265                         Assert.IsTrue  (p.Compare ("10",  "5", ValidationCompareOperator.GreaterThan,      ValidationDataType.Integer), "D17");
266                         Assert.IsTrue  (p.Compare ("10",  "5", ValidationCompareOperator.GreaterThanEqual, ValidationDataType.Integer), "D18");
267                         /* error conditions */
268                         Assert.IsFalse (p.Compare ("hi",  "5", ValidationCompareOperator.Equal,            ValidationDataType.Integer), "D13");
269                         Assert.IsFalse (p.Compare ("hi",  "5", ValidationCompareOperator.NotEqual,         ValidationDataType.Integer), "D14");
270                         Assert.IsFalse (p.Compare ("hi",  "5", ValidationCompareOperator.LessThan,         ValidationDataType.Integer), "D15");
271                         Assert.IsFalse (p.Compare ("hi",  "5", ValidationCompareOperator.LessThanEqual,    ValidationDataType.Integer), "D16");
272                         Assert.IsFalse (p.Compare ("hi",  "5", ValidationCompareOperator.GreaterThan,      ValidationDataType.Integer), "D17");
273                         Assert.IsFalse (p.Compare ("hi",  "5", ValidationCompareOperator.GreaterThanEqual, ValidationDataType.Integer), "D18");
274                         Assert.IsFalse (p.Compare (null,  "5", ValidationCompareOperator.Equal,            ValidationDataType.Integer), "D19");
275
276                         Assert.IsTrue  (p.Compare ( "5", "hi", ValidationCompareOperator.Equal,            ValidationDataType.Integer), "D20");
277                         Assert.IsTrue (p.Compare ( "5", "hi", ValidationCompareOperator.NotEqual,         ValidationDataType.Integer), "D21");
278                         Assert.IsTrue (p.Compare ( "5", "hi", ValidationCompareOperator.LessThan,         ValidationDataType.Integer), "D22");
279                         Assert.IsTrue (p.Compare ( "5", "hi", ValidationCompareOperator.LessThanEqual,    ValidationDataType.Integer), "D23");
280                         Assert.IsTrue (p.Compare ( "5", "hi", ValidationCompareOperator.GreaterThan,      ValidationDataType.Integer), "D24");
281                         Assert.IsTrue (p.Compare ( "5", "hi", ValidationCompareOperator.GreaterThanEqual, ValidationDataType.Integer), "D25");
282                         Assert.IsTrue (p.Compare ( "5", null, ValidationCompareOperator.Equal,            ValidationDataType.Integer), "D26");
283                         Assert.IsFalse (p.Compare ( "hi", "hi", ValidationCompareOperator.Equal,            ValidationDataType.Integer), "D111");
284                         Assert.IsFalse (p.Compare ( null, null, ValidationCompareOperator.Equal,            ValidationDataType.Integer), "D112");
285
286                         /* double comparisons */
287                         /* equal */
288                         Assert.IsTrue  (p.Compare ("10.5", "10.5", ValidationCompareOperator.Equal,            ValidationDataType.Double), "D27");
289                         Assert.IsFalse (p.Compare ("10.5", "10.5", ValidationCompareOperator.NotEqual,         ValidationDataType.Double), "D28");
290                         Assert.IsFalse (p.Compare ("10.5", "10.5", ValidationCompareOperator.LessThan,         ValidationDataType.Double), "D29");
291                         Assert.IsTrue  (p.Compare ("10.5", "10.5", ValidationCompareOperator.LessThanEqual,    ValidationDataType.Double), "D30");
292                         Assert.IsFalse (p.Compare ("10.5", "10.5", ValidationCompareOperator.GreaterThan,      ValidationDataType.Double), "D31");
293                         Assert.IsTrue  (p.Compare ("10.5", "10.5", ValidationCompareOperator.GreaterThanEqual, ValidationDataType.Double), "D32");
294                         /* less than */
295                         Assert.IsFalse (p.Compare ( "5.5", "10.5", ValidationCompareOperator.Equal,            ValidationDataType.Double), "D33");
296                         Assert.IsTrue  (p.Compare ( "5.5", "10.5", ValidationCompareOperator.NotEqual,         ValidationDataType.Double), "D34");
297                         Assert.IsTrue  (p.Compare ( "5.5", "10.5", ValidationCompareOperator.LessThan,         ValidationDataType.Double), "D35");
298                         Assert.IsTrue  (p.Compare ( "5.5", "10.5", ValidationCompareOperator.LessThanEqual,    ValidationDataType.Double), "D36");
299                         Assert.IsFalse (p.Compare ( "5.5", "10.5", ValidationCompareOperator.GreaterThan,      ValidationDataType.Double), "D37");
300                         Assert.IsFalse (p.Compare ( "5.5", "10.5", ValidationCompareOperator.GreaterThanEqual, ValidationDataType.Double), "D38");
301                         /* greater than */
302                         Assert.IsFalse (p.Compare ("10.5",  "5.5", ValidationCompareOperator.Equal,            ValidationDataType.Double), "D39");
303                         Assert.IsTrue  (p.Compare ("10.5",  "5.5", ValidationCompareOperator.NotEqual,         ValidationDataType.Double), "D40");
304                         Assert.IsFalse (p.Compare ("10.5",  "5.5", ValidationCompareOperator.LessThan,         ValidationDataType.Double), "D41");
305                         Assert.IsFalse (p.Compare ("10.5",  "5.5", ValidationCompareOperator.LessThanEqual,    ValidationDataType.Double), "D42");
306                         Assert.IsTrue  (p.Compare ("10.5",  "5.5", ValidationCompareOperator.GreaterThan,      ValidationDataType.Double), "D43");
307                         Assert.IsTrue  (p.Compare ("10.5",  "5.5", ValidationCompareOperator.GreaterThanEqual, ValidationDataType.Double), "D44");
308                         /* error conditions */
309                         Assert.IsFalse (p.Compare ("hi",  "5.5", ValidationCompareOperator.Equal,            ValidationDataType.Double), "D45");
310                         Assert.IsFalse (p.Compare ("hi",  "5.5", ValidationCompareOperator.NotEqual,         ValidationDataType.Double), "D46");
311                         Assert.IsFalse (p.Compare ("hi",  "5.5", ValidationCompareOperator.LessThan,         ValidationDataType.Double), "D47");
312                         Assert.IsFalse (p.Compare ("hi",  "5.5", ValidationCompareOperator.LessThanEqual,    ValidationDataType.Double), "D48");
313                         Assert.IsFalse (p.Compare ("hi",  "5.5", ValidationCompareOperator.GreaterThan,      ValidationDataType.Double), "D49");
314                         Assert.IsFalse (p.Compare ("hi",  "5.5", ValidationCompareOperator.GreaterThanEqual, ValidationDataType.Double), "D50");
315                         Assert.IsFalse (p.Compare (null,  "5.5", ValidationCompareOperator.Equal,            ValidationDataType.Double), "D51");
316
317                         Assert.IsTrue (p.Compare ( "5.5", "hi", ValidationCompareOperator.Equal,            ValidationDataType.Double), "D52");
318                         Assert.IsTrue (p.Compare ( "5.5", "hi", ValidationCompareOperator.NotEqual,         ValidationDataType.Double), "D53");
319                         Assert.IsTrue (p.Compare ( "5.5", "hi", ValidationCompareOperator.LessThan,         ValidationDataType.Double), "D54");
320                         Assert.IsTrue (p.Compare ( "5.5", "hi", ValidationCompareOperator.LessThanEqual,    ValidationDataType.Double), "D55");
321                         Assert.IsTrue (p.Compare ( "5.5", "hi", ValidationCompareOperator.GreaterThan,      ValidationDataType.Double), "D56");
322                         Assert.IsTrue (p.Compare ( "5.5", "hi", ValidationCompareOperator.GreaterThanEqual, ValidationDataType.Double), "D57");
323                         Assert.IsTrue (p.Compare ( "5.5", null, ValidationCompareOperator.Equal,            ValidationDataType.Double), "D58");
324                         Assert.IsFalse (p.Compare ( "hi", "hi", ValidationCompareOperator.Equal,            ValidationDataType.Double), "D26");
325                         Assert.IsFalse (p.Compare ( null, null, ValidationCompareOperator.Equal,            ValidationDataType.Double), "D26");
326
327                         /* string comparisons */
328                         /* equal */
329                         Assert.IsTrue  (p.Compare ("hi", "hi", ValidationCompareOperator.Equal,            ValidationDataType.String), "D59");
330                         Assert.IsFalse (p.Compare ("hi", "hi", ValidationCompareOperator.NotEqual,         ValidationDataType.String), "D60");
331                         Assert.IsFalse (p.Compare ("hi", "hi", ValidationCompareOperator.LessThan,         ValidationDataType.String), "D61");
332                         Assert.IsTrue  (p.Compare ("hi", "hi", ValidationCompareOperator.LessThanEqual,    ValidationDataType.String), "D62");
333                         Assert.IsFalse (p.Compare ("hi", "hi", ValidationCompareOperator.GreaterThan,      ValidationDataType.String), "D63");
334                         Assert.IsTrue  (p.Compare ("hi", "hi", ValidationCompareOperator.GreaterThanEqual, ValidationDataType.String), "D64");
335                         /* less than */
336                         Assert.IsFalse (p.Compare ( "bye", "hi", ValidationCompareOperator.Equal,            ValidationDataType.String), "D65");
337                         Assert.IsTrue  (p.Compare ( "bye", "hi", ValidationCompareOperator.NotEqual,         ValidationDataType.String), "D66");
338                         Assert.IsTrue  (p.Compare ( "bye", "hi", ValidationCompareOperator.LessThan,         ValidationDataType.String), "D67");
339                         Assert.IsTrue  (p.Compare ( "bye", "hi", ValidationCompareOperator.LessThanEqual,    ValidationDataType.String), "D68");
340                         Assert.IsFalse (p.Compare ( "bye", "hi", ValidationCompareOperator.GreaterThan,      ValidationDataType.String), "D69");
341                         Assert.IsFalse (p.Compare ( "bye", "hi", ValidationCompareOperator.GreaterThanEqual, ValidationDataType.String), "D70");
342                         /* greater than */
343                         Assert.IsFalse (p.Compare ("hi",  "bye", ValidationCompareOperator.Equal,            ValidationDataType.String), "D71");
344                         Assert.IsTrue  (p.Compare ("hi",  "bye", ValidationCompareOperator.NotEqual,         ValidationDataType.String), "D72");
345                         Assert.IsFalse (p.Compare ("hi",  "bye", ValidationCompareOperator.LessThan,         ValidationDataType.String), "D73");
346                         Assert.IsFalse (p.Compare ("hi",  "bye", ValidationCompareOperator.LessThanEqual,    ValidationDataType.String), "D74");
347                         Assert.IsTrue  (p.Compare ("hi",  "bye", ValidationCompareOperator.GreaterThan,      ValidationDataType.String), "D75");
348                         Assert.IsTrue  (p.Compare ("hi",  "bye", ValidationCompareOperator.GreaterThanEqual, ValidationDataType.String), "D76");
349
350                         /* error conditions */
351                         Assert.IsFalse (p.Compare (null,  "hi", ValidationCompareOperator.Equal,             ValidationDataType.String), "D113");
352                         Assert.IsTrue  (p.Compare ("hi",  null, ValidationCompareOperator.Equal,             ValidationDataType.String), "D114");
353                         Assert.IsFalse (p.Compare ( null, null, ValidationCompareOperator.Equal,             ValidationDataType.String), "D115");
354
355
356                         /* date comparisons */
357                         /* equal */
358                         DateTime dt1 = new DateTime (2005, 7, 18);
359                         DateTime dt2 = new DateTime (2005, 7, 19);
360                         string dt1_str = dt1.ToString("d");
361                         string dt2_str = dt2.ToString("d");
362
363                         Assert.IsTrue  (p.Compare (dt2_str, dt2_str, ValidationCompareOperator.Equal,            ValidationDataType.Date), "D59");
364                         Assert.IsFalse (p.Compare (dt2_str, dt2_str, ValidationCompareOperator.NotEqual,         ValidationDataType.Date), "D60");
365                         Assert.IsFalse (p.Compare (dt2_str, dt2_str, ValidationCompareOperator.LessThan,         ValidationDataType.Date), "D61");
366                         Assert.IsTrue  (p.Compare (dt2_str, dt2_str, ValidationCompareOperator.LessThanEqual,    ValidationDataType.Date), "D62");
367                         Assert.IsFalse (p.Compare (dt2_str, dt2_str, ValidationCompareOperator.GreaterThan,      ValidationDataType.Date), "D63");
368                         Assert.IsTrue  (p.Compare (dt2_str, dt2_str, ValidationCompareOperator.GreaterThanEqual, ValidationDataType.Date), "D64");
369                         /* less than */
370                         Assert.IsFalse (p.Compare ( dt1_str, dt2_str, ValidationCompareOperator.Equal,            ValidationDataType.Date), "D65");
371                         Assert.IsTrue  (p.Compare ( dt1_str, dt2_str, ValidationCompareOperator.NotEqual,         ValidationDataType.Date), "D66");
372                         Assert.IsTrue  (p.Compare ( dt1_str, dt2_str, ValidationCompareOperator.LessThan,         ValidationDataType.Date), "D67");
373                         Assert.IsTrue  (p.Compare ( dt1_str, dt2_str, ValidationCompareOperator.LessThanEqual,    ValidationDataType.Date), "D68");
374                         Assert.IsFalse (p.Compare ( dt1_str, dt2_str, ValidationCompareOperator.GreaterThan,      ValidationDataType.Date), "D69");
375                         Assert.IsFalse (p.Compare ( dt1_str, dt2_str, ValidationCompareOperator.GreaterThanEqual, ValidationDataType.Date), "D70");
376                         /* greater than */
377                         Assert.IsFalse (p.Compare (dt2_str,  dt1_str, ValidationCompareOperator.Equal,            ValidationDataType.Date), "D71");
378                         Assert.IsTrue  (p.Compare (dt2_str,  dt1_str, ValidationCompareOperator.NotEqual,         ValidationDataType.Date), "D72");
379                         Assert.IsFalse (p.Compare (dt2_str,  dt1_str, ValidationCompareOperator.LessThan,         ValidationDataType.Date), "D73");
380                         Assert.IsFalse (p.Compare (dt2_str,  dt1_str, ValidationCompareOperator.LessThanEqual,    ValidationDataType.Date), "D74");
381                         Assert.IsTrue  (p.Compare (dt2_str,  dt1_str, ValidationCompareOperator.GreaterThan,      ValidationDataType.Date), "D75");
382                         Assert.IsTrue  (p.Compare (dt2_str,  dt1_str, ValidationCompareOperator.GreaterThanEqual, ValidationDataType.Date), "D76");
383
384                         /* error conditions */
385                         Assert.IsFalse (p.Compare (null,  dt2_str, ValidationCompareOperator.Equal,             ValidationDataType.Date), "D77");
386                         Assert.IsTrue  (p.Compare (dt2_str,  null, ValidationCompareOperator.Equal,             ValidationDataType.Date), "D78");
387                         Assert.IsFalse (p.Compare ("hi",  null, ValidationCompareOperator.Equal,             ValidationDataType.Date), "D116");
388                         Assert.IsFalse (p.Compare ( null, null, ValidationCompareOperator.Equal,             ValidationDataType.Date), "D117");
389
390                         /* currency comparisons */
391                         /* equal */
392                         Assert.IsTrue  (p.Compare ("10.50", "10.50", ValidationCompareOperator.Equal,            ValidationDataType.Currency), "D79");
393                         Assert.IsFalse (p.Compare ("10.50", "10.50", ValidationCompareOperator.NotEqual,         ValidationDataType.Currency), "D80");
394                         Assert.IsFalse (p.Compare ("10.50", "10.50", ValidationCompareOperator.LessThan,         ValidationDataType.Currency), "D81");
395                         Assert.IsTrue  (p.Compare ("10.50", "10.50", ValidationCompareOperator.LessThanEqual,    ValidationDataType.Currency), "D82");
396                         Assert.IsFalse (p.Compare ("10.50", "10.50", ValidationCompareOperator.GreaterThan,      ValidationDataType.Currency), "D83");
397                         Assert.IsTrue  (p.Compare ("10.50", "10.50", ValidationCompareOperator.GreaterThanEqual, ValidationDataType.Currency), "D84");
398                         /* less than */
399                         Assert.IsFalse (p.Compare ( "5.50", "10.50", ValidationCompareOperator.Equal,            ValidationDataType.Currency), "D85");
400                         Assert.IsTrue  (p.Compare ( "5.50", "10.50", ValidationCompareOperator.NotEqual,         ValidationDataType.Currency), "D86");
401                         Assert.IsTrue  (p.Compare ( "5.50", "10.50", ValidationCompareOperator.LessThan,         ValidationDataType.Currency), "D87");
402                         Assert.IsTrue  (p.Compare ( "5.50", "10.50", ValidationCompareOperator.LessThanEqual,    ValidationDataType.Currency), "D88");
403                         Assert.IsFalse (p.Compare ( "5.50", "10.50", ValidationCompareOperator.GreaterThan,      ValidationDataType.Currency), "D89");
404                         Assert.IsFalse (p.Compare ( "5.50", "10.50", ValidationCompareOperator.GreaterThanEqual, ValidationDataType.Currency), "D90");
405                         /* greater than */
406                         Assert.IsFalse (p.Compare ("10.50",  "5.50", ValidationCompareOperator.Equal,            ValidationDataType.Currency), "D91");
407                         Assert.IsTrue  (p.Compare ("10.50",  "5.50", ValidationCompareOperator.NotEqual,         ValidationDataType.Currency), "D92");
408                         Assert.IsFalse (p.Compare ("10.50",  "5.50", ValidationCompareOperator.LessThan,         ValidationDataType.Currency), "D93");
409                         Assert.IsFalse (p.Compare ("10.50",  "5.50", ValidationCompareOperator.LessThanEqual,    ValidationDataType.Currency), "D94");
410                         Assert.IsTrue  (p.Compare ("10.50",  "5.50", ValidationCompareOperator.GreaterThan,      ValidationDataType.Currency), "D95");
411                         Assert.IsTrue  (p.Compare ("10.50",  "5.50", ValidationCompareOperator.GreaterThanEqual, ValidationDataType.Currency), "D96");
412                         /* error conditions */
413                         Assert.IsFalse (p.Compare ("hi",  "5.50", ValidationCompareOperator.Equal,            ValidationDataType.Currency), "D97");
414                         Assert.IsFalse (p.Compare ("hi",  "5.50", ValidationCompareOperator.NotEqual,         ValidationDataType.Currency), "D98");
415                         Assert.IsFalse (p.Compare ("hi",  "5.50", ValidationCompareOperator.LessThan,         ValidationDataType.Currency), "D99");
416                         Assert.IsFalse (p.Compare ("hi",  "5.50", ValidationCompareOperator.LessThanEqual,    ValidationDataType.Currency), "D100");
417                         Assert.IsFalse (p.Compare ("hi",  "5.50", ValidationCompareOperator.GreaterThan,      ValidationDataType.Currency), "D101");
418                         Assert.IsFalse (p.Compare ("hi",  "5.50", ValidationCompareOperator.GreaterThanEqual, ValidationDataType.Currency), "D102");
419                         Assert.IsFalse (p.Compare (null,  "5.50", ValidationCompareOperator.Equal,            ValidationDataType.Currency), "D103");
420
421                         Assert.IsTrue (p.Compare ( "5.50", "hi", ValidationCompareOperator.Equal,            ValidationDataType.Currency), "D104");
422                         Assert.IsTrue (p.Compare ( "5.50", "hi", ValidationCompareOperator.NotEqual,         ValidationDataType.Currency), "D105");
423                         Assert.IsTrue (p.Compare ( "5.50", "hi", ValidationCompareOperator.LessThan,         ValidationDataType.Currency), "D106");
424                         Assert.IsTrue (p.Compare ( "5.50", "hi", ValidationCompareOperator.LessThanEqual,    ValidationDataType.Currency), "D107");
425                         Assert.IsTrue (p.Compare ( "5.50", "hi", ValidationCompareOperator.GreaterThan,      ValidationDataType.Currency), "D108");
426                         Assert.IsTrue (p.Compare ( "5.50", "hi", ValidationCompareOperator.GreaterThanEqual, ValidationDataType.Currency), "D109");
427                         Assert.IsTrue (p.Compare ( "5.50", null, ValidationCompareOperator.Equal,            ValidationDataType.Currency), "D110");
428
429                         Assert.IsFalse (p.Compare ("hi",  null, ValidationCompareOperator.Equal,             ValidationDataType.Currency), "D118");
430                         Assert.IsFalse (p.Compare ( null, null, ValidationCompareOperator.Equal,             ValidationDataType.Currency), "D119");
431                 }
432
433                 [Test]
434                 public void MiscPropertiesAndMethods()
435                 {
436                         BaseCompareValidatorPoker p = new BaseCompareValidatorPoker ();
437
438                         Assert.AreEqual (p.GetCutoffYear(), 2029, "E1");
439                         Assert.AreEqual (p.GetFullYear (29), 2029, "E2");
440 #if NET_2_0
441                         Assert.AreEqual (p.GetFullYear (30), 1930, "E3");
442 #else
443                         Assert.AreEqual (p.GetFullYear (30), 2030, "E3"); // XXX this is broken
444 #endif
445
446                         Thread.CurrentThread.CurrentCulture = new CultureInfo ("en-GB", false);
447                         Assert.AreEqual (p.GetDateElementOrder (), "dmy", "E4");
448
449                         Thread.CurrentThread.CurrentCulture = new CultureInfo ("en-US", false);
450                         Assert.AreEqual (p.GetDateElementOrder (), "mdy", "E5");
451
452                         Thread.CurrentThread.CurrentCulture = new CultureInfo ("af-ZA", false);
453                         Assert.AreEqual (p.GetDateElementOrder (), "ymd", "E6");
454                 }
455         }
456
457 }