87 lines
2.3 KiB
C#
87 lines
2.3 KiB
C#
using System.Text.Json;
|
|
using WirelessTextSyncer.Windows.Models;
|
|
using WirelessTextSyncer.Windows.Services;
|
|
|
|
namespace WirelessTextSyncer.Windows.Tests;
|
|
|
|
[TestClass]
|
|
public sealed class SyncMessageTests
|
|
{
|
|
[TestMethod]
|
|
public void DeserializeAndroidInsertTextMessage()
|
|
{
|
|
var message = JsonSerializer.Deserialize<SyncMessage>(
|
|
"""{"action":"insertText","text":"hello"}""",
|
|
new JsonSerializerOptions(JsonSerializerDefaults.Web));
|
|
|
|
Assert.IsNotNull(message);
|
|
Assert.AreEqual(SyncAction.InsertText, message.Action);
|
|
Assert.AreEqual("hello", message.Text);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void DeserializeAndroidBackspaceMessage()
|
|
{
|
|
var message = JsonSerializer.Deserialize<SyncMessage>(
|
|
"""{"action":"backspace"}""",
|
|
new JsonSerializerOptions(JsonSerializerDefaults.Web));
|
|
|
|
Assert.IsNotNull(message);
|
|
Assert.AreEqual(SyncAction.Backspace, message.Action);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void DeserializeAndroidReplaceAllMessage()
|
|
{
|
|
var message = JsonSerializer.Deserialize<SyncMessage>(
|
|
"""{"action":"replaceAll","text":"final text"}""",
|
|
new JsonSerializerOptions(JsonSerializerDefaults.Web));
|
|
|
|
Assert.IsNotNull(message);
|
|
Assert.AreEqual(SyncAction.ReplaceAll, message.Action);
|
|
Assert.AreEqual("final text", message.Text);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void ReplaceAllUsesFocusedTextReplacement()
|
|
{
|
|
var keyboard = new RecordingKeyboardInjectionService();
|
|
var handler = new SyncMessageHandler(keyboard);
|
|
|
|
handler.Handle(new SyncMessage
|
|
{
|
|
Action = SyncAction.ReplaceAll,
|
|
Text = "final text"
|
|
});
|
|
|
|
CollectionAssert.AreEqual(
|
|
new[] { "replace:final text" },
|
|
keyboard.Calls);
|
|
}
|
|
|
|
private sealed class RecordingKeyboardInjectionService : IKeyboardInjectionService
|
|
{
|
|
public List<string> Calls { get; } = [];
|
|
|
|
public void InsertText(string text)
|
|
{
|
|
Calls.Add($"insert:{text}");
|
|
}
|
|
|
|
public void ReplaceFocusedText(string text)
|
|
{
|
|
Calls.Add($"replace:{text}");
|
|
}
|
|
|
|
public void Backspace()
|
|
{
|
|
Calls.Add("backspace");
|
|
}
|
|
|
|
public void Enter()
|
|
{
|
|
Calls.Add("enter");
|
|
}
|
|
}
|
|
}
|