1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287 |
- using System;
- using System.Reflection;
- using Xunit;
- using Xunit.Abstractions;
- namespace Terminal.Gui.Views {
- public class TextViewTests {
- private static TextView _textView;
- readonly ITestOutputHelper output;
- public TextViewTests (ITestOutputHelper output)
- {
- this.output = output;
- }
- // This class enables test functions annotated with the [InitShutdown] attribute
- // to have a function called before the test function is called and after.
- //
- // This is necessary because a) Application is a singleton and Init/Shutdown must be called
- // as a pair, and b) all unit test functions should be atomic.
- [AttributeUsage (AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
- public class InitShutdown : Xunit.Sdk.BeforeAfterTestAttribute {
- public override void Before (MethodInfo methodUnderTest)
- {
- if (_textView != null) {
- throw new InvalidOperationException ("After did not run.");
- }
- Application.Init (new FakeDriver (), new FakeMainLoop (() => FakeConsole.ReadKey (true)));
- // 1 2 3
- // 01234567890123456789012345678901=32 (Length)
- var txt = "TAB to jump between text fields.";
- var buff = new byte [txt.Length];
- for (int i = 0; i < txt.Length; i++) {
- buff [i] = (byte)txt [i];
- }
- var ms = new System.IO.MemoryStream (buff).ToArray ();
- _textView = new TextView () { Width = 30, Height = 10 };
- _textView.Text = ms;
- }
- public override void After (MethodInfo methodUnderTest)
- {
- _textView = null;
- Application.Shutdown ();
- }
- }
- [Fact]
- [InitShutdown]
- public void Changing_Selection_Or_CursorPosition_Update_SelectedLength_And_SelectedText ()
- {
- _textView.SelectionStartColumn = 2;
- _textView.SelectionStartRow = 0;
- Assert.Equal (0, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (2, _textView.SelectedLength);
- Assert.Equal ("TA", _textView.SelectedText);
- _textView.CursorPosition = new Point (20, 0);
- Assert.Equal (2, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (18, _textView.SelectedLength);
- Assert.Equal ("B to jump between ", _textView.SelectedText);
- }
- [Fact]
- [InitShutdown]
- public void Selection_With_Value_Less_Than_Zero_Changes_To_Zero ()
- {
- _textView.SelectionStartColumn = -2;
- _textView.SelectionStartRow = -2;
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (0, _textView.SelectedLength);
- Assert.Equal ("", _textView.SelectedText);
- }
- [Fact]
- [InitShutdown]
- public void Selection_With_Value_Greater_Than_Text_Length_Changes_To_Text_Length ()
- {
- _textView.CursorPosition = new Point (2, 0);
- _textView.SelectionStartColumn = 33;
- _textView.SelectionStartRow = 1;
- Assert.Equal (32, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (30, _textView.SelectedLength);
- Assert.Equal ("B to jump between text fields.", _textView.SelectedText);
- }
- [Fact]
- [InitShutdown]
- public void Selection_With_Empty_Text ()
- {
- _textView = new TextView ();
- _textView.CursorPosition = new Point (2, 0);
- _textView.SelectionStartColumn = 33;
- _textView.SelectionStartRow = 1;
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (0, _textView.SelectedLength);
- Assert.Equal ("", _textView.SelectedText);
- }
- [Fact]
- [InitShutdown]
- public void Selection_And_CursorPosition_With_Value_Greater_Than_Text_Length_Changes_Both_To_Text_Length ()
- {
- _textView.CursorPosition = new Point (33, 2);
- _textView.SelectionStartColumn = 33;
- _textView.SelectionStartRow = 33;
- Assert.Equal (32, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (32, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (0, _textView.SelectedLength);
- Assert.Equal ("", _textView.SelectedText);
- }
- [Fact]
- [InitShutdown]
- public void CursorPosition_With_Value_Less_Than_Zero_Changes_To_Zero ()
- {
- _textView.CursorPosition = new Point (-1, -1);
- Assert.Equal (0, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectedLength);
- Assert.Equal ("", _textView.SelectedText);
- }
- [Fact]
- [InitShutdown]
- public void CursorPosition_With_Value_Greater_Than_Text_Length_Changes_To_Text_Length ()
- {
- _textView.CursorPosition = new Point (33, 1);
- Assert.Equal (32, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectedLength);
- Assert.Equal ("", _textView.SelectedText);
- }
- [Fact]
- [InitShutdown]
- public void WordForward_With_No_Selection ()
- {
- _textView.CursorPosition = new Point (0, 0);
- var iteration = 0;
- while (_textView.CursorPosition.X < _textView.Text.Length) {
- _textView.ProcessKey (new KeyEvent (Key.CursorRight | Key.CtrlMask, new KeyModifiers ()));
- switch (iteration) {
- case 0:
- Assert.Equal (4, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (0, _textView.SelectedLength);
- Assert.Equal ("", _textView.SelectedText);
- break;
- case 1:
- Assert.Equal (7, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (0, _textView.SelectedLength);
- Assert.Equal ("", _textView.SelectedText);
- break;
- case 2:
- Assert.Equal (12, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (0, _textView.SelectedLength);
- Assert.Equal ("", _textView.SelectedText);
- break;
- case 3:
- Assert.Equal (20, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (0, _textView.SelectedLength);
- Assert.Equal ("", _textView.SelectedText);
- break;
- case 4:
- Assert.Equal (25, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (0, _textView.SelectedLength);
- Assert.Equal ("", _textView.SelectedText);
- break;
- case 5:
- Assert.Equal (32, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (0, _textView.SelectedLength);
- Assert.Equal ("", _textView.SelectedText);
- break;
- }
- iteration++;
- }
- }
- [Fact]
- [InitShutdown]
- public void WordBackward_With_No_Selection ()
- {
- _textView.CursorPosition = new Point (_textView.Text.Length, 0);
- var iteration = 0;
- while (_textView.CursorPosition.X > 0) {
- _textView.ProcessKey (new KeyEvent (Key.CursorLeft | Key.CtrlMask, new KeyModifiers ()));
- switch (iteration) {
- case 0:
- Assert.Equal (25, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (0, _textView.SelectedLength);
- Assert.Equal ("", _textView.SelectedText);
- break;
- case 1:
- Assert.Equal (20, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (0, _textView.SelectedLength);
- Assert.Equal ("", _textView.SelectedText);
- break;
- case 2:
- Assert.Equal (12, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (0, _textView.SelectedLength);
- Assert.Equal ("", _textView.SelectedText);
- break;
- case 3:
- Assert.Equal (7, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (0, _textView.SelectedLength);
- Assert.Equal ("", _textView.SelectedText);
- break;
- case 4:
- Assert.Equal (4, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (0, _textView.SelectedLength);
- Assert.Equal ("", _textView.SelectedText);
- break;
- case 5:
- Assert.Equal (0, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (0, _textView.SelectedLength);
- Assert.Equal ("", _textView.SelectedText);
- break;
- }
- iteration++;
- }
- }
- [Fact]
- [InitShutdown]
- public void WordForward_With_Selection ()
- {
- _textView.CursorPosition = new Point (0, 0);
- _textView.SelectionStartColumn = 0;
- _textView.SelectionStartRow = 0;
- var iteration = 0;
- while (_textView.CursorPosition.X < _textView.Text.Length) {
- _textView.ProcessKey (new KeyEvent (Key.CursorRight | Key.CtrlMask | Key.ShiftMask, new KeyModifiers ()));
- switch (iteration) {
- case 0:
- Assert.Equal (4, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (4, _textView.SelectedLength);
- Assert.Equal ("TAB ", _textView.SelectedText);
- break;
- case 1:
- Assert.Equal (7, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (7, _textView.SelectedLength);
- Assert.Equal ("TAB to ", _textView.SelectedText);
- break;
- case 2:
- Assert.Equal (12, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (12, _textView.SelectedLength);
- Assert.Equal ("TAB to jump ", _textView.SelectedText);
- break;
- case 3:
- Assert.Equal (20, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (20, _textView.SelectedLength);
- Assert.Equal ("TAB to jump between ", _textView.SelectedText);
- break;
- case 4:
- Assert.Equal (25, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (25, _textView.SelectedLength);
- Assert.Equal ("TAB to jump between text ", _textView.SelectedText);
- break;
- case 5:
- Assert.Equal (32, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (32, _textView.SelectedLength);
- Assert.Equal ("TAB to jump between text fields.", _textView.SelectedText);
- break;
- }
- iteration++;
- }
- }
- [Fact]
- [InitShutdown]
- public void WordBackward_With_Selection ()
- {
- _textView.CursorPosition = new Point (_textView.Text.Length, 0);
- _textView.SelectionStartColumn = _textView.Text.Length;
- _textView.SelectionStartRow = 0;
- var iteration = 0;
- while (_textView.CursorPosition.X > 0) {
- _textView.ProcessKey (new KeyEvent (Key.CursorLeft | Key.CtrlMask | Key.ShiftMask, new KeyModifiers ()));
- switch (iteration) {
- case 0:
- Assert.Equal (25, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (32, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (7, _textView.SelectedLength);
- Assert.Equal ("fields.", _textView.SelectedText);
- break;
- case 1:
- Assert.Equal (20, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (32, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (12, _textView.SelectedLength);
- Assert.Equal ("text fields.", _textView.SelectedText);
- break;
- case 2:
- Assert.Equal (12, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (32, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (20, _textView.SelectedLength);
- Assert.Equal ("between text fields.", _textView.SelectedText);
- break;
- case 3:
- Assert.Equal (7, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (32, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (25, _textView.SelectedLength);
- Assert.Equal ("jump between text fields.", _textView.SelectedText);
- break;
- case 4:
- Assert.Equal (4, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (32, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (28, _textView.SelectedLength);
- Assert.Equal ("to jump between text fields.", _textView.SelectedText);
- break;
- case 5:
- Assert.Equal (0, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (32, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (32, _textView.SelectedLength);
- Assert.Equal ("TAB to jump between text fields.", _textView.SelectedText);
- break;
- }
- iteration++;
- }
- }
- [Fact]
- [InitShutdown]
- public void WordForward_With_The_Same_Values_For_SelectedStart_And_CursorPosition_And_Not_Starting_At_Beginning_Of_The_Text ()
- {
- _textView.CursorPosition = new Point (10, 0);
- _textView.SelectionStartColumn = 10;
- _textView.SelectionStartRow = 0;
- var iteration = 0;
- while (_textView.CursorPosition.X < _textView.Text.Length) {
- _textView.ProcessKey (new KeyEvent (Key.CursorRight | Key.CtrlMask | Key.ShiftMask, new KeyModifiers ()));
- switch (iteration) {
- case 0:
- Assert.Equal (12, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (10, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (2, _textView.SelectedLength);
- Assert.Equal ("p ", _textView.SelectedText);
- break;
- case 1:
- Assert.Equal (20, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (10, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (10, _textView.SelectedLength);
- Assert.Equal ("p between ", _textView.SelectedText);
- break;
- case 2:
- Assert.Equal (25, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (10, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (15, _textView.SelectedLength);
- Assert.Equal ("p between text ", _textView.SelectedText);
- break;
- case 3:
- Assert.Equal (32, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (10, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (22, _textView.SelectedLength);
- Assert.Equal ("p between text fields.", _textView.SelectedText);
- break;
- }
- iteration++;
- }
- }
- [Fact]
- [InitShutdown]
- public void WordBackward_With_The_Same_Values_For_SelectedStart_And_CursorPosition_And_Not_Starting_At_Beginning_Of_The_Text ()
- {
- _textView.CursorPosition = new Point (10, 0);
- _textView.SelectionStartColumn = 10;
- _textView.SelectionStartRow = 0;
- var iteration = 0;
- while (_textView.CursorPosition.X > 0) {
- _textView.ProcessKey (new KeyEvent (Key.CursorLeft | Key.CtrlMask | Key.ShiftMask, new KeyModifiers ()));
- switch (iteration) {
- case 0:
- Assert.Equal (7, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (10, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (3, _textView.SelectedLength);
- Assert.Equal ("jum", _textView.SelectedText);
- break;
- case 1:
- Assert.Equal (4, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (10, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (6, _textView.SelectedLength);
- Assert.Equal ("to jum", _textView.SelectedText);
- break;
- case 2:
- Assert.Equal (0, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (10, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (10, _textView.SelectedLength);
- Assert.Equal ("TAB to jum", _textView.SelectedText);
- break;
- }
- iteration++;
- }
- }
- [Fact]
- [InitShutdown]
- public void WordForward_With_No_Selection_And_With_More_Than_Only_One_Whitespace_And_With_Only_One_Letter ()
- {
- // 1 2 3 4 5
- // 0123456789012345678901234567890123456789012345678901234=55 (Length)
- _textView.Text = "TAB t o jump b etween t ext f ields .";
- _textView.CursorPosition = new Point (0, 0);
- var iteration = 0;
- while (_textView.CursorPosition.X < _textView.Text.Length) {
- _textView.ProcessKey (new KeyEvent (Key.CursorRight | Key.CtrlMask, new KeyModifiers ()));
- switch (iteration) {
- case 0:
- Assert.Equal (6, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (0, _textView.SelectedLength);
- Assert.Equal ("", _textView.SelectedText);
- break;
- case 1:
- Assert.Equal (9, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (0, _textView.SelectedLength);
- Assert.Equal ("", _textView.SelectedText);
- break;
- case 2:
- Assert.Equal (12, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (0, _textView.SelectedLength);
- Assert.Equal ("", _textView.SelectedText);
- break;
- case 3:
- Assert.Equal (25, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (0, _textView.SelectedLength);
- Assert.Equal ("", _textView.SelectedText);
- break;
- case 4:
- Assert.Equal (28, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (0, _textView.SelectedLength);
- Assert.Equal ("", _textView.SelectedText);
- break;
- case 5:
- Assert.Equal (38, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (0, _textView.SelectedLength);
- Assert.Equal ("", _textView.SelectedText);
- break;
- case 6:
- Assert.Equal (40, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (0, _textView.SelectedLength);
- Assert.Equal ("", _textView.SelectedText);
- break;
- case 7:
- Assert.Equal (46, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (0, _textView.SelectedLength);
- Assert.Equal ("", _textView.SelectedText);
- break;
- case 8:
- Assert.Equal (48, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (0, _textView.SelectedLength);
- Assert.Equal ("", _textView.SelectedText);
- break;
- case 9:
- Assert.Equal (54, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (0, _textView.SelectedLength);
- Assert.Equal ("", _textView.SelectedText);
- break;
- case 10:
- Assert.Equal (55, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (0, _textView.SelectedLength);
- Assert.Equal ("", _textView.SelectedText);
- break;
- }
- iteration++;
- }
- }
- [Fact]
- [InitShutdown]
- public void WordBackward_With_No_Selection_And_With_More_Than_Only_One_Whitespace_And_With_Only_One_Letter ()
- {
- // 1 2 3 4 5
- // 0123456789012345678901234567890123456789012345678901234=55 (Length)
- _textView.Text = "TAB t o jump b etween t ext f ields .";
- _textView.CursorPosition = new Point (_textView.Text.Length, 0);
- var iteration = 0;
- while (_textView.CursorPosition.X > 0) {
- _textView.ProcessKey (new KeyEvent (Key.CursorLeft | Key.CtrlMask, new KeyModifiers ()));
- switch (iteration) {
- case 0:
- Assert.Equal (54, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (0, _textView.SelectedLength);
- Assert.Equal ("", _textView.SelectedText);
- break;
- case 1:
- Assert.Equal (48, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (0, _textView.SelectedLength);
- Assert.Equal ("", _textView.SelectedText);
- break;
- case 2:
- Assert.Equal (46, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (0, _textView.SelectedLength);
- Assert.Equal ("", _textView.SelectedText);
- break;
- case 3:
- Assert.Equal (40, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (0, _textView.SelectedLength);
- Assert.Equal ("", _textView.SelectedText);
- break;
- case 4:
- Assert.Equal (38, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (0, _textView.SelectedLength);
- Assert.Equal ("", _textView.SelectedText);
- break;
- case 5:
- Assert.Equal (28, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (0, _textView.SelectedLength);
- Assert.Equal ("", _textView.SelectedText);
- break;
- case 6:
- Assert.Equal (25, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (0, _textView.SelectedLength);
- Assert.Equal ("", _textView.SelectedText);
- break;
- case 7:
- Assert.Equal (12, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (0, _textView.SelectedLength);
- Assert.Equal ("", _textView.SelectedText);
- break;
- case 8:
- Assert.Equal (9, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (0, _textView.SelectedLength);
- Assert.Equal ("", _textView.SelectedText);
- break;
- case 9:
- Assert.Equal (6, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (0, _textView.SelectedLength);
- Assert.Equal ("", _textView.SelectedText);
- break;
- case 10:
- Assert.Equal (0, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (0, _textView.SelectedLength);
- Assert.Equal ("", _textView.SelectedText);
- break;
- }
- iteration++;
- }
- }
- [Fact]
- [InitShutdown]
- public void WordBackward_Multiline_With_Selection ()
- {
- // 4 3 2 1
- // 87654321098765432109876 54321098765432109876543210-Length
- // 1 2 1 2
- // 01234567890123456789012 0123456789012345678901234
- _textView.Text = "This is the first line.\nThis is the second line.";
- _textView.MoveEnd ();
- _textView.SelectionStartColumn = _textView.CurrentColumn;
- _textView.SelectionStartRow = _textView.CurrentRow;
- var iteration = 0;
- bool iterationsFinished = false;
- while (!iterationsFinished) {
- _textView.ProcessKey (new KeyEvent (Key.CursorLeft | Key.CtrlMask | Key.ShiftMask, new KeyModifiers ()));
- switch (iteration) {
- case 0:
- Assert.Equal (19, _textView.CursorPosition.X);
- Assert.Equal (1, _textView.CursorPosition.Y);
- Assert.Equal (24, _textView.SelectionStartColumn);
- Assert.Equal (1, _textView.SelectionStartRow);
- Assert.Equal (5, _textView.SelectedLength);
- Assert.Equal ("line.", _textView.SelectedText);
- break;
- case 1:
- Assert.Equal (12, _textView.CursorPosition.X);
- Assert.Equal (1, _textView.CursorPosition.Y);
- Assert.Equal (24, _textView.SelectionStartColumn);
- Assert.Equal (1, _textView.SelectionStartRow);
- Assert.Equal (12, _textView.SelectedLength);
- Assert.Equal ("second line.", _textView.SelectedText);
- break;
- case 2:
- Assert.Equal (8, _textView.CursorPosition.X);
- Assert.Equal (1, _textView.CursorPosition.Y);
- Assert.Equal (24, _textView.SelectionStartColumn);
- Assert.Equal (1, _textView.SelectionStartRow);
- Assert.Equal (16, _textView.SelectedLength);
- Assert.Equal ("the second line.", _textView.SelectedText);
- break;
- case 3:
- Assert.Equal (5, _textView.CursorPosition.X);
- Assert.Equal (1, _textView.CursorPosition.Y);
- Assert.Equal (24, _textView.SelectionStartColumn);
- Assert.Equal (1, _textView.SelectionStartRow);
- Assert.Equal (19, _textView.SelectedLength);
- Assert.Equal ("is the second line.", _textView.SelectedText);
- break;
- case 4:
- Assert.Equal (0, _textView.CursorPosition.X);
- Assert.Equal (1, _textView.CursorPosition.Y);
- Assert.Equal (24, _textView.SelectionStartColumn);
- Assert.Equal (1, _textView.SelectionStartRow);
- Assert.Equal (24, _textView.SelectedLength);
- Assert.Equal ("This is the second line.", _textView.SelectedText);
- break;
- case 5:
- Assert.Equal (23, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (24, _textView.SelectionStartColumn);
- Assert.Equal (1, _textView.SelectionStartRow);
- Assert.Equal (25, _textView.SelectedLength);
- Assert.Equal ("\nThis is the second line.", _textView.SelectedText);
- break;
- case 6:
- Assert.Equal (18, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (24, _textView.SelectionStartColumn);
- Assert.Equal (1, _textView.SelectionStartRow);
- Assert.Equal (30, _textView.SelectedLength);
- Assert.Equal ("line.\nThis is the second line.", _textView.SelectedText);
- break;
- case 7:
- Assert.Equal (12, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (24, _textView.SelectionStartColumn);
- Assert.Equal (1, _textView.SelectionStartRow);
- Assert.Equal (36, _textView.SelectedLength);
- Assert.Equal ("first line.\nThis is the second line.", _textView.SelectedText);
- break;
- case 8:
- Assert.Equal (8, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (24, _textView.SelectionStartColumn);
- Assert.Equal (1, _textView.SelectionStartRow);
- Assert.Equal (40, _textView.SelectedLength);
- Assert.Equal ("the first line.\nThis is the second line.", _textView.SelectedText);
- break;
- case 9:
- Assert.Equal (5, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (24, _textView.SelectionStartColumn);
- Assert.Equal (1, _textView.SelectionStartRow);
- Assert.Equal (43, _textView.SelectedLength);
- Assert.Equal ("is the first line.\nThis is the second line.", _textView.SelectedText);
- break;
- case 10:
- Assert.Equal (0, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (24, _textView.SelectionStartColumn);
- Assert.Equal (1, _textView.SelectionStartRow);
- Assert.Equal (48, _textView.SelectedLength);
- Assert.Equal ("This is the first line.\nThis is the second line.", _textView.SelectedText);
- break;
- default:
- iterationsFinished = true;
- break;
- }
- iteration++;
- }
- }
- [Fact]
- [InitShutdown]
- public void WordForward_Multiline_With_Selection ()
- {
- // 1 2 3 4
- // 01234567890123456789012 34567890123456789012345678-Length
- // 1 2 1 2
- // 01234567890123456789012 0123456789012345678901234
- _textView.Text = "This is the first line.\nThis is the second line.";
- _textView.SelectionStartColumn = _textView.CurrentColumn;
- _textView.SelectionStartRow = _textView.CurrentRow;
- var iteration = 0;
- bool iterationsFinished = false;
- while (!iterationsFinished) {
- _textView.ProcessKey (new KeyEvent (Key.CursorRight | Key.CtrlMask | Key.ShiftMask, new KeyModifiers ()));
- switch (iteration) {
- case 0:
- Assert.Equal (5, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (5, _textView.SelectedLength);
- Assert.Equal ("This ", _textView.SelectedText);
- break;
- case 1:
- Assert.Equal (8, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (8, _textView.SelectedLength);
- Assert.Equal ("This is ", _textView.SelectedText);
- break;
- case 2:
- Assert.Equal (12, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (12, _textView.SelectedLength);
- Assert.Equal ("This is the ", _textView.SelectedText);
- break;
- case 3:
- Assert.Equal (18, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (18, _textView.SelectedLength);
- Assert.Equal ("This is the first ", _textView.SelectedText);
- break;
- case 4:
- Assert.Equal (23, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (23, _textView.SelectedLength);
- Assert.Equal ("This is the first line.", _textView.SelectedText);
- break;
- case 5:
- Assert.Equal (0, _textView.CursorPosition.X);
- Assert.Equal (1, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (24, _textView.SelectedLength);
- Assert.Equal ("This is the first line.\n", _textView.SelectedText);
- break;
- case 6:
- Assert.Equal (5, _textView.CursorPosition.X);
- Assert.Equal (1, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (29, _textView.SelectedLength);
- Assert.Equal ("This is the first line.\nThis ", _textView.SelectedText);
- break;
- case 7:
- Assert.Equal (8, _textView.CursorPosition.X);
- Assert.Equal (1, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (32, _textView.SelectedLength);
- Assert.Equal ("This is the first line.\nThis is ", _textView.SelectedText);
- break;
- case 8:
- Assert.Equal (12, _textView.CursorPosition.X);
- Assert.Equal (1, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (36, _textView.SelectedLength);
- Assert.Equal ("This is the first line.\nThis is the ", _textView.SelectedText);
- break;
- case 9:
- Assert.Equal (19, _textView.CursorPosition.X);
- Assert.Equal (1, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (43, _textView.SelectedLength);
- Assert.Equal ("This is the first line.\nThis is the second ", _textView.SelectedText);
- break;
- case 10:
- Assert.Equal (24, _textView.CursorPosition.X);
- Assert.Equal (1, _textView.CursorPosition.Y);
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (48, _textView.SelectedLength);
- Assert.Equal ("This is the first line.\nThis is the second line.", _textView.SelectedText);
- break;
- default:
- iterationsFinished = true;
- break;
- }
- iteration++;
- }
- }
- [Fact]
- [InitShutdown]
- public void Kill_To_End_Delete_Forwards_And_Copy_To_The_Clipboard ()
- {
- _textView.Text = "This is the first line.\nThis is the second line.";
- var iteration = 0;
- bool iterationsFinished = false;
- while (!iterationsFinished) {
- _textView.ProcessKey (new KeyEvent (Key.DeleteChar | Key.CtrlMask | Key.ShiftMask, new KeyModifiers ()));
- switch (iteration) {
- case 0:
- Assert.Equal (0, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal ($"{System.Environment.NewLine}This is the second line.", _textView.Text);
- break;
- case 1:
- Assert.Equal (0, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal ("This is the second line.", _textView.Text);
- break;
- case 2:
- Assert.Equal (0, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal ("", _textView.Text);
- _textView.ProcessKey (new KeyEvent (Key.Y | Key.CtrlMask, new KeyModifiers ())); // Paste
- Assert.Equal ("This is the second line.", _textView.Text);
- break;
- default:
- iterationsFinished = true;
- break;
- }
- iteration++;
- }
- }
- [Fact]
- [InitShutdown]
- public void Kill_To_Start_Delete_Backwards_And_Copy_To_The_Clipboard ()
- {
- _textView.Text = "This is the first line.\nThis is the second line.";
- _textView.MoveEnd ();
- var iteration = 0;
- bool iterationsFinished = false;
- while (!iterationsFinished) {
- _textView.ProcessKey (new KeyEvent (Key.K | Key.AltMask, new KeyModifiers ()));
- switch (iteration) {
- case 0:
- Assert.Equal (0, _textView.CursorPosition.X);
- Assert.Equal (1, _textView.CursorPosition.Y);
- Assert.Equal ($"This is the first line.{System.Environment.NewLine}", _textView.Text);
- break;
- case 1:
- Assert.Equal (23, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal ("This is the first line.", _textView.Text);
- break;
- case 2:
- Assert.Equal (0, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal ("", _textView.Text);
- _textView.ProcessKey (new KeyEvent (Key.Y | Key.CtrlMask, new KeyModifiers ())); // Paste
- Assert.Equal ("This is the first line.", _textView.Text);
- break;
- default:
- iterationsFinished = true;
- break;
- }
- iteration++;
- }
- }
- [Fact]
- [InitShutdown]
- public void Kill_Delete_WordForward ()
- {
- _textView.Text = "This is the first line.";
- var iteration = 0;
- bool iterationsFinished = false;
- while (!iterationsFinished) {
- _textView.ProcessKey (new KeyEvent (Key.DeleteChar | Key.CtrlMask, new KeyModifiers ()));
- switch (iteration) {
- case 0:
- Assert.Equal (0, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal ("is the first line.", _textView.Text);
- break;
- case 1:
- Assert.Equal (0, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal ("the first line.", _textView.Text);
- break;
- case 2:
- Assert.Equal (0, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal ("first line.", _textView.Text);
- break;
- case 3:
- Assert.Equal (0, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal ("line.", _textView.Text);
- break;
- case 4:
- Assert.Equal (0, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal ("", _textView.Text);
- break;
- default:
- iterationsFinished = true;
- break;
- }
- iteration++;
- }
- }
- [Fact]
- [InitShutdown]
- public void Kill_Delete_WordBackward ()
- {
- _textView.Text = "This is the first line.";
- _textView.MoveEnd ();
- var iteration = 0;
- bool iterationsFinished = false;
- while (!iterationsFinished) {
- _textView.ProcessKey (new KeyEvent (Key.Backspace | Key.CtrlMask, new KeyModifiers ()));
- switch (iteration) {
- case 0:
- Assert.Equal (18, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal ("This is the first ", _textView.Text);
- break;
- case 1:
- Assert.Equal (12, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal ("This is the ", _textView.Text);
- break;
- case 2:
- Assert.Equal (8, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal ("This is ", _textView.Text);
- break;
- case 3:
- Assert.Equal (5, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal ("This ", _textView.Text);
- break;
- case 4:
- Assert.Equal (0, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal ("", _textView.Text);
- break;
- default:
- iterationsFinished = true;
- break;
- }
- iteration++;
- }
- }
- [Fact]
- [InitShutdown]
- public void Kill_Delete_WordForward_Multiline ()
- {
- _textView.Text = "This is the first line.\nThis is the second line.";
- _textView.Width = 4;
- var iteration = 0;
- bool iterationsFinished = false;
- while (!iterationsFinished) {
- _textView.ProcessKey (new KeyEvent (Key.DeleteChar | Key.CtrlMask, new KeyModifiers ()));
- switch (iteration) {
- case 0:
- Assert.Equal (0, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal ("is the first line." + Environment.NewLine
- + "This is the second line.", _textView.Text);
- break;
- case 1:
- Assert.Equal (0, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal ("the first line." + Environment.NewLine
- + "This is the second line.", _textView.Text);
- break;
- case 2:
- Assert.Equal (0, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal ("first line." + Environment.NewLine
- + "This is the second line.", _textView.Text);
- break;
- case 3:
- Assert.Equal (0, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal ("line." + Environment.NewLine
- + "This is the second line.", _textView.Text);
- break;
- case 4:
- Assert.Equal (0, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal ("" + Environment.NewLine
- + "This is the second line.", _textView.Text);
- break;
- case 5:
- Assert.Equal (0, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal ("This is the second line.", _textView.Text);
- break;
- case 6:
- Assert.Equal (0, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal ("is the second line.", _textView.Text);
- break;
- case 7:
- Assert.Equal (0, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal ("the second line.", _textView.Text);
- break;
- case 8:
- Assert.Equal (0, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal ("second line.", _textView.Text);
- break;
- case 9:
- Assert.Equal (0, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal ("line.", _textView.Text);
- break;
- case 10:
- Assert.Equal (0, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal ("", _textView.Text);
- break;
- default:
- iterationsFinished = true;
- break;
- }
- iteration++;
- }
- }
- [Fact]
- [InitShutdown]
- public void Kill_Delete_WordBackward_Multiline ()
- {
- _textView.Text = "This is the first line.\nThis is the second line.";
- _textView.Width = 4;
- _textView.MoveEnd ();
- var iteration = 0;
- bool iterationsFinished = false;
- while (!iterationsFinished) {
- _textView.ProcessKey (new KeyEvent (Key.Backspace | Key.CtrlMask, new KeyModifiers ()));
- switch (iteration) {
- case 0:
- Assert.Equal (19, _textView.CursorPosition.X);
- Assert.Equal (1, _textView.CursorPosition.Y);
- Assert.Equal ("This is the first line." + Environment.NewLine
- + "This is the second ", _textView.Text);
- break;
- case 1:
- Assert.Equal (12, _textView.CursorPosition.X);
- Assert.Equal (1, _textView.CursorPosition.Y);
- Assert.Equal ("This is the first line." + Environment.NewLine
- + "This is the ", _textView.Text);
- break;
- case 2:
- Assert.Equal (8, _textView.CursorPosition.X);
- Assert.Equal (1, _textView.CursorPosition.Y);
- Assert.Equal ("This is the first line." + Environment.NewLine
- + "This is ", _textView.Text);
- break;
- case 3:
- Assert.Equal (5, _textView.CursorPosition.X);
- Assert.Equal (1, _textView.CursorPosition.Y);
- Assert.Equal ("This is the first line." + Environment.NewLine
- + "This ", _textView.Text);
- break;
- case 4:
- Assert.Equal (0, _textView.CursorPosition.X);
- Assert.Equal (1, _textView.CursorPosition.Y);
- Assert.Equal ("This is the first line." + Environment.NewLine, _textView.Text);
- break;
- case 5:
- Assert.Equal (23, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal ("This is the first line.", _textView.Text);
- break;
- case 6:
- Assert.Equal (18, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal ("This is the first ", _textView.Text);
- break;
- case 7:
- Assert.Equal (12, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal ("This is the ", _textView.Text);
- break;
- case 8:
- Assert.Equal (8, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal ("This is ", _textView.Text);
- break;
- case 9:
- Assert.Equal (5, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal ("This ", _textView.Text);
- break;
- case 10:
- Assert.Equal (0, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal ("", _textView.Text);
- break;
- default:
- iterationsFinished = true;
- break;
- }
- iteration++;
- }
- }
- [Fact]
- [InitShutdown]
- public void Copy_Or_Cut_Null_If_No_Selection ()
- {
- _textView.SelectionStartColumn = 0;
- _textView.SelectionStartRow = 0;
- _textView.ProcessKey (new KeyEvent (Key.C | Key.CtrlMask, new KeyModifiers ())); // Copy
- Assert.Equal ("", _textView.SelectedText);
- _textView.ProcessKey (new KeyEvent (Key.W | Key.CtrlMask, new KeyModifiers ())); // Cut
- Assert.Equal ("", _textView.SelectedText);
- }
- [Fact]
- [InitShutdown]
- public void Copy_Or_Cut_Not_Null_If_Has_Selection ()
- {
- _textView.SelectionStartColumn = 20;
- _textView.SelectionStartRow = 0;
- _textView.CursorPosition = new Point (24, 0);
- _textView.ProcessKey (new KeyEvent (Key.C | Key.CtrlMask, new KeyModifiers ())); // Copy
- Assert.Equal ("text", _textView.SelectedText);
- _textView.ProcessKey (new KeyEvent (Key.W | Key.CtrlMask, new KeyModifiers ())); // Cut
- Assert.Equal ("", _textView.SelectedText);
- }
- [Fact]
- [InitShutdown]
- public void Copy_Or_Cut_And_Paste_With_Selection ()
- {
- _textView.SelectionStartColumn = 20;
- _textView.SelectionStartRow = 0;
- _textView.CursorPosition = new Point (24, 0);
- _textView.ProcessKey (new KeyEvent (Key.C | Key.CtrlMask, new KeyModifiers ())); // Copy
- Assert.Equal ("text", _textView.SelectedText);
- Assert.Equal ("TAB to jump between text fields.", _textView.Text);
- _textView.ProcessKey (new KeyEvent (Key.Y | Key.CtrlMask, new KeyModifiers ())); // Paste
- Assert.Equal ("TAB to jump between text fields.", _textView.Text);
- _textView.SelectionStartColumn = 20;
- _textView.SelectionStartRow = 0;
- _textView.ProcessKey (new KeyEvent (Key.W | Key.CtrlMask, new KeyModifiers ())); // Cut
- _textView.ProcessKey (new KeyEvent (Key.Y | Key.CtrlMask, new KeyModifiers ())); // Paste
- Assert.Equal ("TAB to jump between text fields.", _textView.Text);
- }
- [Fact]
- [InitShutdown]
- public void Copy_Or_Cut_And_Paste_With_No_Selection ()
- {
- _textView.SelectionStartColumn = 20;
- _textView.SelectionStartRow = 0;
- _textView.CursorPosition = new Point (24, 0);
- _textView.ProcessKey (new KeyEvent (Key.C | Key.CtrlMask, new KeyModifiers ())); // Copy
- Assert.Equal ("text", _textView.SelectedText);
- Assert.Equal ("TAB to jump between text fields.", _textView.Text);
- _textView.SelectionStartColumn = 0;
- _textView.SelectionStartRow = 0;
- Assert.True (_textView.Selecting);
- _textView.Selecting = false;
- _textView.ProcessKey (new KeyEvent (Key.Y | Key.CtrlMask, new KeyModifiers ())); // Paste
- Assert.Equal ("TAB to jump between texttext fields.", _textView.Text);
- _textView.SelectionStartColumn = 24;
- _textView.SelectionStartRow = 0;
- _textView.ProcessKey (new KeyEvent (Key.W | Key.CtrlMask, new KeyModifiers ())); // Cut
- Assert.Equal ("", _textView.SelectedText);
- Assert.Equal ("TAB to jump between text fields.", _textView.Text);
- _textView.SelectionStartColumn = 0;
- _textView.SelectionStartRow = 0;
- Assert.True (_textView.Selecting);
- _textView.Selecting = false;
- _textView.ProcessKey (new KeyEvent (Key.Y | Key.CtrlMask, new KeyModifiers ())); // Paste
- Assert.Equal ("TAB to jump between texttext fields.", _textView.Text);
- }
- [Fact]
- [InitShutdown]
- public void Cut_Not_Allowed_If_ReadOnly_Is_True ()
- {
- _textView.ReadOnly = true;
- _textView.SelectionStartColumn = 20;
- _textView.SelectionStartRow = 0;
- _textView.CursorPosition = new Point (24, 0);
- _textView.ProcessKey (new KeyEvent (Key.C | Key.CtrlMask, new KeyModifiers ())); // Copy
- Assert.Equal ("text", _textView.SelectedText);
- _textView.ProcessKey (new KeyEvent (Key.W | Key.CtrlMask, new KeyModifiers ())); // Selecting is set to false after Cut.
- Assert.Equal ("", _textView.SelectedText);
- _textView.ReadOnly = false;
- Assert.False (_textView.Selecting);
- _textView.Selecting = true; // Needed to set Selecting to true.
- _textView.ProcessKey (new KeyEvent (Key.C | Key.CtrlMask, new KeyModifiers ())); // Copy
- Assert.Equal ("text", _textView.SelectedText);
- _textView.ProcessKey (new KeyEvent (Key.W | Key.CtrlMask, new KeyModifiers ())); // Cut
- Assert.Equal ("", _textView.SelectedText);
- }
- [Fact]
- [InitShutdown]
- public void Paste_Always_Clear_The_SelectedText ()
- {
- _textView.SelectionStartColumn = 20;
- _textView.SelectionStartRow = 0;
- _textView.CursorPosition = new Point (24, 0);
- _textView.ProcessKey (new KeyEvent (Key.C | Key.CtrlMask, new KeyModifiers ())); // Copy
- Assert.Equal ("text", _textView.SelectedText);
- _textView.ProcessKey (new KeyEvent (Key.Y | Key.CtrlMask, new KeyModifiers ())); // Paste
- Assert.Equal ("", _textView.SelectedText);
- }
- [Fact]
- [InitShutdown]
- public void TextChanged_Event ()
- {
- _textView.TextChanged += () => {
- if (_textView.Text == "changing") {
- Assert.Equal ("changing", _textView.Text);
- _textView.Text = "changed";
- }
- };
- _textView.Text = "changing";
- Assert.Equal ("changed", _textView.Text);
- }
- [Fact]
- [InitShutdown]
- public void Used_Is_True_By_Default ()
- {
- _textView.CursorPosition = new Point (10, 0);
- Assert.Equal ("TAB to jump between text fields.", _textView.Text);
- _textView.ProcessKey (new KeyEvent ((Key)0x75, new KeyModifiers ())); // u
- Assert.Equal ("TAB to jumup between text fields.", _textView.Text);
- _textView.ProcessKey (new KeyEvent ((Key)0x73, new KeyModifiers ())); // s
- Assert.Equal ("TAB to jumusp between text fields.", _textView.Text);
- _textView.ProcessKey (new KeyEvent ((Key)0x65, new KeyModifiers ())); // e
- Assert.Equal ("TAB to jumusep between text fields.", _textView.Text);
- _textView.ProcessKey (new KeyEvent ((Key)0x64, new KeyModifiers ())); // d
- Assert.Equal ("TAB to jumusedp between text fields.", _textView.Text);
- }
- [Fact]
- [InitShutdown]
- public void Used_Is_False ()
- {
- _textView.Used = false;
- _textView.CursorPosition = new Point (10, 0);
- Assert.Equal ("TAB to jump between text fields.", _textView.Text);
- _textView.ProcessKey (new KeyEvent ((Key)0x75, new KeyModifiers ())); // u
- Assert.Equal ("TAB to jumu between text fields.", _textView.Text);
- _textView.ProcessKey (new KeyEvent ((Key)0x73, new KeyModifiers ())); // s
- Assert.Equal ("TAB to jumusbetween text fields.", _textView.Text);
- _textView.ProcessKey (new KeyEvent ((Key)0x65, new KeyModifiers ())); // e
- Assert.Equal ("TAB to jumuseetween text fields.", _textView.Text);
- _textView.ProcessKey (new KeyEvent ((Key)0x64, new KeyModifiers ())); // d
- Assert.Equal ("TAB to jumusedtween text fields.", _textView.Text);
- }
- [Fact]
- [InitShutdown]
- public void Copy_Without_Selection ()
- {
- _textView.Text = "This is the first line.\nThis is the second line.\n";
- _textView.CursorPosition = new Point (0, _textView.Lines - 1);
- _textView.ProcessKey (new KeyEvent (Key.C | Key.CtrlMask, new KeyModifiers ())); // Copy
- _textView.ProcessKey (new KeyEvent (Key.Y | Key.CtrlMask, new KeyModifiers ())); // Paste
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}{Environment.NewLine}", _textView.Text);
- _textView.CursorPosition = new Point (3, 1);
- _textView.ProcessKey (new KeyEvent (Key.C | Key.CtrlMask, new KeyModifiers ())); // Copy
- _textView.ProcessKey (new KeyEvent (Key.Y | Key.CtrlMask, new KeyModifiers ())); // Paste
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the second line.{Environment.NewLine}{Environment.NewLine}", _textView.Text);
- Assert.Equal (new Point (3, 2), _textView.CursorPosition);
- _textView.ProcessKey (new KeyEvent (Key.Y | Key.CtrlMask, new KeyModifiers ())); // Paste
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the second line.{Environment.NewLine}{Environment.NewLine}", _textView.Text);
- Assert.Equal (new Point (3, 3), _textView.CursorPosition);
- }
- [Fact]
- [InitShutdown]
- public void TabWidth_Setting_To_Zero_Keeps_AllowsTab ()
- {
- Assert.Equal (4, _textView.TabWidth);
- Assert.True (_textView.AllowsTab);
- Assert.True (_textView.AllowsReturn);
- Assert.True (_textView.Multiline);
- _textView.TabWidth = -1;
- Assert.Equal (0, _textView.TabWidth);
- Assert.True (_textView.AllowsTab);
- Assert.True (_textView.AllowsReturn);
- Assert.True (_textView.Multiline);
- _textView.ProcessKey (new KeyEvent (Key.Tab, new KeyModifiers ()));
- Assert.Equal ("\tTAB to jump between text fields.", _textView.Text);
- _textView.ProcessKey (new KeyEvent (Key.BackTab, new KeyModifiers ()));
- Assert.Equal ("TAB to jump between text fields.", _textView.Text);
- }
- [Fact]
- [InitShutdown]
- public void AllowsTab_Setting_To_True_Changes_TabWidth_To_Default_If_It_Is_Zero ()
- {
- _textView.TabWidth = 0;
- Assert.Equal (0, _textView.TabWidth);
- Assert.True (_textView.AllowsTab);
- Assert.True (_textView.AllowsReturn);
- Assert.True (_textView.Multiline);
- _textView.AllowsTab = true;
- Assert.True (_textView.AllowsTab);
- Assert.Equal (4, _textView.TabWidth);
- Assert.True (_textView.AllowsReturn);
- Assert.True (_textView.Multiline);
- }
- [Fact]
- [InitShutdown]
- public void AllowsReturn_Setting_To_True_Changes_Multiline_To_True_If_It_Is_False ()
- {
- Assert.True (_textView.AllowsReturn);
- Assert.True (_textView.Multiline);
- Assert.Equal (4, _textView.TabWidth);
- Assert.True (_textView.AllowsTab);
- _textView.ProcessKey (new KeyEvent (Key.Enter, new KeyModifiers ()));
- Assert.Equal (Environment.NewLine +
- "TAB to jump between text fields.", _textView.Text);
- _textView.AllowsReturn = false;
- Assert.False (_textView.AllowsReturn);
- Assert.False (_textView.Multiline);
- Assert.Equal (0, _textView.TabWidth);
- Assert.False (_textView.AllowsTab);
- _textView.ProcessKey (new KeyEvent (Key.Enter, new KeyModifiers ()));
- Assert.Equal (Environment.NewLine +
- "TAB to jump between text fields.", _textView.Text);
- }
- [Fact]
- [InitShutdown]
- public void Multiline_Setting_Changes_AllowsReturn_And_AllowsTab_And_Height ()
- {
- Assert.True (_textView.Multiline);
- Assert.True (_textView.AllowsReturn);
- Assert.Equal (4, _textView.TabWidth);
- Assert.True (_textView.AllowsTab);
- Assert.Equal ("Dim.Absolute(30)", _textView.Width.ToString ());
- Assert.Equal ("Dim.Absolute(10)", _textView.Height.ToString ());
- _textView.Multiline = false;
- Assert.False (_textView.Multiline);
- Assert.False (_textView.AllowsReturn);
- Assert.Equal (0, _textView.TabWidth);
- Assert.False (_textView.AllowsTab);
- Assert.Equal ("Dim.Absolute(30)", _textView.Width.ToString ());
- Assert.Equal ("Dim.Absolute(1)", _textView.Height.ToString ());
- _textView.Multiline = true;
- Assert.True (_textView.Multiline);
- Assert.True (_textView.AllowsReturn);
- Assert.Equal (4, _textView.TabWidth);
- Assert.True (_textView.AllowsTab);
- Assert.Equal ("Dim.Absolute(30)", _textView.Width.ToString ());
- Assert.Equal ("Dim.Absolute(10)", _textView.Height.ToString ());
- }
- [Fact]
- [InitShutdown]
- public void Tab_Test_Follow_By_BackTab ()
- {
- Application.Top.Add (_textView);
- Application.Iteration += () => {
- var width = _textView.Bounds.Width - 1;
- Assert.Equal (30, width + 1);
- Assert.Equal (10, _textView.Height);
- _textView.Text = "";
- var col = 0;
- var leftCol = 0;
- var tabWidth = _textView.TabWidth;
- while (col < 100) {
- col++;
- _textView.ProcessKey (new KeyEvent (Key.Tab, new KeyModifiers ()));
- Assert.Equal (new Point (col, 0), _textView.CursorPosition);
- leftCol = GetLeftCol (leftCol);
- Assert.Equal (leftCol, _textView.LeftColumn);
- }
- while (col > 0) {
- col--;
- _textView.ProcessKey (new KeyEvent (Key.BackTab, new KeyModifiers ()));
- Assert.Equal (new Point (col, 0), _textView.CursorPosition);
- leftCol = GetLeftCol (leftCol);
- Assert.Equal (leftCol, _textView.LeftColumn);
- }
- Application.Top.Remove (_textView);
- Application.RequestStop ();
- };
- Application.Run ();
- }
- [Fact]
- [InitShutdown]
- public void BackTab_Test_Follow_By_Tab ()
- {
- Application.Top.Add (_textView);
- Application.Iteration += () => {
- var width = _textView.Bounds.Width - 1;
- Assert.Equal (30, width + 1);
- Assert.Equal (10, _textView.Height);
- _textView.Text = "";
- for (int i = 0; i < 100; i++) {
- _textView.Text += "\t";
- }
- var col = 100;
- var tabWidth = _textView.TabWidth;
- var leftCol = _textView.LeftColumn;
- _textView.MoveEnd ();
- Assert.Equal (new Point (col, 0), _textView.CursorPosition);
- leftCol = GetLeftCol (leftCol);
- Assert.Equal (leftCol, _textView.LeftColumn);
- while (col > 0) {
- col--;
- _textView.ProcessKey (new KeyEvent (Key.BackTab, new KeyModifiers ()));
- Assert.Equal (new Point (col, 0), _textView.CursorPosition);
- leftCol = GetLeftCol (leftCol);
- Assert.Equal (leftCol, _textView.LeftColumn);
- }
- while (col < 100) {
- col++;
- _textView.ProcessKey (new KeyEvent (Key.Tab, new KeyModifiers ()));
- Assert.Equal (new Point (col, 0), _textView.CursorPosition);
- leftCol = GetLeftCol (leftCol);
- Assert.Equal (leftCol, _textView.LeftColumn);
- }
- Application.Top.Remove (_textView);
- Application.RequestStop ();
- };
- Application.Run ();
- }
- [Fact]
- [InitShutdown]
- public void Tab_Test_Follow_By_CursorLeft_And_Then_Follow_By_CursorRight ()
- {
- Application.Top.Add (_textView);
- Application.Iteration += () => {
- var width = _textView.Bounds.Width - 1;
- Assert.Equal (30, width + 1);
- Assert.Equal (10, _textView.Height);
- _textView.Text = "";
- var col = 0;
- var leftCol = 0;
- var tabWidth = _textView.TabWidth;
- while (col < 100) {
- col++;
- _textView.ProcessKey (new KeyEvent (Key.Tab, new KeyModifiers ()));
- Assert.Equal (new Point (col, 0), _textView.CursorPosition);
- leftCol = GetLeftCol (leftCol);
- Assert.Equal (leftCol, _textView.LeftColumn);
- }
- while (col > 0) {
- col--;
- _textView.ProcessKey (new KeyEvent (Key.CursorLeft, new KeyModifiers ()));
- Assert.Equal (new Point (col, 0), _textView.CursorPosition);
- leftCol = GetLeftCol (leftCol);
- Assert.Equal (leftCol, _textView.LeftColumn);
- }
- while (col < 100) {
- col++;
- _textView.ProcessKey (new KeyEvent (Key.CursorRight, new KeyModifiers ()));
- Assert.Equal (new Point (col, 0), _textView.CursorPosition);
- leftCol = GetLeftCol (leftCol);
- Assert.Equal (leftCol, _textView.LeftColumn);
- }
- Application.Top.Remove (_textView);
- Application.RequestStop ();
- };
- Application.Run ();
- }
- [Fact]
- [InitShutdown]
- public void Tab_Test_Follow_By_BackTab_With_Text ()
- {
- Application.Top.Add (_textView);
- Application.Iteration += () => {
- var width = _textView.Bounds.Width - 1;
- Assert.Equal (30, width + 1);
- Assert.Equal (10, _textView.Height);
- var col = 0;
- var leftCol = 0;
- Assert.Equal (new Point (col, 0), _textView.CursorPosition);
- Assert.Equal (leftCol, _textView.LeftColumn);
- while (col < 100) {
- col++;
- _textView.ProcessKey (new KeyEvent (Key.Tab, new KeyModifiers ()));
- Assert.Equal (new Point (col, 0), _textView.CursorPosition);
- leftCol = GetLeftCol (leftCol);
- Assert.Equal (leftCol, _textView.LeftColumn);
- }
- while (col > 0) {
- col--;
- _textView.ProcessKey (new KeyEvent (Key.BackTab, new KeyModifiers ()));
- Assert.Equal (new Point (col, 0), _textView.CursorPosition);
- leftCol = GetLeftCol (leftCol);
- Assert.Equal (leftCol, _textView.LeftColumn);
- }
- Application.Top.Remove (_textView);
- Application.RequestStop ();
- };
- Application.Run ();
- }
- [Fact]
- [InitShutdown]
- public void Tab_Test_Follow_By_Home_And_Then_Follow_By_End_And_Then_Follow_By_BackTab_With_Text ()
- {
- Application.Top.Add (_textView);
- Application.Iteration += () => {
- var width = _textView.Bounds.Width - 1;
- Assert.Equal (30, width + 1);
- Assert.Equal (10, _textView.Height);
- var col = 0;
- var leftCol = 0;
- Assert.Equal (new Point (col, 0), _textView.CursorPosition);
- Assert.Equal (leftCol, _textView.LeftColumn);
- Assert.Equal ("TAB to jump between text fields.", _textView.Text);
- Assert.Equal (32, _textView.Text.Length);
- while (col < 100) {
- col++;
- _textView.ProcessKey (new KeyEvent (Key.Tab, new KeyModifiers ()));
- Assert.Equal (new Point (col, 0), _textView.CursorPosition);
- leftCol = GetLeftCol (leftCol);
- Assert.Equal (leftCol, _textView.LeftColumn);
- }
- _textView.ProcessKey (new KeyEvent (Key.Home, new KeyModifiers ()));
- col = 0;
- Assert.Equal (new Point (col, 0), _textView.CursorPosition);
- leftCol = 0;
- Assert.Equal (leftCol, _textView.LeftColumn);
- _textView.ProcessKey (new KeyEvent (Key.End, new KeyModifiers ()));
- col = _textView.Text.Length;
- Assert.Equal (132, _textView.Text.Length);
- Assert.Equal (new Point (col, 0), _textView.CursorPosition);
- leftCol = GetLeftCol (leftCol);
- Assert.Equal (leftCol, _textView.LeftColumn);
- var txt = _textView.Text;
- while (col - 1 > 0 && txt [col - 1] != '\t') {
- col--;
- }
- _textView.CursorPosition = new Point (col, 0);
- leftCol = GetLeftCol (leftCol);
- while (col > 0) {
- col--;
- _textView.ProcessKey (new KeyEvent (Key.BackTab, new KeyModifiers ()));
- Assert.Equal (new Point (col, 0), _textView.CursorPosition);
- leftCol = GetLeftCol (leftCol);
- Assert.Equal (leftCol, _textView.LeftColumn);
- }
- Assert.Equal ("TAB to jump between text fields.", _textView.Text);
- Assert.Equal (32, _textView.Text.Length);
- Application.Top.Remove (_textView);
- Application.RequestStop ();
- };
- Application.Run ();
- }
- [Fact]
- [InitShutdown]
- public void Tab_Test_Follow_By_CursorLeft_And_Then_Follow_By_CursorRight_With_Text ()
- {
- Application.Top.Add (_textView);
- Application.Iteration += () => {
- var width = _textView.Bounds.Width - 1;
- Assert.Equal (30, width + 1);
- Assert.Equal (10, _textView.Height);
- Assert.Equal ("TAB to jump between text fields.", _textView.Text);
- var col = 0;
- var leftCol = 0;
- var tabWidth = _textView.TabWidth;
- while (col < 100) {
- col++;
- _textView.ProcessKey (new KeyEvent (Key.Tab, new KeyModifiers ()));
- Assert.Equal (new Point (col, 0), _textView.CursorPosition);
- leftCol = GetLeftCol (leftCol);
- Assert.Equal (leftCol, _textView.LeftColumn);
- }
- Assert.Equal (132, _textView.Text.Length);
- while (col > 0) {
- col--;
- _textView.ProcessKey (new KeyEvent (Key.CursorLeft, new KeyModifiers ()));
- Assert.Equal (new Point (col, 0), _textView.CursorPosition);
- leftCol = GetLeftCol (leftCol);
- Assert.Equal (leftCol, _textView.LeftColumn);
- }
- while (col < 100) {
- col++;
- _textView.ProcessKey (new KeyEvent (Key.CursorRight, new KeyModifiers ()));
- Assert.Equal (new Point (col, 0), _textView.CursorPosition);
- leftCol = GetLeftCol (leftCol);
- Assert.Equal (leftCol, _textView.LeftColumn);
- }
- Application.Top.Remove (_textView);
- Application.RequestStop ();
- };
- Application.Run ();
- }
- [Fact]
- public void TextView_MultiLine_But_Without_Tabs ()
- {
- var view = new TextView ();
- // the default for TextView
- Assert.True (view.Multiline);
- view.AllowsTab = false;
- Assert.False (view.AllowsTab);
- Assert.True (view.Multiline);
- }
- private int GetLeftCol (int start)
- {
- var lines = _textView.Text.Split (Environment.NewLine);
- if (lines == null || lines.Length == 0) {
- return 0;
- }
- if (start == _textView.LeftColumn) {
- return start;
- }
- if (_textView.LeftColumn == _textView.CurrentColumn) {
- return _textView.CurrentColumn;
- }
- var cCol = _textView.CurrentColumn;
- var line = lines [_textView.CurrentRow];
- var lCount = cCol > line.Length - 1 ? line.Length - 1 : cCol;
- var width = _textView.Frame.Width;
- var tabWidth = _textView.TabWidth;
- var sumLength = 0;
- var col = 0;
- for (int i = lCount; i >= 0; i--) {
- var r = line [i];
- sumLength += Rune.ColumnWidth (r);
- if (r == '\t') {
- sumLength += tabWidth + 1;
- }
- if (sumLength > width) {
- if (col + width == cCol) {
- col++;
- }
- break;
- } else if ((cCol < line.Length && col > 0 && start < cCol && col == start) || (cCol - col == width - 1)) {
- break;
- }
- col = i;
- }
- return col;
- }
- [Fact]
- public void LoadFile_Throws_If_File_Is_Null ()
- {
- var tv = new TextView ();
- Assert.Throws<ArgumentNullException> (() => tv.LoadFile (null));
- }
- [Fact]
- public void LoadFile_Throws_If_File_Is_Empty ()
- {
- var tv = new TextView ();
- Assert.Throws<ArgumentException> (() => tv.LoadFile (""));
- }
- [Fact]
- public void LoadFile_Throws_If_File_Not_Exist ()
- {
- var tv = new TextView ();
- Assert.Throws<System.IO.FileNotFoundException> (() => tv.LoadFile ("blabla"));
- }
- [Fact]
- public void LoadStream_Throws_If_Stream_Is_Null ()
- {
- var tv = new TextView ();
- Assert.Throws<ArgumentNullException> (() => tv.LoadStream (null));
- }
- [Fact]
- public void LoadStream_Stream_Is_Empty ()
- {
- var tv = new TextView ();
- tv.LoadStream (new System.IO.MemoryStream ());
- Assert.Equal ("", tv.Text);
- }
- [Fact]
- public void LoadStream_CRLF ()
- {
- var text = "This is the first line.\r\nThis is the second line.\r\n";
- var tv = new TextView ();
- tv.LoadStream (new System.IO.MemoryStream (System.Text.Encoding.ASCII.GetBytes (text)));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}", tv.Text);
- }
- [Fact]
- public void LoadStream_LF ()
- {
- var text = "This is the first line.\nThis is the second line.\n";
- var tv = new TextView ();
- tv.LoadStream (new System.IO.MemoryStream (System.Text.Encoding.ASCII.GetBytes (text)));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}", tv.Text);
- }
- [Fact]
- public void StringToRunes_Slipts_CRLF ()
- {
- var text = "This is the first line.\r\nThis is the second line.\r\n";
- var tv = new TextView ();
- tv.Text = text;
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}", tv.Text);
- }
- [Fact]
- public void StringToRunes_Slipts_LF ()
- {
- var text = "This is the first line.\nThis is the second line.\n";
- var tv = new TextView ();
- tv.Text = text;
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}", tv.Text);
- }
- [Fact]
- public void CloseFile_Throws_If_FilePath_Is_Null ()
- {
- var tv = new TextView ();
- Assert.Throws<ArgumentNullException> (() => tv.CloseFile ());
- }
- [Fact]
- public void WordWrap_Gets_Sets ()
- {
- var tv = new TextView () { WordWrap = true };
- Assert.True (tv.WordWrap);
- tv.WordWrap = false;
- Assert.False (tv.WordWrap);
- }
- [Fact]
- public void WordWrap_True_Text_Always_Returns_Unwrapped ()
- {
- var text = "This is the first line.\nThis is the second line.\n";
- var tv = new TextView () { Width = 10 };
- tv.Text = text;
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}", tv.Text);
- tv.WordWrap = true;
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}", tv.Text);
- }
- [Fact]
- [InitShutdown]
- public void WordWrap_WrapModel_Output ()
- {
- // 0123456789
- var text = "This is the first line.\nThis is the second line.\n";
- var tv = new TextView () { Width = 10, Height = 10 };
- tv.Text = text;
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}", tv.Text);
- tv.WordWrap = true;
- Application.Top.Add (tv);
- tv.Redraw (tv.Bounds);
- string expected = @"
- This is
- the
- first
- line.
- This is
- the
- second
- line.
- ";
- GraphViewTests.AssertDriverContentsAre (expected, output);
- }
- [Fact]
- public void Internal_Tests ()
- {
- var txt = "This is a text.";
- var txtRunes = TextModel.ToRunes (txt);
- Assert.Equal (txt.Length, txtRunes.Count);
- Assert.Equal ('T', txtRunes [0]);
- Assert.Equal ('h', txtRunes [1]);
- Assert.Equal ('i', txtRunes [2]);
- Assert.Equal ('s', txtRunes [3]);
- Assert.Equal (' ', txtRunes [4]);
- Assert.Equal ('i', txtRunes [5]);
- Assert.Equal ('s', txtRunes [6]);
- Assert.Equal (' ', txtRunes [7]);
- Assert.Equal ('a', txtRunes [8]);
- Assert.Equal (' ', txtRunes [9]);
- Assert.Equal ('t', txtRunes [10]);
- Assert.Equal ('e', txtRunes [11]);
- Assert.Equal ('x', txtRunes [12]);
- Assert.Equal ('t', txtRunes [13]);
- Assert.Equal ('.', txtRunes [^1]);
- int col = 0;
- Assert.True (TextModel.SetCol (ref col, 80, 79));
- Assert.False (TextModel.SetCol (ref col, 80, 80));
- Assert.Equal (79, col);
- var start = 0;
- var x = 8;
- Assert.Equal (8, TextModel.GetColFromX (txtRunes, start, x));
- Assert.Equal ('a', txtRunes [start + x]);
- start = 1;
- x = 7;
- Assert.Equal (7, TextModel.GetColFromX (txtRunes, start, x));
- Assert.Equal ('a', txtRunes [start + x]);
- Assert.Equal ((15, 15), TextModel.DisplaySize (txtRunes));
- Assert.Equal ((6, 6), TextModel.DisplaySize (txtRunes, 1, 7));
- Assert.Equal (0, TextModel.CalculateLeftColumn (txtRunes, 0, 7, 8));
- Assert.Equal (1, TextModel.CalculateLeftColumn (txtRunes, 0, 8, 8));
- Assert.Equal (2, TextModel.CalculateLeftColumn (txtRunes, 0, 9, 8));
- var tm = new TextModel ();
- tm.AddLine (0, TextModel.ToRunes ("This is first line."));
- tm.AddLine (1, TextModel.ToRunes ("This is last line."));
- Assert.Equal ((new Point (2, 0), true), tm.FindNextText ("is", out bool gaveFullTurn));
- Assert.False (gaveFullTurn);
- Assert.Equal ((new Point (5, 0), true), tm.FindNextText ("is", out gaveFullTurn));
- Assert.False (gaveFullTurn);
- Assert.Equal ((new Point (2, 1), true), tm.FindNextText ("is", out gaveFullTurn));
- Assert.False (gaveFullTurn);
- Assert.Equal ((new Point (5, 1), true), tm.FindNextText ("is", out gaveFullTurn));
- Assert.False (gaveFullTurn);
- Assert.Equal ((new Point (2, 0), true), tm.FindNextText ("is", out gaveFullTurn));
- Assert.True (gaveFullTurn);
- tm.ResetContinuousFind (new Point (0, 0));
- Assert.Equal ((new Point (5, 1), true), tm.FindPreviousText ("is", out gaveFullTurn));
- Assert.False (gaveFullTurn);
- Assert.Equal ((new Point (2, 1), true), tm.FindPreviousText ("is", out gaveFullTurn));
- Assert.False (gaveFullTurn);
- Assert.Equal ((new Point (5, 0), true), tm.FindPreviousText ("is", out gaveFullTurn));
- Assert.False (gaveFullTurn);
- Assert.Equal ((new Point (2, 0), true), tm.FindPreviousText ("is", out gaveFullTurn));
- Assert.False (gaveFullTurn);
- Assert.Equal ((new Point (5, 1), true), tm.FindPreviousText ("is", out gaveFullTurn));
- Assert.True (gaveFullTurn);
- Assert.Equal ((new Point (9, 1), true), tm.ReplaceAllText ("is", false, false, "really"));
- Assert.Equal (TextModel.ToRunes ("Threally really first line."), tm.GetLine (0));
- Assert.Equal (TextModel.ToRunes ("Threally really last line."), tm.GetLine (1));
- tm = new TextModel ();
- tm.AddLine (0, TextModel.ToRunes ("This is first line."));
- tm.AddLine (1, TextModel.ToRunes ("This is last line."));
- Assert.Equal ((new Point (5, 1), true), tm.ReplaceAllText ("is", false, true, "really"));
- Assert.Equal (TextModel.ToRunes ("This really first line."), tm.GetLine (0));
- Assert.Equal (TextModel.ToRunes ("This really last line."), tm.GetLine (1));
- }
- [Fact]
- [InitShutdown]
- public void BottomOffset_Sets_To_Zero_Adjust_TopRow ()
- {
- string text = "";
- for (int i = 0; i < 12; i++) {
- text += $"This is the line {i}\n";
- }
- var tv = new TextView () { Width = 10, Height = 10, BottomOffset = 1 };
- tv.Text = text;
- tv.ProcessKey (new KeyEvent (Key.CtrlMask | Key.End, null));
- Assert.Equal (4, tv.TopRow);
- Assert.Equal (1, tv.BottomOffset);
- tv.BottomOffset = 0;
- Assert.Equal (3, tv.TopRow);
- Assert.Equal (0, tv.BottomOffset);
- tv.BottomOffset = 2;
- Assert.Equal (5, tv.TopRow);
- Assert.Equal (2, tv.BottomOffset);
- tv.BottomOffset = 0;
- Assert.Equal (3, tv.TopRow);
- Assert.Equal (0, tv.BottomOffset);
- }
- [Fact]
- [InitShutdown]
- public void RightOffset_Sets_To_Zero_Adjust_leftColumn ()
- {
- string text = "";
- for (int i = 0; i < 12; i++) {
- text += $"{i.ToString () [^1]}";
- }
- var tv = new TextView () { Width = 10, Height = 10, RightOffset = 1 };
- tv.Text = text;
- tv.ProcessKey (new KeyEvent (Key.End, null));
- Assert.Equal (4, tv.LeftColumn);
- Assert.Equal (1, tv.RightOffset);
- tv.RightOffset = 0;
- Assert.Equal (3, tv.LeftColumn);
- Assert.Equal (0, tv.RightOffset);
- tv.RightOffset = 2;
- Assert.Equal (5, tv.LeftColumn);
- Assert.Equal (2, tv.RightOffset);
- tv.RightOffset = 0;
- Assert.Equal (3, tv.LeftColumn);
- Assert.Equal (0, tv.RightOffset);
- }
- [Fact]
- [InitShutdown]
- public void TextView_SpaceHandling ()
- {
- var tv = new TextView () {
- Width = 10,
- Text = " "
- };
- MouseEvent ev = new MouseEvent () {
- X = 0,
- Y = 0,
- Flags = MouseFlags.Button1DoubleClicked,
- };
- tv.MouseEvent (ev);
- Assert.Equal (1, tv.SelectedLength);
- ev = new MouseEvent () {
- X = 1,
- Y = 0,
- Flags = MouseFlags.Button1DoubleClicked,
- };
- tv.MouseEvent (ev);
- Assert.Equal (1, tv.SelectedLength);
- }
- [Fact]
- [InitShutdown]
- public void CanFocus_False_Wont_Focus_With_Mouse ()
- {
- var top = Application.Top;
- var tv = new TextView () {
- Width = Dim.Fill (),
- CanFocus = false,
- ReadOnly = true,
- Text = "some text"
- };
- var fv = new FrameView ("I shouldn't get focus") {
- Width = Dim.Fill (),
- Height = Dim.Fill (),
- CanFocus = false,
- };
- fv.Add (tv);
- top.Add (fv);
- Application.Begin (top);
- Assert.False (tv.CanFocus);
- Assert.False (tv.HasFocus);
- Assert.False (fv.CanFocus);
- Assert.False (fv.HasFocus);
- tv.MouseEvent (new MouseEvent () {
- X = 1,
- Y = 0,
- Flags = MouseFlags.Button1DoubleClicked
- });
- Assert.Empty (tv.SelectedText);
- Assert.False (tv.CanFocus);
- Assert.False (tv.HasFocus);
- Assert.False (fv.CanFocus);
- Assert.False (fv.HasFocus);
- Assert.Throws<InvalidOperationException> (() => tv.CanFocus = true);
- fv.CanFocus = true;
- tv.CanFocus = true;
- tv.MouseEvent (new MouseEvent () {
- X = 1,
- Y = 0,
- Flags = MouseFlags.Button1DoubleClicked
- });
- Assert.Equal ("some ", tv.SelectedText);
- Assert.True (tv.CanFocus);
- Assert.True (tv.HasFocus);
- Assert.True (fv.CanFocus);
- Assert.True (fv.HasFocus);
- fv.CanFocus = false;
- tv.MouseEvent (new MouseEvent () {
- X = 1,
- Y = 0,
- Flags = MouseFlags.Button1DoubleClicked
- });
- Assert.Equal ("some ", tv.SelectedText); // Setting CanFocus to false don't change the SelectedText
- Assert.False (tv.CanFocus);
- Assert.False (tv.HasFocus);
- Assert.False (fv.CanFocus);
- Assert.False (fv.HasFocus);
- }
- [Fact]
- [InitShutdown]
- public void DesiredCursorVisibility_Vertical_Navigation ()
- {
- string text = "";
- for (int i = 0; i < 12; i++) {
- text += $"This is the line {i}\n";
- }
- var tv = new TextView () { Width = 10, Height = 10 };
- tv.Text = text;
- Assert.Equal (0, tv.TopRow);
- tv.PositionCursor ();
- Assert.Equal (CursorVisibility.Default, tv.DesiredCursorVisibility);
- for (int i = 0; i < 12; i++) {
- tv.MouseEvent (new MouseEvent () {
- Flags = MouseFlags.WheeledDown
- });
- tv.PositionCursor ();
- Assert.Equal (i + 1, tv.TopRow);
- Assert.Equal (CursorVisibility.Invisible, tv.DesiredCursorVisibility);
- }
- for (int i = 12; i > 0; i--) {
- tv.MouseEvent (new MouseEvent () {
- Flags = MouseFlags.WheeledUp
- });
- tv.PositionCursor ();
- Assert.Equal (i - 1, tv.TopRow);
- if (i - 1 == 0) {
- Assert.Equal (CursorVisibility.Default, tv.DesiredCursorVisibility);
- } else {
- Assert.Equal (CursorVisibility.Invisible, tv.DesiredCursorVisibility);
- }
- }
- }
- [Fact]
- [InitShutdown]
- public void DesiredCursorVisibility_Horizontal_Navigation ()
- {
- string text = "";
- for (int i = 0; i < 12; i++) {
- text += $"{i.ToString () [^1]}";
- }
- var tv = new TextView () { Width = 10, Height = 10 };
- tv.Text = text;
- Assert.Equal (0, tv.LeftColumn);
- tv.PositionCursor ();
- Assert.Equal (CursorVisibility.Default, tv.DesiredCursorVisibility);
- for (int i = 0; i < 12; i++) {
- tv.MouseEvent (new MouseEvent () {
- Flags = MouseFlags.WheeledRight
- });
- tv.PositionCursor ();
- Assert.Equal (Math.Min (i + 1, 11), tv.LeftColumn);
- Assert.Equal (CursorVisibility.Invisible, tv.DesiredCursorVisibility);
- }
- for (int i = 11; i > 0; i--) {
- tv.MouseEvent (new MouseEvent () {
- Flags = MouseFlags.WheeledLeft
- });
- tv.PositionCursor ();
- Assert.Equal (i - 1, tv.LeftColumn);
- if (i - 1 == 0) {
- Assert.Equal (CursorVisibility.Default, tv.DesiredCursorVisibility);
- } else {
- Assert.Equal (CursorVisibility.Invisible, tv.DesiredCursorVisibility);
- }
- }
- }
- [Fact]
- public void LeftColumn_Add_One_If_Text_Length_Is_Equal_To_Width ()
- {
- var tv = new TextView () {
- Width = 10,
- Text = "1234567890"
- };
- Assert.Equal (Point.Empty, tv.CursorPosition);
- Assert.Equal (0, tv.LeftColumn);
- tv.CursorPosition = new Point (9, 0);
- Assert.Equal (new Point (9, 0), tv.CursorPosition);
- Assert.Equal (0, tv.LeftColumn);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.CursorRight, new KeyModifiers ())));
- tv.CursorPosition = new Point (10, 0);
- Assert.Equal (new Point (10, 0), tv.CursorPosition);
- Assert.Equal (1, tv.LeftColumn);
- }
- }
- }
|