XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFESystem

【Rust】XFE系统,基于Rust和汇编

公开
关注 0 Fork 0 Star 0
UTF-8
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());
    }
}