using System; using UnitTestSharp; namespace Clave.UnitTests { public class ShortcutTextTests : TestFixture { public class NameOfTests : TestFixture { public void BothCtrlsAreCtrl() { CheckEqual("Ctrl", ShortcutText.NameOf(KeyCode.ControlLeft)); CheckEqual("Ctrl", ShortcutText.NameOf(KeyCode.ControlRight)); } public void ArrowsDropTheirPrefix() { CheckEqual("Left", ShortcutText.NameOf(KeyCode.ArrowLeft)); } public void TopRowDigitIsItsNumber() { CheckEqual("7", ShortcutText.NameOf(KeyCode.Digit7)); } public void PunctuationIsItsCharacter() { CheckEqual("[", ShortcutText.NameOf(KeyCode.BracketLeft)); } public void AKeyWithNoSpecialNameIsItsCodeName() { CheckEqual("F2", ShortcutText.NameOf(KeyCode.F2)); } public void TwoWordKeysHaveASpace() { CheckEqual("Page Down", ShortcutText.NameOf(KeyCode.PageDown)); } } public class OfChordTests : TestFixture { public void ALoneKey_IsItsName() { CheckEqual("F2", ShortcutText.Of(Chord.Press(KeyCode.F2))); } public void AKeyWithAModifier_NamesTheModifierFirst() { CheckEqual("Ctrl+Z", ShortcutText.Of(Chord.Press(KeyCode.Z).WithAnyHeld(KeyState.Control))); } public void AltWithAnArrow_NamesBoth() { CheckEqual("Alt+Left", ShortcutText.Of(Chord.Press(KeyCode.ArrowLeft).WithAnyHeld(KeyState.Alt))); } public void ARepeatingKey_IsItsName() { CheckEqual("Home", ShortcutText.Of(Chord.Repeat(KeyCode.Home))); } public void ANullChord_Throws() { CheckThrow(typeof(ArgumentNullException)); ShortcutText.Of((Chord)null); } } public class OfChordSetTests : TestFixture { public void AnEmptySet_IsNull() { CheckNull(ShortcutText.Of(ChordSet.Empty)); } public void TheShortestTextWins() { ChordSet set = ChordSet.Of(Chord.Press(KeyCode.NumpadEnter), Chord.Press(KeyCode.MainEnter)); CheckEqual("Enter", ShortcutText.Of(set)); } public void ADisabledChordIsLeftOut() { var builder = new ChordSetBuilder(); Chord disabled = builder.Add(Chord.Press(KeyCode.F2)); builder.Add(Chord.Press(KeyCode.F10)); builder.SetEnabled(disabled, false); CheckEqual("F10", ShortcutText.Of(new ChordSet(builder))); } public void ANullSet_Throws() { CheckThrow(typeof(ArgumentNullException)); ShortcutText.Of((ChordSet)null); } } } }