public static IValueConverter <T> Resolve(Type converterType) { Type key = converterType ?? typeof(T); if (!_cachedConverters.TryGetValue(key, out var converter)) { lock (_cachedConverters) { if (!_cachedConverters.TryGetValue(key, out converter)) { if (converterType == null) { if (typeof(T) == typeof(string)) { converter = (IValueConverter <T>) new StringConverter(); } else { converter = new ParseConverter <T>(); } _cachedConverters[typeof(T)] = converter; } else { converter = (IValueConverter <T>)Activator.CreateInstance(converterType); _cachedConverters[converterType] = converter; } } } } return(converter); }
public void TryCreateReturnsInstanceForNullableType() { ParseConverter <byte> .TryCreate(out _).ShouldBeTrue(); ParseConverter <short> .TryCreate(out _).ShouldBeTrue(); ParseConverter <int> .TryCreate(out _).ShouldBeTrue(); ParseConverter <long> .TryCreate(out _).ShouldBeTrue(); ParseConverter <float> .TryCreate(out _).ShouldBeTrue(); ParseConverter <double> .TryCreate(out _).ShouldBeTrue(); ParseConverter <decimal> .TryCreate(out _).ShouldBeTrue(); ParseConverter <DateTime> .TryCreate(out _).ShouldBeTrue(); ParseConverter <TimeSpan> .TryCreate(out _).ShouldBeTrue(); }
public void Test___Method_Convert___DateTime() { var testee = new ParseConverter <DateTime>(); Assert.AreEqual(DateTime.MinValue, testee.Convert("0001-01-01 00:00:00")); }
public void Test___Method_Convert___Guid() { var testee = new ParseConverter <Guid>(); Assert.AreEqual(Guid.Empty, testee.Convert("00000000-0000-0000-0000-000000000000")); }
public void Test___Method_Convert___ushort() { var testee = new ParseConverter <ushort>(); Assert.AreEqual((ushort)1, testee.Convert("1")); }
public void Test___Method_Convert___byte() { var testee = new ParseConverter <byte>(); Assert.AreEqual((byte)1, testee.Convert("1")); }
public void Test___Method_Convert___char() { var testee = new ParseConverter <char>(); Assert.AreEqual(0x20, testee.Convert(" ")); }
public void Test___Method_Convert___bool() { var testee = new ParseConverter <bool>(); Assert.AreEqual(true, testee.Convert("true")); }