exchanger/tests/Exchanger.Tests/OnScreenKeyboardStateTests.cs

83 lines
2.5 KiB
C#

using Exchanger.UI.OnScreenKeyboard;
using NUnit.Framework;
namespace Exchanger.Tests;
[TestFixture]
public sealed class OnScreenKeyboardStateTests
{
[Test]
public void StartsWithCompleteRussianLayout()
{
var state = new OnScreenKeyboardState();
Assert.Multiple((System.Action)(() =>
{
Assert.That(state.Layout, Is.EqualTo(OnScreenKeyboardLayout.Russian));
Assert.That(state.Keys, Has.Count.EqualTo(33));
Assert.That(state.Keys[0], Is.EqualTo("й"));
Assert.That(state.Keys[32], Is.EqualTo("ё"));
}));
}
[Test]
public void LanguageSwitchKeepsEnglishAfterSymbolsRoundTrip()
{
var state = new OnScreenKeyboardState();
state.ToggleLanguage();
state.ToggleSymbols();
state.ToggleSymbols();
Assert.Multiple((System.Action)(() =>
{
Assert.That(state.Layout, Is.EqualTo(OnScreenKeyboardLayout.English));
Assert.That(state.AlphabeticLayout, Is.EqualTo(OnScreenKeyboardLayout.English));
Assert.That(state.Keys, Has.Count.EqualTo(26));
Assert.That(state.Keys[0], Is.EqualTo("q"));
}));
}
[Test]
public void SymbolsHaveExactlyAsManyEntriesAsThemeSlots()
{
var state = new OnScreenKeyboardState();
state.ToggleSymbols();
Assert.Multiple((System.Action)(() =>
{
Assert.That(state.Layout, Is.EqualTo(OnScreenKeyboardLayout.Symbols));
Assert.That(state.Keys, Has.Count.EqualTo(OnScreenKeyboardState.TextKeyCount));
Assert.That(state.Keys, Does.Contain("?"));
Assert.That(state.Keys, Does.Contain("₽"));
Assert.That(state.Keys, Does.Contain("\\"));
}));
}
[Test]
public void ShiftOnlyChangesAlphabeticLayout()
{
var state = new OnScreenKeyboardState();
state.ToggleShift();
Assert.That(state.Keys[0], Is.EqualTo("Й"));
state.ToggleSymbols();
state.ToggleShift();
Assert.Multiple((System.Action)(() =>
{
Assert.That(state.Shift, Is.False);
Assert.That(state.Keys[10], Is.EqualTo("!"));
}));
}
[Test]
public void NumericModeReturnsToLastAlphabeticLayout()
{
var state = new OnScreenKeyboardState();
state.ToggleLanguage();
state.UseNumericLayout();
state.UseTextLayout();
Assert.That(state.Layout, Is.EqualTo(OnScreenKeyboardLayout.English));
}
}