Browse Source
* Implement object multi converters and tests. * Rename null check methods * Remove method AreNotEqual * Move to ObjectConverters * Change logic for AreAnyNull --------- Co-authored-by: Emmanuel Hansen <emmausssss@gmail.com>pull/21888/head
committed by
GitHub
2 changed files with 121 additions and 0 deletions
@ -0,0 +1,71 @@ |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Globalization; |
|||
using System.Linq; |
|||
using Avalonia.Data.Converters; |
|||
using Xunit; |
|||
|
|||
namespace Avalonia.Base.UnitTests.Data |
|||
{ |
|||
public class ObjectConvertersTests |
|||
{ |
|||
[Theory] |
|||
[InlineData(null, null, null, true)] |
|||
[InlineData(null, null, "value", false)] |
|||
[InlineData(null, "value", null, false)] |
|||
[InlineData("value", null, null, false)] |
|||
[InlineData("value", "value", "value", false)] |
|||
public void ObjectConvertersTests_AreAllNull_Works(object? value1, object? value2, object? value3, bool valid) |
|||
{ |
|||
var converter = ObjectConverters.AreAllNull; |
|||
var result = converter.Convert([value1, value2, value3], typeof(bool), null, CultureInfo.CurrentCulture); |
|||
Assert.Equal(valid, Assert.IsType<bool>(result)); |
|||
} |
|||
|
|||
[Theory] |
|||
[InlineData(null, null, null, true)] |
|||
[InlineData(null, null, "value", true)] |
|||
[InlineData(null, "value", null, true)] |
|||
[InlineData("value", null, null, true)] |
|||
[InlineData("value", "value", "value", false)] |
|||
public void ObjectConvertersTests_AreAnyNull_Works(object? value1, object? value2, object? value3, bool valid) |
|||
{ |
|||
var converter = ObjectConverters.AreAnyNull; |
|||
var result = converter.Convert([value1, value2, value3], typeof(bool), null, CultureInfo.CurrentCulture); |
|||
Assert.Equal(valid, Assert.IsType<bool>(result)); |
|||
} |
|||
|
|||
[Theory] |
|||
[InlineData("value", "value", "value", true)] |
|||
[InlineData(null, "value", null, false)] |
|||
[InlineData("value", null, "value", false)] |
|||
[InlineData("value", "value", "value1", false)] |
|||
[InlineData("value1", "value", "value1", false)] |
|||
[InlineData("value", "value", 1, false)] |
|||
public void ObjectConvertersTests_AreEqual_Works(object? value1, object? value2, object? value3, bool valid) |
|||
{ |
|||
var converter = ObjectConverters.AreAllEqual; |
|||
var result = converter.Convert([value1, value2, value3], typeof(bool), null, CultureInfo.CurrentCulture); |
|||
Assert.Equal(valid, Assert.IsType<bool>(result)); |
|||
} |
|||
|
|||
[Theory] |
|||
[InlineData(true, true, true)] |
|||
[InlineData(false, true, false)] |
|||
[InlineData(false, false, true)] |
|||
public void ObjectConvertersTests_AreEqual_Edge_Works(bool empty, bool unique, bool valid) |
|||
{ |
|||
ICollection<object?> values; |
|||
if (empty) |
|||
values = Array.Empty<object?>(); |
|||
else if (unique) |
|||
values = ["1", "2"]; |
|||
else |
|||
values = ["1", "1"]; |
|||
|
|||
var converter = ObjectConverters.AreAllEqual; |
|||
var result = converter.Convert(values.ToList(), typeof(bool), null, CultureInfo.CurrentCulture); |
|||
Assert.Equal(valid, Assert.IsType<bool>(result)); |
|||
} |
|||
} |
|||
} |
|||
Loading…
Reference in new issue