public void IfValueIsMinDateTime_ReturnEmptySting()
        {
            object parameter = string.Empty;
            var value = DateTime.MinValue;
            var converter = new DateTimeFormatConverter();

            var result = converter.Convert(value, typeof(object), parameter, CultureInfo.InvariantCulture);

            Assert.AreEqual(result, string.Empty);
        }
        public void IfValueIsNull_ReturnNull()
        {
            object parameter = string.Empty;
            object value = null;
            var converter = new DateTimeFormatConverter();

            var result = converter.Convert(value, typeof(object), parameter, CultureInfo.InvariantCulture);

            Assert.AreEqual(result, null);
        }
        public void Convert()
        {
            var converter = new DateTimeFormatConverter();

            var date = converter.Convert(null, null, null, null);
            Assert.IsNull(date);

            date = converter.Convert(DateTime.MinValue, null, null, null);
            Assert.AreEqual(string.Empty, date);

            var expectedDate = DateTime.Today;

            date = converter.Convert(expectedDate, null, DateTimeFormat.Date.ToString(), null);
            Assert.AreEqual(expectedDate.ToShortDateString(), date);

            date = converter.Convert(expectedDate, null, DateTimeFormat.Time.ToString(), CultureInfo.CurrentCulture);
            Assert.AreEqual(expectedDate.ToShortTimeString(), date);

            date = converter.Convert(expectedDate, null, DateTimeFormat.DateTime.ToString(), null);
            Assert.AreEqual(expectedDate.ToString(CultureInfo.CurrentCulture), date);
        }
        public void ConvertTest()
        {
            const int Year = 2012;
            const int Month = 1;
            const int Day = 2;
            const int Hour = 3;
            const int Minute = 4;
            const int Sec = 5;

            object parameter = DateTimeFormat.Date.ToString();
            var value = new DateTime(Year, Month, Day, Hour, Minute, Sec);
            var converter = new DateTimeFormatConverter();

            var result = converter.Convert(value, typeof(object), parameter, CultureInfo.InvariantCulture);
            Assert.AreEqual(result, value.ToShortDateString());
            
            parameter = DateTimeFormat.Time.ToString();
            result = converter.Convert(value, typeof(object), parameter, CultureInfo.InvariantCulture);
            Assert.AreEqual(result, value.ToShortTimeString());

            parameter = DateTimeFormat.DateTime.ToString();
            result = converter.Convert(value, typeof(object), parameter, CultureInfo.InvariantCulture);
            Assert.AreEqual(result, value.ToString(CultureInfo.InvariantCulture));
        }
        private static ConverterInfo GetConverterInfo(IColumnItem column)
        {
            var localProperty = column.Property;
            IValueConverter converterObject = null;
            object converterParameter = null;
            var converterString = string.Empty;
            PropertyInfo sourceProperty = null;

            if (ReferenceFieldsHelper.IsReferenceProperty(localProperty))
            {
                // Field type specific attributes should be taken from source.
                var refInfo = ReferenceFieldsHelper.GetCrossRefInfo(localProperty);
                sourceProperty = new ReferenceFieldsHelper().GetSourcePropertyInfo(refInfo.Item1, refInfo.Item2);
            }

            var prop = sourceProperty ?? localProperty;

            if (PropertyIsDateTime(localProperty, column))
            {
                var datetimeFormat = ReferenceFieldsHelper.GetDateTimeFormat(prop);

                if (!string.IsNullOrEmpty(datetimeFormat))
                {
                    converterObject = new DateTimeFormatConverter();
                    converterString = string.Format(CultureInfo.InvariantCulture, "Converter={{StaticResource DateTimeFormatConverter}}, ConverterParameter={0}", datetimeFormat);
                }
            }
            else if (localProperty.PropertyType == typeof(string))
            {
                var approvalAttribute = (ApprovalDefinitionAttribute)(sourceProperty ?? prop).GetCustomAttributes(typeof(ApprovalDefinitionAttribute), false).FirstOrDefault();

                if (approvalAttribute != null)
                {
                    converterObject = new ApprovalStateToDisplayNameConverter();
                    converterString = string.Format(CultureInfo.InvariantCulture, "Converter={{StaticResource ApprovalStateToDisplayNameConverter}}");
                }
            }
            else if (prop.PropertyType == typeof(bool?))
            {
                var checkboxSettings = ReferenceFieldsHelper.GetCheckboxSettings(prop);

                if (checkboxSettings != null && checkboxSettings.IsSwitchToggle)
                {
                    var param = new[]
                                            {
                                                checkboxSettings.UndefinedLabel,
                                                checkboxSettings.FalseLabel,
                                                checkboxSettings.TrueLabel
                                            };

                    converterObject = new CheckboxToCustomValueConverter();
                    converterParameter = string.Join("~", param).Replace(' ', '_').Replace('\'', '^');
                    converterString = string.Format(CultureInfo.InvariantCulture, "Converter={{StaticResource checkboxToCustomValueConverter}}, ConverterParameter={0}", converterParameter);
                }
            }

            var numericAttribute = (NumericAttribute)prop.GetCustomAttributes(typeof(NumericAttribute), false).FirstOrDefault();

            if (numericAttribute != null)
            {
                switch (numericAttribute.NumericType)
                {
                    case NumericTypes.Percentage:
                        converterObject = new NumberToPercentConverter();
                        converterString = string.Format(CultureInfo.InvariantCulture, "Converter={{StaticResource NumberToPercentConverter}}");
                        break;
                }
            }

            return new ConverterInfo(converterObject, converterParameter, converterString);
        }
 public void ConvertBack()
 {
     var converter = new DateTimeFormatConverter();
     var obj = converter.ConvertBack(new object(), GetType(), 1, CultureInfo.CurrentCulture);
     Assert.IsNull(obj);
 }