mirror of
https://github.com/gui-cs/Terminal.Gui.git
synced 2026-01-01 16:59:35 +01:00
Fixes #4387. Runes should not be used on a cell, but rather should use a single grapheme rendering 1 or 2 columns (#4388)
* Fixes #4382. StringExtensions.GetColumns method should only return the total text width and not the sum of all runes width * Trying to fix unit test error * Update StringExtensions.cs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Resolving merge conflicts * Prevents Runes throwing if Grapheme is null * Add unit test to prove that null and empty string doesn't not throws anything. * Fix unit test failure * Fix IsValidLocation for wide graphemes * Add more combining * Prevent set invalid graphemes * Fix unit tests * Grapheme doesn't support invalid code points like lone surrogates * Fixes more unit tests * Fix unit test * Seems all test are fixed now * Adjust CharMap scenario with graphemes * Upgrade Wcwidth to version 4.0.0 * Reformat * Trying fix CheckDefaultState assertion * Revert "Trying fix CheckDefaultState assertion" This reverts commitc9b46b796a. * Forgot to include driver.End in the test * Reapply "Trying fix CheckDefaultState assertion" This reverts commit1060ac9b63. * Remove ToString * Fix merge errors * Change to conditional expression * Assertion to prove that no exception throws during cell initialization. * Remove unnecessary assignment * Remove assignment to end * Replace string concatenation with 'StringBuilder'. * Replace more string concatenation with 'StringBuilder' * Remove redundant call to 'ToString' because Rune cast to a String object. * Replace foreach loop with Sum linq --------- Co-authored-by: Tig <tig@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -14,19 +14,19 @@ public class DrawTests (ITestOutputHelper output)
|
||||
[Trait ("Category", "Unicode")]
|
||||
public void CJK_Compatibility_Ideographs_ConsoleWidth_ColumnWidth_Equal_Two ()
|
||||
{
|
||||
const string us = "\U0000f900";
|
||||
const string s = "\U0000f900";
|
||||
var r = (Rune)0xf900;
|
||||
|
||||
Assert.Equal ("豈", us);
|
||||
Assert.Equal ("豈", s);
|
||||
Assert.Equal ("豈", r.ToString ());
|
||||
Assert.Equal (us, r.ToString ());
|
||||
Assert.Equal (s, r.ToString ());
|
||||
|
||||
Assert.Equal (2, us.GetColumns ());
|
||||
Assert.Equal (2, s.GetColumns ());
|
||||
Assert.Equal (2, r.GetColumns ());
|
||||
|
||||
var win = new Window { Title = us };
|
||||
var win = new Window { Title = s };
|
||||
var view = new View { Text = r.ToString (), Height = Dim.Fill (), Width = Dim.Fill () };
|
||||
var tf = new TextField { Text = us, Y = 1, Width = 3 };
|
||||
var tf = new TextField { Text = s, Y = 1, Width = 3 };
|
||||
win.Add (view, tf);
|
||||
Toplevel top = new ();
|
||||
top.Add (win);
|
||||
@@ -36,9 +36,9 @@ public class DrawTests (ITestOutputHelper output)
|
||||
|
||||
const string expectedOutput = """
|
||||
|
||||
┌┤豈├────┐
|
||||
│豈 │
|
||||
│豈 │
|
||||
┌┤豈├────┐
|
||||
│豈 │
|
||||
│豈 │
|
||||
└────────┘
|
||||
""";
|
||||
DriverAssert.AssertDriverContentsWithFrameAre (expectedOutput, output);
|
||||
|
||||
Reference in New Issue
Block a user