public void GetStandardValues_IReferenceServiceNoValuesAllowed_ReturnsEmpty() { var converter = new SubReferenceConverter(typeof(TestComponent)); var component1 = new Component(); var component2 = new TestComponent(); var component3 = new TestComponent(); var referenceService = new MockReferenceService(); referenceService.AddReference("reference name 1", component1); referenceService.AddReference("reference name 2", component2); referenceService.AddReference("reference name 3", component3); int callCount = 0; var context = new MockTypeDescriptorContext { GetServiceAction = (serviceType) => { callCount++; Assert.Equal(typeof(IReferenceService), serviceType); return(referenceService); } }; TypeConverter.StandardValuesCollection values1 = converter.GetStandardValues(context); Assert.Equal(1, callCount); Assert.Equal(new object[] { null }, values1.Cast <object>()); Assert.Equal(new object[] { component2, component3 }, converter.DisallowedValues); // Call again to test caching behavior. TypeConverter.StandardValuesCollection values2 = converter.GetStandardValues(context); Assert.Equal(2, callCount); Assert.NotSame(values1, values2); }
public override IEnumerable <ConvertTest> ConvertFromTestData() { // This does actually succeed despite CanConvertFrom returning false. ConvertTest noContext = ConvertTest.Valid("reference name", null).WithContext(null); noContext.CanConvert = false; yield return(noContext); // No IReferenceService or IContainer. yield return(ConvertTest.Valid(string.Empty, null)); yield return(ConvertTest.Valid(" ", null)); yield return(ConvertTest.Valid("(none)", null).WithInvariantRemoteInvokeCulture()); yield return(ConvertTest.Valid("nothing", null)); // IReferenceService. var nullReferenceServiceContext = new MockTypeDescriptorContext { GetServiceAction = (serviceType) => { Assert.Equal(typeof(IReferenceService), serviceType); return(null); } }; yield return(ConvertTest.Valid("reference name", null).WithContext(nullReferenceServiceContext)); var invalidReferenceServiceContext = new MockTypeDescriptorContext { GetServiceAction = (serviceType) => { Assert.Equal(typeof(IReferenceService), serviceType); return(new object()); } }; yield return(ConvertTest.Valid("reference name", null).WithContext(invalidReferenceServiceContext)); var component1 = new TestComponent(); var component2 = new TestComponent(); var nonComponent = new object(); var referenceService = new MockReferenceService(); referenceService.AddReference("reference name", component1); referenceService.AddReference(string.Empty, component2); referenceService.AddReference("non component", nonComponent); var validReferenceServiceContext = new MockTypeDescriptorContext { GetServiceAction = (serviceType) => { Assert.Equal(typeof(IReferenceService), serviceType); return(referenceService); } }; yield return(ConvertTest.Valid("reference name", component1).WithContext(validReferenceServiceContext)); yield return(ConvertTest.Valid(" reference name ", component1).WithContext(validReferenceServiceContext)); yield return(ConvertTest.Valid(string.Empty, component2).WithContext(validReferenceServiceContext)); yield return(ConvertTest.Valid("non component", nonComponent).WithContext(validReferenceServiceContext)); yield return(ConvertTest.Valid("no such reference", null).WithContext(validReferenceServiceContext)); // IContainer. var containerComponent1 = new TestComponent(); var containerComponent2 = new TestComponent(); var container = new Container(); container.Add(containerComponent1, "reference name"); container.Add(containerComponent2, string.Empty); var contextWithContainer = new MockTypeDescriptorContext { Container = container }; yield return(ConvertTest.Valid("reference name", containerComponent1).WithContext(contextWithContainer)); yield return(ConvertTest.Valid(string.Empty, containerComponent2).WithContext(contextWithContainer)); yield return(ConvertTest.Valid("no such reference", null).WithContext(contextWithContainer)); yield return(ConvertTest.CantConvertFrom(1)); yield return(ConvertTest.CantConvertFrom(new object())); }
public override IEnumerable <ConvertTest> ConvertToTestData() { var component1 = new TestComponent(); var component2 = new TestComponent(); var component3 = new TestComponent(); var nonComponent = new object(); // No Context. yield return(ConvertTest.Valid(null, "(none)").WithInvariantRemoteInvokeCulture()); yield return(ConvertTest.Valid(null, "(none)").WithContext(null).WithInvariantRemoteInvokeCulture()); yield return(ConvertTest.Valid(string.Empty, string.Empty).WithContext(null)); // IReferenceCollection. var nullReferenceServiceContext = new MockTypeDescriptorContext { GetServiceAction = (serviceType) => { Assert.Equal(typeof(IReferenceService), serviceType); return(null); } }; yield return(ConvertTest.Valid(component1, string.Empty).WithContext(nullReferenceServiceContext)); yield return(ConvertTest.Valid(new Component(), string.Empty).WithContext(nullReferenceServiceContext)); var invalidReferenceServiceContext = new MockTypeDescriptorContext { GetServiceAction = (serviceType) => { Assert.Equal(typeof(IReferenceService), serviceType); return(new object()); } }; yield return(ConvertTest.Valid(component1, string.Empty).WithContext(invalidReferenceServiceContext)); yield return(ConvertTest.Valid(new Component(), string.Empty).WithContext(invalidReferenceServiceContext)); var referenceService = new MockReferenceService(); referenceService.AddReference("reference name", component1); referenceService.AddReference(string.Empty, component2); referenceService.AddReference(null, component3); referenceService.AddReference("non component", nonComponent); var validReferenceServiceContext = new MockTypeDescriptorContext { GetServiceAction = (serviceType) => { Assert.Equal(typeof(IReferenceService), serviceType); return(referenceService); } }; yield return(ConvertTest.Valid(component1, "reference name").WithContext(validReferenceServiceContext)); yield return(ConvertTest.Valid(component2, string.Empty).WithContext(validReferenceServiceContext)); yield return(ConvertTest.Valid(component3, string.Empty).WithContext(validReferenceServiceContext)); yield return(ConvertTest.Valid(nonComponent, "non component").WithContext(validReferenceServiceContext)); yield return(ConvertTest.Valid(new Component(), string.Empty).WithContext(validReferenceServiceContext)); // IContainer. var containerComponent1 = new TestComponent(); var containerComponent2 = new TestComponent(); var container = new Container(); container.Add(containerComponent1, "reference name"); container.Add(containerComponent2, string.Empty); var contextWithContainer = new MockTypeDescriptorContext { Container = container }; yield return(ConvertTest.Valid(containerComponent1, "reference name").WithContext(contextWithContainer)); yield return(ConvertTest.Valid(containerComponent2, string.Empty).WithContext(contextWithContainer)); yield return(ConvertTest.Valid(new Component(), string.Empty).WithContext(contextWithContainer)); yield return(ConvertTest.CantConvertTo(1, typeof(int))); }