123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569 |
- using JetBrains.Annotations;
- // ReSharper disable HeuristicUnreachableCode
- namespace Terminal.Gui.InputTests;
- public class EscSeqUtilsTests
- {
- private bool _actionStarted;
- private MouseFlags _arg1;
- private Point _arg2;
- private string _c1Control, _code, _terminating;
- private ConsoleKeyInfo [] _cki;
- private bool _isKeyMouse;
- private bool _isResponse;
- private ConsoleKey _key;
- private ConsoleModifiers _mod;
- private List<MouseFlags> _mouseFlags;
- private ConsoleKeyInfo _newConsoleKeyInfo;
- private Point _pos;
- private string [] _values;
- [Fact]
- [AutoInitShutdown]
- public void DecodeEscSeq_Multiple_Tests ()
- {
- // ESC
- _cki = new ConsoleKeyInfo [] { new ('\u001b', 0, false, false, false) };
- var expectedCki = new ConsoleKeyInfo ('\u001b', ConsoleKey.Escape, false, false, false);
- EscSeqUtils.DecodeEscSeq (
- ref _newConsoleKeyInfo,
- ref _key,
- _cki,
- ref _mod,
- out _c1Control,
- out _code,
- out _values,
- out _terminating,
- out _isKeyMouse,
- out _mouseFlags,
- out _pos,
- out _isResponse,
- ProcessContinuousButtonPressed
- );
- Assert.Empty (EscSeqRequests.Statuses);
- Assert.Equal (expectedCki, _newConsoleKeyInfo);
- Assert.Equal (ConsoleKey.Escape, _key);
- Assert.Equal (0, (int)_mod);
- Assert.Equal ("ESC", _c1Control);
- Assert.Null (_code);
- Assert.Null (_values);
- Assert.Null (_terminating);
- Assert.False (_isKeyMouse);
- Assert.Equal (new () { 0 }, _mouseFlags);
- Assert.Equal (Point.Empty, _pos);
- Assert.False (_isResponse);
- Assert.Equal (0, (int)_arg1);
- Assert.Equal (Point.Empty, _arg2);
- ClearAll ();
- _cki = new ConsoleKeyInfo [] { new ('\u001b', 0, false, false, false), new ('\u0012', 0, false, false, false) };
- expectedCki = new ('\u0012', ConsoleKey.R, false, true, true);
- EscSeqUtils.DecodeEscSeq (
- ref _newConsoleKeyInfo,
- ref _key,
- _cki,
- ref _mod,
- out _c1Control,
- out _code,
- out _values,
- out _terminating,
- out _isKeyMouse,
- out _mouseFlags,
- out _pos,
- out _isResponse,
- ProcessContinuousButtonPressed
- );
- Assert.Empty (EscSeqRequests.Statuses);
- Assert.Equal (expectedCki, _newConsoleKeyInfo);
- Assert.Equal (ConsoleKey.R, _key);
- Assert.Equal (ConsoleModifiers.Alt | ConsoleModifiers.Control, _mod);
- Assert.Equal ("ESC", _c1Control);
- Assert.Null (_code);
- Assert.Null (_values);
- Assert.Equal ("\u0012", _terminating);
- Assert.False (_isKeyMouse);
- Assert.Equal (new () { 0 }, _mouseFlags);
- Assert.Equal (Point.Empty, _pos);
- Assert.False (_isResponse);
- Assert.Equal (0, (int)_arg1);
- Assert.Equal (Point.Empty, _arg2);
- ClearAll ();
- _cki = new ConsoleKeyInfo [] { new ('\u001b', 0, false, false, false), new ('r', 0, false, false, false) };
- expectedCki = new ('r', ConsoleKey.R, false, true, false);
- EscSeqUtils.DecodeEscSeq (
- ref _newConsoleKeyInfo,
- ref _key,
- _cki,
- ref _mod,
- out _c1Control,
- out _code,
- out _values,
- out _terminating,
- out _isKeyMouse,
- out _mouseFlags,
- out _pos,
- out _isResponse,
- ProcessContinuousButtonPressed
- );
- Assert.Empty (EscSeqRequests.Statuses);
- Assert.Equal (expectedCki, _newConsoleKeyInfo);
- Assert.Equal (ConsoleKey.R, _key);
- Assert.Equal (ConsoleModifiers.Alt, _mod);
- Assert.Equal ("ESC", _c1Control);
- Assert.Null (_code);
- Assert.Null (_values);
- Assert.Equal ("r", _terminating);
- Assert.False (_isKeyMouse);
- Assert.Equal (new () { 0 }, _mouseFlags);
- Assert.Equal (Point.Empty, _pos);
- Assert.False (_isResponse);
- Assert.Equal (0, (int)_arg1);
- Assert.Equal (Point.Empty, _arg2);
- // SS3
- ClearAll ();
- _cki = new ConsoleKeyInfo []
- {
- new ('\u001b', 0, false, false, false), new ('O', 0, false, false, false), new ('R', 0, false, false, false)
- };
- expectedCki = new ('\0', ConsoleKey.F3, false, false, false);
- EscSeqUtils.DecodeEscSeq (
- ref _newConsoleKeyInfo,
- ref _key,
- _cki,
- ref _mod,
- out _c1Control,
- out _code,
- out _values,
- out _terminating,
- out _isKeyMouse,
- out _mouseFlags,
- out _pos,
- out _isResponse,
- ProcessContinuousButtonPressed
- );
- Assert.Empty (EscSeqRequests.Statuses);
- Assert.Equal (expectedCki, _newConsoleKeyInfo);
- Assert.Equal (ConsoleKey.F3, _key);
- Assert.Equal (0, (int)_mod);
- Assert.Equal ("SS3", _c1Control);
- Assert.Null (_code);
- Assert.Single (_values);
- Assert.Null (_values [0]);
- Assert.Equal ("R", _terminating);
- Assert.False (_isKeyMouse);
- Assert.Equal (new () { 0 }, _mouseFlags);
- Assert.Equal (Point.Empty, _pos);
- Assert.False (_isResponse);
- Assert.Equal (0, (int)_arg1);
- Assert.Equal (Point.Empty, _arg2);
- // CSI
- ClearAll ();
- _cki = new ConsoleKeyInfo []
- {
- new ('\u001b', 0, false, false, false),
- new ('[', 0, false, false, false),
- new ('1', 0, false, false, false),
- new (';', 0, false, false, false),
- new ('2', 0, false, false, false),
- new ('R', 0, false, false, false)
- };
- expectedCki = new ('\0', ConsoleKey.F3, true, false, false);
- EscSeqUtils.DecodeEscSeq (
- ref _newConsoleKeyInfo,
- ref _key,
- _cki,
- ref _mod,
- out _c1Control,
- out _code,
- out _values,
- out _terminating,
- out _isKeyMouse,
- out _mouseFlags,
- out _pos,
- out _isResponse,
- ProcessContinuousButtonPressed
- );
- Assert.Empty (EscSeqRequests.Statuses);
- Assert.Equal (expectedCki, _newConsoleKeyInfo);
- Assert.Equal (ConsoleKey.F3, _key);
- Assert.Equal (ConsoleModifiers.Shift, _mod);
- Assert.Equal ("CSI", _c1Control);
- Assert.Null (_code);
- Assert.Equal (2, _values.Length);
- Assert.Equal ("1", _values [0]);
- Assert.Equal ("2", _values [^1]);
- Assert.Equal ("R", _terminating);
- Assert.False (_isKeyMouse);
- Assert.Equal (new () { 0 }, _mouseFlags);
- Assert.Equal (Point.Empty, _pos);
- Assert.False (_isResponse);
- Assert.Equal (0, (int)_arg1);
- Assert.Equal (Point.Empty, _arg2);
- ClearAll ();
- _cki = new ConsoleKeyInfo []
- {
- new ('\u001b', 0, false, false, false),
- new ('[', 0, false, false, false),
- new ('1', 0, false, false, false),
- new (';', 0, false, false, false),
- new ('3', 0, false, false, false),
- new ('R', 0, false, false, false)
- };
- expectedCki = new ('\0', ConsoleKey.F3, false, true, false);
- EscSeqUtils.DecodeEscSeq (
- ref _newConsoleKeyInfo,
- ref _key,
- _cki,
- ref _mod,
- out _c1Control,
- out _code,
- out _values,
- out _terminating,
- out _isKeyMouse,
- out _mouseFlags,
- out _pos,
- out _isResponse,
- ProcessContinuousButtonPressed
- );
- Assert.Empty (EscSeqRequests.Statuses);
- Assert.Equal (expectedCki, _newConsoleKeyInfo);
- Assert.Equal (ConsoleKey.F3, _key);
- Assert.Equal (ConsoleModifiers.Alt, _mod);
- Assert.Equal ("CSI", _c1Control);
- Assert.Null (_code);
- Assert.Equal (2, _values.Length);
- Assert.Equal ("1", _values [0]);
- Assert.Equal ("3", _values [^1]);
- Assert.Equal ("R", _terminating);
- Assert.False (_isKeyMouse);
- Assert.Equal (new () { 0 }, _mouseFlags);
- Assert.Equal (Point.Empty, _pos);
- Assert.False (_isResponse);
- Assert.Equal (0, (int)_arg1);
- Assert.Equal (Point.Empty, _arg2);
- ClearAll ();
- _cki = new ConsoleKeyInfo []
- {
- new ('\u001b', 0, false, false, false),
- new ('[', 0, false, false, false),
- new ('1', 0, false, false, false),
- new (';', 0, false, false, false),
- new ('4', 0, false, false, false),
- new ('R', 0, false, false, false)
- };
- expectedCki = new ('\0', ConsoleKey.F3, true, true, false);
- EscSeqUtils.DecodeEscSeq (
- ref _newConsoleKeyInfo,
- ref _key,
- _cki,
- ref _mod,
- out _c1Control,
- out _code,
- out _values,
- out _terminating,
- out _isKeyMouse,
- out _mouseFlags,
- out _pos,
- out _isResponse,
- ProcessContinuousButtonPressed
- );
- Assert.Empty (EscSeqRequests.Statuses);
- Assert.Equal (expectedCki, _newConsoleKeyInfo);
- Assert.Equal (ConsoleKey.F3, _key);
- Assert.Equal (ConsoleModifiers.Shift | ConsoleModifiers.Alt, _mod);
- Assert.Equal ("CSI", _c1Control);
- Assert.Null (_code);
- Assert.Equal (2, _values.Length);
- Assert.Equal ("1", _values [0]);
- Assert.Equal ("4", _values [^1]);
- Assert.Equal ("R", _terminating);
- Assert.False (_isKeyMouse);
- Assert.Equal (new () { 0 }, _mouseFlags);
- Assert.Equal (Point.Empty, _pos);
- Assert.False (_isResponse);
- Assert.Equal (0, (int)_arg1);
- Assert.Equal (Point.Empty, _arg2);
- ClearAll ();
- _cki = new ConsoleKeyInfo []
- {
- new ('\u001b', 0, false, false, false),
- new ('[', 0, false, false, false),
- new ('1', 0, false, false, false),
- new (';', 0, false, false, false),
- new ('5', 0, false, false, false),
- new ('R', 0, false, false, false)
- };
- expectedCki = new ('\0', ConsoleKey.F3, false, false, true);
- EscSeqUtils.DecodeEscSeq (
- ref _newConsoleKeyInfo,
- ref _key,
- _cki,
- ref _mod,
- out _c1Control,
- out _code,
- out _values,
- out _terminating,
- out _isKeyMouse,
- out _mouseFlags,
- out _pos,
- out _isResponse,
- ProcessContinuousButtonPressed
- );
- Assert.Empty (EscSeqRequests.Statuses);
- Assert.Equal (expectedCki, _newConsoleKeyInfo);
- Assert.Equal (ConsoleKey.F3, _key);
- Assert.Equal (ConsoleModifiers.Control, _mod);
- Assert.Equal ("CSI", _c1Control);
- Assert.Null (_code);
- Assert.Equal (2, _values.Length);
- Assert.Equal ("1", _values [0]);
- Assert.Equal ("5", _values [^1]);
- Assert.Equal ("R", _terminating);
- Assert.False (_isKeyMouse);
- Assert.Equal (new () { 0 }, _mouseFlags);
- Assert.Equal (Point.Empty, _pos);
- Assert.False (_isResponse);
- Assert.Equal (0, (int)_arg1);
- Assert.Equal (Point.Empty, _arg2);
- ClearAll ();
- _cki = new ConsoleKeyInfo []
- {
- new ('\u001b', 0, false, false, false),
- new ('[', 0, false, false, false),
- new ('1', 0, false, false, false),
- new (';', 0, false, false, false),
- new ('6', 0, false, false, false),
- new ('R', 0, false, false, false)
- };
- expectedCki = new ('\0', ConsoleKey.F3, true, false, true);
- EscSeqUtils.DecodeEscSeq (
- ref _newConsoleKeyInfo,
- ref _key,
- _cki,
- ref _mod,
- out _c1Control,
- out _code,
- out _values,
- out _terminating,
- out _isKeyMouse,
- out _mouseFlags,
- out _pos,
- out _isResponse,
- ProcessContinuousButtonPressed
- );
- Assert.Empty (EscSeqRequests.Statuses);
- Assert.Equal (expectedCki, _newConsoleKeyInfo);
- Assert.Equal (ConsoleKey.F3, _key);
- Assert.Equal (ConsoleModifiers.Shift | ConsoleModifiers.Control, _mod);
- Assert.Equal ("CSI", _c1Control);
- Assert.Null (_code);
- Assert.Equal (2, _values.Length);
- Assert.Equal ("1", _values [0]);
- Assert.Equal ("6", _values [^1]);
- Assert.Equal ("R", _terminating);
- Assert.False (_isKeyMouse);
- Assert.Equal (new () { 0 }, _mouseFlags);
- Assert.Equal (Point.Empty, _pos);
- Assert.False (_isResponse);
- Assert.Equal (0, (int)_arg1);
- Assert.Equal (Point.Empty, _arg2);
- ClearAll ();
- _cki = new ConsoleKeyInfo []
- {
- new ('\u001b', 0, false, false, false),
- new ('[', 0, false, false, false),
- new ('1', 0, false, false, false),
- new (';', 0, false, false, false),
- new ('7', 0, false, false, false),
- new ('R', 0, false, false, false)
- };
- expectedCki = new ('\0', ConsoleKey.F3, false, true, true);
- EscSeqUtils.DecodeEscSeq (
- ref _newConsoleKeyInfo,
- ref _key,
- _cki,
- ref _mod,
- out _c1Control,
- out _code,
- out _values,
- out _terminating,
- out _isKeyMouse,
- out _mouseFlags,
- out _pos,
- out _isResponse,
- ProcessContinuousButtonPressed
- );
- Assert.Empty (EscSeqRequests.Statuses);
- Assert.Equal (expectedCki, _newConsoleKeyInfo);
- Assert.Equal (ConsoleKey.F3, _key);
- Assert.Equal (ConsoleModifiers.Alt | ConsoleModifiers.Control, _mod);
- Assert.Equal ("CSI", _c1Control);
- Assert.Null (_code);
- Assert.Equal (2, _values.Length);
- Assert.Equal ("1", _values [0]);
- Assert.Equal ("7", _values [^1]);
- Assert.Equal ("R", _terminating);
- Assert.False (_isKeyMouse);
- Assert.Equal (new () { 0 }, _mouseFlags);
- Assert.Equal (Point.Empty, _pos);
- Assert.False (_isResponse);
- Assert.Equal (0, (int)_arg1);
- Assert.Equal (Point.Empty, _arg2);
- ClearAll ();
- _cki = new ConsoleKeyInfo []
- {
- new ('\u001b', 0, false, false, false),
- new ('[', 0, false, false, false),
- new ('1', 0, false, false, false),
- new (';', 0, false, false, false),
- new ('8', 0, false, false, false),
- new ('R', 0, false, false, false)
- };
- expectedCki = new ('\0', ConsoleKey.F3, true, true, true);
- EscSeqUtils.DecodeEscSeq (
- ref _newConsoleKeyInfo,
- ref _key,
- _cki,
- ref _mod,
- out _c1Control,
- out _code,
- out _values,
- out _terminating,
- out _isKeyMouse,
- out _mouseFlags,
- out _pos,
- out _isResponse,
- ProcessContinuousButtonPressed
- );
- Assert.Empty (EscSeqRequests.Statuses);
- Assert.Equal (expectedCki, _newConsoleKeyInfo);
- Assert.Equal (ConsoleKey.F3, _key);
- Assert.Equal (ConsoleModifiers.Shift | ConsoleModifiers.Alt | ConsoleModifiers.Control, _mod);
- Assert.Equal ("CSI", _c1Control);
- Assert.Null (_code);
- Assert.Equal (2, _values.Length);
- Assert.Equal ("1", _values [0]);
- Assert.Equal ("8", _values [^1]);
- Assert.Equal ("R", _terminating);
- Assert.False (_isKeyMouse);
- Assert.Equal (new () { 0 }, _mouseFlags);
- Assert.Equal (Point.Empty, _pos);
- Assert.False (_isResponse);
- Assert.Equal (0, (int)_arg1);
- Assert.Equal (Point.Empty, _arg2);
- ClearAll ();
- _cki = new ConsoleKeyInfo []
- {
- new ('\u001b', 0, false, false, false),
- new ('[', 0, false, false, false),
- new ('<', 0, false, false, false),
- new ('0', 0, false, false, false),
- new (';', 0, false, false, false),
- new ('2', 0, false, false, false),
- new (';', 0, false, false, false),
- new ('3', 0, false, false, false),
- new ('M', 0, false, false, false)
- };
- expectedCki = default (ConsoleKeyInfo);
- EscSeqUtils.DecodeEscSeq (
- ref _newConsoleKeyInfo,
- ref _key,
- _cki,
- ref _mod,
- out _c1Control,
- out _code,
- out _values,
- out _terminating,
- out _isKeyMouse,
- out _mouseFlags,
- out _pos,
- out _isResponse,
- ProcessContinuousButtonPressed
- );
- Assert.Empty (EscSeqRequests.Statuses);
- Assert.Equal (expectedCki, _newConsoleKeyInfo);
- Assert.Equal (0, (int)_key);
- Assert.Equal (0, (int)_mod);
- Assert.Equal ("CSI", _c1Control);
- Assert.Equal ("<", _code);
- Assert.Equal (3, _values.Length);
- Assert.Equal ("0", _values [0]);
- Assert.Equal ("2", _values [1]);
- Assert.Equal ("3", _values [^1]);
- Assert.Equal ("M", _terminating);
- Assert.True (_isKeyMouse);
- Assert.Equal (new () { MouseFlags.Button1Pressed }, _mouseFlags);
- Assert.Equal (new (1, 2), _pos);
- Assert.False (_isResponse);
- Assert.Equal (0, (int)_arg1);
- Assert.Equal (Point.Empty, _arg2);
- ClearAll ();
- _cki = new ConsoleKeyInfo []
- {
- new ('\u001b', 0, false, false, false),
- new ('[', 0, false, false, false),
- new ('<', 0, false, false, false),
- new ('0', 0, false, false, false),
- new (';', 0, false, false, false),
- new ('2', 0, false, false, false),
- new (';', 0, false, false, false),
- new ('3', 0, false, false, false),
- new ('m', 0, false, false, false)
- };
- expectedCki = default (ConsoleKeyInfo);
- EscSeqUtils.DecodeEscSeq (
- ref _newConsoleKeyInfo,
- ref _key,
- _cki,
- ref _mod,
- out _c1Control,
- out _code,
- out _values,
- out _terminating,
- out _isKeyMouse,
- out _mouseFlags,
- out _pos,
- out _isResponse,
- ProcessContinuousButtonPressed
- );
- Assert.Empty (EscSeqRequests.Statuses);
- Assert.Equal (expectedCki, _newConsoleKeyInfo);
- Assert.Equal (0, (int)_key);
- Assert.Equal (0, (int)_mod);
- Assert.Equal ("CSI", _c1Control);
- Assert.Equal ("<", _code);
- Assert.Equal (3, _values.Length);
- Assert.Equal ("0", _values [0]);
- Assert.Equal ("2", _values [1]);
- Assert.Equal ("3", _values [^1]);
- Assert.Equal ("m", _terminating);
- Assert.True (_isKeyMouse);
- Assert.Equal (2, _mouseFlags.Count);
- Assert.Equal (
- new () { MouseFlags.Button1Released, MouseFlags.Button1Clicked },
- _mouseFlags
- );
- Assert.Equal (new (1, 2), _pos);
- Assert.False (_isResponse);
- Assert.Equal (0, (int)_arg1);
- Assert.Equal (Point.Empty, _arg2);
- ClearAll ();
- _cki = new ConsoleKeyInfo []
- {
- new ('\u001b', 0, false, false, false),
- new ('[', 0, false, false, false),
- new ('<', 0, false, false, false),
- new ('0', 0, false, false, false),
- new (';', 0, false, false, false),
- new ('2', 0, false, false, false),
- new (';', 0, false, false, false),
- new ('3', 0, false, false, false),
- new ('M', 0, false, false, false)
- };
- expectedCki = default (ConsoleKeyInfo);
- EscSeqUtils.DecodeEscSeq (
- ref _newConsoleKeyInfo,
- ref _key,
- _cki,
- ref _mod,
- out _c1Control,
- out _code,
- out _values,
- out _terminating,
- out _isKeyMouse,
- out _mouseFlags,
- out _pos,
- out _isResponse,
- ProcessContinuousButtonPressed
- );
- Assert.Empty (EscSeqRequests.Statuses);
- Assert.Equal (expectedCki, _newConsoleKeyInfo);
- Assert.Equal (0, (int)_key);
- Assert.Equal (0, (int)_mod);
- Assert.Equal ("CSI", _c1Control);
- Assert.Equal ("<", _code);
- Assert.Equal (3, _values.Length);
- Assert.Equal ("0", _values [0]);
- Assert.Equal ("2", _values [1]);
- Assert.Equal ("3", _values [^1]);
- Assert.Equal ("M", _terminating);
- Assert.True (_isKeyMouse);
- Assert.Equal (new () { MouseFlags.Button1DoubleClicked }, _mouseFlags);
- Assert.Equal (new (1, 2), _pos);
- Assert.False (_isResponse);
- ClearAll ();
- _cki = new ConsoleKeyInfo []
- {
- new ('\u001b', 0, false, false, false),
- new ('[', 0, false, false, false),
- new ('<', 0, false, false, false),
- new ('0', 0, false, false, false),
- new (';', 0, false, false, false),
- new ('2', 0, false, false, false),
- new (';', 0, false, false, false),
- new ('3', 0, false, false, false),
- new ('M', 0, false, false, false)
- };
- expectedCki = default (ConsoleKeyInfo);
- EscSeqUtils.DecodeEscSeq (
- ref _newConsoleKeyInfo,
- ref _key,
- _cki,
- ref _mod,
- out _c1Control,
- out _code,
- out _values,
- out _terminating,
- out _isKeyMouse,
- out _mouseFlags,
- out _pos,
- out _isResponse,
- ProcessContinuousButtonPressed
- );
- Assert.Empty (EscSeqRequests.Statuses);
- Assert.Equal (expectedCki, _newConsoleKeyInfo);
- Assert.Equal (0, (int)_key);
- Assert.Equal (0, (int)_mod);
- Assert.Equal ("CSI", _c1Control);
- Assert.Equal ("<", _code);
- Assert.Equal (3, _values.Length);
- Assert.Equal ("0", _values [0]);
- Assert.Equal ("2", _values [1]);
- Assert.Equal ("3", _values [^1]);
- Assert.Equal ("M", _terminating);
- Assert.True (_isKeyMouse);
- Assert.Equal (new () { MouseFlags.Button1TripleClicked }, _mouseFlags);
- Assert.Equal (new (1, 2), _pos);
- Assert.False (_isResponse);
- var view = new View { Width = Dim.Fill (), Height = Dim.Fill (), WantContinuousButtonPressed = true };
- var top = new Toplevel ();
- top.Add (view);
- Application.Begin (top);
- Application.RaiseMouseEvent (new() { Position = new (0, 0), Flags = 0 });
- ClearAll ();
- _cki = new ConsoleKeyInfo []
- {
- new ('\u001b', 0, false, false, false),
- new ('[', 0, false, false, false),
- new ('<', 0, false, false, false),
- new ('0', 0, false, false, false),
- new (';', 0, false, false, false),
- new ('2', 0, false, false, false),
- new (';', 0, false, false, false),
- new ('3', 0, false, false, false),
- new ('M', 0, false, false, false)
- };
- expectedCki = default (ConsoleKeyInfo);
- EscSeqUtils.DecodeEscSeq (
- ref _newConsoleKeyInfo,
- ref _key,
- _cki,
- ref _mod,
- out _c1Control,
- out _code,
- out _values,
- out _terminating,
- out _isKeyMouse,
- out _mouseFlags,
- out _pos,
- out _isResponse,
- ProcessContinuousButtonPressed
- );
- Assert.Empty (EscSeqRequests.Statuses);
- Assert.Equal (expectedCki, _newConsoleKeyInfo);
- Assert.Equal (0, (int)_key);
- Assert.Equal (0, (int)_mod);
- Assert.Equal ("CSI", _c1Control);
- Assert.Equal ("<", _code);
- Assert.Equal (3, _values.Length);
- Assert.Equal ("0", _values [0]);
- Assert.Equal ("2", _values [1]);
- Assert.Equal ("3", _values [^1]);
- Assert.Equal ("M", _terminating);
- Assert.True (_isKeyMouse);
- Assert.Equal (new () { MouseFlags.Button1Pressed }, _mouseFlags);
- Assert.Equal (new (1, 2), _pos);
- Assert.False (_isResponse);
- Application.Iteration += (s, a) =>
- {
- if (_actionStarted)
- {
- // set Application.WantContinuousButtonPressedView to null
- view.WantContinuousButtonPressed = false;
- Application.RaiseMouseEvent (new() { Position = new (0, 0), Flags = 0 });
- Application.RequestStop ();
- }
- };
- Application.Run (top);
- top.Dispose ();
- Assert.Null (Application.WantContinuousButtonPressedView);
- Assert.Equal (MouseFlags.Button1Pressed, _arg1);
- Assert.Equal (new (1, 2), _arg2);
- ClearAll ();
- _cki = new ConsoleKeyInfo []
- {
- new ('\u001b', 0, false, false, false),
- new ('[', 0, false, false, false),
- new ('<', 0, false, false, false),
- new ('0', 0, false, false, false),
- new (';', 0, false, false, false),
- new ('2', 0, false, false, false),
- new (';', 0, false, false, false),
- new ('3', 0, false, false, false),
- new ('m', 0, false, false, false)
- };
- expectedCki = default (ConsoleKeyInfo);
- EscSeqUtils.DecodeEscSeq (
- ref _newConsoleKeyInfo,
- ref _key,
- _cki,
- ref _mod,
- out _c1Control,
- out _code,
- out _values,
- out _terminating,
- out _isKeyMouse,
- out _mouseFlags,
- out _pos,
- out _isResponse,
- ProcessContinuousButtonPressed
- );
- Assert.Empty (EscSeqRequests.Statuses);
- Assert.Equal (expectedCki, _newConsoleKeyInfo);
- Assert.Equal (0, (int)_key);
- Assert.Equal (0, (int)_mod);
- Assert.Equal ("CSI", _c1Control);
- Assert.Equal ("<", _code);
- Assert.Equal (3, _values.Length);
- Assert.Equal ("0", _values [0]);
- Assert.Equal ("2", _values [1]);
- Assert.Equal ("3", _values [^1]);
- Assert.Equal ("m", _terminating);
- Assert.True (_isKeyMouse);
- Assert.Equal (new () { MouseFlags.Button1Released }, _mouseFlags);
- Assert.Equal (new (1, 2), _pos);
- Assert.False (_isResponse);
- Assert.Equal (0, (int)_arg1);
- Assert.Equal (Point.Empty, _arg2);
- ClearAll ();
- Assert.Empty (EscSeqRequests.Statuses);
- EscSeqRequests.Clear ();
- EscSeqRequests.Add ("t");
- _cki = new ConsoleKeyInfo []
- {
- new ('\u001b', 0, false, false, false),
- new ('[', 0, false, false, false),
- new ('8', 0, false, false, false),
- new (';', 0, false, false, false),
- new ('1', 0, false, false, false),
- new ('0', 0, false, false, false),
- new (';', 0, false, false, false),
- new ('2', 0, false, false, false),
- new ('0', 0, false, false, false),
- new ('t', 0, false, false, false)
- };
- expectedCki = default (ConsoleKeyInfo);
- Assert.Single (EscSeqRequests.Statuses);
- Assert.Equal ("t", EscSeqRequests.Statuses.ToArray () [^1].Terminator);
- EscSeqUtils.DecodeEscSeq (
- ref _newConsoleKeyInfo,
- ref _key,
- _cki,
- ref _mod,
- out _c1Control,
- out _code,
- out _values,
- out _terminating,
- out _isKeyMouse,
- out _mouseFlags,
- out _pos,
- out _isResponse,
- ProcessContinuousButtonPressed
- );
- Assert.Empty (EscSeqRequests.Statuses);
- Assert.Equal (expectedCki, _newConsoleKeyInfo);
- Assert.Equal (0, (int)_key);
- Assert.Equal (0, (int)_mod);
- Assert.Equal ("CSI", _c1Control);
- Assert.Null (_code);
- Assert.Equal (3, _values.Length);
- Assert.Equal ("8", _values [0]);
- Assert.Equal ("10", _values [1]);
- Assert.Equal ("20", _values [^1]);
- Assert.Equal ("t", _terminating);
- Assert.False (_isKeyMouse);
- Assert.Equal (new () { 0 }, _mouseFlags);
- Assert.Equal (Point.Empty, _pos);
- Assert.True (_isResponse);
- Assert.Equal (0, (int)_arg1);
- Assert.Equal (Point.Empty, _arg2);
- ClearAll ();
- }
- [Theory]
- [InlineData ('A', ConsoleKey.A, true, true, false, "ESC", '\u001b', 'A')]
- [InlineData ('a', ConsoleKey.A, false, true, false, "ESC", '\u001b', 'a')]
- [InlineData ('\0', ConsoleKey.Spacebar, false, true, true, "ESC", '\u001b', '\0')]
- [InlineData (' ', ConsoleKey.Spacebar, true, true, false, "ESC", '\u001b', ' ')]
- [InlineData ('\n', ConsoleKey.Enter, false, true, true, "ESC", '\u001b', '\n')]
- [InlineData ('\r', ConsoleKey.Enter, true, true, false, "ESC", '\u001b', '\r')]
- public void DecodeEscSeq_More_Multiple_Tests (
- char keyChar,
- ConsoleKey consoleKey,
- bool shift,
- bool alt,
- bool control,
- string c1Control,
- params char [] kChars
- )
- {
- _cki = new ConsoleKeyInfo [kChars.Length];
- for (var i = 0; i < kChars.Length; i++)
- {
- char kChar = kChars [i];
- _cki [i] = new (kChar, 0, false, false, false);
- }
- var expectedCki = new ConsoleKeyInfo (keyChar, consoleKey, shift, alt, control);
- EscSeqUtils.DecodeEscSeq (
- ref _newConsoleKeyInfo,
- ref _key,
- _cki,
- ref _mod,
- out _c1Control,
- out _code,
- out _values,
- out _terminating,
- out _isKeyMouse,
- out _mouseFlags,
- out _pos,
- out _isResponse,
- ProcessContinuousButtonPressed
- );
- Assert.Empty (EscSeqRequests.Statuses);
- Assert.Equal (expectedCki, _newConsoleKeyInfo);
- Assert.Equal (consoleKey, _key);
- ConsoleModifiers mods = new ();
- if (shift)
- {
- mods = ConsoleModifiers.Shift;
- }
- if (alt)
- {
- mods |= ConsoleModifiers.Alt;
- }
- if (control)
- {
- mods |= ConsoleModifiers.Control;
- }
- Assert.Equal (mods, _mod);
- Assert.Equal (c1Control, _c1Control);
- Assert.Null (_code);
- Assert.Null (_values);
- Assert.Equal (keyChar.ToString (), _terminating);
- Assert.False (_isKeyMouse);
- Assert.Equal (new () { 0 }, _mouseFlags);
- Assert.Equal (Point.Empty, _pos);
- Assert.False (_isResponse);
- Assert.Equal (0, (int)_arg1);
- Assert.Equal (Point.Empty, _arg2);
- ClearAll ();
- }
- [Fact]
- public void DecodeEscSeq_IncompleteCKInfos ()
- {
- // This is simulated response from a CSI_ReportTerminalSizeInChars
- _cki =
- [
- new ('\u001b', 0, false, false, false),
- new ('[', 0, false, false, false),
- new ('8', 0, false, false, false),
- new (';', 0, false, false, false),
- new ('1', 0, false, false, false),
- ];
- ConsoleKeyInfo expectedCki = default;
- EscSeqUtils.DecodeEscSeq (
- ref _newConsoleKeyInfo,
- ref _key,
- _cki,
- ref _mod,
- out _c1Control,
- out _code,
- out _values,
- out _terminating,
- out _isKeyMouse,
- out _mouseFlags,
- out _pos,
- out _isResponse,
- ProcessContinuousButtonPressed
- );
- Assert.Single (EscSeqRequests.Statuses);
- Assert.Equal (expectedCki, _newConsoleKeyInfo);
- Assert.Equal (ConsoleKey.None, _key);
- Assert.Equal (ConsoleModifiers.None, _mod);
- Assert.Equal ("CSI", _c1Control);
- Assert.Null (_code);
- Assert.Equal (2, _values.Length);
- Assert.Equal ("", _terminating);
- Assert.False (_isKeyMouse);
- Assert.Equal ([0], _mouseFlags);
- Assert.Equal (Point.Empty, _pos);
- Assert.False (_isResponse);
- Assert.Equal (0, (int)_arg1);
- Assert.Equal (Point.Empty, _arg2);
- Assert.Equal (_cki, EscSeqUtils.IncompleteCkInfos);
- _cki = EscSeqUtils.InsertArray (
- EscSeqUtils.IncompleteCkInfos,
- [
- new ('0', 0, false, false, false),
- new (';', 0, false, false, false),
- new ('2', 0, false, false, false),
- new ('0', 0, false, false, false),
- new ('t', 0, false, false, false)
- ]);
- expectedCki = default;
- // Add a request to avoid assert failure in the DecodeEscSeq method
- EscSeqRequests.Add ("t");
- EscSeqUtils.DecodeEscSeq (
- ref _newConsoleKeyInfo,
- ref _key,
- _cki,
- ref _mod,
- out _c1Control,
- out _code,
- out _values,
- out _terminating,
- out _isKeyMouse,
- out _mouseFlags,
- out _pos,
- out _isResponse,
- ProcessContinuousButtonPressed
- );
- Assert.Empty (EscSeqRequests.Statuses);
- Assert.Equal (expectedCki, _newConsoleKeyInfo);
- Assert.Equal (ConsoleKey.None, _key);
- Assert.Equal (ConsoleModifiers.None, _mod);
- Assert.Equal ("CSI", _c1Control);
- Assert.Null (_code);
- Assert.Equal (3, _values.Length);
- Assert.Equal ("t", _terminating);
- Assert.False (_isKeyMouse);
- Assert.Equal ([0], _mouseFlags);
- Assert.Equal (Point.Empty, _pos);
- Assert.False (EscSeqRequests.HasResponse ("t"));
- Assert.True (_isResponse);
- Assert.Equal (0, (int)_arg1);
- Assert.Equal (Point.Empty, _arg2);
- Assert.NotEqual (_cki, EscSeqUtils.IncompleteCkInfos);
- Assert.Contains (EscSeqUtils.ToString (EscSeqUtils.IncompleteCkInfos), EscSeqUtils.ToString (_cki));
- ClearAll ();
- }
- [Theory]
- [InlineData ('\u001B', ConsoleKey.Escape, false, false, false)]
- [InlineData ('\r', ConsoleKey.Enter, false, false, false)]
- [InlineData ('1', ConsoleKey.D1, false, false, false)]
- [InlineData ('!', ConsoleKey.None, false, false, false)]
- [InlineData ('a', ConsoleKey.A, false, false, false)]
- [InlineData ('A', ConsoleKey.A, true, false, false)]
- [InlineData ('\u0001', ConsoleKey.A, false, false, true)]
- [InlineData ('\0', ConsoleKey.Spacebar, false, false, true)]
- [InlineData ('\n', ConsoleKey.Enter, false, false, true)]
- [InlineData ('\t', ConsoleKey.Tab, false, false, false)]
- public void DecodeEscSeq_Single_Tests (char keyChar, ConsoleKey consoleKey, bool shift, bool alt, bool control)
- {
- _cki = [new (keyChar, 0, false, false, false)];
- var expectedCki = new ConsoleKeyInfo (keyChar, consoleKey, shift, alt, control);
- EscSeqUtils.DecodeEscSeq (
- ref _newConsoleKeyInfo,
- ref _key,
- _cki,
- ref _mod,
- out _c1Control,
- out _code,
- out _values,
- out _terminating,
- out _isKeyMouse,
- out _mouseFlags,
- out _pos,
- out _isResponse,
- ProcessContinuousButtonPressed
- );
- Assert.Empty (EscSeqRequests.Statuses);
- Assert.Equal (expectedCki, _newConsoleKeyInfo);
- Assert.Equal (consoleKey, _key);
- ConsoleModifiers mods = new ();
- if (shift)
- {
- mods = ConsoleModifiers.Shift;
- }
- if (alt)
- {
- mods |= ConsoleModifiers.Alt;
- }
- if (control)
- {
- mods |= ConsoleModifiers.Control;
- }
- Assert.Equal (mods, _mod);
- if (keyChar == '\u001B')
- {
- Assert.Equal ("ESC", _c1Control);
- }
- else
- {
- Assert.Null (_c1Control);
- }
- Assert.Null (_code);
- Assert.Null (_values);
- Assert.Null (_terminating);
- Assert.False (_isKeyMouse);
- Assert.Equal (new () { 0 }, _mouseFlags);
- Assert.Equal (Point.Empty, _pos);
- Assert.False (_isResponse);
- Assert.Equal (0, (int)_arg1);
- Assert.Equal (Point.Empty, _arg2);
- ClearAll ();
- }
- [Fact]
- public void Defaults_Values ()
- {
- Assert.Equal ('\x1b', EscSeqUtils.KeyEsc);
- Assert.Equal ("\x1b[", EscSeqUtils.CSI);
- Assert.Equal ("\x1b[?1003h", EscSeqUtils.CSI_EnableAnyEventMouse);
- Assert.Equal ("\x1b[?1006h", EscSeqUtils.CSI_EnableSgrExtModeMouse);
- Assert.Equal ("\x1b[?1015h", EscSeqUtils.CSI_EnableUrxvtExtModeMouse);
- Assert.Equal ("\x1b[?1003l", EscSeqUtils.CSI_DisableAnyEventMouse);
- Assert.Equal ("\x1b[?1006l", EscSeqUtils.CSI_DisableSgrExtModeMouse);
- Assert.Equal ("\x1b[?1015l", EscSeqUtils.CSI_DisableUrxvtExtModeMouse);
- Assert.Equal ("\x1b[?1003h\x1b[?1015h\u001b[?1006h", EscSeqUtils.CSI_EnableMouseEvents);
- Assert.Equal ("\x1b[?1003l\x1b[?1015l\u001b[?1006l", EscSeqUtils.CSI_DisableMouseEvents);
- }
- [Fact]
- public void GetC1ControlChar_Tests ()
- {
- Assert.Equal ("IND", EscSeqUtils.GetC1ControlChar ('D'));
- Assert.Equal ("NEL", EscSeqUtils.GetC1ControlChar ('E'));
- Assert.Equal ("HTS", EscSeqUtils.GetC1ControlChar ('H'));
- Assert.Equal ("RI", EscSeqUtils.GetC1ControlChar ('M'));
- Assert.Equal ("SS2", EscSeqUtils.GetC1ControlChar ('N'));
- Assert.Equal ("SS3", EscSeqUtils.GetC1ControlChar ('O'));
- Assert.Equal ("DCS", EscSeqUtils.GetC1ControlChar ('P'));
- Assert.Equal ("SPA", EscSeqUtils.GetC1ControlChar ('V'));
- Assert.Equal ("EPA", EscSeqUtils.GetC1ControlChar ('W'));
- Assert.Equal ("SOS", EscSeqUtils.GetC1ControlChar ('X'));
- Assert.Equal ("DECID", EscSeqUtils.GetC1ControlChar ('Z'));
- Assert.Equal ("CSI", EscSeqUtils.GetC1ControlChar ('['));
- Assert.Equal ("ST", EscSeqUtils.GetC1ControlChar ('\\'));
- Assert.Equal ("OSC", EscSeqUtils.GetC1ControlChar (']'));
- Assert.Equal ("PM", EscSeqUtils.GetC1ControlChar ('^'));
- Assert.Equal ("APC", EscSeqUtils.GetC1ControlChar ('_'));
- Assert.Equal ("", EscSeqUtils.GetC1ControlChar ('\0'));
- }
- [Fact]
- public void GetConsoleInputKey_ConsoleKeyInfo ()
- {
- var cki = new ConsoleKeyInfo ('r', 0, false, false, false);
- var expectedCki = new ConsoleKeyInfo ('r', ConsoleKey.R, false, false, false);
- Assert.Equal (expectedCki, EscSeqUtils.MapConsoleKeyInfo (cki));
- cki = new ('r', 0, true, false, false);
- expectedCki = new ('r', ConsoleKey.R, true, false, false);
- Assert.Equal (expectedCki, EscSeqUtils.MapConsoleKeyInfo (cki));
- cki = new ('r', 0, false, true, false);
- expectedCki = new ('r', ConsoleKey.R, false, true, false);
- Assert.Equal (expectedCki, EscSeqUtils.MapConsoleKeyInfo (cki));
- cki = new ('r', 0, false, false, true);
- expectedCki = new ('r', ConsoleKey.R, false, false, true);
- Assert.Equal (expectedCki, EscSeqUtils.MapConsoleKeyInfo (cki));
- cki = new ('r', 0, true, true, false);
- expectedCki = new ('r', ConsoleKey.R, true, true, false);
- Assert.Equal (expectedCki, EscSeqUtils.MapConsoleKeyInfo (cki));
- cki = new ('r', 0, false, true, true);
- expectedCki = new ('r', ConsoleKey.R, false, true, true);
- Assert.Equal (expectedCki, EscSeqUtils.MapConsoleKeyInfo (cki));
- cki = new ('r', 0, true, true, true);
- expectedCki = new ('r', ConsoleKey.R, true, true, true);
- Assert.Equal (expectedCki, EscSeqUtils.MapConsoleKeyInfo (cki));
- cki = new ('\u0012', 0, false, false, false);
- expectedCki = new ('\u0012', ConsoleKey.R, false, false, true);
- Assert.Equal (expectedCki, EscSeqUtils.MapConsoleKeyInfo (cki));
- cki = new ('\0', (ConsoleKey)64, false, false, true);
- expectedCki = new ('\0', ConsoleKey.Spacebar, false, false, true);
- Assert.Equal (expectedCki, EscSeqUtils.MapConsoleKeyInfo (cki));
- cki = new ('\r', 0, false, false, false);
- expectedCki = new ('\r', ConsoleKey.Enter, false, false, false);
- Assert.Equal (expectedCki, EscSeqUtils.MapConsoleKeyInfo (cki));
- cki = new ('\u007f', 0, false, false, false);
- expectedCki = new ('\u007f', ConsoleKey.Backspace, false, false, false);
- Assert.Equal (expectedCki, EscSeqUtils.MapConsoleKeyInfo (cki));
- cki = new ('R', 0, false, false, false);
- expectedCki = new ('R', ConsoleKey.R, true, false, false);
- Assert.Equal (expectedCki, EscSeqUtils.MapConsoleKeyInfo (cki));
- }
- [Fact]
- public void GetConsoleKey_Tests ()
- {
- ConsoleModifiers mod = 0;
- char keyChar = '\0';
- Assert.Equal (ConsoleKey.UpArrow, EscSeqUtils.GetConsoleKey ('A', "", ref mod, ref keyChar));
- Assert.Equal (ConsoleKey.DownArrow, EscSeqUtils.GetConsoleKey ('B', "", ref mod, ref keyChar));
- Assert.Equal (_key = ConsoleKey.RightArrow, EscSeqUtils.GetConsoleKey ('C', "", ref mod, ref keyChar));
- Assert.Equal (ConsoleKey.LeftArrow, EscSeqUtils.GetConsoleKey ('D', "", ref mod, ref keyChar));
- Assert.Equal (ConsoleKey.End, EscSeqUtils.GetConsoleKey ('F', "", ref mod, ref keyChar));
- Assert.Equal (ConsoleKey.Home, EscSeqUtils.GetConsoleKey ('H', "", ref mod, ref keyChar));
- Assert.Equal (ConsoleKey.F1, EscSeqUtils.GetConsoleKey ('P', "", ref mod, ref keyChar));
- Assert.Equal (ConsoleKey.F2, EscSeqUtils.GetConsoleKey ('Q', "", ref mod, ref keyChar));
- Assert.Equal (ConsoleKey.F3, EscSeqUtils.GetConsoleKey ('R', "", ref mod, ref keyChar));
- Assert.Equal (ConsoleKey.F4, EscSeqUtils.GetConsoleKey ('S', "", ref mod, ref keyChar));
- Assert.Equal (ConsoleKey.Tab, EscSeqUtils.GetConsoleKey ('Z', "", ref mod, ref keyChar));
- Assert.Equal (ConsoleModifiers.Shift, mod);
- Assert.Equal (0, (int)EscSeqUtils.GetConsoleKey ('\0', "", ref mod, ref keyChar));
- Assert.Equal (ConsoleKey.Insert, EscSeqUtils.GetConsoleKey ('~', "2", ref mod, ref keyChar));
- Assert.Equal (ConsoleKey.Delete, EscSeqUtils.GetConsoleKey ('~', "3", ref mod, ref keyChar));
- Assert.Equal (ConsoleKey.PageUp, EscSeqUtils.GetConsoleKey ('~', "5", ref mod, ref keyChar));
- Assert.Equal (ConsoleKey.PageDown, EscSeqUtils.GetConsoleKey ('~', "6", ref mod, ref keyChar));
- Assert.Equal (ConsoleKey.F5, EscSeqUtils.GetConsoleKey ('~', "15", ref mod, ref keyChar));
- Assert.Equal (ConsoleKey.F6, EscSeqUtils.GetConsoleKey ('~', "17", ref mod, ref keyChar));
- Assert.Equal (ConsoleKey.F7, EscSeqUtils.GetConsoleKey ('~', "18", ref mod, ref keyChar));
- Assert.Equal (ConsoleKey.F8, EscSeqUtils.GetConsoleKey ('~', "19", ref mod, ref keyChar));
- Assert.Equal (ConsoleKey.F9, EscSeqUtils.GetConsoleKey ('~', "20", ref mod, ref keyChar));
- Assert.Equal (ConsoleKey.F10, EscSeqUtils.GetConsoleKey ('~', "21", ref mod, ref keyChar));
- Assert.Equal (ConsoleKey.F11, EscSeqUtils.GetConsoleKey ('~', "23", ref mod, ref keyChar));
- Assert.Equal (ConsoleKey.F12, EscSeqUtils.GetConsoleKey ('~', "24", ref mod, ref keyChar));
- Assert.Equal (0, (int)EscSeqUtils.GetConsoleKey ('~', "", ref mod, ref keyChar));
- // These terminators are used by macOS on a numeric keypad without keys modifiers
- Assert.Equal (ConsoleKey.Add, EscSeqUtils.GetConsoleKey ('l', null, ref mod, ref keyChar));
- Assert.Equal (ConsoleKey.Subtract, EscSeqUtils.GetConsoleKey ('m', null, ref mod, ref keyChar));
- Assert.Equal (ConsoleKey.Insert, EscSeqUtils.GetConsoleKey ('p', null, ref mod, ref keyChar));
- Assert.Equal (ConsoleKey.End, EscSeqUtils.GetConsoleKey ('q', null, ref mod, ref keyChar));
- Assert.Equal (ConsoleKey.DownArrow, EscSeqUtils.GetConsoleKey ('r', null, ref mod, ref keyChar));
- Assert.Equal (ConsoleKey.PageDown, EscSeqUtils.GetConsoleKey ('s', null, ref mod, ref keyChar));
- Assert.Equal (ConsoleKey.LeftArrow, EscSeqUtils.GetConsoleKey ('t', null, ref mod, ref keyChar));
- Assert.Equal (ConsoleKey.Clear, EscSeqUtils.GetConsoleKey ('u', null, ref mod, ref keyChar));
- Assert.Equal (ConsoleKey.RightArrow, EscSeqUtils.GetConsoleKey ('v', null, ref mod, ref keyChar));
- Assert.Equal (ConsoleKey.Home, EscSeqUtils.GetConsoleKey ('w', null, ref mod, ref keyChar));
- Assert.Equal (ConsoleKey.UpArrow, EscSeqUtils.GetConsoleKey ('x', null, ref mod, ref keyChar));
- Assert.Equal (ConsoleKey.PageUp, EscSeqUtils.GetConsoleKey ('y', null, ref mod, ref keyChar));
- }
- [Fact]
- public void GetConsoleModifiers_Tests ()
- {
- Assert.Equal (ConsoleModifiers.Shift, EscSeqUtils.GetConsoleModifiers ("2"));
- Assert.Equal (ConsoleModifiers.Alt, EscSeqUtils.GetConsoleModifiers ("3"));
- Assert.Equal (ConsoleModifiers.Shift | ConsoleModifiers.Alt, EscSeqUtils.GetConsoleModifiers ("4"));
- Assert.Equal (ConsoleModifiers.Control, EscSeqUtils.GetConsoleModifiers ("5"));
- Assert.Equal (ConsoleModifiers.Shift | ConsoleModifiers.Control, EscSeqUtils.GetConsoleModifiers ("6"));
- Assert.Equal (ConsoleModifiers.Alt | ConsoleModifiers.Control, EscSeqUtils.GetConsoleModifiers ("7"));
- Assert.Equal (
- ConsoleModifiers.Shift | ConsoleModifiers.Alt | ConsoleModifiers.Control,
- EscSeqUtils.GetConsoleModifiers ("8")
- );
- Assert.Equal (0, (int)EscSeqUtils.GetConsoleModifiers (""));
- }
- [Fact]
- public void GetEscapeResult_Multiple_Tests ()
- {
- char [] kChars = ['\u001b', '[', '5', ';', '1', '0', 'r'];
- (_c1Control, _code, _values, _terminating) = EscSeqUtils.GetEscapeResult (kChars);
- Assert.Equal ("CSI", _c1Control);
- Assert.Null (_code);
- Assert.Equal (2, _values.Length);
- Assert.Equal ("5", _values [0]);
- Assert.Equal ("10", _values [^1]);
- Assert.Equal ("r", _terminating);
- ClearAll ();
- }
- [Theory]
- [InlineData ('\u001B')]
- [InlineData (['\r'])]
- [InlineData (['1'])]
- [InlineData (['!'])]
- [InlineData (['a'])]
- [InlineData (['A'])]
- public void GetEscapeResult_Single_Tests (params char [] kChars)
- {
- (_c1Control, _code, _values, _terminating) = EscSeqUtils.GetEscapeResult (kChars);
- if (kChars [0] == '\u001B')
- {
- Assert.Equal ("ESC", _c1Control);
- }
- else
- {
- Assert.Null (_c1Control);
- }
- Assert.Null (_code);
- Assert.Null (_values);
- Assert.Null (_terminating);
- ClearAll ();
- }
- [Fact]
- public void GetKeyCharArray_Tests ()
- {
- ConsoleKeyInfo [] cki =
- {
- new ('\u001b', 0, false, false, false),
- new ('[', 0, false, false, false),
- new ('5', 0, false, false, false),
- new (';', 0, false, false, false),
- new ('1', 0, false, false, false),
- new ('0', 0, false, false, false),
- new ('r', 0, false, false, false)
- };
- Assert.Equal (new [] { '\u001b', '[', '5', ';', '1', '0', 'r' }, EscSeqUtils.GetKeyCharArray (cki));
- }
- [Fact]
- [AutoInitShutdown]
- public void GetMouse_Tests ()
- {
- ConsoleKeyInfo [] cki =
- {
- new ('\u001b', 0, false, false, false),
- new ('[', 0, false, false, false),
- new ('<', 0, false, false, false),
- new ('0', 0, false, false, false),
- new (';', 0, false, false, false),
- new ('2', 0, false, false, false),
- new (';', 0, false, false, false),
- new ('3', 0, false, false, false),
- new ('M', 0, false, false, false)
- };
- EscSeqUtils.GetMouse (cki, out List<MouseFlags> mouseFlags, out Point pos, ProcessContinuousButtonPressed);
- Assert.Equal (new () { MouseFlags.Button1Pressed }, mouseFlags);
- Assert.Equal (new (1, 2), pos);
- cki = new ConsoleKeyInfo []
- {
- new ('\u001b', 0, false, false, false),
- new ('[', 0, false, false, false),
- new ('<', 0, false, false, false),
- new ('0', 0, false, false, false),
- new (';', 0, false, false, false),
- new ('2', 0, false, false, false),
- new (';', 0, false, false, false),
- new ('3', 0, false, false, false),
- new ('m', 0, false, false, false)
- };
- EscSeqUtils.GetMouse (cki, out mouseFlags, out pos, ProcessContinuousButtonPressed);
- Assert.Equal (2, mouseFlags.Count);
- Assert.Equal (
- new () { MouseFlags.Button1Released, MouseFlags.Button1Clicked },
- mouseFlags
- );
- Assert.Equal (new (1, 2), pos);
- cki = new ConsoleKeyInfo []
- {
- new ('\u001b', 0, false, false, false),
- new ('[', 0, false, false, false),
- new ('<', 0, false, false, false),
- new ('0', 0, false, false, false),
- new (';', 0, false, false, false),
- new ('2', 0, false, false, false),
- new (';', 0, false, false, false),
- new ('3', 0, false, false, false),
- new ('M', 0, false, false, false)
- };
- EscSeqUtils.GetMouse (cki, out mouseFlags, out pos, ProcessContinuousButtonPressed);
- Assert.Equal (new () { MouseFlags.Button1DoubleClicked }, mouseFlags);
- Assert.Equal (new (1, 2), pos);
- cki = new ConsoleKeyInfo []
- {
- new ('\u001b', 0, false, false, false),
- new ('[', 0, false, false, false),
- new ('<', 0, false, false, false),
- new ('0', 0, false, false, false),
- new (';', 0, false, false, false),
- new ('2', 0, false, false, false),
- new (';', 0, false, false, false),
- new ('3', 0, false, false, false),
- new ('M', 0, false, false, false)
- };
- EscSeqUtils.GetMouse (cki, out mouseFlags, out pos, ProcessContinuousButtonPressed);
- Assert.Equal (new () { MouseFlags.Button1TripleClicked }, mouseFlags);
- Assert.Equal (new (1, 2), pos);
- cki = new ConsoleKeyInfo []
- {
- new ('\u001b', 0, false, false, false),
- new ('[', 0, false, false, false),
- new ('<', 0, false, false, false),
- new ('0', 0, false, false, false),
- new (';', 0, false, false, false),
- new ('2', 0, false, false, false),
- new (';', 0, false, false, false),
- new ('3', 0, false, false, false),
- new ('m', 0, false, false, false)
- };
- EscSeqUtils.GetMouse (cki, out mouseFlags, out pos, ProcessContinuousButtonPressed);
- Assert.Equal (new () { MouseFlags.Button1Released }, mouseFlags);
- Assert.Equal (new (1, 2), pos);
- }
- [Fact]
- public void ResizeArray_ConsoleKeyInfo ()
- {
- ConsoleKeyInfo [] expectedCkInfos = null;
- var cki = new ConsoleKeyInfo ('\u001b', ConsoleKey.Escape, false, false, false);
- expectedCkInfos = EscSeqUtils.ResizeArray (cki, expectedCkInfos);
- Assert.Single (expectedCkInfos);
- Assert.Equal (cki, expectedCkInfos [0]);
- }
- [Theory]
- [InlineData ("\r[<35;50;1m[<35;49;1m[<35;47;1m[<35;46;1m[<35;45;2m[<35;44;2m[<35;43;3m[<35;42;3m[<35;41;4m[<35;40;5m[<35;39;6m[<35;49;1m[<35;48;2m[<0;33;6M[<0;33;6mOC\b", "\b")]
- [InlineData ("\r[<35;50;1m[<35;49;1m[<35;47;1m[<35;46;1m[<35;45;2m[<35;44;2m[<35;43;3m[<35;42;3m[<35;41;4m[<35;40;5m[<35;39;6m[<35;49;1m[<35;48;2m[<0;33;6M[<0;33;6mOC\t", "\t")]
- [InlineData ("\r[<35;50;1m[<35;49;1m[<35;47;1m[<35;46;1m[<35;45;2m[<35;44;2m[<35;43;3m[<35;42;3m[<35;41;4m[<35;40;5m[<35;39;6m[<35;49;1m[<35;48;2m[<0;33;6M[<0;33;6mOC\n", "\n")]
- [InlineData ("\r[<35;50;1m[<35;49;1m[<35;47;1m[<35;46;1m[<35;45;2m[<35;44;2m[<35;43;3m[<35;42;3m[<35;41;4m[<35;40;5m[<35;39;6m[<35;49;1m[<35;48;2m[<0;33;6M[<0;33;6mOC\r", "\r")]
- [InlineData ("\r[<35;50;1m[<35;49;1m[<35;47;1m[<35;46;1m[<35;45;2m[<35;44;2m[<35;43;3m[<35;42;3m[<35;41;4m[<35;40;5m[<35;39;6m[<35;49;1m[<35;48;2m[<0;33;6M[<0;33;6mOCe", "e")]
- [InlineData ("\r[<35;50;1m[<35;49;1m[<35;47;1m[<35;46;1m[<35;45;2m[<35;44;2m[<35;43;3m[<35;42;3m[<35;41;4m[<35;40;5m[<35;39;6m[<35;49;1m[<35;48;2m[<0;33;6M[<0;33;6mOCV", "V")]
- [InlineData ("\r[<35;50;1m[<35;49;1m[<35;47;1m[<35;46;1m[<35;45;2m[<35;44;2m[<35;43;3m[<35;42;3m[<35;41;4m[<35;40;5m[<35;39;6m[<35;49;1m[<35;48;2m[<0;33;6M[<0;33;6mOC\u007f", "\u007f")]
- [InlineData ("\r[<35;50;1m[<35;49;1m[<35;47;1m[<35;46;1m[<35;45;2m[<35;44;2m[<35;43;3m[<35;42;3m[<35;41;4m[<35;40;5m[<35;39;6m[<35;49;1m[<35;48;2m[<0;33;6M[<0;33;6mOC ", " ")]
- [InlineData ("\r[<35;50;1m[<35;49;1m[<35;47;1m[<35;46;1m[<35;45;2m[<35;44;2m[<35;43;3m[<35;42;3m[<35;41;4m[<35;40;5m[<35;39;6m[<35;49;1m[<35;48;2m[<0;33;6M[<0;33;6mOC\\", "\\")]
- [InlineData ("\r[<35;50;1m[<35;49;1m[<35;47;1m[<35;46;1m[<35;45;2m[<35;44;2m[<35;43;3m[<35;42;3m[<35;41;4m[<35;40;5m[<35;39;6m[<35;49;1m[<35;48;2m[<0;33;6M[<0;33;6mOC|", "|")]
- [InlineData ("\r[<35;50;1m[<35;49;1m[<35;47;1m[<35;46;1m[<35;45;2m[<35;44;2m[<35;43;3m[<35;42;3m[<35;41;4m[<35;40;5m[<35;39;6m[<35;49;1m[<35;48;2m[<0;33;6M[<0;33;6mOC1", "1")]
- [InlineData ("\r[<35;50;1m[<35;49;1m[<35;47;1m[<35;46;1m[<35;45;2m[<35;44;2m[<35;43;3m[<35;42;3m[<35;41;4m[<35;40;5m[<35;39;6m[<35;49;1m[<35;48;2m[<0;33;6M[<0;33;6mOC!", "!")]
- [InlineData ("\r[<35;50;1m[<35;49;1m[<35;47;1m[<35;46;1m[<35;45;2m[<35;44;2m[<35;43;3m[<35;42;3m[<35;41;4m[<35;40;5m[<35;39;6m[<35;49;1m[<35;48;2m[<0;33;6M[<0;33;6mOC\"", "\"")]
- [InlineData ("\r[<35;50;1m[<35;49;1m[<35;47;1m[<35;46;1m[<35;45;2m[<35;44;2m[<35;43;3m[<35;42;3m[<35;41;4m[<35;40;5m[<35;39;6m[<35;49;1m[<35;48;2m[<0;33;6M[<0;33;6mOC@", "@")]
- [InlineData ("\r[<35;50;1m[<35;49;1m[<35;47;1m[<35;46;1m[<35;45;2m[<35;44;2m[<35;43;3m[<35;42;3m[<35;41;4m[<35;40;5m[<35;39;6m[<35;49;1m[<35;48;2m[<0;33;6M[<0;33;6mOC#", "#")]
- [InlineData ("\r[<35;50;1m[<35;49;1m[<35;47;1m[<35;46;1m[<35;45;2m[<35;44;2m[<35;43;3m[<35;42;3m[<35;41;4m[<35;40;5m[<35;39;6m[<35;49;1m[<35;48;2m[<0;33;6M[<0;33;6mOC£", "£")]
- [InlineData ("\r[<35;50;1m[<35;49;1m[<35;47;1m[<35;46;1m[<35;45;2m[<35;44;2m[<35;43;3m[<35;42;3m[<35;41;4m[<35;40;5m[<35;39;6m[<35;49;1m[<35;48;2m[<0;33;6M[<0;33;6mOC$", "$")]
- [InlineData ("\r[<35;50;1m[<35;49;1m[<35;47;1m[<35;46;1m[<35;45;2m[<35;44;2m[<35;43;3m[<35;42;3m[<35;41;4m[<35;40;5m[<35;39;6m[<35;49;1m[<35;48;2m[<0;33;6M[<0;33;6mOC§", "§")]
- [InlineData ("\r[<35;50;1m[<35;49;1m[<35;47;1m[<35;46;1m[<35;45;2m[<35;44;2m[<35;43;3m[<35;42;3m[<35;41;4m[<35;40;5m[<35;39;6m[<35;49;1m[<35;48;2m[<0;33;6M[<0;33;6mOC%", "%")]
- [InlineData ("\r[<35;50;1m[<35;49;1m[<35;47;1m[<35;46;1m[<35;45;2m[<35;44;2m[<35;43;3m[<35;42;3m[<35;41;4m[<35;40;5m[<35;39;6m[<35;49;1m[<35;48;2m[<0;33;6M[<0;33;6mOC€", "€")]
- [InlineData ("\r[<35;50;1m[<35;49;1m[<35;47;1m[<35;46;1m[<35;45;2m[<35;44;2m[<35;43;3m[<35;42;3m[<35;41;4m[<35;40;5m[<35;39;6m[<35;49;1m[<35;48;2m[<0;33;6M[<0;33;6mOC&", "&")]
- [InlineData ("\r[<35;50;1m[<35;49;1m[<35;47;1m[<35;46;1m[<35;45;2m[<35;44;2m[<35;43;3m[<35;42;3m[<35;41;4m[<35;40;5m[<35;39;6m[<35;49;1m[<35;48;2m[<0;33;6M[<0;33;6mOC/", "/")]
- [InlineData ("\r[<35;50;1m[<35;49;1m[<35;47;1m[<35;46;1m[<35;45;2m[<35;44;2m[<35;43;3m[<35;42;3m[<35;41;4m[<35;40;5m[<35;39;6m[<35;49;1m[<35;48;2m[<0;33;6M[<0;33;6mOC{", "{")]
- [InlineData ("\r[<35;50;1m[<35;49;1m[<35;47;1m[<35;46;1m[<35;45;2m[<35;44;2m[<35;43;3m[<35;42;3m[<35;41;4m[<35;40;5m[<35;39;6m[<35;49;1m[<35;48;2m[<0;33;6M[<0;33;6mOC(", "(")]
- [InlineData ("\r[<35;50;1m[<35;49;1m[<35;47;1m[<35;46;1m[<35;45;2m[<35;44;2m[<35;43;3m[<35;42;3m[<35;41;4m[<35;40;5m[<35;39;6m[<35;49;1m[<35;48;2m[<0;33;6M[<0;33;6mOC[", "[")]
- [InlineData ("\r[<35;50;1m[<35;49;1m[<35;47;1m[<35;46;1m[<35;45;2m[<35;44;2m[<35;43;3m[<35;42;3m[<35;41;4m[<35;40;5m[<35;39;6m[<35;49;1m[<35;48;2m[<0;33;6M[<0;33;6mOC)", ")")]
- [InlineData ("\r[<35;50;1m[<35;49;1m[<35;47;1m[<35;46;1m[<35;45;2m[<35;44;2m[<35;43;3m[<35;42;3m[<35;41;4m[<35;40;5m[<35;39;6m[<35;49;1m[<35;48;2m[<0;33;6M[<0;33;6mOC]", "]")]
- [InlineData ("\r[<35;50;1m[<35;49;1m[<35;47;1m[<35;46;1m[<35;45;2m[<35;44;2m[<35;43;3m[<35;42;3m[<35;41;4m[<35;40;5m[<35;39;6m[<35;49;1m[<35;48;2m[<0;33;6M[<0;33;6mOC=", "=")]
- [InlineData ("\r[<35;50;1m[<35;49;1m[<35;47;1m[<35;46;1m[<35;45;2m[<35;44;2m[<35;43;3m[<35;42;3m[<35;41;4m[<35;40;5m[<35;39;6m[<35;49;1m[<35;48;2m[<0;33;6M[<0;33;6mOC}", "}")]
- [InlineData ("\r[<35;50;1m[<35;49;1m[<35;47;1m[<35;46;1m[<35;45;2m[<35;44;2m[<35;43;3m[<35;42;3m[<35;41;4m[<35;40;5m[<35;39;6m[<35;49;1m[<35;48;2m[<0;33;6M[<0;33;6mOC'", "'")]
- [InlineData ("\r[<35;50;1m[<35;49;1m[<35;47;1m[<35;46;1m[<35;45;2m[<35;44;2m[<35;43;3m[<35;42;3m[<35;41;4m[<35;40;5m[<35;39;6m[<35;49;1m[<35;48;2m[<0;33;6M[<0;33;6mOC?", "?")]
- [InlineData ("\r[<35;50;1m[<35;49;1m[<35;47;1m[<35;46;1m[<35;45;2m[<35;44;2m[<35;43;3m[<35;42;3m[<35;41;4m[<35;40;5m[<35;39;6m[<35;49;1m[<35;48;2m[<0;33;6M[<0;33;6mOC«", "«")]
- [InlineData ("\r[<35;50;1m[<35;49;1m[<35;47;1m[<35;46;1m[<35;45;2m[<35;44;2m[<35;43;3m[<35;42;3m[<35;41;4m[<35;40;5m[<35;39;6m[<35;49;1m[<35;48;2m[<0;33;6M[<0;33;6mOC»", "»")]
- [InlineData ("\r[<35;50;1m[<35;49;1m[<35;47;1m[<35;46;1m[<35;45;2m[<35;44;2m[<35;43;3m[<35;42;3m[<35;41;4m[<35;40;5m[<35;39;6m[<35;49;1m[<35;48;2m[<0;33;6M[<0;33;6mOC+", "+")]
- [InlineData ("\r[<35;50;1m[<35;49;1m[<35;47;1m[<35;46;1m[<35;45;2m[<35;44;2m[<35;43;3m[<35;42;3m[<35;41;4m[<35;40;5m[<35;39;6m[<35;49;1m[<35;48;2m[<0;33;6M[<0;33;6mOC*", "*")]
- [InlineData ("\r[<35;50;1m[<35;49;1m[<35;47;1m[<35;46;1m[<35;45;2m[<35;44;2m[<35;43;3m[<35;42;3m[<35;41;4m[<35;40;5m[<35;39;6m[<35;49;1m[<35;48;2m[<0;33;6M[<0;33;6mOC¨", "¨")]
- [InlineData ("\r[<35;50;1m[<35;49;1m[<35;47;1m[<35;46;1m[<35;45;2m[<35;44;2m[<35;43;3m[<35;42;3m[<35;41;4m[<35;40;5m[<35;39;6m[<35;49;1m[<35;48;2m[<0;33;6M[<0;33;6mOC´", "´")]
- [InlineData ("\r[<35;50;1m[<35;49;1m[<35;47;1m[<35;46;1m[<35;45;2m[<35;44;2m[<35;43;3m[<35;42;3m[<35;41;4m[<35;40;5m[<35;39;6m[<35;49;1m[<35;48;2m[<0;33;6M[<0;33;6mOC`", "`")]
- [InlineData ("\r[<35;50;1m[<35;49;1m[<35;47;1m[<35;46;1m[<35;45;2m[<35;44;2m[<35;43;3m[<35;42;3m[<35;41;4m[<35;40;5m[<35;39;6m[<35;49;1m[<35;48;2m[<0;33;6M[<0;33;6mOCç", "ç")]
- [InlineData ("\r[<35;50;1m[<35;49;1m[<35;47;1m[<35;46;1m[<35;45;2m[<35;44;2m[<35;43;3m[<35;42;3m[<35;41;4m[<35;40;5m[<35;39;6m[<35;49;1m[<35;48;2m[<0;33;6M[<0;33;6mOCº", "º")]
- [InlineData ("\r[<35;50;1m[<35;49;1m[<35;47;1m[<35;46;1m[<35;45;2m[<35;44;2m[<35;43;3m[<35;42;3m[<35;41;4m[<35;40;5m[<35;39;6m[<35;49;1m[<35;48;2m[<0;33;6M[<0;33;6mOCª", "ª")]
- [InlineData ("\r[<35;50;1m[<35;49;1m[<35;47;1m[<35;46;1m[<35;45;2m[<35;44;2m[<35;43;3m[<35;42;3m[<35;41;4m[<35;40;5m[<35;39;6m[<35;49;1m[<35;48;2m[<0;33;6M[<0;33;6mOC~", "~")]
- [InlineData ("\r[<35;50;1m[<35;49;1m[<35;47;1m[<35;46;1m[<35;45;2m[<35;44;2m[<35;43;3m[<35;42;3m[<35;41;4m[<35;40;5m[<35;39;6m[<35;49;1m[<35;48;2m[<0;33;6M[<0;33;6mOC^", "^")]
- [InlineData ("\r[<35;50;1m[<35;49;1m[<35;47;1m[<35;46;1m[<35;45;2m[<35;44;2m[<35;43;3m[<35;42;3m[<35;41;4m[<35;40;5m[<35;39;6m[<35;49;1m[<35;48;2m[<0;33;6M[<0;33;6mOC<", "<")]
- [InlineData ("\r[<35;50;1m[<35;49;1m[<35;47;1m[<35;46;1m[<35;45;2m[<35;44;2m[<35;43;3m[<35;42;3m[<35;41;4m[<35;40;5m[<35;39;6m[<35;49;1m[<35;48;2m[<0;33;6M[<0;33;6mOC>", ">")]
- [InlineData ("\r[<35;50;1m[<35;49;1m[<35;47;1m[<35;46;1m[<35;45;2m[<35;44;2m[<35;43;3m[<35;42;3m[<35;41;4m[<35;40;5m[<35;39;6m[<35;49;1m[<35;48;2m[<0;33;6M[<0;33;6mOC,", ",")]
- [InlineData ("\r[<35;50;1m[<35;49;1m[<35;47;1m[<35;46;1m[<35;45;2m[<35;44;2m[<35;43;3m[<35;42;3m[<35;41;4m[<35;40;5m[<35;39;6m[<35;49;1m[<35;48;2m[<0;33;6M[<0;33;6mOC;", ";")]
- [InlineData ("\r[<35;50;1m[<35;49;1m[<35;47;1m[<35;46;1m[<35;45;2m[<35;44;2m[<35;43;3m[<35;42;3m[<35;41;4m[<35;40;5m[<35;39;6m[<35;49;1m[<35;48;2m[<0;33;6M[<0;33;6mOC.", ".")]
- [InlineData ("\r[<35;50;1m[<35;49;1m[<35;47;1m[<35;46;1m[<35;45;2m[<35;44;2m[<35;43;3m[<35;42;3m[<35;41;4m[<35;40;5m[<35;39;6m[<35;49;1m[<35;48;2m[<0;33;6M[<0;33;6mOC:", ":")]
- [InlineData ("\r[<35;50;1m[<35;49;1m[<35;47;1m[<35;46;1m[<35;45;2m[<35;44;2m[<35;43;3m[<35;42;3m[<35;41;4m[<35;40;5m[<35;39;6m[<35;49;1m[<35;48;2m[<0;33;6M[<0;33;6mOC-", "-")]
- [InlineData ("\r[<35;50;1m[<35;49;1m[<35;47;1m[<35;46;1m[<35;45;2m[<35;44;2m[<35;43;3m[<35;42;3m[<35;41;4m[<35;40;5m[<35;39;6m[<35;49;1m[<35;48;2m[<0;33;6M[<0;33;6mOC_", "_")]
- public void SplitEscapeRawString_Multiple_Tests (string rawData, string expectedLast)
- {
- List<string> splitList = EscSeqUtils.SplitEscapeRawString (rawData);
- Assert.Equal (18, splitList.Count);
- Assert.Equal ("\r", splitList [0]);
- Assert.Equal ("\u001b[<35;50;1m", splitList [1]);
- Assert.Equal ("\u001b[<35;49;1m", splitList [2]);
- Assert.Equal ("\u001b[<35;47;1m", splitList [3]);
- Assert.Equal ("\u001b[<35;46;1m", splitList [4]);
- Assert.Equal ("\u001b[<35;45;2m", splitList [5]);
- Assert.Equal ("\u001b[<35;44;2m", splitList [6]);
- Assert.Equal ("\u001b[<35;43;3m", splitList [7]);
- Assert.Equal ("\u001b[<35;42;3m", splitList [8]);
- Assert.Equal ("\u001b[<35;41;4m", splitList [9]);
- Assert.Equal ("\u001b[<35;40;5m", splitList [10]);
- Assert.Equal ("\u001b[<35;39;6m", splitList [11]);
- Assert.Equal ("\u001b[<35;49;1m", splitList [12]);
- Assert.Equal ("\u001b[<35;48;2m", splitList [13]);
- Assert.Equal ("\u001b[<0;33;6M", splitList [14]);
- Assert.Equal ("\u001b[<0;33;6m", splitList [15]);
- Assert.Equal ("\u001bOC", splitList [16]);
- Assert.Equal (expectedLast, splitList [^1]);
- }
- [Theory]
- [InlineData ("[<35;50;1m")]
- [InlineData ("\r")]
- [InlineData ("1")]
- [InlineData ("!")]
- [InlineData ("a")]
- [InlineData ("A")]
- public void SplitEscapeRawString_Single_Tests (string rawData)
- {
- List<string> splitList = EscSeqUtils.SplitEscapeRawString (rawData);
- Assert.Single (splitList);
- Assert.Equal (rawData, splitList [0]);
- }
- [Theory]
- [InlineData (null, null, null, null)]
- [InlineData ("\u001b[8;1", null, null, "\u001b[8;1")]
- [InlineData (null, "\u001b[8;1", 5, "\u001b[8;1")]
- [InlineData ("\u001b[8;1", null, 5, "\u001b[8;1")]
- [InlineData ("\u001b[8;1", "0;20t", -1, "\u001b[8;10;20t")]
- [InlineData ("\u001b[8;1", "0;20t", 0, "\u001b[8;10;20t")]
- [InlineData ("0;20t", "\u001b[8;1", 5, "\u001b[8;10;20t")]
- [InlineData ("0;20t", "\u001b[8;1", 3, "\u001b[80;20t;1")]
- public void InsertArray_Tests (string toInsert, string current, int? index, string expected)
- {
- ConsoleKeyInfo [] toIns = EscSeqUtils.ToConsoleKeyInfoArray (toInsert);
- ConsoleKeyInfo [] cki = EscSeqUtils.ToConsoleKeyInfoArray (current);
- ConsoleKeyInfo [] result = EscSeqUtils.ToConsoleKeyInfoArray (expected);
- if (index is null)
- {
- cki = EscSeqUtils.InsertArray (toIns, cki);
- }
- else
- {
- cki = EscSeqUtils.InsertArray (toIns, cki, (int)index);
- }
- Assert.Equal (result, cki);
- }
- private void ClearAll ()
- {
- EscSeqRequests.Clear ();
- _newConsoleKeyInfo = default (ConsoleKeyInfo);
- _key = default (ConsoleKey);
- _cki = default (ConsoleKeyInfo []);
- _mod = default (ConsoleModifiers);
- _c1Control = default (string);
- _code = default (string);
- _terminating = default (string);
- _values = default (string []);
- _isKeyMouse = default (bool);
- _isResponse = false;
- _mouseFlags = default (List<MouseFlags>);
- _pos = default (Point);
- _arg1 = default (MouseFlags);
- _arg2 = default (Point);
- }
- private void ProcessContinuousButtonPressed (MouseFlags arg1, Point arg2)
- {
- _arg1 = arg1;
- _arg2 = arg2;
- _actionStarted = true;
- }
- }
|