123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- using NStack;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using Terminal.Gui;
- using Xunit;
- using Xunit.Abstractions;
- // Alias Console to MockConsole so we don't accidentally use Console
- using Console = Terminal.Gui.FakeConsole;
- namespace Terminal.Gui.TextTests {
- public class UnicodeTests {
- readonly ITestOutputHelper output;
- public UnicodeTests (ITestOutputHelper output)
- {
- this.output = output;
- }
- [Theory]
- [InlineData (0x0000001F, 0x241F)]
- [InlineData (0x0000007F, 0x247F)]
- [InlineData (0x0000009F, 0x249F)]
- [InlineData (0x0001001A, 0x1001A)]
- public void MakePrintable_Converts_Control_Chars_To_Proper_Unicode (uint code, uint expected)
- {
- var actual = ConsoleDriver.MakePrintable (code);
- Assert.Equal (expected, actual.Value);
- }
- [Theory]
- [InlineData (0x20)]
- [InlineData (0x7E)]
- [InlineData (0xA0)]
- [InlineData (0x010020)]
- public void MakePrintable_Does_Not_Convert_Ansi_Chars_To_Unicode (uint code)
- {
- var actual = ConsoleDriver.MakePrintable (code);
- Assert.Equal (code, actual.Value);
- }
-
- [Fact, AutoInitShutdown]
- public void AddRune_On_Clip_Left_Or_Right_Replace_Previous_Or_Next_Wide_Rune_With_Space ()
- {
- var tv = new TextView () {
- Width = Dim.Fill (),
- Height = Dim.Fill (),
- Text = @"これは広いルーンラインです。
- これは広いルーンラインです。
- これは広いルーンラインです。
- これは広いルーンラインです。
- これは広いルーンラインです。
- これは広いルーンラインです。
- これは広いルーンラインです。
- これは広いルーンラインです。"
- };
- var win = new Window () { Width = Dim.Fill (), Height = Dim.Fill () };
- win.Add (tv);
- Application.Top.Add (win);
- var lbl = new Label ("ワイドルーン。");
- var dg = new Dialog (new Button ("選ぶ")) { Width = 14, Height = 4 };
- dg.Add (lbl);
- Application.Begin (Application.Top);
- Application.Begin (dg);
- ((FakeDriver)Application.Driver).SetBufferSize (30, 10);
- var expected = @$"
- ┌────────────────────────────┐
- │これは広いルーンラインです。│
- │これは広いルーンラインです。│
- │これは ┌────────────┐ です。│
- │これは │ワイドルーン│ です。│
- │これは │ {CM.Glyphs.LeftBracket} 選ぶ {CM.Glyphs.RightBracket} │ です。│
- │これは └────────────┘ です。│
- │これは広いルーンラインです。│
- │これは広いルーンラインです。│
- └────────────────────────────┘
- ";
- var pos = TestHelpers.AssertDriverContentsWithFrameAre (expected, output);
- Assert.Equal (new Rect (0, 0, 30, 10), pos);
- }
- }
- }
|