1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Reflection;
- using System.Text.RegularExpressions;
- 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 (24 + Environment.NewLine.Length, _textView.SelectedLength);
- Assert.Equal ($"{Environment.NewLine}This 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 (29 + Environment.NewLine.Length, _textView.SelectedLength);
- Assert.Equal ($"line.{Environment.NewLine}This 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 (35 + Environment.NewLine.Length, _textView.SelectedLength);
- Assert.Equal ($"first line.{Environment.NewLine}This 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 (39 + Environment.NewLine.Length, _textView.SelectedLength);
- Assert.Equal ($"the first line.{Environment.NewLine}This 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 (42 + Environment.NewLine.Length, _textView.SelectedLength);
- Assert.Equal ($"is the first line.{Environment.NewLine}This 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 (47 + Environment.NewLine.Length, _textView.SelectedLength);
- Assert.Equal ($"This is the first line.{Environment.NewLine}This 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 (23 + Environment.NewLine.Length, _textView.SelectedLength);
- Assert.Equal ($"This is the first line.{Environment.NewLine}", _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 (28 + Environment.NewLine.Length, _textView.SelectedLength);
- Assert.Equal ($"This is the first line.{Environment.NewLine}This ", _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 (31 + Environment.NewLine.Length, _textView.SelectedLength);
- Assert.Equal ($"This is the first line.{Environment.NewLine}This 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 (35 + Environment.NewLine.Length, _textView.SelectedLength);
- Assert.Equal ($"This is the first line.{Environment.NewLine}This 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 (42 + Environment.NewLine.Length, _textView.SelectedLength);
- Assert.Equal ($"This is the first line.{Environment.NewLine}This 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 (47 + Environment.NewLine.Length, _textView.SelectedLength);
- Assert.Equal ($"This is the first line.{Environment.NewLine}This 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) {
- switch (iteration) {
- case 0:
- _textView.ProcessKey (new KeyEvent (Key.K | Key.CtrlMask, new KeyModifiers ()));
- Assert.Equal (0, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal ($"{Environment.NewLine}This is the second line.", _textView.Text);
- Assert.Equal ("This is the first line.", Clipboard.Contents);
- break;
- case 1:
- _textView.ProcessKey (new KeyEvent (Key.DeleteChar | Key.CtrlMask | Key.ShiftMask, new KeyModifiers ()));
- Assert.Equal (0, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal ("This is the second line.", _textView.Text);
- Assert.Equal ($"This is the first line.{Environment.NewLine}", Clipboard.Contents);
- break;
- case 2:
- _textView.ProcessKey (new KeyEvent (Key.K | Key.CtrlMask, new KeyModifiers ()));
- Assert.Equal (0, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal ("", _textView.Text);
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.", Clipboard.Contents);
- // Paste
- _textView.ProcessKey (new KeyEvent (Key.Y | Key.CtrlMask, new KeyModifiers ()));
- Assert.Equal ($"This is the first line.{Environment.NewLine}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) {
- switch (iteration) {
- case 0:
- _textView.ProcessKey (new KeyEvent (Key.K | Key.AltMask, new KeyModifiers ()));
- Assert.Equal (0, _textView.CursorPosition.X);
- Assert.Equal (1, _textView.CursorPosition.Y);
- Assert.Equal ($"This is the first line.{Environment.NewLine}", _textView.Text);
- Assert.Equal ($"This is the second line.", Clipboard.Contents);
- break;
- case 1:
- _textView.ProcessKey (new KeyEvent (Key.Backspace | Key.CtrlMask | Key.ShiftMask, new KeyModifiers ()));
- Assert.Equal (23, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal ("This is the first line.", _textView.Text);
- Assert.Equal ($"This is the second line.{Environment.NewLine}", Clipboard.Contents);
- break;
- case 2:
- _textView.ProcessKey (new KeyEvent (Key.K | Key.AltMask, new KeyModifiers ()));
- Assert.Equal (0, _textView.CursorPosition.X);
- Assert.Equal (0, _textView.CursorPosition.Y);
- Assert.Equal ("", _textView.Text);
- Assert.Equal ($"This is the second line.{Environment.NewLine}This is the first line.", Clipboard.Contents);
- // Paste inverted
- _textView.ProcessKey (new KeyEvent (Key.Y | Key.CtrlMask, new KeyModifiers ()));
- Assert.Equal ($"This is the second line.{Environment.NewLine}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.Equal (new Point (24, 0), _textView.CursorPosition);
- Assert.True (_textView.Selecting);
- _textView.Selecting = false;
- _textView.ProcessKey (new KeyEvent (Key.Y | Key.CtrlMask, new KeyModifiers ())); // Paste
- Assert.Equal (new Point (28, 0), _textView.CursorPosition);
- Assert.False (_textView.Selecting);
- 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 (new Point (24, 0), _textView.CursorPosition);
- Assert.False (_textView.Selecting);
- Assert.Equal ("", _textView.SelectedText);
- Assert.Equal ("TAB to jump between text fields.", _textView.Text);
- _textView.SelectionStartColumn = 0;
- _textView.SelectionStartRow = 0;
- _textView.Selecting = false;
- _textView.ProcessKey (new KeyEvent (Key.Y | Key.CtrlMask, new KeyModifiers ())); // Paste
- Assert.Equal (new Point (28, 0), _textView.CursorPosition);
- Assert.False (_textView.Selecting);
- 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 | Key.ShiftMask, 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_AllowsTab_Height_WordWrap ()
- {
- 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 ());
- Assert.False (_textView.WordWrap);
- _textView.WordWrap = true;
- Assert.True (_textView.WordWrap);
- _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 ());
- Assert.False (_textView.WordWrap);
- _textView.WordWrap = true;
- Assert.False (_textView.WordWrap);
- _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 ());
- Assert.False (_textView.WordWrap);
- }
- [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 | Key.ShiftMask, 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 | Key.ShiftMask, 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 | Key.ShiftMask, 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 | Key.ShiftMask, 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 result = false;
- var tv = new TextView ();
- Assert.Throws<ArgumentNullException> (() => result = tv.LoadFile (null));
- Assert.False (result);
- }
- [Fact]
- public void LoadFile_Throws_If_File_Is_Empty ()
- {
- var result = false;
- var tv = new TextView ();
- Assert.Throws<ArgumentException> (() => result = tv.LoadFile (""));
- Assert.False (result);
- }
- [Fact]
- public void LoadFile_Throws_If_File_Not_Exist ()
- {
- var result = false;
- var tv = new TextView ();
- Assert.Throws<System.IO.FileNotFoundException> (() => result = tv.LoadFile ("blabla"));
- Assert.False (result);
- }
- [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);
- GraphViewTests.AssertDriverContentsWithFrameAre (@"
- This is
- the
- first
- line.
- This is
- the
- second
- line.
- ", output);
- }
- [Fact]
- [AutoInitShutdown]
- public void WordWrap_Deleting_Backwards ()
- {
- var tv = new TextView () {
- Width = 5,
- Height = 2,
- WordWrap = true,
- Text = "aaaa"
- };
- Application.Top.Add (tv);
- Application.Begin (Application.Top);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.Equal (0, tv.LeftColumn);
- GraphViewTests.AssertDriverContentsAre (@"
- aaaa
- ", output);
- tv.CursorPosition = new Point (5, 0);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Backspace, new KeyModifiers ())));
- Application.Refresh ();
- Assert.Equal (0, tv.LeftColumn);
- GraphViewTests.AssertDriverContentsAre (@"
- aaa
- ", output);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Backspace, new KeyModifiers ())));
- Application.Refresh ();
- Assert.Equal (0, tv.LeftColumn);
- GraphViewTests.AssertDriverContentsAre (@"
- aa
- ", output);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Backspace, new KeyModifiers ())));
- Application.Refresh ();
- Assert.Equal (0, tv.LeftColumn);
- GraphViewTests.AssertDriverContentsAre (@"
- a
- ", output);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Backspace, new KeyModifiers ())));
- Application.Refresh ();
- Assert.Equal (0, tv.LeftColumn);
- GraphViewTests.AssertDriverContentsAre (@"
- ", output);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Backspace, new KeyModifiers ())));
- Application.Refresh ();
- Assert.Equal (0, tv.LeftColumn);
- GraphViewTests.AssertDriverContentsAre (@"
- ", output);
- }
- [Fact]
- [InitShutdown]
- public void WordWrap_ReadOnly_CursorPosition_SelectedText_Copy ()
- {
- // 0123456789
- var text = "This is the first line.\nThis is the second line.\n";
- var tv = new TextView () { Width = 11, Height = 9 };
- 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);
- GraphViewTests.AssertDriverContentsWithFrameAre (@"
- This is
- the first
- line.
- This is
- the
- second
- line.
- ", output);
- tv.ReadOnly = true;
- tv.CursorPosition = new Point (6, 2);
- Assert.Equal (new Point (5, 2), tv.CursorPosition);
- tv.Redraw (tv.Bounds);
- GraphViewTests.AssertDriverContentsWithFrameAre (@"
- This is
- the first
- line.
- This is
- the
- second
- line.
- ", output);
- tv.SelectionStartRow = 0;
- tv.SelectionStartColumn = 0;
- Assert.Equal ("This is the first line.", tv.SelectedText);
- tv.Copy ();
- Assert.Equal ("This is the first line.", Clipboard.Contents);
- }
- [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, new KeyModifiers ()));
- 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, new KeyModifiers ()));
- 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);
- }
- [Fact]
- [AutoInitShutdown]
- public void KeyBindings_Command ()
- {
- var text = "This is the first line.\nThis is the second line.\nThis is the third line.";
- var tv = new TextView () {
- Width = 10,
- Height = 2,
- Text = text
- };
- var top = Application.Top;
- top.Add (tv);
- Application.Begin (top);
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (Point.Empty, tv.CursorPosition);
- Assert.False (tv.ReadOnly);
- Assert.True (tv.CanFocus);
- tv.CanFocus = false;
- Assert.True (tv.ProcessKey (new KeyEvent (Key.CursorLeft, new KeyModifiers ())));
- tv.CanFocus = true;
- Assert.False (tv.ProcessKey (new KeyEvent (Key.CursorLeft, new KeyModifiers ())));
- Assert.True (tv.ProcessKey (new KeyEvent (Key.CursorRight, new KeyModifiers ())));
- Assert.Equal (new Point (1, 0), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.End | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal (2, tv.CurrentRow);
- Assert.Equal (23, tv.CurrentColumn);
- Assert.Equal (tv.CurrentColumn, tv.GetCurrentLine ().Count);
- Assert.Equal (new Point (23, 2), tv.CursorPosition);
- Assert.False (tv.ProcessKey (new KeyEvent (Key.CursorRight, new KeyModifiers ())));
- Assert.NotNull (tv.Autocomplete);
- Assert.Empty (tv.Autocomplete.AllSuggestions);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.F, new KeyModifiers ())));
- tv.Redraw (tv.Bounds);
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.F", tv.Text);
- Assert.Equal (new Point (24, 2), tv.CursorPosition);
- Assert.Empty (tv.Autocomplete.Suggestions);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- tv.Redraw (tv.Bounds);
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (new Point (23, 2), tv.CursorPosition);
- Assert.Empty (tv.Autocomplete.Suggestions);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- tv.Redraw (tv.Bounds);
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.F", tv.Text);
- Assert.Equal (new Point (24, 2), tv.CursorPosition);
- Assert.Empty (tv.Autocomplete.Suggestions);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Backspace, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (new Point (23, 2), tv.CursorPosition);
- tv.Autocomplete.AllSuggestions = Regex.Matches (tv.Text.ToString (), "\\w+")
- .Select (s => s.Value)
- .Distinct ().ToList ();
- Assert.Equal (7, tv.Autocomplete.AllSuggestions.Count);
- Assert.Equal ("This", tv.Autocomplete.AllSuggestions [0]);
- Assert.Equal ("is", tv.Autocomplete.AllSuggestions [1]);
- Assert.Equal ("the", tv.Autocomplete.AllSuggestions [2]);
- Assert.Equal ("first", tv.Autocomplete.AllSuggestions [3]);
- Assert.Equal ("line", tv.Autocomplete.AllSuggestions [4]);
- Assert.Equal ("second", tv.Autocomplete.AllSuggestions [5]);
- Assert.Equal ("third", tv.Autocomplete.AllSuggestions [^1]);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.F, new KeyModifiers ())));
- tv.Redraw (tv.Bounds);
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.F", tv.Text);
- Assert.Equal (new Point (24, 2), tv.CursorPosition);
- Assert.Single (tv.Autocomplete.Suggestions);
- Assert.Equal ("first", tv.Autocomplete.Suggestions [0]);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Enter, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.first", tv.Text);
- Assert.Equal (new Point (28, 2), tv.CursorPosition);
- Assert.Single (tv.Autocomplete.Suggestions);
- Assert.Equal ("first", tv.Autocomplete.Suggestions [0]);
- tv.Autocomplete.AllSuggestions = new List<string> ();
- tv.Autocomplete.ClearSuggestions ();
- Assert.Empty (tv.Autocomplete.AllSuggestions);
- Assert.Empty (tv.Autocomplete.Suggestions);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.PageUp, new KeyModifiers ())));
- Assert.Equal (24, tv.GetCurrentLine ().Count);
- Assert.Equal (new Point (24, 1), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (((int)'V' + Key.AltMask), new KeyModifiers ())));
- Assert.Equal (23, tv.GetCurrentLine ().Count);
- Assert.Equal (new Point (23, 0), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.PageDown, new KeyModifiers ())));
- Assert.Equal (24, tv.GetCurrentLine ().Count);
- Assert.Equal (new Point (23, 1), tv.CursorPosition); // gets the previous length
- Assert.True (tv.ProcessKey (new KeyEvent (Key.V | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal (28, tv.GetCurrentLine ().Count);
- Assert.Equal (new Point (23, 2), tv.CursorPosition); // gets the previous length
- Assert.Equal (0, tv.SelectedLength);
- Assert.Equal ("", tv.SelectedText);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.PageUp | Key.ShiftMask, new KeyModifiers ())));
- Assert.Equal (24, tv.GetCurrentLine ().Count);
- Assert.Equal (new Point (23, 1), tv.CursorPosition); // gets the previous length
- Assert.Equal (24 + Environment.NewLine.Length, tv.SelectedLength);
- Assert.Equal ($".{Environment.NewLine}This is the third line.", tv.SelectedText);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.PageDown | Key.ShiftMask, new KeyModifiers ())));
- Assert.Equal (28, tv.GetCurrentLine ().Count);
- Assert.Equal (new Point (23, 2), tv.CursorPosition); // gets the previous length
- Assert.Equal (0, tv.SelectedLength);
- Assert.Equal ("", tv.SelectedText);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Home | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal (Point.Empty, tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.N | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.Equal ("", tv.SelectedText);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.P | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.Equal ("", tv.SelectedText);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.CursorDown, new KeyModifiers ())));
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.Equal ("", tv.SelectedText);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.CursorUp, new KeyModifiers ())));
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.Equal ("", tv.SelectedText);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.CursorDown | Key.ShiftMask, new KeyModifiers ())));
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- Assert.Equal (23 + Environment.NewLine.Length, tv.SelectedLength);
- Assert.Equal ($"This is the first line.{Environment.NewLine}", tv.SelectedText);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.CursorUp | Key.ShiftMask, new KeyModifiers ())));
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.Equal ("", tv.SelectedText);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.F | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal (new Point (1, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.Equal ("", tv.SelectedText);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.B | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.Equal ("", tv.SelectedText);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.CursorRight, new KeyModifiers ())));
- Assert.Equal (new Point (1, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.Equal ("", tv.SelectedText);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.CursorLeft, new KeyModifiers ())));
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.Equal ("", tv.SelectedText);
- Assert.False (tv.Selecting);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.CursorRight | Key.ShiftMask, new KeyModifiers ())));
- Assert.Equal (new Point (1, 0), tv.CursorPosition);
- Assert.Equal (1, tv.SelectedLength);
- Assert.Equal ("T", tv.SelectedText);
- Assert.True (tv.Selecting);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.CursorLeft | Key.ShiftMask, new KeyModifiers ())));
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.Equal ("", tv.SelectedText);
- Assert.True (tv.Selecting);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.DeleteChar, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.first", tv.Text);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.Equal ("", tv.SelectedText);
- Assert.False (tv.Selecting);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.DeleteChar, new KeyModifiers ())));
- Assert.Equal ($"his is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.first", tv.Text);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.Equal ("", tv.SelectedText);
- Assert.False (tv.Selecting);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.D | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"is is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.first", tv.Text);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.End, new KeyModifiers ())));
- Assert.Equal ($"is is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.first", tv.Text);
- Assert.Equal (new Point (21, 0), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Delete, new KeyModifiers ())));
- Assert.Equal ($"is is the first line{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.first", tv.Text);
- Assert.Equal (new Point (20, 0), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Backspace, new KeyModifiers ())));
- Assert.Equal ($"is is the first lin{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.first", tv.Text);
- Assert.Equal (new Point (19, 0), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Home, new KeyModifiers ())));
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.Equal ("", tv.SelectedText);
- Assert.False (tv.Selecting);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.End | Key.ShiftMask, new KeyModifiers ())));
- Assert.Equal (new Point (19, 0), tv.CursorPosition);
- Assert.Equal (19, tv.SelectedLength);
- Assert.Equal ("is is the first lin", tv.SelectedText);
- Assert.True (tv.Selecting);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Home | Key.ShiftMask, new KeyModifiers ())));
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.Equal ("", tv.SelectedText);
- Assert.True (tv.Selecting);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.E | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal (new Point (19, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.Equal ("", tv.SelectedText);
- Assert.False (tv.Selecting);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.A | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.Equal ("", tv.SelectedText);
- Assert.False (tv.Selecting);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.K | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.first", tv.Text);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.Equal ("", tv.SelectedText);
- Assert.False (tv.Selecting);
- Assert.Equal ("is is the first lin", Clipboard.Contents);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Y | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"is is the first lin{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.first", tv.Text);
- Assert.Equal (new Point (19, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.Equal ("", tv.SelectedText);
- Assert.False (tv.Selecting);
- Assert.Equal ("is is the first lin", Clipboard.Contents);
- tv.CursorPosition = Point.Empty;
- Assert.True (tv.ProcessKey (new KeyEvent (Key.DeleteChar | Key.CtrlMask | Key.ShiftMask, new KeyModifiers ())));
- Assert.Equal ($"{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.first", tv.Text);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.Equal ("", tv.SelectedText);
- Assert.False (tv.Selecting);
- Assert.Equal ("is is the first lin", Clipboard.Contents);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Y | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"is is the first lin{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.first", tv.Text);
- Assert.Equal (new Point (19, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.Equal ("", tv.SelectedText);
- Assert.False (tv.Selecting);
- Assert.Equal ("is is the first lin", Clipboard.Contents);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.K | Key.AltMask, new KeyModifiers ())));
- Assert.Equal ($"{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.first", tv.Text);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.Equal ("", tv.SelectedText);
- Assert.False (tv.Selecting);
- tv.ReadOnly = true;
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Y | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.first", tv.Text);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.Equal ("", tv.SelectedText);
- Assert.False (tv.Selecting);
- tv.ReadOnly = false;
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Y | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"is is the first lin{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.first", tv.Text);
- Assert.Equal (new Point (19, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.Equal ("", tv.SelectedText);
- Assert.False (tv.Selecting);
- Assert.Equal (0, tv.SelectionStartColumn);
- Assert.Equal (0, tv.SelectionStartRow);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Space | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"is is the first lin{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.first", tv.Text);
- Assert.Equal (new Point (19, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.Equal ("", tv.SelectedText);
- Assert.True (tv.Selecting);
- Assert.Equal (19, tv.SelectionStartColumn);
- Assert.Equal (0, tv.SelectionStartRow);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Space | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"is is the first lin{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.first", tv.Text);
- Assert.Equal (new Point (19, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.Equal ("", tv.SelectedText);
- Assert.False (tv.Selecting);
- Assert.Equal (19, tv.SelectionStartColumn);
- Assert.Equal (0, tv.SelectionStartRow);
- tv.SelectionStartColumn = 0;
- Assert.True (tv.ProcessKey (new KeyEvent (((int)'C' + Key.AltMask), new KeyModifiers ())));
- Assert.Equal ($"is is the first lin{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.first", tv.Text);
- Assert.Equal (new Point (19, 0), tv.CursorPosition);
- Assert.Equal (19, tv.SelectedLength);
- Assert.Equal ("is is the first lin", tv.SelectedText);
- Assert.True (tv.Selecting);
- Assert.Equal (0, tv.SelectionStartColumn);
- Assert.Equal (0, tv.SelectionStartRow);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.C | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"is is the first lin{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.first", tv.Text);
- Assert.Equal (new Point (19, 0), tv.CursorPosition);
- Assert.Equal (19, tv.SelectedLength);
- Assert.Equal ("is is the first lin", tv.SelectedText);
- Assert.True (tv.Selecting);
- Assert.Equal (0, tv.SelectionStartColumn);
- Assert.Equal (0, tv.SelectionStartRow);
- Assert.True (tv.ProcessKey (new KeyEvent (((int)'W' + Key.AltMask), new KeyModifiers ())));
- Assert.Equal ($"{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.first", tv.Text);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.Equal ("", tv.SelectedText);
- Assert.False (tv.Selecting);
- Assert.Equal (0, tv.SelectionStartColumn);
- Assert.Equal (0, tv.SelectionStartRow);
- Assert.Equal ("is is the first lin", Clipboard.Contents);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.W | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.first", tv.Text);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.Equal ("", tv.SelectedText);
- Assert.False (tv.Selecting);
- Assert.Equal (0, tv.SelectionStartColumn);
- Assert.Equal (0, tv.SelectionStartRow);
- Assert.Equal ("", Clipboard.Contents);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.X | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.first", tv.Text);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.Equal ("", tv.SelectedText);
- Assert.False (tv.Selecting);
- Assert.Equal (0, tv.SelectionStartColumn);
- Assert.Equal (0, tv.SelectionStartRow);
- Assert.Equal ("", Clipboard.Contents);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.End | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.first", tv.Text);
- Assert.Equal (new Point (28, 2), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.Equal ("", tv.SelectedText);
- Assert.False (tv.Selecting);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.CtrlMask | Key.CursorLeft, new KeyModifiers ())));
- Assert.Equal ($"{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.first", tv.Text);
- Assert.Equal (new Point (18, 2), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.Equal ("", tv.SelectedText);
- Assert.False (tv.Selecting);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.CtrlMask | Key.CursorLeft | Key.ShiftMask, new KeyModifiers ())));
- Assert.Equal ($"{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.first", tv.Text);
- Assert.Equal (new Point (12, 2), tv.CursorPosition);
- Assert.Equal (6, tv.SelectedLength);
- Assert.Equal ("third ", tv.SelectedText);
- Assert.True (tv.Selecting);
- Assert.True (tv.ProcessKey (new KeyEvent ((Key)((int)'B' + Key.AltMask), new KeyModifiers ())));
- Assert.Equal ($"{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.first", tv.Text);
- Assert.Equal (new Point (8, 2), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.Equal ("", tv.SelectedText);
- Assert.False (tv.Selecting);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.CtrlMask | Key.CursorRight, new KeyModifiers ())));
- Assert.Equal ($"{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.first", tv.Text);
- Assert.Equal (new Point (12, 2), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.Equal ("", tv.SelectedText);
- Assert.False (tv.Selecting);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.CtrlMask | Key.CursorRight | Key.ShiftMask, new KeyModifiers ())));
- Assert.Equal ($"{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.first", tv.Text);
- Assert.Equal (new Point (18, 2), tv.CursorPosition);
- Assert.Equal (6, tv.SelectedLength);
- Assert.Equal ("third ", tv.SelectedText);
- Assert.True (tv.Selecting);
- Assert.True (tv.ProcessKey (new KeyEvent ((Key)((int)'F' + Key.AltMask), new KeyModifiers ())));
- Assert.Equal ($"{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.first", tv.Text);
- Assert.Equal (new Point (28, 2), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.Equal ("", tv.SelectedText);
- Assert.False (tv.Selecting);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Home | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.first", tv.Text);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.Equal ("", tv.SelectedText);
- Assert.False (tv.Selecting);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.DeleteChar | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the second line.{Environment.NewLine}This is the third line.first", tv.Text);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.Equal ("", tv.SelectedText);
- Assert.False (tv.Selecting); Assert.True (tv.ProcessKey (new KeyEvent (Key.End | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the second line.{Environment.NewLine}This is the third line.first", tv.Text);
- Assert.Equal (new Point (28, 1), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.Equal ("", tv.SelectedText);
- Assert.False (tv.Selecting);
- Assert.False (tv.Selecting); Assert.True (tv.ProcessKey (new KeyEvent (Key.Backspace | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the second line.{Environment.NewLine}This is the third ", tv.Text);
- Assert.Equal (new Point (18, 1), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.Equal ("", tv.SelectedText);
- Assert.False (tv.Selecting);
- Assert.True (tv.AllowsReturn);
- tv.AllowsReturn = false;
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.False (tv.Selecting);
- Assert.False (tv.ProcessKey (new KeyEvent (Key.Enter, new KeyModifiers ())));
- Assert.Equal ($"This is the second line.{Environment.NewLine}This is the third ", tv.Text);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.Equal ("", tv.SelectedText);
- Assert.False (tv.Selecting);
- Assert.False (tv.AllowsReturn);
- tv.AllowsReturn = true;
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Enter, new KeyModifiers ())));
- Assert.Equal ($"{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third ", tv.Text);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.Equal ("", tv.SelectedText);
- Assert.False (tv.Selecting);
- Assert.True (tv.AllowsReturn);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.CtrlMask | Key.End | Key.ShiftMask, new KeyModifiers ())));
- Assert.Equal ($"{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third ", tv.Text);
- Assert.Equal (new Point (18, 2), tv.CursorPosition);
- Assert.Equal (42 + Environment.NewLine.Length, tv.SelectedLength);
- Assert.Equal ($"This is the second line.{Environment.NewLine}This is the third ", tv.SelectedText);
- Assert.True (tv.Selecting);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.CtrlMask | Key.Home | Key.ShiftMask, new KeyModifiers ())));
- Assert.Equal ($"{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third ", tv.Text);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.Equal (Environment.NewLine.Length, tv.SelectedLength);
- Assert.Equal ($"{Environment.NewLine}", tv.SelectedText);
- Assert.True (tv.Selecting);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.T | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third ", tv.Text);
- Assert.Equal (new Point (18, 2), tv.CursorPosition);
- Assert.Equal (42 + Environment.NewLine.Length * 2, tv.SelectedLength);
- Assert.Equal ($"{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third ", tv.SelectedText);
- Assert.True (tv.Selecting);
- Assert.True (tv.Used);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.InsertChar, new KeyModifiers ())));
- Assert.False (tv.Used);
- Assert.True (tv.AllowsTab);
- Assert.Equal (new Point (18, 2), tv.CursorPosition);
- tv.AllowsTab = false;
- Assert.False (tv.ProcessKey (new KeyEvent (Key.Tab, new KeyModifiers ())));
- Assert.Equal ($"{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third ", tv.Text);
- Assert.False (tv.AllowsTab);
- tv.AllowsTab = true;
- Assert.Equal (new Point (18, 2), tv.CursorPosition);
- Assert.True (tv.Selecting);
- tv.Selecting = false;
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Tab, new KeyModifiers ())));
- Assert.Equal ($"{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third \t", tv.Text);
- Assert.True (tv.AllowsTab);
- tv.AllowsTab = false;
- Assert.False (tv.ProcessKey (new KeyEvent (Key.BackTab | Key.ShiftMask, new KeyModifiers ())));
- Assert.Equal ($"{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third \t", tv.Text);
- Assert.False (tv.AllowsTab);
- tv.AllowsTab = true;
- Assert.True (tv.ProcessKey (new KeyEvent (Key.BackTab | Key.ShiftMask, new KeyModifiers ())));
- Assert.Equal ($"{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third ", tv.Text);
- Assert.True (tv.AllowsTab);
- Assert.False (tv.ProcessKey (new KeyEvent (Key.Tab | Key.CtrlMask, new KeyModifiers ())));
- Assert.False (tv.ProcessKey (new KeyEvent (Application.AlternateForwardKey, new KeyModifiers ())));
- Assert.False (tv.ProcessKey (new KeyEvent (Key.Tab | Key.CtrlMask | Key.ShiftMask, new KeyModifiers ())));
- Assert.False (tv.ProcessKey (new KeyEvent (Application.AlternateBackwardKey, new KeyModifiers ())));
- }
- [Fact]
- public void HistoryText_Exceptions ()
- {
- var ht = new HistoryText ();
- foreach (var ls in Enum.GetValues (typeof (HistoryText.LineStatus))) {
- if ((HistoryText.LineStatus)ls != HistoryText.LineStatus.Original) {
- Assert.Throws<ArgumentException> (() => ht.Add (new List<List<Rune>> () { new List<Rune> () }, Point.Empty,
- (HistoryText.LineStatus)ls));
- }
- }
- Assert.Null (Record.Exception (() => ht.Add (new List<List<Rune>> () { new List<Rune> () }, Point.Empty,
- HistoryText.LineStatus.Original)));
- }
- [Fact]
- [AutoInitShutdown]
- public void HistoryText_Undo_Redo_Single_Line_InsertText ()
- {
- var text = "This is the first line.\nThis is the second line.\nThis is the third line.";
- var tv = new TextView () {
- Width = 10,
- Height = 2,
- Text = text
- };
- var top = Application.Top;
- top.Add (tv);
- Application.Begin (top);
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (Point.Empty, tv.CursorPosition);
- var messy = " messy";
- tv.CursorPosition = new Point (7, 1);
- tv.InsertText (messy);
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is messy the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (13, 1), tv.CursorPosition);
- for (int i = 0; i < messy.Length; i++) {
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- }
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (7, 1), tv.CursorPosition);
- for (int i = 0; i < messy.Length; i++) {
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- }
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is messy the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (13, 1), tv.CursorPosition);
- }
- [Fact]
- [AutoInitShutdown]
- public void HistoryText_Undo_Redo_Single_Line_DeleteCharLeft ()
- {
- var text = "This is the first line.\nThis is the second line.\nThis is the third line.";
- var tv = new TextView () {
- Width = 10,
- Height = 2,
- Text = text
- };
- var top = Application.Top;
- top.Add (tv);
- Application.Begin (top);
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (Point.Empty, tv.CursorPosition);
- var ntimes = 3;
- tv.CursorPosition = new Point (7, 1);
- for (int i = 0; i < ntimes; i++) {
- tv.DeleteCharLeft ();
- }
- Assert.Equal ($"This is the first line.{Environment.NewLine}This the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (4, 1), tv.CursorPosition);
- for (int i = 0; i < ntimes; i++) {
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- }
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (7, 1), tv.CursorPosition);
- for (int i = 0; i < ntimes; i++) {
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- }
- Assert.Equal ($"This is the first line.{Environment.NewLine}This the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (4, 1), tv.CursorPosition);
- }
- [Fact]
- [AutoInitShutdown]
- public void HistoryText_Undo_Redo_Single_Line_DeleteCharRight ()
- {
- var text = "This is the first line.\nThis is the second line.\nThis is the third line.";
- var tv = new TextView () {
- Width = 10,
- Height = 2,
- Text = text
- };
- var top = Application.Top;
- top.Add (tv);
- Application.Begin (top);
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (Point.Empty, tv.CursorPosition);
- var ntimes = 3;
- tv.CursorPosition = new Point (7, 1);
- for (int i = 0; i < ntimes; i++) {
- tv.DeleteCharRight ();
- }
- Assert.Equal ($"This is the first line.{Environment.NewLine}This ise second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (7, 1), tv.CursorPosition);
- for (int i = 0; i < ntimes; i++) {
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- }
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (7, 1), tv.CursorPosition);
- for (int i = 0; i < ntimes; i++) {
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- }
- Assert.Equal ($"This is the first line.{Environment.NewLine}This ise second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (7, 1), tv.CursorPosition);
- }
- [Fact]
- [AutoInitShutdown]
- public void HistoryText_Undo_Redo_Single_Line_Selected_InsertText ()
- {
- var text = "This is the first line.\nThis is the second line.\nThis is the third line.";
- var tv = new TextView () {
- Width = 10,
- Height = 2,
- Text = text
- };
- var top = Application.Top;
- top.Add (tv);
- Application.Begin (top);
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (Point.Empty, tv.CursorPosition);
- var messy = " messy";
- tv.CursorPosition = new Point (7, 1);
- tv.SelectionStartColumn = 11;
- tv.SelectionStartRow = 1;
- Assert.Equal (4, tv.SelectedLength);
- tv.InsertText (messy);
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is messy second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (13, 1), tv.CursorPosition);
- Assert.Equal (11, tv.SelectionStartColumn);
- Assert.Equal (1, tv.SelectionStartRow);
- Assert.Equal (0, tv.SelectedLength);
- for (int i = 0; i < messy.Length; i++) {
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- }
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (7, 1), tv.CursorPosition);
- Assert.Equal (11, tv.SelectionStartColumn);
- Assert.Equal (1, tv.SelectionStartRow);
- Assert.Equal (0, tv.SelectedLength);
- for (int i = 0; i < messy.Length; i++) {
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- }
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is messy second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (13, 1), tv.CursorPosition);
- Assert.Equal (11, tv.SelectionStartColumn);
- Assert.Equal (1, tv.SelectionStartRow);
- Assert.Equal (0, tv.SelectedLength);
- }
- [Fact]
- [AutoInitShutdown]
- public void HistoryText_Undo_Redo_Single_Line_Selected_DeleteCharLeft ()
- {
- var text = "This is the first line.\nThis is the second line.\nThis is the third line.";
- var tv = new TextView () {
- Width = 10,
- Height = 2,
- Text = text
- };
- var top = Application.Top;
- top.Add (tv);
- Application.Begin (top);
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (Point.Empty, tv.CursorPosition);
- var ntimes = 3;
- tv.CursorPosition = new Point (7, 1);
- tv.SelectionStartColumn = 11;
- tv.SelectionStartRow = 1;
- Assert.Equal (4, tv.SelectedLength);
- for (int i = 0; i < ntimes; i++) {
- tv.DeleteCharLeft ();
- }
- Assert.Equal ($"This is the first line.{Environment.NewLine}This second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (5, 1), tv.CursorPosition);
- Assert.Equal (11, tv.SelectionStartColumn);
- Assert.Equal (1, tv.SelectionStartRow);
- Assert.Equal (0, tv.SelectedLength);
- for (int i = 0; i < ntimes; i++) {
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- }
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (7, 1), tv.CursorPosition);
- Assert.Equal (11, tv.SelectionStartColumn);
- Assert.Equal (1, tv.SelectionStartRow);
- Assert.Equal (0, tv.SelectedLength);
- for (int i = 0; i < ntimes; i++) {
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- }
- Assert.Equal ($"This is the first line.{Environment.NewLine}This second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (5, 1), tv.CursorPosition);
- Assert.Equal (11, tv.SelectionStartColumn);
- Assert.Equal (1, tv.SelectionStartRow);
- Assert.Equal (0, tv.SelectedLength);
- }
- [Fact]
- [AutoInitShutdown]
- public void HistoryText_Undo_Redo_Single_Line_Selected_DeleteCharRight ()
- {
- var text = "This is the first line.\nThis is the second line.\nThis is the third line.";
- var tv = new TextView () {
- Width = 10,
- Height = 2,
- Text = text
- };
- var top = Application.Top;
- top.Add (tv);
- Application.Begin (top);
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (Point.Empty, tv.CursorPosition);
- var ntimes = 3;
- tv.CursorPosition = new Point (7, 1);
- tv.SelectionStartColumn = 11;
- tv.SelectionStartRow = 1;
- Assert.Equal (4, tv.SelectedLength);
- for (int i = 0; i < ntimes; i++) {
- tv.DeleteCharRight ();
- }
- Assert.Equal ($"This is the first line.{Environment.NewLine}This isecond line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (7, 1), tv.CursorPosition);
- Assert.Equal (11, tv.SelectionStartColumn);
- Assert.Equal (1, tv.SelectionStartRow);
- Assert.Equal (0, tv.SelectedLength);
- for (int i = 0; i < ntimes; i++) {
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- }
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (7, 1), tv.CursorPosition);
- Assert.Equal (11, tv.SelectionStartColumn);
- Assert.Equal (1, tv.SelectionStartRow);
- Assert.Equal (0, tv.SelectedLength);
- for (int i = 0; i < ntimes; i++) {
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- }
- Assert.Equal ($"This is the first line.{Environment.NewLine}This isecond line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (7, 1), tv.CursorPosition);
- Assert.Equal (11, tv.SelectionStartColumn);
- Assert.Equal (1, tv.SelectionStartRow);
- Assert.Equal (0, tv.SelectedLength);
- }
- [Fact]
- [AutoInitShutdown]
- public void HistoryText_Undo_Redo_Multi_Line_InsertText ()
- {
- var text = "This is the first line.\nThis is the second line.\nThis is the third line.";
- var tv = new TextView () {
- Width = 10,
- Height = 2,
- Text = text
- };
- var top = Application.Top;
- top.Add (tv);
- Application.Begin (top);
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (Point.Empty, tv.CursorPosition);
- var messy = " messy";
- tv.CursorPosition = new Point (7, 1);
- tv.InsertText (messy);
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is messy the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (13, 1), tv.CursorPosition);
- tv.CursorPosition = new Point (7, 0);
- tv.InsertText (messy);
- Assert.Equal ($"This is messy the first line.{Environment.NewLine}This is messy the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (13, 0), tv.CursorPosition);
- tv.CursorPosition = new Point (7, 2);
- tv.InsertText (messy);
- Assert.Equal ($"This is messy the first line.{Environment.NewLine}This is messy the second line.{Environment.NewLine}This is messy the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (13, 2), tv.CursorPosition);
- for (int i = 0; i < messy.Length; i++) {
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- }
- Assert.Equal ($"This is messy the first line.{Environment.NewLine}This is messy the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (7, 2), tv.CursorPosition);
- for (int i = 0; i < messy.Length; i++) {
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- }
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is messy the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (7, 0), tv.CursorPosition);
- for (int i = 0; i < messy.Length; i++) {
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- }
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (7, 1), tv.CursorPosition);
- for (int i = 0; i < messy.Length; i++) {
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- }
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is messy the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (13, 1), tv.CursorPosition);
- for (int i = 0; i < messy.Length; i++) {
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- }
- Assert.Equal ($"This is messy the first line.{Environment.NewLine}This is messy the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (13, 0), tv.CursorPosition);
- for (int i = 0; i < messy.Length; i++) {
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- }
- Assert.Equal ($"This is messy the first line.{Environment.NewLine}This is messy the second line.{Environment.NewLine}This is messy the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (13, 2), tv.CursorPosition);
- }
- [Fact]
- [AutoInitShutdown]
- public void HistoryText_Undo_Redo_Multi_Line_DeleteCharLeft ()
- {
- var text = "This is the first line.\nThis is the second line.\nThis is the third line.";
- var tv = new TextView () {
- Width = 10,
- Height = 2,
- Text = text
- };
- var top = Application.Top;
- top.Add (tv);
- Application.Begin (top);
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (Point.Empty, tv.CursorPosition);
- var ntimes = 3;
- tv.CursorPosition = new Point (7, 1);
- for (int i = 0; i < ntimes; i++) {
- tv.DeleteCharLeft ();
- }
- Assert.Equal ($"This is the first line.{Environment.NewLine}This the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (4, 1), tv.CursorPosition);
- tv.CursorPosition = new Point (7, 0);
- for (int i = 0; i < ntimes; i++) {
- tv.DeleteCharLeft ();
- }
- Assert.Equal ($"This the first line.{Environment.NewLine}This the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (4, 0), tv.CursorPosition);
- tv.CursorPosition = new Point (7, 2);
- for (int i = 0; i < ntimes; i++) {
- tv.DeleteCharLeft ();
- }
- Assert.Equal ($"This the first line.{Environment.NewLine}This the second line.{Environment.NewLine}This the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (4, 2), tv.CursorPosition);
- for (int i = 0; i < ntimes; i++) {
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- switch (i) {
- case 0:
- Assert.Equal ($"This the first line.{Environment.NewLine}This the second line.{Environment.NewLine}This the third line.", tv.Text);
- Assert.Equal (new Point (5, 2), tv.CursorPosition);
- break;
- case 1:
- Assert.Equal ($"This the first line.{Environment.NewLine}This the second line.{Environment.NewLine}This i the third line.", tv.Text);
- Assert.Equal (new Point (6, 2), tv.CursorPosition);
- break;
- case 2:
- Assert.Equal ($"This the first line.{Environment.NewLine}This the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (new Point (7, 2), tv.CursorPosition);
- break;
- }
- }
- Assert.Equal ($"This the first line.{Environment.NewLine}This the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (7, 2), tv.CursorPosition);
- for (int i = 0; i < ntimes; i++) {
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- switch (i) {
- case 0:
- Assert.Equal ($"This the first line.{Environment.NewLine}This the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (new Point (5, 0), tv.CursorPosition);
- break;
- case 1:
- Assert.Equal ($"This i the first line.{Environment.NewLine}This the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (new Point (6, 0), tv.CursorPosition);
- break;
- case 2:
- Assert.Equal ($"This is the first line.{Environment.NewLine}This the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (new Point (7, 0), tv.CursorPosition);
- break;
- }
- }
- Assert.Equal ($"This is the first line.{Environment.NewLine}This the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (7, 0), tv.CursorPosition);
- for (int i = 0; i < ntimes; i++) {
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- switch (i) {
- case 0:
- Assert.Equal ($"This is the first line.{Environment.NewLine}This the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (new Point (5, 1), tv.CursorPosition);
- break;
- case 1:
- Assert.Equal ($"This is the first line.{Environment.NewLine}This i the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (new Point (6, 1), tv.CursorPosition);
- break;
- case 2:
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (new Point (7, 1), tv.CursorPosition);
- break;
- }
- }
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (7, 1), tv.CursorPosition);
- for (int i = 0; i < ntimes; i++) {
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- }
- Assert.Equal ($"This is the first line.{Environment.NewLine}This the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (4, 1), tv.CursorPosition);
- for (int i = 0; i < ntimes; i++) {
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- }
- Assert.Equal ($"This the first line.{Environment.NewLine}This the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (4, 0), tv.CursorPosition);
- for (int i = 0; i < ntimes; i++) {
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- }
- Assert.Equal ($"This the first line.{Environment.NewLine}This the second line.{Environment.NewLine}This the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (4, 2), tv.CursorPosition);
- }
- [Fact]
- [AutoInitShutdown]
- public void HistoryText_Undo_Redo_Multi_Line_DeleteCharRight ()
- {
- var text = "This is the first line.\nThis is the second line.\nThis is the third line.";
- var tv = new TextView () {
- Width = 10,
- Height = 2,
- Text = text
- };
- var top = Application.Top;
- top.Add (tv);
- Application.Begin (top);
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (Point.Empty, tv.CursorPosition);
- var ntimes = 3;
- tv.CursorPosition = new Point (7, 1);
- for (int i = 0; i < ntimes; i++) {
- tv.DeleteCharRight ();
- }
- Assert.Equal ($"This is the first line.{Environment.NewLine}This ise second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (7, 1), tv.CursorPosition);
- tv.CursorPosition = new Point (7, 0);
- for (int i = 0; i < ntimes; i++) {
- tv.DeleteCharRight ();
- }
- Assert.Equal ($"This ise first line.{Environment.NewLine}This ise second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (7, 0), tv.CursorPosition);
- tv.CursorPosition = new Point (7, 2);
- for (int i = 0; i < ntimes; i++) {
- tv.DeleteCharRight ();
- }
- Assert.Equal ($"This ise first line.{Environment.NewLine}This ise second line.{Environment.NewLine}This ise third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (7, 2), tv.CursorPosition);
- for (int i = 0; i < ntimes; i++) {
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- }
- Assert.Equal ($"This ise first line.{Environment.NewLine}This ise second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (7, 2), tv.CursorPosition);
- for (int i = 0; i < ntimes; i++) {
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- }
- Assert.Equal ($"This is the first line.{Environment.NewLine}This ise second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (7, 0), tv.CursorPosition);
- for (int i = 0; i < ntimes; i++) {
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- }
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (7, 1), tv.CursorPosition);
- for (int i = 0; i < ntimes; i++) {
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- }
- Assert.Equal ($"This is the first line.{Environment.NewLine}This ise second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (7, 1), tv.CursorPosition);
- for (int i = 0; i < ntimes; i++) {
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- }
- Assert.Equal ($"This ise first line.{Environment.NewLine}This ise second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (7, 0), tv.CursorPosition);
- for (int i = 0; i < ntimes; i++) {
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- }
- Assert.Equal ($"This ise first line.{Environment.NewLine}This ise second line.{Environment.NewLine}This ise third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (7, 2), tv.CursorPosition);
- }
- [Fact]
- [AutoInitShutdown]
- public void HistoryText_Undo_Redo_Multi_Line_Selected_InsertText ()
- {
- var text = $"This is the first line.{Environment.NewLine}This is the second line.\nThis is the third line.";
- var tv = new TextView () {
- Width = 10,
- Height = 2,
- Text = text
- };
- var top = Application.Top;
- top.Add (tv);
- Application.Begin (top);
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (Point.Empty, tv.CursorPosition);
- var messy = " messy";
- tv.CursorPosition = new Point (7, 0);
- tv.SelectionStartColumn = 11;
- tv.SelectionStartRow = 2;
- Assert.Equal (51 + Environment.NewLine.Length * 2, tv.SelectedLength);
- for (int i = 0; i < messy.Length; i++) {
- tv.InsertText (messy [i].ToString ());
- switch (i) {
- case 0:
- Assert.Equal ("This is third line.", tv.Text);
- Assert.Equal (new Point (8, 0), tv.CursorPosition);
- break;
- case 1:
- Assert.Equal ("This is m third line.", tv.Text);
- Assert.Equal (new Point (9, 0), tv.CursorPosition);
- break;
- case 2:
- Assert.Equal ("This is me third line.", tv.Text);
- Assert.Equal (new Point (10, 0), tv.CursorPosition);
- break;
- case 3:
- Assert.Equal ("This is mes third line.", tv.Text);
- Assert.Equal (new Point (11, 0), tv.CursorPosition);
- break;
- case 4:
- Assert.Equal ("This is mess third line.", tv.Text);
- Assert.Equal (new Point (12, 0), tv.CursorPosition);
- break;
- case 5:
- Assert.Equal ("This is messy third line.", tv.Text);
- Assert.Equal (new Point (13, 0), tv.CursorPosition);
- break;
- }
- }
- Assert.Equal ($"This is messy third line.", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (13, 0), tv.CursorPosition);
- Assert.Equal (11, tv.SelectionStartColumn);
- Assert.Equal (2, tv.SelectionStartRow);
- Assert.Equal (0, tv.SelectedLength);
- for (int i = 0; i < messy.Length; i++) {
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- switch (i) {
- case 0:
- Assert.Equal ("This is mess third line.", tv.Text);
- Assert.Equal (new Point (12, 0), tv.CursorPosition);
- break;
- case 1:
- Assert.Equal ("This is mes third line.", tv.Text);
- Assert.Equal (new Point (11, 0), tv.CursorPosition);
- break;
- case 2:
- Assert.Equal ("This is me third line.", tv.Text);
- Assert.Equal (new Point (10, 0), tv.CursorPosition);
- break;
- case 3:
- Assert.Equal ("This is m third line.", tv.Text);
- Assert.Equal (new Point (9, 0), tv.CursorPosition);
- break;
- case 4:
- Assert.Equal ("This is third line.", tv.Text);
- Assert.Equal (new Point (8, 0), tv.CursorPosition);
- break;
- case 5:
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (new Point (7, 0), tv.CursorPosition);
- break;
- }
- }
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (7, 0), tv.CursorPosition);
- Assert.Equal (11, tv.SelectionStartColumn);
- Assert.Equal (2, tv.SelectionStartRow);
- Assert.Equal (0, tv.SelectedLength);
- for (int i = 0; i < messy.Length; i++) {
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- switch (i) {
- case 0:
- Assert.Equal ("This is third line.", tv.Text);
- Assert.Equal (new Point (8, 0), tv.CursorPosition);
- break;
- case 1:
- Assert.Equal ("This is m third line.", tv.Text);
- Assert.Equal (new Point (9, 0), tv.CursorPosition);
- break;
- case 2:
- Assert.Equal ("This is me third line.", tv.Text);
- Assert.Equal (new Point (10, 0), tv.CursorPosition);
- break;
- case 3:
- Assert.Equal ("This is mes third line.", tv.Text);
- Assert.Equal (new Point (11, 0), tv.CursorPosition);
- break;
- case 4:
- Assert.Equal ("This is mess third line.", tv.Text);
- Assert.Equal (new Point (12, 0), tv.CursorPosition);
- break;
- case 5:
- Assert.Equal ("This is messy third line.", tv.Text);
- Assert.Equal (new Point (13, 0), tv.CursorPosition);
- break;
- }
- }
- Assert.Equal ("This is messy third line.", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (13, 0), tv.CursorPosition);
- Assert.Equal (11, tv.SelectionStartColumn);
- Assert.Equal (2, tv.SelectionStartRow);
- Assert.Equal (0, tv.SelectedLength);
- }
- [Fact]
- [AutoInitShutdown]
- public void HistoryText_Undo_Redo_Multi_Line_With_Empty_Text ()
- {
- var tv = new TextView () {
- Width = 10,
- Height = 2
- };
- var top = Application.Top;
- top.Add (tv);
- Application.Begin (top);
- Assert.Equal ("", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (Point.Empty, tv.CursorPosition);
- Assert.False (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.O, new KeyModifiers ())));
- Assert.Equal ("O", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (1, 0), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.n, new KeyModifiers ())));
- Assert.Equal ("On", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (2, 0), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.e, new KeyModifiers ())));
- Assert.Equal ("One", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (3, 0), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Enter, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.T, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}T", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (1, 1), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.w, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Tw", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (2, 1), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.o, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Two", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (3, 1), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Enter, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Two{Environment.NewLine}", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (0, 2), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.T, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Two{Environment.NewLine}T", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (1, 2), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.h, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Two{Environment.NewLine}Th", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (2, 2), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.r, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Two{Environment.NewLine}Thr", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (3, 2), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.e, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Two{Environment.NewLine}Thre", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (4, 2), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.e, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Two{Environment.NewLine}Three", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (5, 2), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Enter, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Two{Environment.NewLine}Three{Environment.NewLine}", tv.Text);
- Assert.Equal (4, tv.Lines);
- Assert.Equal (new Point (0, 3), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- // Undoing
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Two{Environment.NewLine}Three", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (5, 2), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Two{Environment.NewLine}Thre", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (4, 2), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Two{Environment.NewLine}Thr", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (3, 2), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Two{Environment.NewLine}Th", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (2, 2), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Two{Environment.NewLine}T", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (1, 2), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Two{Environment.NewLine}", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (0, 2), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Two", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (3, 1), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Tw", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (2, 1), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}T", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (1, 1), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"One", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (3, 0), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"On", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (2, 0), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"O", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (1, 0), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.False (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.False (tv.IsDirty);
- // Redoing
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"O", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (1, 0), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"On", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (2, 0), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"One", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (3, 0), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}T", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (1, 1), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Tw", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (2, 1), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Two", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (3, 1), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Two{Environment.NewLine}", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (0, 2), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Two{Environment.NewLine}T", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (1, 2), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Two{Environment.NewLine}Th", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (2, 2), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Two{Environment.NewLine}Thr", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (3, 2), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Two{Environment.NewLine}Thre", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (4, 2), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Two{Environment.NewLine}Three", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (5, 2), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Two{Environment.NewLine}Three{Environment.NewLine}", tv.Text);
- Assert.Equal (4, tv.Lines);
- Assert.Equal (new Point (0, 3), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Two{Environment.NewLine}Three{Environment.NewLine}", tv.Text);
- Assert.Equal (4, tv.Lines);
- Assert.Equal (new Point (0, 3), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- }
- [Fact]
- [AutoInitShutdown]
- public void HistoryText_Undo_Redo_Multi_Line_Selected_With_Empty_Text ()
- {
- var tv = new TextView () {
- Width = 10,
- Height = 2
- };
- var top = Application.Top;
- top.Add (tv);
- Application.Begin (top);
- Assert.Equal ("", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (Point.Empty, tv.CursorPosition);
- Assert.False (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.O, new KeyModifiers ())));
- Assert.Equal ("O", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (1, 0), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.n, new KeyModifiers ())));
- Assert.Equal ("On", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (2, 0), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.e, new KeyModifiers ())));
- Assert.Equal ("One", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (3, 0), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Enter, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.T, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}T", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (1, 1), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.w, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Tw", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (2, 1), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.o, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Two", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (3, 1), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Enter, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Two{Environment.NewLine}", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (0, 2), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.T, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Two{Environment.NewLine}T", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (1, 2), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.h, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Two{Environment.NewLine}Th", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (2, 2), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.r, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Two{Environment.NewLine}Thr", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (3, 2), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.e, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Two{Environment.NewLine}Thre", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (4, 2), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.e, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Two{Environment.NewLine}Three", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (5, 2), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Enter, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Two{Environment.NewLine}Three{Environment.NewLine}", tv.Text);
- Assert.Equal (4, tv.Lines);
- Assert.Equal (new Point (0, 3), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- tv.SelectionStartColumn = 0;
- tv.SelectionStartRow = 0;
- tv.CursorPosition = new Point (0, 1);
- Assert.Equal (3 + Environment.NewLine.Length, tv.SelectedLength);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.D1, new KeyModifiers ())));
- Assert.Equal ($"1Two{Environment.NewLine}Three{Environment.NewLine}", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (1, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.True (tv.IsDirty);
- tv.SelectionStartColumn = 1;
- tv.SelectionStartRow = 0;
- tv.CursorPosition = new Point (1, 1);
- Assert.Equal (4 + Environment.NewLine.Length, tv.SelectedLength);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.D2, new KeyModifiers ())));
- Assert.Equal ($"12hree{Environment.NewLine}", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (2, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.True (tv.IsDirty);
- // Undoing
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"1Two{Environment.NewLine}Three{Environment.NewLine}", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (1, 1), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Two{Environment.NewLine}Three{Environment.NewLine}", tv.Text);
- Assert.Equal (4, tv.Lines);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Two{Environment.NewLine}Three", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (5, 2), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Two{Environment.NewLine}Thre", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (4, 2), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Two{Environment.NewLine}Thr", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (3, 2), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Two{Environment.NewLine}Th", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (2, 2), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Two{Environment.NewLine}T", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (1, 2), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Two{Environment.NewLine}", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (0, 2), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Two", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (3, 1), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Tw", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (2, 1), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}T", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (1, 1), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"One", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (3, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"On", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (2, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"O", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (1, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.False (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.False (tv.IsDirty);
- // Redoing
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"O", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (1, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"On", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (2, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"One", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (3, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}T", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (1, 1), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Tw", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (2, 1), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Two", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (3, 1), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Two{Environment.NewLine}", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (0, 2), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Two{Environment.NewLine}T", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (1, 2), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Two{Environment.NewLine}Th", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (2, 2), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Two{Environment.NewLine}Thr", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (3, 2), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Two{Environment.NewLine}Thre", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (4, 2), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Two{Environment.NewLine}Three", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (5, 2), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Two{Environment.NewLine}Three{Environment.NewLine}", tv.Text);
- Assert.Equal (4, tv.Lines);
- Assert.Equal (new Point (0, 3), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"1Two{Environment.NewLine}Three{Environment.NewLine}", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (1, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"12hree{Environment.NewLine}", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (2, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.True (tv.IsDirty);
- }
- [Fact]
- [AutoInitShutdown]
- public void HistoryText_Undo_Redo_Multi_Line_Selected_InsertText_Twice_On_Same_Line ()
- {
- var text = "One\nTwo\nThree";
- var tv = new TextView () {
- Width = 10,
- Height = 2,
- Text = text
- };
- var top = Application.Top;
- top.Add (tv);
- Application.Begin (top);
- Assert.Equal ($"One{Environment.NewLine}Two{Environment.NewLine}Three", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (Point.Empty, tv.CursorPosition);
- Assert.False (tv.IsDirty);
- tv.SelectionStartColumn = 0;
- tv.SelectionStartRow = 0;
- tv.CursorPosition = new Point (0, 1);
- Assert.Equal (3 + Environment.NewLine.Length, tv.SelectedLength);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.D1, new KeyModifiers ())));
- Assert.Equal ($"1Two{Environment.NewLine}Three", tv.Text);
- Assert.Equal (new Point (1, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.True (tv.IsDirty);
- tv.SelectionStartColumn = 1;
- tv.SelectionStartRow = 0;
- tv.CursorPosition = new Point (1, 1);
- Assert.Equal (4 + Environment.NewLine.Length, tv.SelectedLength);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.D2, new KeyModifiers ())));
- Assert.Equal ("12hree", tv.Text);
- Assert.Equal (new Point (2, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"1Two{Environment.NewLine}Three", tv.Text);
- Assert.Equal (new Point (1, 1), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Two{Environment.NewLine}Three", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.False (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"1Two{Environment.NewLine}Three", tv.Text);
- Assert.Equal (new Point (1, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ("12hree", tv.Text);
- Assert.Equal (new Point (2, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.True (tv.IsDirty);
- }
- [Fact]
- [AutoInitShutdown]
- public void HistoryText_Undo_Redo_Multi_Line_Selected_InsertText_Twice_On_Same_Line_With_End_Line ()
- {
- var text = "One\nTwo\nThree\n";
- var tv = new TextView () {
- Width = 10,
- Height = 2,
- Text = text
- };
- var top = Application.Top;
- top.Add (tv);
- Application.Begin (top);
- Assert.Equal ($"One{Environment.NewLine}Two{Environment.NewLine}Three{Environment.NewLine}", tv.Text);
- Assert.Equal (4, tv.Lines);
- Assert.Equal (Point.Empty, tv.CursorPosition);
- Assert.False (tv.IsDirty);
- tv.SelectionStartColumn = 0;
- tv.SelectionStartRow = 0;
- tv.CursorPosition = new Point (0, 1);
- Assert.Equal (3 + Environment.NewLine.Length, tv.SelectedLength);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.D1, new KeyModifiers ())));
- Assert.Equal ($"1Two{Environment.NewLine}Three{Environment.NewLine}", tv.Text);
- Assert.Equal (new Point (1, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.True (tv.IsDirty);
- tv.SelectionStartColumn = 1;
- tv.SelectionStartRow = 0;
- tv.CursorPosition = new Point (1, 1);
- Assert.Equal (4 + Environment.NewLine.Length, tv.SelectedLength);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.D2, new KeyModifiers ())));
- Assert.Equal ($"12hree{Environment.NewLine}", tv.Text);
- Assert.Equal (new Point (2, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"1Two{Environment.NewLine}Three{Environment.NewLine}", tv.Text);
- Assert.Equal (new Point (1, 1), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"One{Environment.NewLine}Two{Environment.NewLine}Three{Environment.NewLine}", tv.Text);
- Assert.Equal (4, tv.Lines);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.False (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"1Two{Environment.NewLine}Three{Environment.NewLine}", tv.Text);
- Assert.Equal (new Point (1, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"12hree{Environment.NewLine}", tv.Text);
- Assert.Equal (new Point (2, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.True (tv.IsDirty);
- }
- [Fact]
- public void HistoryText_IsDirty_HasHistoryChanges ()
- {
- var tv = new TextView ();
- Assert.Equal ("", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (Point.Empty, tv.CursorPosition);
- Assert.False (tv.IsDirty);
- Assert.False (tv.HasHistoryChanges);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.D1, new KeyModifiers ())));
- Assert.Equal ("1", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (1, 0), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.HasHistoryChanges);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Enter, new KeyModifiers ())));
- Assert.Equal ($"1{Environment.NewLine}", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.HasHistoryChanges);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.D2, new KeyModifiers ())));
- Assert.Equal ($"1{Environment.NewLine}2", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (1, 1), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.HasHistoryChanges);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Backspace, new KeyModifiers ())));
- Assert.Equal ($"1{Environment.NewLine}", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.HasHistoryChanges);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Backspace, new KeyModifiers ())));
- Assert.Equal ($"1", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (1, 0), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.HasHistoryChanges);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Backspace, new KeyModifiers ())));
- Assert.Equal ($"", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- // IsDirty cannot be based on HasHistoryChanges because HasHistoryChanges is greater than 0
- // The only way is comparing from the original text
- Assert.False (tv.IsDirty);
- // Still true because HasHistoryChanges is greater than 0
- Assert.True (tv.HasHistoryChanges);
- }
- [Fact]
- public void HistoryText_Undo_Redo_Multi_Line_Selected_DeleteCharLeft_All ()
- {
- var text = "This is the first line.\nThis is the second line.\nThis is the third line.";
- var tv = new TextView () { Text = text };
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (Point.Empty, tv.CursorPosition);
- Assert.False (tv.IsDirty);
- Assert.False (tv.HasHistoryChanges);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.End | Key.CtrlMask | Key.ShiftMask, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.SelectedText);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (23, 2), tv.CursorPosition);
- Assert.Equal (70 + Environment.NewLine.Length * 2, tv.SelectedLength);
- Assert.False (tv.IsDirty);
- Assert.False (tv.HasHistoryChanges);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Backspace, new KeyModifiers ())));
- Assert.Equal ("", tv.Text);
- Assert.Equal ("", tv.SelectedText);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.True (tv.IsDirty);
- Assert.True (tv.HasHistoryChanges);
- // Undo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal ("", tv.SelectedText);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (23, 2), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.False (tv.IsDirty);
- Assert.True (tv.HasHistoryChanges);
- // Redo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ("", tv.Text);
- Assert.Equal ("", tv.SelectedText);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.True (tv.IsDirty);
- Assert.True (tv.HasHistoryChanges);
- }
- [Fact]
- public void HistoryText_Undo_Redo_Multi_Line_Selected_DeleteCharRight_All ()
- {
- var text = "This is the first line.\nThis is the second line.\nThis is the third line.";
- var tv = new TextView () { Text = text };
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (Point.Empty, tv.CursorPosition);
- Assert.False (tv.IsDirty);
- Assert.False (tv.HasHistoryChanges);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.End | Key.CtrlMask | Key.ShiftMask, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.SelectedText);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (23, 2), tv.CursorPosition);
- Assert.Equal (70 + Environment.NewLine.Length * 2, tv.SelectedLength);
- Assert.False (tv.IsDirty);
- Assert.False (tv.HasHistoryChanges);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.DeleteChar, new KeyModifiers ())));
- Assert.Equal ("", tv.Text);
- Assert.Equal ("", tv.SelectedText);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.True (tv.IsDirty);
- Assert.True (tv.HasHistoryChanges);
- // Undo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal ("", tv.SelectedText);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (23, 2), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.False (tv.IsDirty);
- Assert.True (tv.HasHistoryChanges);
- // Redo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ("", tv.Text);
- Assert.Equal ("", tv.SelectedText);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.Equal (0, tv.SelectedLength);
- Assert.True (tv.IsDirty);
- Assert.True (tv.HasHistoryChanges);
- }
- [Fact]
- [AutoInitShutdown]
- public void HistoryText_Undo_Redo_Copy_Without_Selection_Multi_Line_Paste ()
- {
- var text = "This is the first line.\nThis is the second line.\nThis is the third line.";
- var tv = new TextView () { Text = text };
- tv.CursorPosition = new Point (23, 0);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.C | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal ("", tv.SelectedText);
- Assert.Equal ("This is the first line.", Clipboard.Contents);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (23, 0), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Y | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (4, tv.Lines);
- Assert.Equal (new Point (23, 1), tv.CursorPosition);
- // Undo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (23, 0), tv.CursorPosition);
- // Redo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (4, tv.Lines);
- Assert.Equal (new Point (23, 1), tv.CursorPosition);
- }
- [Fact]
- [AutoInitShutdown]
- public void HistoryText_Undo_Redo_Simple_Copy_Multi_Line_Selected_Paste ()
- {
- var text = "This is the first line.\nThis is the second line.\nThis is the third line.";
- var tv = new TextView () { Text = text };
- tv.SelectionStartColumn = 12;
- tv.CursorPosition = new Point (17, 0);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.C | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal ("first", tv.SelectedText);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (17, 0), tv.CursorPosition);
- tv.SelectionStartColumn = 12;
- tv.CursorPosition = new Point (11, 1);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Y | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the first second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (17, 0), tv.CursorPosition);
- // Undo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (12, 0), tv.CursorPosition);
- // Redo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the first second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (17, 0), tv.CursorPosition);
- }
- [Fact]
- [AutoInitShutdown]
- public void HistoryText_Undo_Redo_Multi_Line_Selected_Copy_Simple_Paste_Starting_On_Space ()
- {
- var text = "This is the first line.\nThis is the second line.\nThis is the third line.";
- var tv = new TextView () { Text = text };
- tv.SelectionStartColumn = 12;
- tv.CursorPosition = new Point (18, 1);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.C | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal ($"first line.{Environment.NewLine}This is the second", tv.SelectedText);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (18, 1), tv.CursorPosition);
- tv.Selecting = false;
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Y | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the secondfirst line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (4, tv.Lines);
- Assert.Equal (new Point (18, 2), tv.CursorPosition);
- // Undo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (18, 1), tv.CursorPosition);
- // Redo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the secondfirst line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (4, tv.Lines);
- Assert.Equal (new Point (18, 2), tv.CursorPosition);
- }
- [Fact]
- [AutoInitShutdown]
- public void HistoryText_Undo_Redo_Multi_Line_Selected_Copy_Simple_Paste_Starting_On_Letter ()
- {
- var text = "This is the first line.\nThis is the second line.\nThis is the third line.";
- var tv = new TextView () { Text = text };
- tv.SelectionStartColumn = 12;
- tv.CursorPosition = new Point (18, 1);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.C | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal ($"first line.{Environment.NewLine}This is the second", tv.SelectedText);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (18, 1), tv.CursorPosition);
- tv.Selecting = false;
- tv.CursorPosition = new Point (17, 1);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Y | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the seconfirst line.{Environment.NewLine}This is the secondd line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (4, tv.Lines);
- Assert.Equal (new Point (18, 2), tv.CursorPosition);
- // Undo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (17, 1), tv.CursorPosition);
- // Redo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the seconfirst line.{Environment.NewLine}This is the secondd line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (4, tv.Lines);
- Assert.Equal (new Point (18, 2), tv.CursorPosition);
- }
- [Fact]
- [AutoInitShutdown]
- public void HistoryText_Undo_Redo_Empty_Copy_Without_Selection_Multi_Line_Selected_Paste ()
- {
- var text = "\nThis is the first line.\nThis is the second line.";
- var tv = new TextView () { Text = text };
- Assert.True (tv.ProcessKey (new KeyEvent (Key.C | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"{Environment.NewLine}This is the first line.{Environment.NewLine}This is the second line.", tv.Text);
- Assert.Equal ("", tv.SelectedText);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Y | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"{Environment.NewLine}{Environment.NewLine}This is the first line.{Environment.NewLine}This is the second line.", tv.Text);
- Assert.Equal (4, tv.Lines);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- // Undo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"{Environment.NewLine}This is the first line.{Environment.NewLine}This is the second line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- // Redo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"{Environment.NewLine}{Environment.NewLine}This is the first line.{Environment.NewLine}This is the second line.", tv.Text);
- Assert.Equal (4, tv.Lines);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- }
- [Fact]
- [AutoInitShutdown]
- public void HistoryText_Undo_Redo_Setting_Clipboard_Multi_Line_Selected_Paste ()
- {
- var text = "This is the first line.\nThis is the second line.";
- var tv = new TextView () { Text = text };
- Clipboard.Contents = "Inserted\nNewLine";
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.", tv.Text);
- Assert.Equal ("", tv.SelectedText);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Y | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"Inserted{Environment.NewLine}NewLineThis is the first line.{Environment.NewLine}This is the second line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (7, 1), tv.CursorPosition);
- // Undo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- // Redo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"Inserted{Environment.NewLine}NewLineThis is the first line.{Environment.NewLine}This is the second line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (7, 1), tv.CursorPosition);
- }
- [Fact]
- [AutoInitShutdown]
- public void HistoryText_Undo_Redo_Cut_Multi_Line_Selected_Paste ()
- {
- var text = "This is the first line.\nThis is the second line.\nThis is the third line.";
- var tv = new TextView () { Text = text };
- tv.SelectionStartColumn = 12;
- tv.CursorPosition = new Point (17, 0);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.W | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal ("", tv.SelectedText);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (12, 0), tv.CursorPosition);
- tv.SelectionStartColumn = 12;
- tv.CursorPosition = new Point (11, 1);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Y | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the first second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (17, 0), tv.CursorPosition);
- // Undo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (12, 0), tv.CursorPosition);
- // Redo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the first second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (17, 0), tv.CursorPosition);
- }
- [Fact]
- [AutoInitShutdown]
- public void HistoryText_Undo_Redo_Cut_Simple_Paste_Starting ()
- {
- var text = "This is the first line.\nThis is the second line.\nThis is the third line.";
- var tv = new TextView () { Text = text };
- tv.SelectionStartColumn = 12;
- tv.CursorPosition = new Point (18, 1);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.W | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal ("", tv.SelectedText);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (12, 0), tv.CursorPosition);
- tv.Selecting = false;
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Y | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (18, 1), tv.CursorPosition);
- // Undo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (12, 0), tv.CursorPosition);
- // Redo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (18, 1), tv.CursorPosition);
- }
- [Fact]
- [AutoInitShutdown]
- public void HistoryText_Undo_Redo_Cut_Multi_Line_Another_Selected_Paste ()
- {
- var text = "This is the first line.\nThis is the second line.\nThis is the third line.";
- var tv = new TextView () { Text = text };
- tv.SelectionStartColumn = 12;
- tv.CursorPosition = new Point (17, 0);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.W | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal ("", tv.SelectedText);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (12, 0), tv.CursorPosition);
- tv.SelectionStartColumn = 12;
- tv.SelectionStartRow = 1;
- tv.CursorPosition = new Point (18, 1);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Y | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the line.{Environment.NewLine}This is the first line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (17, 1), tv.CursorPosition);
- // Undo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (12, 1), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (12, 0), tv.CursorPosition);
- // Redo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (12, 0), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the line.{Environment.NewLine}This is the first line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (17, 1), tv.CursorPosition);
- }
- [Fact]
- public void HistoryText_Undo_Redo_KillWordBackward ()
- {
- var text = "First line.\nSecond line.";
- var tv = new TextView () { Text = text };
- Assert.True (tv.ProcessKey (new KeyEvent (Key.End | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"First line.{Environment.NewLine}Second line.", tv.Text);
- Assert.Equal ("", tv.SelectedText);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (12, 1), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Backspace | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"First line.{Environment.NewLine}Second ", tv.Text);
- Assert.Equal ("", tv.SelectedText);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (7, 1), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Backspace | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"First line.{Environment.NewLine}", tv.Text);
- Assert.Equal ("", tv.SelectedText);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Backspace | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ("First line.", tv.Text);
- Assert.Equal ("", tv.SelectedText);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (11, 0), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Backspace | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ("First ", tv.Text);
- Assert.Equal ("", tv.SelectedText);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (6, 0), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Backspace | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ("", tv.Text);
- Assert.Equal ("", tv.SelectedText);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- // Undo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ("First ", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (6, 0), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ("First line.", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (11, 0), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"First line.{Environment.NewLine}", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"First line.{Environment.NewLine}Second ", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (7, 1), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"First line.{Environment.NewLine}Second line.", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (12, 1), tv.CursorPosition);
- // Redo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"First line.{Environment.NewLine}Second ", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (7, 1), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"First line.{Environment.NewLine}", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ("First line.", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (11, 0), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ("First ", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (6, 0), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ("", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- }
- [Fact]
- public void HistoryText_Undo_Redo_KillWordForward ()
- {
- var text = "First line.\nSecond line.";
- var tv = new TextView () { Text = text };
- Assert.True (tv.ProcessKey (new KeyEvent (Key.DeleteChar | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"line.{Environment.NewLine}Second line.", tv.Text);
- Assert.Equal ("", tv.SelectedText);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.DeleteChar | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"{Environment.NewLine}Second line.", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.DeleteChar | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ("Second line.", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.DeleteChar | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ("line.", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.DeleteChar | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ("", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- // Undo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ("line.", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ("Second line.", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"{Environment.NewLine}Second line.", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"line.{Environment.NewLine}Second line.", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"First line.{Environment.NewLine}Second line.", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- // Redo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"line.{Environment.NewLine}Second line.", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"{Environment.NewLine}Second line.", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ("Second line.", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ("line.", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ("", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- }
- [Fact]
- [AutoInitShutdown]
- public void HistoryText_Undo_Redo_KillToStartOfLine ()
- {
- var text = "First line.\nSecond line.";
- var tv = new TextView () { Text = text };
- Assert.True (tv.ProcessKey (new KeyEvent (Key.End | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"First line.{Environment.NewLine}Second line.", tv.Text);
- Assert.Equal ("", tv.SelectedText);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (12, 1), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.K | Key.AltMask, new KeyModifiers ())));
- Assert.Equal ($"First line.{Environment.NewLine}", tv.Text);
- Assert.Equal ("", tv.SelectedText);
- Assert.Equal ("Second line.", Clipboard.Contents);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.K | Key.AltMask, new KeyModifiers ())));
- Assert.Equal ("First line.", tv.Text);
- Assert.Equal ("", tv.SelectedText);
- Assert.Equal ($"Second line.{Environment.NewLine}", Clipboard.Contents);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (11, 0), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.K | Key.AltMask, new KeyModifiers ())));
- Assert.Equal ("", tv.Text);
- Assert.Equal ("", tv.SelectedText);
- Assert.Equal ($"Second line.{Environment.NewLine}First line.", Clipboard.Contents);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- // Undo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ("First line.", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (11, 0), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"First line.{Environment.NewLine}", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"First line.{Environment.NewLine}Second line.", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (12, 1), tv.CursorPosition);
- // Redo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"First line.{Environment.NewLine}", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"First line.", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (11, 0), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ("", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- }
- [Fact]
- [AutoInitShutdown]
- public void HistoryText_Undo_Redo_KillToEndOfLine ()
- {
- var text = "First line.\nSecond line.";
- var tv = new TextView () { Text = text };
- Assert.True (tv.ProcessKey (new KeyEvent (Key.K | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"{Environment.NewLine}Second line.", tv.Text);
- Assert.Equal ("", tv.SelectedText);
- Assert.Equal ("First line.", Clipboard.Contents);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.K | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ("Second line.", tv.Text);
- Assert.Equal ("", tv.SelectedText);
- Assert.Equal ($"First line.{Environment.NewLine}", Clipboard.Contents);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.K | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ("", tv.Text);
- Assert.Equal ("", tv.SelectedText);
- Assert.Equal ($"First line.{Environment.NewLine}Second line.", Clipboard.Contents);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- // Undo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ("Second line.", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"{Environment.NewLine}Second line.", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"First line.{Environment.NewLine}Second line.", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- // Redo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"{Environment.NewLine}Second line.", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ("Second line.", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ("", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- }
- [Fact]
- public void HistoryText_Undo_Redo_Changing_On_Middle_Clear_History_Forwards ()
- {
- var tv = new TextView ();
- Assert.True (tv.ProcessKey (new KeyEvent (Key.D1, new KeyModifiers ())));
- Assert.Equal ("1", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (1, 0), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.D2, new KeyModifiers ())));
- Assert.Equal ("12", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (2, 0), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.D3, new KeyModifiers ())));
- Assert.Equal ("123", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (3, 0), tv.CursorPosition);
- // Undo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ("12", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (2, 0), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.D4, new KeyModifiers ())));
- Assert.Equal ("124", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (3, 0), tv.CursorPosition);
- // Redo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ("124", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (3, 0), tv.CursorPosition);
- }
- [Fact]
- public void HistoryText_Undo_Redo_Single_Line_Selected_Return ()
- {
- var text = "This is the first line.\nThis is the second line.\nThis is the third line.";
- var tv = new TextView () { Text = text };
- tv.SelectionStartColumn = 12;
- tv.CursorPosition = new Point (17, 0);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Enter, new KeyModifiers ())));
- Assert.Equal ($"This is the {Environment.NewLine} line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (4, tv.Lines);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- // Undo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (17, 0), tv.CursorPosition);
- Assert.False (tv.IsDirty);
- // Redo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the {Environment.NewLine} line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (4, tv.Lines);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- // Undo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (17, 0), tv.CursorPosition);
- Assert.False (tv.IsDirty);
- // Redo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the {Environment.NewLine} line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (4, tv.Lines);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- }
- [Fact]
- public void HistoryText_Undo_Redo_Two_Line_Selected_Return ()
- {
- var text = "This is the first line.\nThis is the second line.\nThis is the third line.";
- var tv = new TextView () { Text = text };
- tv.SelectionStartColumn = 12;
- tv.CursorPosition = new Point (18, 1);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Enter, new KeyModifiers ())));
- Assert.Equal ($"This is the {Environment.NewLine} line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- // Undo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (18, 1), tv.CursorPosition);
- Assert.False (tv.IsDirty);
- // Redo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the {Environment.NewLine} line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- // Undo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (18, 1), tv.CursorPosition);
- Assert.False (tv.IsDirty);
- // Redo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the {Environment.NewLine} line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- }
- [Fact]
- public void HistoryText_Undo_Redo_Three_Line_Selected_Return ()
- {
- var text = "This is the first line.\nThis is the second line.\nThis is the third line.";
- var tv = new TextView () { Text = text };
- tv.SelectionStartColumn = 12;
- tv.CursorPosition = new Point (17, 2);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Enter, new KeyModifiers ())));
- Assert.Equal ($"This is the {Environment.NewLine} line.", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- // Undo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (17, 2), tv.CursorPosition);
- Assert.False (tv.IsDirty);
- // Redo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the {Environment.NewLine} line.", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- // Undo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (17, 2), tv.CursorPosition);
- Assert.False (tv.IsDirty);
- // Redo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the {Environment.NewLine} line.", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- }
- [Fact]
- public void HistoryText_Undo_Redo_Single_Second_Line_Selected_Return ()
- {
- var text = "This is the first line.\nThis is the second line.\nThis is the third line.";
- var tv = new TextView () { Text = text };
- tv.SelectionStartColumn = 12;
- tv.SelectionStartRow = 1;
- tv.CursorPosition = new Point (18, 1);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Enter, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the {Environment.NewLine} line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (4, tv.Lines);
- Assert.Equal (new Point (0, 2), tv.CursorPosition);
- // Undo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (18, 1), tv.CursorPosition);
- Assert.False (tv.IsDirty);
- // Redo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the {Environment.NewLine} line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (4, tv.Lines);
- Assert.Equal (new Point (0, 2), tv.CursorPosition);
- // Undo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (18, 1), tv.CursorPosition);
- Assert.False (tv.IsDirty);
- // Redo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the {Environment.NewLine} line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (4, tv.Lines);
- Assert.Equal (new Point (0, 2), tv.CursorPosition);
- }
- [Fact]
- public void HistoryText_Undo_Redo_First_Line_Selected_Return_And_InsertText ()
- {
- var text = "This is the first line.\nThis is the second line.\nThis is the third line.";
- var tv = new TextView () { Text = text };
- tv.SelectionStartColumn = 12;
- tv.CursorPosition = new Point (17, 0);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Enter, new KeyModifiers ())));
- Assert.Equal ($"This is the {Environment.NewLine} line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (4, tv.Lines);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.a, new KeyModifiers ())));
- Assert.Equal ($"This is the {Environment.NewLine}a line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (4, tv.Lines);
- Assert.Equal (new Point (1, 1), tv.CursorPosition);
- // Undo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the {Environment.NewLine} line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (4, tv.Lines);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (17, 0), tv.CursorPosition);
- Assert.False (tv.IsDirty);
- // Redo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the {Environment.NewLine} line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (4, tv.Lines);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the {Environment.NewLine}a line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (4, tv.Lines);
- Assert.Equal (new Point (1, 1), tv.CursorPosition);
- // Undo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the {Environment.NewLine} line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (4, tv.Lines);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (17, 0), tv.CursorPosition);
- Assert.False (tv.IsDirty);
- // Redo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the {Environment.NewLine} line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (4, tv.Lines);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the {Environment.NewLine}a line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (4, tv.Lines);
- Assert.Equal (new Point (1, 1), tv.CursorPosition);
- }
- [Fact]
- public void HistoryText_Undo_Redo_Single_Second_Line_Selected_Return_And_InsertText ()
- {
- var text = "This is the first line.\nThis is the second line.\nThis is the third line.";
- var tv = new TextView () { Text = text };
- tv.SelectionStartColumn = 12;
- tv.SelectionStartRow = 1;
- tv.CursorPosition = new Point (18, 1);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Enter, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the {Environment.NewLine} line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (4, tv.Lines);
- Assert.Equal (new Point (0, 2), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.a, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the {Environment.NewLine}a line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (4, tv.Lines);
- Assert.Equal (new Point (1, 2), tv.CursorPosition);
- // Undo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the {Environment.NewLine} line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (4, tv.Lines);
- Assert.Equal (new Point (0, 2), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (18, 1), tv.CursorPosition);
- Assert.False (tv.IsDirty);
- // Redo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the {Environment.NewLine} line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (4, tv.Lines);
- Assert.Equal (new Point (0, 2), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the {Environment.NewLine}a line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (4, tv.Lines);
- Assert.Equal (new Point (1, 2), tv.CursorPosition);
- // Undo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the {Environment.NewLine} line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (4, tv.Lines);
- Assert.Equal (new Point (0, 2), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (18, 1), tv.CursorPosition);
- Assert.False (tv.IsDirty);
- // Redo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the {Environment.NewLine} line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (4, tv.Lines);
- Assert.Equal (new Point (0, 2), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the {Environment.NewLine}a line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (4, tv.Lines);
- Assert.Equal (new Point (1, 2), tv.CursorPosition);
- }
- [Fact]
- public void HistoryText_Undo_Redo_Multi_Line_Selected_All_Return_And_InsertText ()
- {
- var text = "This is the first line.\nThis is the second line.\nThis is the third line.";
- var tv = new TextView () { Text = text };
- Assert.True (tv.ProcessKey (new KeyEvent (Key.End | Key.CtrlMask | Key.ShiftMask, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (23, 2), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Enter, new KeyModifiers ())));
- Assert.Equal ($"{Environment.NewLine}", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.a, new KeyModifiers ())));
- Assert.Equal ($"{Environment.NewLine}a", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (1, 1), tv.CursorPosition);
- // Undo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"{Environment.NewLine}", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (23, 2), tv.CursorPosition);
- Assert.False (tv.IsDirty);
- // Redo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"{Environment.NewLine}", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"{Environment.NewLine}a", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (1, 1), tv.CursorPosition);
- // Undo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"{Environment.NewLine}", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (23, 2), tv.CursorPosition);
- Assert.False (tv.IsDirty);
- // Redo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"{Environment.NewLine}", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"{Environment.NewLine}a", tv.Text);
- Assert.Equal (2, tv.Lines);
- Assert.Equal (new Point (1, 1), tv.CursorPosition);
- }
- [Fact]
- public void HistoryText_Undo_Redo_Ending_With_Newline_Multi_Line_Selected_Almost_All_Return_And_InsertText ()
- {
- var text = "This is the first line.\nThis is the second line.\nThis is the third line.\n";
- var tv = new TextView () { Text = text };
- tv.SelectionStartColumn = 12;
- tv.CursorPosition = new Point (12, 2);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Enter, new KeyModifiers ())));
- Assert.Equal ($"This is the {Environment.NewLine}third line.{Environment.NewLine}", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.a, new KeyModifiers ())));
- Assert.Equal ($"This is the {Environment.NewLine}athird line.{Environment.NewLine}", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (1, 1), tv.CursorPosition);
- // Undo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the {Environment.NewLine}third line.{Environment.NewLine}", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.{Environment.NewLine}", tv.Text);
- Assert.Equal (4, tv.Lines);
- Assert.Equal (new Point (12, 2), tv.CursorPosition);
- Assert.False (tv.IsDirty);
- // Redo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the {Environment.NewLine}third line.{Environment.NewLine}", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the {Environment.NewLine}athird line.{Environment.NewLine}", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (1, 1), tv.CursorPosition);
- // Undo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the {Environment.NewLine}third line.{Environment.NewLine}", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.{Environment.NewLine}", tv.Text);
- Assert.Equal (4, tv.Lines);
- Assert.Equal (new Point (12, 2), tv.CursorPosition);
- Assert.False (tv.IsDirty);
- // Redo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the {Environment.NewLine}third line.{Environment.NewLine}", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the {Environment.NewLine}athird line.{Environment.NewLine}", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (1, 1), tv.CursorPosition);
- }
- [Fact]
- public void HistoryText_Undo_Redo_Disabled_On_WordWrap ()
- {
- var text = "This is the first line.\nThis is the second line.\nThis is the third line.\n";
- var tv = new TextView () { Width = 80, Height = 5, Text = text };
- Assert.False (tv.WordWrap);
- tv.WordWrap = true;
- tv.SelectionStartColumn = 12;
- tv.CursorPosition = new Point (12, 2);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Enter, new KeyModifiers ())));
- Assert.Equal ($"This is the {Environment.NewLine}third line.{Environment.NewLine}", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.a, new KeyModifiers ())));
- Assert.Equal ($"This is the {Environment.NewLine}athird line.{Environment.NewLine}", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (1, 1), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the {Environment.NewLine}third line.{Environment.NewLine}", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"This is the {Environment.NewLine}athird line.{Environment.NewLine}", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (1, 1), tv.CursorPosition);
- }
- [Fact]
- public void HistoryText_Undo_Redo_Multiline_Simples_Tab_BackTab ()
- {
- var text = "First line.\nSecond line.\nThird line.";
- var tv = new TextView () { Width = 80, Height = 5, Text = text };
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Tab, new KeyModifiers ())));
- Assert.Equal ($"\tFirst line.{Environment.NewLine}Second line.{Environment.NewLine}Third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (1, 0), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.BackTab, new KeyModifiers ())));
- Assert.Equal ($"First line.{Environment.NewLine}Second line.{Environment.NewLine}Third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- // Undo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"\tFirst line.{Environment.NewLine}Second line.{Environment.NewLine}Third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (1, 0), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"First line.{Environment.NewLine}Second line.{Environment.NewLine}Third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- Assert.False (tv.IsDirty);
- // Redo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"\tFirst line.{Environment.NewLine}Second line.{Environment.NewLine}Third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (1, 0), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"First line.{Environment.NewLine}Second line.{Environment.NewLine}Third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- }
- [Fact]
- public void HistoryText_Undo_Redo_Multiline_Selected_Tab_BackTab ()
- {
- var text = "First line.\nSecond line.\nThird line.";
- var tv = new TextView () { Width = 80, Height = 5, Text = text };
- tv.SelectionStartColumn = 6;
- tv.CursorPosition = new Point (6, 2);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Tab, new KeyModifiers ())));
- Assert.Equal ("First \tline.", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (7, 0), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.BackTab, new KeyModifiers ())));
- Assert.Equal ("First line.", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (6, 0), tv.CursorPosition);
- // Undo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ("First \tline.", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (7, 0), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ($"First line.{Environment.NewLine}Second line.{Environment.NewLine}Third line.", tv.Text);
- Assert.Equal (3, tv.Lines);
- Assert.Equal (new Point (6, 2), tv.CursorPosition);
- Assert.False (tv.IsDirty);
- // Redo
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ("First \tline.", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (7, 0), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.R | Key.CtrlMask, new KeyModifiers ())));
- Assert.Equal ("First line.", tv.Text);
- Assert.Equal (1, tv.Lines);
- Assert.Equal (new Point (6, 0), tv.CursorPosition);
- }
- [Fact]
- public void HistoryText_ClearHistoryChanges ()
- {
- var text = "This is the first line.\nThis is the second line.\nThis is the third line.";
- var tv = new TextView () { Text = text };
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Enter, new KeyModifiers ())));
- Assert.Equal ($"{Environment.NewLine}This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (4, tv.Lines);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- Assert.True (tv.IsDirty);
- Assert.True (tv.HasHistoryChanges);
- tv.ClearHistoryChanges ();
- Assert.Equal ($"{Environment.NewLine}This is the first line.{Environment.NewLine}This is the second line.{Environment.NewLine}This is the third line.", tv.Text);
- Assert.Equal (4, tv.Lines);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- Assert.False (tv.IsDirty);
- Assert.False (tv.HasHistoryChanges);
- }
- [Fact]
- public void GetRegion_StringFromRunes_Environment_NewLine ()
- {
- var tv = new TextView () { Text = $"1{Environment.NewLine}2" };
- Assert.Equal ($"1{Environment.NewLine}2", tv.Text);
- Assert.Equal ("", tv.SelectedText);
- tv.SelectAll ();
- Assert.Equal ($"1{Environment.NewLine}2", tv.Text);
- Assert.Equal ($"1{Environment.NewLine}2", tv.SelectedText);
- }
- [Fact, AutoInitShutdown]
- public void WordWrap_Not_Throw_If_Width_Is_Less_Than_Zero ()
- {
- var exception = Record.Exception (() => {
- var tv = new TextView () {
- Width = Dim.Fill (),
- Height = Dim.Fill (),
- WordWrap = true,
- Text = "これは、左右のクリップ境界をテストするための非常に長いテキストです。"
- };
- });
- Assert.Null (exception);
- }
- [Fact]
- [AutoInitShutdown]
- public void ScrollDownTillCaretOffscreen_ThenType ()
- {
- var tv = new TextView {
- Width = 10,
- Height = 5
- };
- // add 100 lines of wide text to view
- for (int i = 0; i < 100; i++)
- tv.Text += new string ('x', 100) + Environment.NewLine;
- Assert.Equal (0, tv.CursorPosition.Y);
- tv.ScrollTo (50);
- Assert.Equal (0, tv.CursorPosition.Y);
- tv.ProcessKey (new KeyEvent (Key.p, new KeyModifiers ()));
- }
- [Fact]
- [AutoInitShutdown]
- public void MoveDown_By_Setting_CursorPosition ()
- {
- var tv = new TextView {
- Width = 10,
- Height = 5
- };
- // add 100 lines of wide text to view
- for (int i = 0; i < 100; i++)
- tv.Text += new string ('x', 100) + (i == 99 ? "" : Environment.NewLine);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- tv.CursorPosition = new Point (5, 50);
- Assert.Equal (new Point (5, 50), tv.CursorPosition);
- tv.CursorPosition = new Point (200, 200);
- Assert.Equal (new Point (100, 99), tv.CursorPosition);
- }
- [Fact]
- [AutoInitShutdown]
- public void ScrollTo_CursorPosition ()
- {
- var tv = new TextView {
- Width = 10,
- Height = 5
- };
- // add 100 lines of wide text to view
- for (int i = 0; i < 100; i++)
- tv.Text += new string ('x', 100) + (i == 99 ? "" : Environment.NewLine);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- tv.ScrollTo (50);
- Assert.Equal (new Point (0, 0), tv.CursorPosition);
- tv.CursorPosition = new Point (tv.LeftColumn, tv.TopRow);
- Assert.Equal (new Point (0, 50), tv.CursorPosition);
- }
- [Fact]
- [InitShutdown]
- public void Mouse_Button_Shift_Preserves_Selection ()
- {
- Assert.Equal ("TAB to jump between text fields.", _textView.Text);
- Assert.True (_textView.MouseEvent (new MouseEvent () { X = 12, Y = 0, Flags = MouseFlags.Button1Pressed | MouseFlags.ButtonShift }));
- Assert.Equal (0, _textView.SelectionStartColumn);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (new Point (12, 0), _textView.CursorPosition);
- Assert.True (_textView.Selecting);
- Assert.Equal ("TAB to jump ", _textView.SelectedText);
- Assert.True (_textView.MouseEvent (new MouseEvent () { X = 12, Y = 0, Flags = MouseFlags.Button1Clicked }));
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (new Point (12, 0), _textView.CursorPosition);
- Assert.True (_textView.Selecting);
- Assert.Equal ("TAB to jump ", _textView.SelectedText);
- Assert.True (_textView.MouseEvent (new MouseEvent () { X = 19, Y = 0, Flags = MouseFlags.Button1Pressed | MouseFlags.ButtonShift }));
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (new Point (19, 0), _textView.CursorPosition);
- Assert.True (_textView.Selecting);
- Assert.Equal ("TAB to jump between", _textView.SelectedText);
- Assert.True (_textView.MouseEvent (new MouseEvent () { X = 19, Y = 0, Flags = MouseFlags.Button1Clicked }));
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (new Point (19, 0), _textView.CursorPosition);
- Assert.True (_textView.Selecting);
- Assert.Equal ("TAB to jump between", _textView.SelectedText);
- Assert.True (_textView.MouseEvent (new MouseEvent () { X = 24, Y = 0, Flags = MouseFlags.Button1Pressed | MouseFlags.ButtonShift }));
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (new Point (24, 0), _textView.CursorPosition);
- Assert.True (_textView.Selecting);
- Assert.Equal ("TAB to jump between text", _textView.SelectedText);
- Assert.True (_textView.MouseEvent (new MouseEvent () { X = 24, Y = 0, Flags = MouseFlags.Button1Clicked }));
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (new Point (24, 0), _textView.CursorPosition);
- Assert.True (_textView.Selecting);
- Assert.Equal ("TAB to jump between text", _textView.SelectedText);
- Assert.True (_textView.MouseEvent (new MouseEvent () { X = 24, Y = 0, Flags = MouseFlags.Button1Pressed }));
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (0, _textView.SelectionStartRow);
- Assert.Equal (new Point (24, 0), _textView.CursorPosition);
- Assert.True (_textView.Selecting);
- Assert.Equal ("", _textView.SelectedText);
- }
- [Fact, AutoInitShutdown]
- public void UnwrappedCursorPosition_Event ()
- {
- var cp = Point.Empty;
- var tv = new TextView () {
- Width = Dim.Fill (),
- Height = Dim.Fill (),
- Text = "This is the first line.\nThis is the second line.\n"
- };
- tv.UnwrappedCursorPosition += (e) => {
- cp = e;
- };
- Application.Top.Add (tv);
- Application.Begin (Application.Top);
- Assert.False (tv.WordWrap);
- Assert.Equal (Point.Empty, tv.CursorPosition);
- Assert.Equal (Point.Empty, cp);
- GraphViewTests.AssertDriverContentsWithFrameAre (@"
- This is the first line.
- This is the second line.
- ", output);
- tv.WordWrap = true;
- tv.CursorPosition = new Point (12, 0);
- tv.Redraw (tv.Bounds);
- Assert.Equal (new Point (12, 0), tv.CursorPosition);
- Assert.Equal (new Point (12, 0), cp);
- GraphViewTests.AssertDriverContentsWithFrameAre (@"
- This is the first line.
- This is the second line.
- ", output);
- ((FakeDriver)Application.Driver).SetBufferSize (6, 25);
- tv.Redraw (tv.Bounds);
- Assert.Equal (new Point (4, 2), tv.CursorPosition);
- Assert.Equal (new Point (12, 0), cp);
- GraphViewTests.AssertDriverContentsWithFrameAre (@"
- This
- is
- the
- first
-
- line.
- This
- is
- the
- secon
- d
- line.
- ", output);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.CursorRight, new KeyModifiers ())));
- tv.Redraw (tv.Bounds);
- Assert.Equal (new Point (0, 3), tv.CursorPosition);
- Assert.Equal (new Point (12, 0), cp);
- GraphViewTests.AssertDriverContentsWithFrameAre (@"
- This
- is
- the
- first
-
- line.
- This
- is
- the
- secon
- d
- line.
- ", output);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.CursorRight, new KeyModifiers ())));
- tv.Redraw (tv.Bounds);
- Assert.Equal (new Point (1, 3), tv.CursorPosition);
- Assert.Equal (new Point (13, 0), cp);
- GraphViewTests.AssertDriverContentsWithFrameAre (@"
- This
- is
- the
- first
-
- line.
- This
- is
- the
- secon
- d
- line.
- ", output);
- Assert.True (tv.MouseEvent (new MouseEvent () { X = 0, Y = 3, Flags = MouseFlags.Button1Pressed }));
- tv.Redraw (tv.Bounds);
- Assert.Equal (new Point (0, 3), tv.CursorPosition);
- Assert.Equal (new Point (12, 0), cp);
- GraphViewTests.AssertDriverContentsWithFrameAre (@"
- This
- is
- the
- first
-
- line.
- This
- is
- the
- secon
- d
- line.
- ", output);
- }
- [Fact]
- [AutoInitShutdown]
- public void DeleteTextBackwards_WordWrap_False_Return_Undo ()
- {
- const string text = "This is the first line.\nThis is the second line.\n";
- var tv = new TextView () {
- Width = Dim.Fill (),
- Height = Dim.Fill (),
- Text = text
- };
- var envText = tv.Text;
- Application.Top.Add (tv);
- Application.Begin (Application.Top);
- Assert.False (tv.WordWrap);
- Assert.Equal (Point.Empty, tv.CursorPosition);
- GraphViewTests.AssertDriverContentsWithFrameAre (@"
- This is the first line.
- This is the second line.
- ", output);
- tv.CursorPosition = new Point (3, 0);
- Assert.Equal (new Point (3, 0), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Backspace, new KeyModifiers ())));
- tv.Redraw (tv.Bounds);
- Assert.Equal (new Point (2, 0), tv.CursorPosition);
- GraphViewTests.AssertDriverContentsWithFrameAre (@"
- Ths is the first line.
- This is the second line.
- ", output);
- tv.CursorPosition = new Point (0, 1);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Backspace, new KeyModifiers ())));
- tv.Redraw (tv.Bounds);
- Assert.Equal (new Point (22, 0), tv.CursorPosition);
- GraphViewTests.AssertDriverContentsWithFrameAre (@"
- Ths is the first line.This is the second line.
- ", output);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Enter, new KeyModifiers ())));
- tv.Redraw (tv.Bounds);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- GraphViewTests.AssertDriverContentsWithFrameAre (@"
- Ths is the first line.
- This is the second line.
- ", output);
- while (tv.Text != envText) {
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- }
- Assert.Equal (envText, tv.Text);
- Assert.Equal (new Point (3, 0), tv.CursorPosition);
- Assert.False (tv.IsDirty);
- }
- [Fact]
- [AutoInitShutdown]
- public void DeleteTextBackwards_WordWrap_True_Return_Undo ()
- {
- const string text = "This is the first line.\nThis is the second line.\n";
- var tv = new TextView () {
- Width = Dim.Fill (),
- Height = Dim.Fill (),
- Text = text,
- WordWrap = true
- };
- var envText = tv.Text;
- Application.Top.Add (tv);
- Application.Begin (Application.Top);
- Assert.True (tv.WordWrap);
- Assert.Equal (Point.Empty, tv.CursorPosition);
- GraphViewTests.AssertDriverContentsWithFrameAre (@"
- This is the first line.
- This is the second line.
- ", output);
- tv.CursorPosition = new Point (3, 0);
- Assert.Equal (new Point (3, 0), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Backspace, new KeyModifiers ())));
- tv.Redraw (tv.Bounds);
- Assert.Equal (new Point (2, 0), tv.CursorPosition);
- GraphViewTests.AssertDriverContentsWithFrameAre (@"
- Ths is the first line.
- This is the second line.
- ", output);
- tv.CursorPosition = new Point (0, 1);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Backspace, new KeyModifiers ())));
- tv.Redraw (tv.Bounds);
- Assert.Equal (new Point (22, 0), tv.CursorPosition);
- GraphViewTests.AssertDriverContentsWithFrameAre (@"
- Ths is the first line.This is the second line.
- ", output);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Enter, new KeyModifiers ())));
- tv.Redraw (tv.Bounds);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- GraphViewTests.AssertDriverContentsWithFrameAre (@"
- Ths is the first line.
- This is the second line.
- ", output);
- while (tv.Text != envText) {
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- }
- Assert.Equal (envText, tv.Text);
- Assert.Equal (new Point (3, 0), tv.CursorPosition);
- Assert.False (tv.IsDirty);
- }
- [Fact]
- [AutoInitShutdown]
- public void DeleteTextForwards_WordWrap_False_Return_Undo ()
- {
- const string text = "This is the first line.\nThis is the second line.\n";
- var tv = new TextView () {
- Width = Dim.Fill (),
- Height = Dim.Fill (),
- Text = text
- };
- var envText = tv.Text;
- Application.Top.Add (tv);
- Application.Begin (Application.Top);
- Assert.False (tv.WordWrap);
- Assert.Equal (Point.Empty, tv.CursorPosition);
- GraphViewTests.AssertDriverContentsWithFrameAre (@"
- This is the first line.
- This is the second line.
- ", output);
- tv.CursorPosition = new Point (2, 0);
- Assert.Equal (new Point (2, 0), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.DeleteChar, new KeyModifiers ())));
- tv.Redraw (tv.Bounds);
- Assert.Equal (new Point (2, 0), tv.CursorPosition);
- GraphViewTests.AssertDriverContentsWithFrameAre (@"
- Ths is the first line.
- This is the second line.
- ", output);
- tv.CursorPosition = new Point (22, 0);
- Assert.Equal (new Point (22, 0), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.DeleteChar, new KeyModifiers ())));
- tv.Redraw (tv.Bounds);
- Assert.Equal (new Point (22, 0), tv.CursorPosition);
- GraphViewTests.AssertDriverContentsWithFrameAre (@"
- Ths is the first line.This is the second line.
- ", output);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Enter, new KeyModifiers ())));
- tv.Redraw (tv.Bounds);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- GraphViewTests.AssertDriverContentsWithFrameAre (@"
- Ths is the first line.
- This is the second line.
- ", output);
- while (tv.Text != envText) {
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- }
- Assert.Equal (envText, tv.Text);
- Assert.Equal (new Point (2, 0), tv.CursorPosition);
- Assert.False (tv.IsDirty);
- }
- [Fact]
- [AutoInitShutdown]
- public void DeleteTextForwards_WordWrap_True_Return_Undo ()
- {
- const string text = "This is the first line.\nThis is the second line.\n";
- var tv = new TextView () {
- Width = Dim.Fill (),
- Height = Dim.Fill (),
- Text = text,
- WordWrap = true
- };
- var envText = tv.Text;
- Application.Top.Add (tv);
- Application.Begin (Application.Top);
- Assert.True (tv.WordWrap);
- Assert.Equal (Point.Empty, tv.CursorPosition);
- GraphViewTests.AssertDriverContentsWithFrameAre (@"
- This is the first line.
- This is the second line.
- ", output);
- tv.CursorPosition = new Point (2, 0);
- Assert.Equal (new Point (2, 0), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.DeleteChar, new KeyModifiers ())));
- tv.Redraw (tv.Bounds);
- Assert.Equal (new Point (2, 0), tv.CursorPosition);
- GraphViewTests.AssertDriverContentsWithFrameAre (@"
- Ths is the first line.
- This is the second line.
- ", output);
- tv.CursorPosition = new Point (22, 0);
- Assert.Equal (new Point (22, 0), tv.CursorPosition);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.DeleteChar, new KeyModifiers ())));
- tv.Redraw (tv.Bounds);
- Assert.Equal (new Point (22, 0), tv.CursorPosition);
- GraphViewTests.AssertDriverContentsWithFrameAre (@"
- Ths is the first line.This is the second line.
- ", output);
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Enter, new KeyModifiers ())));
- tv.Redraw (tv.Bounds);
- Assert.Equal (new Point (0, 1), tv.CursorPosition);
- GraphViewTests.AssertDriverContentsWithFrameAre (@"
- Ths is the first line.
- This is the second line.
- ", output);
- while (tv.Text != envText) {
- Assert.True (tv.ProcessKey (new KeyEvent (Key.Z | Key.CtrlMask, new KeyModifiers ())));
- }
- Assert.Equal (envText, tv.Text);
- Assert.Equal (new Point (2, 0), tv.CursorPosition);
- Assert.False (tv.IsDirty);
- }
- }
- }
|