forked from xamarin/Xamarin.Forms
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAcceleratorUnitTests.cs
98 lines (81 loc) · 2.58 KB
/
AcceleratorUnitTests.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
using System;
using System.Collections.Generic;
using System.Linq;
using NUnit.Framework;
using Xamarin.Forms.Internals;
namespace Xamarin.Forms.Core.UnitTests
{
[TestFixture]
public class AcceleratorUnitTests : BaseTestFixture
{
[Test]
public void AcceleratorThrowsOnEmptyString()
{
Assert.Throws<ArgumentNullException>(() => Accelerator.FromString(""));
}
[Test]
public void AcceleratorThrowsOnNull()
{
Assert.Throws<ArgumentNullException>(() => Accelerator.FromString(null));
}
[Test]
public void AcceleratorFromString()
{
string shourtCutKeyBinding = "ctrl+A";
var accelerator = Accelerator.FromString(shourtCutKeyBinding);
Assert.AreEqual(shourtCutKeyBinding, accelerator.ToString());
}
[Test]
public void AcceleratorFromOnlyLetter()
{
string shourtCutKeyBinding = "A";
var accelerator = Accelerator.FromString(shourtCutKeyBinding);
Assert.AreEqual(accelerator.Keys.Count(), 1);
Assert.AreEqual(accelerator.Keys.ElementAt(0), shourtCutKeyBinding);
}
[Test, TestCaseSource(nameof(GenerateTests))]
public void AcceleratorFromLetterAndModifier(TestShortcut shourtcut)
{
string modifier = shourtcut.Modifier;
string key = shourtcut.Key;
var accelerator = Accelerator.FromString(shourtcut.ToString());
Assert.AreEqual(accelerator.Keys.Count(), 1);
Assert.AreEqual(accelerator.Modifiers.Count(), 1);
Assert.AreEqual(accelerator.Keys.ElementAt(0), shourtcut.Key);
Assert.AreEqual(accelerator.Modifiers.ElementAt(0), shourtcut.Modifier);
}
[Test]
public void AcceleratorFromLetterAnd2Modifier()
{
string modifier = "ctrl";
string modifier1Alt = "alt";
string key = "A";
string shourtCutKeyBinding = $"{modifier}+{modifier1Alt}+{key}";
var accelerator = Accelerator.FromString(shourtCutKeyBinding);
Assert.AreEqual(accelerator.Keys.Count(), 1);
Assert.AreEqual(accelerator.Modifiers.Count(), 2);
Assert.AreEqual(accelerator.Keys.ElementAt(0), key);
Assert.AreEqual(accelerator.Modifiers.ElementAt(0), modifier);
Assert.AreEqual(accelerator.Modifiers.ElementAt(1), modifier1Alt);
}
[Preserve(AllMembers = true)]
public struct TestShortcut
{
internal TestShortcut(string modifier)
{
Modifier = modifier;
Key = modifier[0].ToString();
}
internal string Modifier { get; set; }
internal string Key { get; set; }
public override string ToString()
{
return $"{Modifier}+{Key}";
}
}
static IEnumerable<TestShortcut> GenerateTests
{
get { return new string[] { "ctrl", "cmd", "alt", "shift", "fn", "win" }.Select(str => new TestShortcut(str)); }
}
}
}