#develop (short for SharpDevelop) is a free IDE for .NET programming languages.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

388 lines
24 KiB

using System;
using System.Collections.Generic;
using System.IO;
using System.Windows.Input;
using NUnit.Framework;
using ICSharpCode.Core.Presentation;
namespace ICSharpCode.Core.Presentation.Tests
{
/// <summary>
/// Description of InputGestureTests.
/// </summary>
[TestFixture]
public class InputGestureTest
{
public MultiKeyGestureConverter multiKeyGestureConverter = new MultiKeyGestureConverter();
public PartialKeyGestureConverter partialKeyGestureConverter = new PartialKeyGestureConverter();
public KeyGestureConverter keyGestureConverter = new KeyGestureConverter();
[Test]
public void MultiKeyGesturesMatchExactlyTest()
{
var template1 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+C");
var original1 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+C");
var result1 = template1.IsTemplateFor(original1, GestureCompareMode.ExactlyMatches);
Assert.IsTrue(result1);
var template2 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+C,Ctrl+V");
var original2 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+C,Ctrl+V");
var result2 = template2.IsTemplateFor(original2, GestureCompareMode.ExactlyMatches);
Assert.IsTrue(result2);
}
[Test]
public void MultiKeyGesturesDoNotMatchExactlyTest()
{
var template1 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+D");
var original1 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+C");
Assert.IsFalse(template1.IsTemplateFor(original1, GestureCompareMode.ExactlyMatches));
Assert.IsFalse(original1.IsTemplateFor(template1, GestureCompareMode.ExactlyMatches));
var template2 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+C,Ctrl+D");
var original2 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+C,Ctrl+V");
Assert.IsFalse(template2.IsTemplateFor(original2, GestureCompareMode.ExactlyMatches));
Assert.IsFalse(original2.IsTemplateFor(template2, GestureCompareMode.ExactlyMatches));
var template3 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+C,Ctrl+D");
var original3 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+C");
Assert.IsFalse(template3.IsTemplateFor(original3, GestureCompareMode.ExactlyMatches));
Assert.IsFalse(original3.IsTemplateFor(template3, GestureCompareMode.ExactlyMatches));
}
[Test]
public void KeyGesturesMatchExactlyTest()
{
var template1 = (KeyGesture)keyGestureConverter.ConvertFromInvariantString("Ctrl+C");
var original1 = (KeyGesture)keyGestureConverter.ConvertFromInvariantString("Ctrl+C");
Assert.IsTrue(template1.IsTemplateFor(original1, GestureCompareMode.ExactlyMatches));
Assert.IsTrue(original1.IsTemplateFor(template1, GestureCompareMode.ExactlyMatches));
var template2 = (KeyGesture)keyGestureConverter.ConvertFromInvariantString("Ctrl+D");
var original2 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+D");
Assert.IsTrue(template2.IsTemplateFor(original2, GestureCompareMode.ExactlyMatches));
Assert.IsTrue(original2.IsTemplateFor(template2, GestureCompareMode.ExactlyMatches));
var template3 = (KeyGesture)keyGestureConverter.ConvertFromInvariantString("Ctrl+E");
var original3 = (PartialKeyGesture)partialKeyGestureConverter.ConvertFromInvariantString("Ctrl+E");
Assert.IsTrue(template3.IsTemplateFor(original3, GestureCompareMode.ExactlyMatches));
Assert.IsTrue(original3.IsTemplateFor(template3, GestureCompareMode.ExactlyMatches));
var template4 = (PartialKeyGesture)partialKeyGestureConverter.ConvertFromInvariantString("F");
var original4 = (PartialKeyGesture)partialKeyGestureConverter.ConvertFromInvariantString("F");
Assert.IsTrue(template4.IsTemplateFor(original4, GestureCompareMode.ExactlyMatches));
Assert.IsTrue(original4.IsTemplateFor(template4, GestureCompareMode.ExactlyMatches));
var template5 = (PartialKeyGesture)partialKeyGestureConverter.ConvertFromInvariantString("Ctrl+Shift");
var original5 = (PartialKeyGesture)partialKeyGestureConverter.ConvertFromInvariantString("Ctrl+Shift");
Assert.IsTrue(template5.IsTemplateFor(original5, GestureCompareMode.ExactlyMatches));
Assert.IsTrue(original5.IsTemplateFor(template5, GestureCompareMode.ExactlyMatches));
}
[Test]
public void KeyGesturesDoNotMatchExactlyTest()
{
var template1 = (KeyGesture)keyGestureConverter.ConvertFromInvariantString("Ctrl+C");
var original1 = (KeyGesture)keyGestureConverter.ConvertFromInvariantString("Ctrl+D");
Assert.IsFalse(template1.IsTemplateFor(original1, GestureCompareMode.ExactlyMatches));
Assert.IsFalse(original1.IsTemplateFor(template1, GestureCompareMode.ExactlyMatches));
var template2 = (KeyGesture)keyGestureConverter.ConvertFromInvariantString("Ctrl+C");
var original2 = (KeyGesture)keyGestureConverter.ConvertFromInvariantString("Alt+C");
Assert.IsFalse(template2.IsTemplateFor(original2, GestureCompareMode.ExactlyMatches));
Assert.IsFalse(original2.IsTemplateFor(template2, GestureCompareMode.ExactlyMatches));
var template3 = (KeyGesture)keyGestureConverter.ConvertFromInvariantString("Ctrl+E");
var original3 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+F");
Assert.IsFalse(template3.IsTemplateFor(original3, GestureCompareMode.ExactlyMatches));
Assert.IsFalse(original3.IsTemplateFor(template3, GestureCompareMode.ExactlyMatches));
var template4 = (KeyGesture)keyGestureConverter.ConvertFromInvariantString("Ctrl+E");
var original4 = (PartialKeyGesture)partialKeyGestureConverter.ConvertFromInvariantString("Ctrl+D");
Assert.IsFalse(template4.IsTemplateFor(original4, GestureCompareMode.ExactlyMatches));
Assert.IsFalse(original4.IsTemplateFor(template4, GestureCompareMode.ExactlyMatches));
var template5 = (PartialKeyGesture)partialKeyGestureConverter.ConvertFromInvariantString("F");
var original5 = (PartialKeyGesture)partialKeyGestureConverter.ConvertFromInvariantString("D");
Assert.IsFalse(template5.IsTemplateFor(original5, GestureCompareMode.ExactlyMatches));
Assert.IsFalse(original5.IsTemplateFor(template5, GestureCompareMode.ExactlyMatches));
var template6 = (PartialKeyGesture)partialKeyGestureConverter.ConvertFromInvariantString("Ctrl+Shift");
var original6 = (PartialKeyGesture)partialKeyGestureConverter.ConvertFromInvariantString("Ctrl");
Assert.IsFalse(template6.IsTemplateFor(original6, GestureCompareMode.ExactlyMatches));
Assert.IsFalse(original6.IsTemplateFor(template6, GestureCompareMode.ExactlyMatches));
var template7 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+C,C");
var original7 = (PartialKeyGesture)partialKeyGestureConverter.ConvertFromInvariantString("Ctrl+C");
Assert.IsFalse(template7.IsTemplateFor(original7, GestureCompareMode.ExactlyMatches));
Assert.IsFalse(original7.IsTemplateFor(template7, GestureCompareMode.ExactlyMatches));
}
[Test]
public void MultiKeyGesturesMatchStartsWithTest()
{
var template1 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+");
var original1 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+D");
Assert.IsTrue(template1.IsTemplateFor(original1, GestureCompareMode.StartsWith));
var template2 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+C");
var original2 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+C,Ctrl+D");
Assert.IsTrue(template2.IsTemplateFor(original2, GestureCompareMode.StartsWith));
var template3 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+C,Ctrl+D");
var original3 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+C,Ctrl+D,D");
Assert.IsTrue(template3.IsTemplateFor(original3, GestureCompareMode.StartsWith));
var template4 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+Shift+");
var original4 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+Shift+D,D");
Assert.IsTrue(template4.IsTemplateFor(original4, GestureCompareMode.StartsWith));
var template5 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+Shift+D,Ctrl+");
var original5 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+Shift+D,Ctrl+D");
Assert.IsTrue(template5.IsTemplateFor(original5, GestureCompareMode.StartsWith));
}
[Test]
public void MultiKeyGesturesDoNotMatchStartsWithTest()
{
var template1 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+D");
var original1 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+C");
Assert.IsFalse(template1.IsTemplateFor(original1, GestureCompareMode.StartsWith));
var template2 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+D");
var original2 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+C,Ctrl+D");
Assert.IsFalse(template2.IsTemplateFor(original2, GestureCompareMode.StartsWith));
var template3 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+C,Ctrl+E");
var original3 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+C,Ctrl+D,D");
Assert.IsFalse(template3.IsTemplateFor(original3, GestureCompareMode.StartsWith));
var template4 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+C,Shift+D");
var original4 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+C,Ctrl+D,D");
Assert.IsFalse(template4.IsTemplateFor(original4, GestureCompareMode.StartsWith));
var template5 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+C,Ctrl+D,E");
var original5 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+C,Ctrl+D,D");
Assert.IsFalse(template5.IsTemplateFor(original5, GestureCompareMode.StartsWith));
var template6 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Alt+");
var original6 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+Shift+D,D");
Assert.IsFalse(template6.IsTemplateFor(original6, GestureCompareMode.StartsWith));
var template7 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("E");
var original7 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+Shift+D,D");
Assert.IsFalse(template7.IsTemplateFor(original7, GestureCompareMode.StartsWith));
var template8 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+Shift+D,Alt+");
var original8 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+Shift+D,Ctrl+D");
Assert.IsFalse(template8.IsTemplateFor(original8, GestureCompareMode.StartsWith));
}
[Test]
public void MultiKeyGesturesMatchPartlyTest()
{
var template1 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+D");
var original1 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+D");
Assert.IsTrue(template1.IsTemplateFor(original1, GestureCompareMode.PartlyMatches));
Assert.IsTrue(original1.IsTemplateFor(template1, GestureCompareMode.PartlyMatches));
var template2 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+C");
var original2 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+C,Ctrl+D");
Assert.IsTrue(template2.IsTemplateFor(original2, GestureCompareMode.PartlyMatches));
var template3 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+D");
var original3 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+C,Ctrl+D");
Assert.IsTrue(template3.IsTemplateFor(original3, GestureCompareMode.PartlyMatches));
var template4 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("D");
var original4 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+Shift+D,D");
Assert.IsTrue(template4.IsTemplateFor(original4, GestureCompareMode.PartlyMatches));
var template5 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+");
var original5 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+Shift+D,D");
Assert.IsTrue(template5.IsTemplateFor(original5, GestureCompareMode.PartlyMatches));
var template6 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("C,Ctrl+");
var original6 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+C,Ctrl+D,D");
Assert.IsTrue(template6.IsTemplateFor(original6, GestureCompareMode.PartlyMatches));
var template7 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+D,D");
var original7 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+Shift+D,D");
Assert.IsTrue(template7.IsTemplateFor(original7, GestureCompareMode.PartlyMatches));
var template8 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+Shift+D,Ctrl+");
var original8 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+Shift+D,Ctrl+D");
Assert.IsTrue(template8.IsTemplateFor(original8, GestureCompareMode.PartlyMatches));
}
[Test]
public void MultiKeyGesturesDoNotMatchPartlyTest()
{
var template1 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+D");
var original1 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+C");
Assert.IsFalse(template1.IsTemplateFor(original1, GestureCompareMode.PartlyMatches));
Assert.IsFalse(original1.IsTemplateFor(template1, GestureCompareMode.PartlyMatches));
var template2 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+E");
var original2 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+C,Ctrl+D");
Assert.IsFalse(template2.IsTemplateFor(original2, GestureCompareMode.PartlyMatches));
var template4 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("E");
var original4 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+Shift+D,D");
Assert.IsFalse(template4.IsTemplateFor(original4, GestureCompareMode.PartlyMatches));
var template5 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Alt+");
var original5 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+Shift+D,D");
Assert.IsFalse(template5.IsTemplateFor(original5, GestureCompareMode.PartlyMatches));
var template6 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("C,Ctrl+,D");
var original6 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+C,Ctrl+D,D");
Assert.IsFalse(template6.IsTemplateFor(original6, GestureCompareMode.PartlyMatches));
var template7 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Alt+D,D");
var original7 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+Shift+D,D");
Assert.IsFalse(template7.IsTemplateFor(original7, GestureCompareMode.PartlyMatches));
}
[Test]
public void MultiKeyGesturesMatchStartsFullChordWithTest()
{
var template1 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+D");
var original1 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+D");
Assert.IsTrue(template1.IsTemplateFor(original1, GestureCompareMode.StartsWithFullChords));
Assert.IsTrue(original1.IsTemplateFor(template1, GestureCompareMode.StartsWithFullChords));
var template2 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+C");
var original2 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+C,Ctrl+D");
Assert.IsTrue(template2.IsTemplateFor(original2, GestureCompareMode.StartsWithFullChords));
var template3 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+C");
var original3 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+C,Ctrl+D,D");
Assert.IsTrue(template3.IsTemplateFor(original3, GestureCompareMode.StartsWithFullChords));
var template4 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+Shift+D");
var original4 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+Shift+D,Ctrl+D");
Assert.IsTrue(template4.IsTemplateFor(original4, GestureCompareMode.StartsWithFullChords));
var template5 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+D,Ctrl+D");
var original5 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+D,Ctrl+D,Ctrl+E");
Assert.IsTrue(template5.IsTemplateFor(original5, GestureCompareMode.StartsWithFullChords));
var template6 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+D,D");
var original6 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+D,D,E");
Assert.IsTrue(template6.IsTemplateFor(original6, GestureCompareMode.StartsWithFullChords));
}
[Test]
public void MultiKeyGesturesDoNotMatchStartsWithFullChordTest()
{
var template1 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+D");
var original1 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+C");
Assert.IsFalse(template1.IsTemplateFor(original1, GestureCompareMode.StartsWith));
var template2 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+D");
var original2 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+C,Ctrl+D");
Assert.IsFalse(template2.IsTemplateFor(original2, GestureCompareMode.StartsWith));
var template3 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+C,Ctrl+E");
var original3 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+C,Ctrl+D,D");
Assert.IsFalse(template3.IsTemplateFor(original3, GestureCompareMode.StartsWith));
var template4 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+C,Shift+D");
var original4 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+C,Ctrl+D,D");
Assert.IsFalse(template4.IsTemplateFor(original4, GestureCompareMode.StartsWith));
var template5 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+C,Ctrl+D,E");
var original5 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+C,Ctrl+D,D");
Assert.IsFalse(template5.IsTemplateFor(original5, GestureCompareMode.StartsWith));
var template6 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Alt+");
var original6 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+Shift+D,D");
Assert.IsFalse(template6.IsTemplateFor(original6, GestureCompareMode.StartsWith));
var template7 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("E");
var original7 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+Shift+D,D");
Assert.IsFalse(template7.IsTemplateFor(original7, GestureCompareMode.StartsWith));
var template8 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+Shift+D,Alt+");
var original8 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+Shift+D,Ctrl+D");
Assert.IsFalse(template8.IsTemplateFor(original8, GestureCompareMode.StartsWith));
}
[Test]
public void MultiKeyGesturesConflictingTest()
{
var template1 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+D");
var original1 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+D");
Assert.IsTrue(template1.IsTemplateFor(original1, GestureCompareMode.Conflicting));
Assert.IsTrue(original1.IsTemplateFor(template1, GestureCompareMode.Conflicting));
var template2 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+C");
var original2 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+C,Ctrl+D");
Assert.IsTrue(template2.IsTemplateFor(original2, GestureCompareMode.Conflicting));
Assert.IsTrue(original2.IsTemplateFor(template2, GestureCompareMode.Conflicting));
var template3 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+C,Ctrl+D");
var original3 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+C,Ctrl+D,D");
Assert.IsTrue(template3.IsTemplateFor(original3, GestureCompareMode.StartsWith));
Assert.IsTrue(original3.IsTemplateFor(template3, GestureCompareMode.Conflicting));
}
[Test]
public void MultiKeyGesturesAreNotConflictingTest()
{
var template1 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+D");
var original1 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+E");
Assert.IsFalse(template1.IsTemplateFor(original1, GestureCompareMode.Conflicting));
Assert.IsFalse(original1.IsTemplateFor(template1, GestureCompareMode.Conflicting));
var template2 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+D");
var original2 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+C,Ctrl+D");
Assert.IsFalse(template2.IsTemplateFor(original2, GestureCompareMode.Conflicting));
Assert.IsFalse(original2.IsTemplateFor(template2, GestureCompareMode.Conflicting));
var template3 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+C,Ctrl+E");
var original3 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+C,Ctrl+D,D");
Assert.IsFalse(template3.IsTemplateFor(original3, GestureCompareMode.StartsWith));
Assert.IsFalse(original3.IsTemplateFor(template3, GestureCompareMode.Conflicting));
var template4 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+Shift+");
var original4 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+Shift+D,D");
Assert.False(template4.IsTemplateFor(original4, GestureCompareMode.Conflicting));
Assert.False(original4.IsTemplateFor(template4, GestureCompareMode.Conflicting));
var template5 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+Shift+D,Ctrl+");
var original5 = (MultiKeyGesture)multiKeyGestureConverter.ConvertFromInvariantString("Ctrl+Shift+D,Ctrl+D");
Assert.IsFalse(template5.IsTemplateFor(original5, GestureCompareMode.Conflicting));
Assert.IsFalse(original5.IsTemplateFor(template5, GestureCompareMode.Conflicting));
}
[Test]
public void PartialGestureIsFullTest()
{
Assert.IsTrue(((PartialKeyGesture)new PartialKeyGestureConverter().ConvertFromInvariantString("Ctrl+A")).IsFull);
Assert.IsTrue(((PartialKeyGesture)new PartialKeyGestureConverter().ConvertFromInvariantString("Ctrl+Shift+A")).IsFull);
Assert.IsTrue(((PartialKeyGesture)new PartialKeyGestureConverter().ConvertFromInvariantString("F8")).IsFull);
Assert.IsFalse(((PartialKeyGesture)new PartialKeyGestureConverter().ConvertFromInvariantString("A")).IsFull);
Assert.IsFalse(((PartialKeyGesture)new PartialKeyGestureConverter().ConvertFromInvariantString("Ctrl+")).IsFull);
Assert.IsFalse(((PartialKeyGesture)new PartialKeyGestureConverter().ConvertFromInvariantString("Shift+A")).IsFull);
}
[Test]
public void IdentifierTest()
{
var sameBinding1 = new InputBindingInfo { OwnerTypeName="Binding", RoutedCommandName="Binding" };
var sameBinding2 = new InputBindingInfo { OwnerTypeName="Binding", RoutedCommandName="Binding" };
var sameBinding3 = new InputBindingInfo { OwnerTypeName="Binding3", RoutedCommandName="Binding" };
Assert.AreEqual(sameBinding1.Identifier, sameBinding2.Identifier);
Assert.AreNotEqual(sameBinding1.Identifier, sameBinding3.Identifier);
}
}
}