| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194 |
- // Copyright (c) The Avalonia Project. All rights reserved.
- // Licensed under the MIT license. See licence.md file in the project root for full license information.
- using System.Globalization;
- using Avalonia.Controls;
- using Avalonia.Data;
- using Xunit;
- using System.Windows.Input;
- using System;
- using Avalonia.Data.Converters;
- using Avalonia.Layout;
- namespace Avalonia.Base.UnitTests.Data.Converters
- {
- public class DefaultValueConverterTests
- {
- [Fact]
- public void Can_Convert_String_To_Int()
- {
- var result = DefaultValueConverter.Instance.Convert(
- "5",
- typeof(int),
- null,
- CultureInfo.InvariantCulture);
- Assert.Equal(5, result);
- }
- [Fact]
- public void Can_Convert_String_To_Double()
- {
- var result = DefaultValueConverter.Instance.Convert(
- "5",
- typeof(double),
- null,
- CultureInfo.InvariantCulture);
- Assert.Equal(5.0, result);
- }
- [Fact]
- public void Can_Convert_String_To_Enum()
- {
- var result = DefaultValueConverter.Instance.Convert(
- "Bar",
- typeof(TestEnum),
- null,
- CultureInfo.InvariantCulture);
- Assert.Equal(TestEnum.Bar, result);
- }
- [Fact]
- public void Can_Convert_String_To_TimeSpan()
- {
- var result = DefaultValueConverter.Instance.Convert(
- "00:00:10",
- typeof(TimeSpan),
- null,
- CultureInfo.InvariantCulture);
- Assert.Equal(TimeSpan.FromSeconds(10), result);
- }
- [Fact]
- public void Can_Convert_Int_To_Enum()
- {
- var result = DefaultValueConverter.Instance.Convert(
- 1,
- typeof(TestEnum),
- null,
- CultureInfo.InvariantCulture);
- Assert.Equal(TestEnum.Bar, result);
- }
- [Fact]
- public void Can_Convert_Double_To_String()
- {
- var result = DefaultValueConverter.Instance.Convert(
- 5.0,
- typeof(string),
- null,
- CultureInfo.InvariantCulture);
- Assert.Equal("5", result);
- }
- [Fact]
- public void Can_Convert_Enum_To_Int()
- {
- var result = DefaultValueConverter.Instance.Convert(
- TestEnum.Bar,
- typeof(int),
- null,
- CultureInfo.InvariantCulture);
- Assert.Equal(1, result);
- }
- [Fact]
- public void Can_Convert_Enum_To_String()
- {
- var result = DefaultValueConverter.Instance.Convert(
- TestEnum.Bar,
- typeof(string),
- null,
- CultureInfo.InvariantCulture);
- Assert.Equal("Bar", result);
- }
- [Fact]
- public void Can_Use_Explicit_Cast()
- {
- var result = DefaultValueConverter.Instance.Convert(
- new ExplicitDouble(5.0),
- typeof(double),
- null,
- CultureInfo.InvariantCulture);
- Assert.Equal(5.0, result);
- }
- [Fact]
- public void Cannot_Convert_Between_Different_Enum_Types()
- {
- var result = DefaultValueConverter.Instance.Convert(
- TestEnum.Foo,
- typeof(Orientation),
- null,
- CultureInfo.InvariantCulture);
- Assert.IsType<BindingNotification>(result);
- }
- [Fact]
- public void Can_Convert_From_Delegate_To_Command()
- {
- int commandResult = 0;
- var result = DefaultValueConverter.Instance.Convert(
- (Action<int>)((int i) => { commandResult = i; }),
- typeof(ICommand),
- null,
- CultureInfo.InvariantCulture);
- Assert.IsAssignableFrom<ICommand>(result);
- (result as ICommand).Execute(5);
- Assert.Equal(5, commandResult);
- }
- [Fact]
- public void Can_Convert_From_Delegate_To_Command_No_Parameters()
- {
- int commandResult = 0;
- var result = DefaultValueConverter.Instance.Convert(
- (Action)(() => { commandResult = 1; }),
- typeof(ICommand),
- null,
- CultureInfo.InvariantCulture);
- Assert.IsAssignableFrom<ICommand>(result);
- (result as ICommand).Execute(null);
- Assert.Equal(1, commandResult);
- }
- private enum TestEnum
- {
- Foo,
- Bar,
- }
- private class ExplicitDouble
- {
- public ExplicitDouble(double value)
- {
- Value = value;
- }
- public double Value { get; }
- public static explicit operator double (ExplicitDouble v)
- {
- return v.Value;
- }
- }
- }
- }
|