using System.Text.Json;
using XFESystem.Desktop;
namespace XFESystem.Browser.Tests;
public sealed class MonacoNavigationProofTests
{
[Fact]
public void ReadOnlyNavigationProofTracksActualClickedCaretAndControlEndWithoutSource()
{
var browser=new BrowserService();Assert.Equal("{}",browser.ReadEditorNavigationProof());
browser.ResizeViewport(796,404);browser.Navigate("about:Monaco");
long now=0;for(int index=0;index<12;index++){browser.Layout(new(796,404));browser.AdvanceTime(now+=17);}
string original=browser.ReadEditorText()!;
browser.Pointer(new("mousedown",160,70,Buttons:1));browser.Pointer(new("mouseup",160,70));
using(var clicked=JsonDocument.Parse(browser.ReadEditorNavigationProof()))
{
Assert.Equal("ActualMonacoNavigation",clicked.RootElement.GetProperty("Kind").GetString());
Assert.Equal(3,clicked.RootElement.GetProperty("Position").GetProperty("lineNumber").GetInt32());
Assert.True(clicked.RootElement.GetProperty("Position").GetProperty("column").GetInt32()<original.Split('\n')[2].Length+1);
Assert.Equal("TEXTAREA",clicked.RootElement.GetProperty("FocusedTag").GetString());
}
browser.Key(new("keydown","Control","ControlLeft",Control:true));
browser.Key(new("keydown","End","End",Control:true));
long revision=browser.Revision;
string proof=browser.ReadEditorNavigationProof();
using(var ended=JsonDocument.Parse(proof))
{
var value=ended.RootElement;Assert.Equal(3,value.GetProperty("LineCount").GetInt32());
Assert.Equal(3,value.GetProperty("Position").GetProperty("lineNumber").GetInt32());
Assert.Equal(value.GetProperty("LastLineMaxColumn").GetInt32(),value.GetProperty("Position").GetProperty("column").GetInt32());
}
Assert.Equal(revision,browser.Revision);Assert.Equal(original,browser.ReadEditorText());
Assert.DoesNotContain("XFEstudio",proof,StringComparison.Ordinal);
browser.Key(new("keyup","End","End",Control:true));browser.Key(new("keyup","Control","ControlLeft"));
browser.Key(new("keydown","Enter","Enter"));browser.Key(new("keyup","Enter","Enter"));
foreach(char letter in "xfenativeedit")browser.Key(new("keydown",letter.ToString(),"Key"+char.ToUpperInvariant(letter),letter.ToString()));
Assert.Equal(original+"\nxfenativeedit",browser.ReadEditorText());
}
}
using System.Text.Json;
using XFESystem.Desktop;
namespace XFESystem.Browser.Tests;
public sealed class MonacoNavigationProofTests
{
[Fact]
public void ReadOnlyNavigationProofTracksActualClickedCaretAndControlEndWithoutSource()
{
var browser=new BrowserService();Assert.Equal("{}",browser.ReadEditorNavigationProof());
browser.ResizeViewport(796,404);browser.Navigate("about:Monaco");
long now=0;for(int index=0;index<12;index++){browser.Layout(new(796,404));browser.AdvanceTime(now+=17);}
string original=browser.ReadEditorText()!;
browser.Pointer(new("mousedown",160,70,Buttons:1));browser.Pointer(new("mouseup",160,70));
using(var clicked=JsonDocument.Parse(browser.ReadEditorNavigationProof()))
{
Assert.Equal("ActualMonacoNavigation",clicked.RootElement.GetProperty("Kind").GetString());
Assert.Equal(3,clicked.RootElement.GetProperty("Position").GetProperty("lineNumber").GetInt32());
Assert.True(clicked.RootElement.GetProperty("Position").GetProperty("column").GetInt32()<original.Split('\n')[2].Length+1);
Assert.Equal("TEXTAREA",clicked.RootElement.GetProperty("FocusedTag").GetString());
}
browser.Key(new("keydown","Control","ControlLeft",Control:true));
browser.Key(new("keydown","End","End",Control:true));
long revision=browser.Revision;
string proof=browser.ReadEditorNavigationProof();
using(var ended=JsonDocument.Parse(proof))
{
var value=ended.RootElement;Assert.Equal(3,value.GetProperty("LineCount").GetInt32());
Assert.Equal(3,value.GetProperty("Position").GetProperty("lineNumber").GetInt32());
Assert.Equal(value.GetProperty("LastLineMaxColumn").GetInt32(),value.GetProperty("Position").GetProperty("column").GetInt32());
}
Assert.Equal(revision,browser.Revision);Assert.Equal(original,browser.ReadEditorText());
Assert.DoesNotContain("XFEstudio",proof,StringComparison.Ordinal);
browser.Key(new("keyup","End","End",Control:true));browser.Key(new("keyup","Control","ControlLeft"));
browser.Key(new("keydown","Enter","Enter"));browser.Key(new("keyup","Enter","Enter"));
foreach(char letter in "xfenativeedit")browser.Key(new("keydown",letter.ToString(),"Key"+char.ToUpperInvariant(letter),letter.ToString()));
Assert.Equal(original+"\nxfenativeedit",browser.ReadEditorText());
}
}