PageRenderTime 24ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/Blocks/Validation/Tests/Validation.Tests/Validators/TypeConversionValidatorFixture.cs

#
C# | 230 lines | 174 code | 46 blank | 10 comment | 0 complexity | 1911d6637266b8c195b13c373d4f6c98 MD5 | raw file
  1. //===============================================================================
  2. // Microsoft patterns & practices Enterprise Library
  3. // Validation Application Block
  4. //===============================================================================
  5. // Copyright Š Microsoft Corporation. All rights reserved.
  6. // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY
  7. // OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT
  8. // LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
  9. // FITNESS FOR A PARTICULAR PURPOSE.
  10. //===============================================================================
  11. using System;
  12. using System.Text.RegularExpressions;
  13. using Microsoft.Practices.EnterpriseLibrary.Validation.Properties;
  14. using Microsoft.Practices.EnterpriseLibrary.Validation.TestSupport;
  15. using Microsoft.Practices.EnterpriseLibrary.Validation.TestSupport.TestClasses;
  16. using Microsoft.Practices.EnterpriseLibrary.Validation.Validators;
  17. using Microsoft.VisualStudio.TestTools.UnitTesting;
  18. namespace Microsoft.Practices.EnterpriseLibrary.Validation.Tests.Validators
  19. {
  20. [TestClass]
  21. public class TypeConversionValidatorFixture
  22. {
  23. [TestMethod]
  24. [ExpectedException(typeof(ArgumentNullException))]
  25. public void ConstructionOfValidatorWithNullPatternThrows()
  26. {
  27. new TypeConversionValidator(null);
  28. }
  29. [TestMethod]
  30. public void ConstructorWithTargetTypeCreatesCorrectInstance()
  31. {
  32. TypeConversionValidator validator = new TypeConversionValidator(typeof(int));
  33. Assert.AreEqual(Resources.TypeConversionNonNegatedDefaultMessageTemplate, validator.MessageTemplate);
  34. Assert.AreEqual(false, validator.Negated);
  35. Assert.AreEqual(typeof(int), validator.TargetType);
  36. }
  37. [TestMethod]
  38. public void ConstructorWithTargetTypeAndNegatedCreatesCorrectInstance()
  39. {
  40. TypeConversionValidator validator = new TypeConversionValidator(typeof(int), true);
  41. Assert.AreEqual(Resources.TypeConversionNegatedDefaultMessageTemplate, validator.MessageTemplate);
  42. Assert.AreEqual(true, validator.Negated);
  43. Assert.AreEqual(typeof(int), validator.TargetType);
  44. }
  45. [TestMethod]
  46. public void ConstructorWithTargetTypeAndMessageTemplateCreatesCorrectInstance()
  47. {
  48. TypeConversionValidator validator = new TypeConversionValidator(typeof(int), "my message template");
  49. Assert.AreEqual("my message template", validator.MessageTemplate);
  50. Assert.AreEqual(false, validator.Negated);
  51. Assert.AreEqual(typeof(int), validator.TargetType);
  52. }
  53. [TestMethod]
  54. public void ConstructorWithTargetTypeAndMessageTemplateAndNegatedCreatesCorrectInstance()
  55. {
  56. TypeConversionValidator validator = new TypeConversionValidator(typeof(int), "my message template", true);
  57. Assert.AreEqual("my message template", validator.MessageTemplate);
  58. Assert.AreEqual(true, validator.Negated);
  59. Assert.AreEqual(typeof(int), validator.TargetType);
  60. }
  61. [TestMethod]
  62. public void NegatedRejectsNull()
  63. {
  64. TypeConversionValidator validator = new TypeConversionValidator(typeof(int), true);
  65. ValidationResults results = validator.Validate(null);
  66. Assert.IsFalse(results.IsValid);
  67. }
  68. [TestMethod]
  69. public void NonNegatedRejectsNull()
  70. {
  71. TypeConversionValidator validator = new TypeConversionValidator(typeof(int), false);
  72. ValidationResults results = validator.Validate(null);
  73. Assert.IsFalse(results.IsValid);
  74. }
  75. [TestMethod]
  76. public void NonNegatedAcceptsStringWithIntType()
  77. {
  78. TypeConversionValidator validator = new TypeConversionValidator(typeof(int), false);
  79. ValidationResults results = validator.Validate("12");
  80. Assert.IsTrue(results.IsValid);
  81. }
  82. [TestMethod]
  83. public void NegatedRejectsStringWithIntType()
  84. {
  85. TypeConversionValidator validator = new TypeConversionValidator(typeof(int), true);
  86. ValidationResults results = validator.Validate("12");
  87. Assert.IsFalse(results.IsValid);
  88. }
  89. [TestMethod]
  90. public void NonNegatedRejectsStringWithIntType()
  91. {
  92. TypeConversionValidator validator = new TypeConversionValidator(typeof(int), false);
  93. ValidationResults results = validator.Validate("a");
  94. Assert.IsFalse(results.IsValid);
  95. }
  96. [TestMethod]
  97. public void NegatedAcceptsStringWithIntType()
  98. {
  99. TypeConversionValidator validator = new TypeConversionValidator(typeof(int), true);
  100. ValidationResults results = validator.Validate("a");
  101. Assert.IsTrue(results.IsValid);
  102. }
  103. [TestMethod]
  104. public void NonNegatedRejectsEmptyStringWithDateTimeType()
  105. {
  106. TypeConversionValidator validator = new TypeConversionValidator(typeof(DateTime));
  107. ValidationResults results = validator.Validate(string.Empty);
  108. Assert.IsFalse(results.IsValid);
  109. }
  110. [TestMethod]
  111. public void NonNegatedRejectsEmptyStringWithIntType()
  112. {
  113. TypeConversionValidator validator = new TypeConversionValidator(typeof(int));
  114. ValidationResults results = validator.Validate(string.Empty);
  115. Assert.IsFalse(results.IsValid);
  116. }
  117. [TestMethod]
  118. public void NonNegatedAcceptsEmptyStringWithStringType()
  119. {
  120. TypeConversionValidator validator = new TypeConversionValidator(typeof(string));
  121. ValidationResults results = validator.Validate(string.Empty);
  122. Assert.IsTrue(results.IsValid);
  123. }
  124. [TestMethod]
  125. public void SuppliesAppropriateParametersToMessageTemplate()
  126. {
  127. TypeConversionValidator validator = new TypeConversionValidator(typeof(int));
  128. validator.MessageTemplate = "{0}-{1}-{2}-{3}";
  129. validator.Tag = "tag";
  130. object target = "not an int";
  131. string key = "key";
  132. ValidationResults validationResults = new ValidationResults();
  133. validator.DoValidate(target, null, key, validationResults);
  134. Assert.IsFalse(validationResults.IsValid);
  135. ValidationResult validationResult = ValidationTestHelper.GetResultsList(validationResults)[0];
  136. Match match = TemplateStringTester.Match(validator.MessageTemplate, validationResult.Message);
  137. Assert.IsTrue(match.Success);
  138. Assert.IsTrue(match.Groups["param0"].Success);
  139. Assert.AreEqual(target.ToString(), match.Groups["param0"].Value);
  140. Assert.IsTrue(match.Groups["param1"].Success);
  141. Assert.AreEqual(key, match.Groups["param1"].Value);
  142. Assert.IsTrue(match.Groups["param2"].Success);
  143. Assert.AreEqual(validator.Tag, match.Groups["param2"].Value);
  144. Assert.IsTrue(match.Groups["param3"].Success);
  145. Assert.AreEqual("System.Int32", match.Groups["param3"].Value);
  146. }
  147. public void SuppliesAppropriateParametersToDefaultMessage()
  148. {
  149. TypeConversionValidator validator = new TypeConversionValidator(typeof(int));
  150. validator.Tag = "tag";
  151. object target = "not an int";
  152. string key = "key";
  153. ValidationResults validationResults = new ValidationResults();
  154. validator.DoValidate(target, null, key, validationResults);
  155. Assert.IsFalse(validationResults.IsValid);
  156. ValidationResult validationResult = ValidationTestHelper.GetResultsList(validationResults)[0];
  157. Match match = TemplateStringTester.Match(validator.MessageTemplate, validationResult.Message);
  158. Assert.IsTrue(match.Success);
  159. Assert.IsFalse(match.Groups["param0"].Success);
  160. Assert.IsFalse(match.Groups["param1"].Success);
  161. Assert.IsFalse(match.Groups["param2"].Success);
  162. Assert.IsTrue(match.Groups["param3"].Success);
  163. Assert.AreEqual("System.Int32", match.Groups["param3"].Value);
  164. }
  165. public void SuppliesAppropriateParametersToDefaultNegatedMessage()
  166. {
  167. TypeConversionValidator validator = new TypeConversionValidator(typeof(int), true);
  168. validator.Tag = "tag";
  169. object target = "10";
  170. string key = "key";
  171. ValidationResults validationResults = new ValidationResults();
  172. validator.DoValidate(target, null, key, validationResults);
  173. Assert.IsFalse(validationResults.IsValid);
  174. ValidationResult validationResult = ValidationTestHelper.GetResultsList(validationResults)[0];
  175. Match match = TemplateStringTester.Match(validator.MessageTemplate, validationResult.Message);
  176. Assert.IsTrue(match.Success);
  177. Assert.IsFalse(match.Groups["param0"].Success);
  178. Assert.IsFalse(match.Groups["param1"].Success);
  179. Assert.IsFalse(match.Groups["param2"].Success);
  180. Assert.IsTrue(match.Groups["param3"].Success);
  181. Assert.AreEqual("System.Int32", match.Groups["param3"].Value);
  182. }
  183. }
  184. }