-
Notifications
You must be signed in to change notification settings - Fork 1.6k
/
DropGestureRecognizerTests.cs
109 lines (96 loc) · 3.32 KB
/
DropGestureRecognizerTests.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using NUnit.Framework;
namespace Xamarin.Forms.Core.UnitTests
{
[TestFixture]
public class DropGestureRecognizerTests : BaseTestFixture
{
[SetUp]
public override void Setup()
{
base.Setup();
Device.PlatformServices = new MockPlatformServices();
Device.SetFlags(new[] { ExperimentalFlags.DragAndDropExperimental });
}
[TearDown]
public override void TearDown()
{
base.TearDown();
Device.PlatformServices = null;
}
[Test]
public void PropertySetters()
{
var dropRec = new DropGestureRecognizer() { AllowDrop = true };
Command cmd = new Command(() => { });
var parameter = new Object();
dropRec.AllowDrop = true;
dropRec.DragOverCommand = cmd;
dropRec.DragOverCommandParameter = parameter;
dropRec.DropCommand = cmd;
dropRec.DropCommandParameter = parameter;
Assert.AreEqual(true, dropRec.AllowDrop);
Assert.AreEqual(cmd, dropRec.DragOverCommand);
Assert.AreEqual(parameter, dropRec.DragOverCommandParameter);
Assert.AreEqual(cmd, dropRec.DropCommand);
Assert.AreEqual(parameter, dropRec.DropCommandParameter);
}
[Test]
public void DragOverCommandFires()
{
var dropRec = new DropGestureRecognizer() { AllowDrop = true };
var parameter = new Object();
object commandExecuted = null;
Command cmd = new Command(() => commandExecuted = parameter);
dropRec.DragOverCommand = cmd;
dropRec.DragOverCommandParameter = parameter;
dropRec.SendDragOver(new DragEventArgs(new DataPackage()));
Assert.AreEqual(parameter, commandExecuted);
}
[Test]
public async Task DropCommandFires()
{
var dropRec = new DropGestureRecognizer() { AllowDrop = true };
var parameter = new Object();
object commandExecuted = null;
Command cmd = new Command(() => commandExecuted = parameter);
dropRec.DropCommand = cmd;
dropRec.DropCommandParameter = parameter;
await dropRec.SendDrop(new DropEventArgs(new DataPackageView(new DataPackage())), new Label());
Assert.AreEqual(commandExecuted, parameter);
}
[TestCase(typeof(Entry), "EntryTest")]
[TestCase(typeof(Label), "LabelTest")]
[TestCase(typeof(Editor), "EditorTest")]
[TestCase(typeof(TimePicker), "01:00:00")]
[TestCase(typeof(DatePicker), "12/12/2020 12:00:00 AM")]
[TestCase(typeof(CheckBox), "True")]
[TestCase(typeof(Switch), "True")]
[TestCase(typeof(RadioButton), "True")]
public async Task TextPackageCorrectlySetsOnCompatibleTarget(Type fieldType, string result)
{
var dropRec = new DropGestureRecognizer() { AllowDrop = true };
var element = (View)Activator.CreateInstance(fieldType);
element.GestureRecognizers.Add(dropRec);
var args = new DropEventArgs(new DataPackageView(new DataPackage() { Text = result }));
await dropRec.SendDrop(args, element);
Assert.AreEqual(element.GetStringValue(), result);
}
[Test]
public async Task HandledTest()
{
string testString = "test String";
var dropTec = new DropGestureRecognizer() { AllowDrop = true };
var element = new Label();
element.Text = "Text Shouldn't change";
var args = new DropEventArgs(new DataPackageView(new DataPackage() { Text = testString }));
args.Handled = true;
await dropTec.SendDrop(args, element);
Assert.AreNotEqual(element.Text, testString);
}
}
}