public void ConfigurationRequirement_ToString_Succeeds() { ConfigurationRequirement requirement = TestUtil.CreateConfigurationRequirement(); JsonCompare.Compare(requirement, requirement.ToString()); }
public void ConfigurationRequirement_ToString_Collection_NoMaximumCount_Succeeds() { ConfigurationRequirement requirement = TestUtil.CreateConfigurationRequirement(collectionInfo: new CollectionInfo(3)); JsonCompare.Compare(requirement, requirement.ToString()); }
public void Mapping_Equals_ValuesDoNotMatch_ReturnsFalse() { IConfigurationRequirement requirement = ConfigurationRequirement.String("Name", "Description"); Mapping first = new Mapping(requirement, "Hello World"); Mapping second = new Mapping(requirement, "Goodbye World"); Assert.IsFalse(first.Equals(second)); Assert.IsFalse(second.Equals(first)); }
public void Mapping_Equals_OneHasValueNull_ReturnsFalse() { IConfigurationRequirement requirement = ConfigurationRequirement.String("Name", "Description"); Mapping first = new Mapping(requirement, "Hello World"); Mapping second = new Mapping(requirement, null); Assert.IsFalse(first.Equals(second)); Assert.IsFalse(second.Equals(first)); }
public void Mapping_Ctor_Success() { const string value = "Valid"; IConfigurationRequirement requirement = ConfigurationRequirement.String("Name", "Description"); Mapping mapping = new Mapping(requirement, value); Assert.AreEqual(requirement, mapping.Requirement); Assert.AreEqual(value, mapping.Value); }
public void Mapping_Equals_Succeeds() { const string value = "Hello World"; IConfigurationRequirement requirement = ConfigurationRequirement.String("Name", "Description"); Mapping first = new Mapping(requirement, value); Mapping second = new Mapping(requirement, value); Assert.IsTrue(first.Equals(second)); Assert.IsTrue(second.Equals(first)); }
public void Mapping_Equals_RequirementsDoNotMatch_ReturnsFalse() { const string value = "Hello World"; IConfigurationRequirement requirement1 = ConfigurationRequirement.String("Name1", "Description"); IConfigurationRequirement requirement2 = ConfigurationRequirement.String("Name2", "Description"); Mapping first = new Mapping(requirement1, value); Mapping second = new Mapping(requirement2, value); Assert.IsFalse(first.Equals(second)); Assert.IsFalse(second.Equals(first)); }
public void ConfigurationRequirement_SimpleValidator_AdditionalValidation_ReturnsNull() { IConfigurationRequirement requirement = TestUtil.CreateConfigurationRequirement(); Assert.IsNull( ConfigurationRequirement .SimpleValidator( requirement.OfType, TestUtil.GetDefaultValidObjectForRequirement(requirement), requirement, new MockConfiguration(), (x, y, z) => null)); }
public void ConfigurationRequirement_SimpleValidator_NotCollection_ValidObject() { const string value = "Valid"; ConfigurationRequirementType type = ConfigurationRequirementType.String; Assert.IsNull( ConfigurationRequirement .SimpleValidator( type, value, TestUtil.CreateConfigurationRequirement(type: type), new MockConfiguration())); }
public void ConfigurationRequirement_SimpleValidator_NullObject() { IConfigurationRequirement requirement = TestUtil.CreateConfigurationRequirement(); Assert.AreEqual( typeof(ArgumentNullException), ConfigurationRequirement .SimpleValidator( requirement.OfType, null, requirement, new MockConfiguration()) ?.GetType()); }
public void ConfigurationRequirement_SimpleValidator_Collection_ValidObject() { IConfigurationRequirement requirement = TestUtil.CreateConfigurationRequirement(collectionInfo: new CollectionInfo(1)); object value = TestUtil.GetDefaultValidObjectForRequirement(requirement); Assert.IsNull( ConfigurationRequirement .SimpleValidator( requirement.OfType, value, requirement, new MockConfiguration())); }
public void ConfigurationRequirement_SimpleValidator_Collection_CollectionIsEmpty() { object[] value = new object[0]; IConfigurationRequirement requirement = TestUtil.CreateConfigurationRequirement( collectionInfo: new CollectionInfo(0)); Exception result = ConfigurationRequirement.SimpleValidator( requirement.OfType, value, requirement, new MockConfiguration()); Assert.IsNull(result); }
public static void Compare( ConfigurationRequirement expected, string actual) { JObject jObj = JObject.Parse(actual); Assert.AreEqual(7, jObj.Count); Assert.AreEqual(expected.Name, jObj["Name"]); Assert.AreEqual(expected.Description, jObj["Description"]); Assert.AreEqual(expected.IsOptional, jObj["IsOptional"]); Assert.AreEqual(expected.OfType.Type.FullName, jObj["OfType"]); JsonCompare.Compare(expected.CollectionInfo, jObj["CollectionInfo"]); JsonCompare.Compare(expected.DependsOn, jObj.Value <JArray>("DependsOn")); JsonCompare.Compare(expected.ExclusiveWith, jObj.Value <JArray>("ExclusiveWith")); }
public void ConfigurationRequirement_Bool_Success() { const string name = "ConfigurationRequirementName"; const string description = "Configuration requirement description."; const string badInput = "Bad input"; const bool goodInput = true; AssertUtil.Compare( name, description, ConfigurationRequirementType.Bool, () => ConfigurationRequirement.Bool(name, description), badInput, goodInput); }
public void ConfigurationRequirement_Int64_Success() { const string name = "ConfigurationRequirementName"; const string description = "Configuration requirement description."; const string badInput = "Bad input"; const long goodInput = 8675309L; AssertUtil.Compare( name, description, ConfigurationRequirementType.Int64, () => ConfigurationRequirement.Int64(name, description), badInput, goodInput); }
public void ConfigurationRequirement_SimpleValidator_NotCollection_InvalidObject() { const long value = 8675309L; ConfigurationRequirementType type = ConfigurationRequirementType.String; Assert.AreEqual( typeof(ArgumentException), ConfigurationRequirement .SimpleValidator( type, value, TestUtil.CreateConfigurationRequirement(), new MockConfiguration()) ?.GetType()); }
public void ConfigurationRequirement_SecureString_Succeeds() { const string name = "ConfigurationRequirementName"; const string description = "Configuration requirement description."; const long badInput = 8675309L; SecureString goodInput = "Hello world".ToSecureString(); AssertUtil.Compare( name, description, ConfigurationRequirementType.SecureString, () => ConfigurationRequirement.SecureString(name, description), badInput, goodInput); }
public void ConfigurationRequirement_Uri_Succeeds() { const string name = "ConfigurationRequirementName"; const string description = "Configuration requirement description."; const long badInput = 8675309L; Uri goodInput = new Uri("https://www.example.com"); AssertUtil.Compare( name, description, ConfigurationRequirementType.Uri, () => ConfigurationRequirement.Uri(name, description), badInput, goodInput); }
public void ConfigurationRequirement_FilePath() { const string name = "ConfigurationRequirementName"; const string description = "Configuration requirement description."; const string badInput = "Bad input"; FilePath goodInput = new FilePath("DoesntMatter.txt", new MockPathInteractor(x => x, x => true)); AssertUtil.Compare( name, description, ConfigurationRequirementType.FilePath, () => ConfigurationRequirement.FilePath(name, description), badInput, goodInput); }
static DemoFactory() { // [~2]. Create the requirements. For the demo, these are just examples. DemoFactory.Website = ConfigurationRequirement.Uri( "Website", "The website to use for the demo."); DemoFactory.Username = ConfigurationRequirement.String( "Username", "The username to use for the demo."); DemoFactory.Password = ConfigurationRequirement.SecureString( "Password", "The password to use for the demo.", dependsOn: new IConfigurationRequirement[] { DemoFactory.Website, DemoFactory.Username }, additionalValidation: (x, y, z) => { if (!z.TryGetOrDefault(DemoFactory.Website, () => null, out Uri website)) { return(new InvalidOperationException("Missing website.")); } if (!z.TryGetOrDefault(DemoFactory.Username, () => null, out string username)) { return(new InvalidOperationException("Missing username.")); } Console.WriteLine(); Console.WriteLine("Additional validation callback for password."); Console.WriteLine("Press enter to continue. Non-empty inputs will intentionally fail validation."); string input = Console.ReadLine(); if (input.Length != 0) { return(new InvalidOperationException(input)); } return(null); }); DemoFactory.BackingRequirements = new IConfigurationRequirement[] { DemoFactory.Website, DemoFactory.Username, DemoFactory.Password }; }
public void ConfigurationRequirement_SimpleValidator_Collection_CollectionIsRightSizeButContainsWrongType() { object[] value = new object[] { 8675309L, "Not assignable to expected type" }; ConfigurationRequirementType type = ConfigurationRequirementType.Int64; IConfigurationRequirement requirement = TestUtil.CreateConfigurationRequirement( type: type, collectionInfo: new CollectionInfo(1, 3)); Exception result = ConfigurationRequirement.SimpleValidator( type, value, requirement, new MockConfiguration()); Assert.AreEqual(typeof(ArgumentException), result?.GetType()); }
public void ConfigurationRequirement_SimpleValidator_AdditionalValidation_ThrowsException() { Exception toReturn = new Exception("CONFIGURATIONREQUIREMENTTESTS_AdditionalValidation"); IConfigurationRequirement requirement = TestUtil.CreateConfigurationRequirement(); Assert.AreEqual( toReturn.Message, ConfigurationRequirement .SimpleValidator( requirement.OfType, TestUtil.GetDefaultValidObjectForRequirement(requirement), requirement, new MockConfiguration(), (x, y, z) => throw toReturn) .Message); }
public void ConfigurationRequirement_SimpleValidator_Collection_CollectionTooLarge() { string[] value = new string[] { "Too big", "Too big", "Too big" }; ConfigurationRequirementType type = ConfigurationRequirementType.String; IConfigurationRequirement requirement = TestUtil.CreateConfigurationRequirement( type: type, collectionInfo: new CollectionInfo(1, 2)); Assert.AreEqual( typeof(ArgumentException), ConfigurationRequirement .SimpleValidator( type, value, requirement, new MockConfiguration()) ?.GetType()); }
public void ConfigurationRequirement_SimpleValidator_Collection_ObjectIsNotCollection() { const string value = "Invalid"; ConfigurationRequirementType type = ConfigurationRequirementType.String; IConfigurationRequirement requirement = TestUtil.CreateConfigurationRequirement( type: type, collectionInfo: new CollectionInfo(1)); Assert.AreEqual( typeof(ArgumentException), ConfigurationRequirement .SimpleValidator( type, value, requirement, new MockConfiguration()) ?.GetType()); }
public void ConfigurationRequirement_Bool_PropagatesInfo() { const string name = "ConfigurationRequirementName"; const string description = "Configuration requirement description."; const bool isOptional = true; const string badInput = "Bad input"; bool[] goodInput = new bool[] { true, false, true }; CollectionInfo collectionInfo = new CollectionInfo(1, 4); IEnumerable <IConfigurationRequirement> dependsOn = TestUtil.CreateIConfigurationRequirementCollection(3); IEnumerable <IConfigurationRequirement> exclusiveWith = TestUtil.CreateIConfigurationRequirementCollection(3); AssertUtil.Compare( name, description, ConfigurationRequirementType.Bool, isOptional, collectionInfo, dependsOn, exclusiveWith, () => ConfigurationRequirement.Bool( name, description, isOptional, collectionInfo, dependsOn, exclusiveWith), badInput, goodInput); }
public void ConfigurationRequirement_Ctor_Succeeds() { const string name = "ConfigurationRequirementName"; const string description = "Configuration requirement description."; const bool isOptional = false; ConfigurationRequirementType type = ConfigurationRequirementType.Int32; ConfigurationRequirement requirement = new ConfigurationRequirement( name, description, type, isOptional, (x, y, z) => null); Assert.AreEqual(name, requirement.Name); Assert.AreEqual(description, requirement.Description); Assert.AreEqual(type, requirement.OfType); Assert.AreEqual(isOptional, requirement.IsOptional); Assert.IsNull(requirement.CollectionInfo); Assert.IsFalse(requirement.DependsOn.Any()); Assert.IsFalse(requirement.ExclusiveWith.Any()); }
public void ConfigurationRequirement_SecureString_PropagatesInfo() { const string name = "ConfigurationRequirementName"; const string description = "Configuration requirement description."; const bool isOptional = true; const long badInput = 8675309L; SecureString[] goodInput = new SecureString[] { "Hello world".ToSecureString() }; CollectionInfo collectionInfo = new CollectionInfo(1, 4); IEnumerable <IConfigurationRequirement> dependsOn = TestUtil.CreateIConfigurationRequirementCollection(3); IEnumerable <IConfigurationRequirement> exclusiveWith = TestUtil.CreateIConfigurationRequirementCollection(3); AssertUtil.Compare( name, description, ConfigurationRequirementType.SecureString, isOptional, collectionInfo, dependsOn, exclusiveWith, () => ConfigurationRequirement.SecureString( name, description, isOptional, collectionInfo, dependsOn, exclusiveWith), badInput, goodInput); }
public void ConfigurationRequirement_FilePath_PropagatesInfo() { const string name = "ConfigurationRequirementName"; const string description = "Configuration requirement description."; const bool isOptional = true; const string badInput = "Bad input"; FilePath[] goodInput = new FilePath[] { new FilePath("DoesntMatter.txt", new MockPathInteractor(x => x, x => true)) }; CollectionInfo collectionInfo = new CollectionInfo(1, 4); IEnumerable <IConfigurationRequirement> dependsOn = TestUtil.CreateIConfigurationRequirementCollection(3); IEnumerable <IConfigurationRequirement> exclusiveWith = TestUtil.CreateIConfigurationRequirementCollection(3); AssertUtil.Compare( name, description, ConfigurationRequirementType.FilePath, isOptional, collectionInfo, dependsOn, exclusiveWith, () => ConfigurationRequirement.FilePath( name, description, isOptional, collectionInfo, dependsOn, exclusiveWith), badInput, goodInput); }
public void ConfigurationRequirement_Uri_PropagatesInfo() { const string name = "ConfigurationRequirementName"; const string description = "Configuration requirement description."; const bool isOptional = true; const long badInput = 8675309L; Uri[] goodInput = new Uri[] { new Uri("https://www.example.com") }; CollectionInfo collectionInfo = new CollectionInfo(1, 4); IEnumerable <IConfigurationRequirement> dependsOn = TestUtil.CreateIConfigurationRequirementCollection(3); IEnumerable <IConfigurationRequirement> exclusiveWith = TestUtil.CreateIConfigurationRequirementCollection(3); AssertUtil.Compare( name, description, ConfigurationRequirementType.Uri, isOptional, collectionInfo, dependsOn, exclusiveWith, () => ConfigurationRequirement.Uri( name, description, isOptional, collectionInfo, dependsOn, exclusiveWith), badInput, goodInput); }
public void Mapping_Equals_NotMapping_ReturnsFalse() { Mapping mapping = new Mapping(ConfigurationRequirement.String("Name", "Description"), "Hello World"); Assert.IsFalse(mapping.Equals("Hello world")); }