@@ -72,7 +72,7 @@ local function pack (...)
7272 return { n = select (" #" ,... ), ... }
7373end
7474
75- local TmpFileName = win .JoinPath (assert (win .GetEnv " tmp " or win .GetEnv " temp " ), " tmp.tmp" )
75+ local TmpFileName = win .JoinPath (assert (win .GetEnv " TEMP " or win .GetEnv " TMP " ), " tmp.tmp" )
7676
7777local function WriteTmpFile (...)
7878 local fp = assert (io.open (TmpFileName ," w" ))
@@ -512,7 +512,7 @@ local function test_mf_msave()
512512 mf .msave (" key1" , " name1" , 100 )
513513 mf .msave (" key2" , " name2" , 200 , " roaming" )
514514 mf .msave (" key1" , " name1" , 300 , " local" )
515- for k = 1 ,2 do
515+ for _ = 1 ,2 do
516516 asrt .eq (mf .mload (" key1" , " name1" ), 100 )
517517 asrt .eq (mf .mload (" key1" , " name1" , " roaming" ), 100 )
518518 asrt .eq (mf .mload (" key2" , " name2" ), 200 )
@@ -1167,7 +1167,60 @@ local function test_CheckAndGetHotKey()
11671167 Keys (" Esc" )
11681168end
11691169
1170+ --[[ ------------------------------------------------------------------------------------------------
1171+ 0002554: При фильтрации видны элементы меню скрытые с помощью MIF_HIDDEN
1172+
1173+ Description:
1174+ Если активировать фильтр меню (RAlt), и начать фильтровать список, то подходящие под фильтр элементы
1175+ (с флагом MIF_HIDDEN) также будут видны.
1176+
1177+ Даже если ни один из скрытых элементов не подходит, то при отмене фильтра все они появятся.
1178+ --]] ---- --------------------------------------------------------------------------------------------
1179+ local function test_mantis_2554 ()
1180+ local Items = {
1181+ {text = " hidden" , hidden = true }, {text = " visible" },
1182+ }
1183+
1184+ local AssertInvariant = function ()
1185+ asrt .eq (0x20 , Menu .ItemStatus (1 )) -- Если флаг установлен, то пункт меню не выводится на экран.
1186+ asrt .eq (0x01 , Menu .ItemStatus (2 )) -- Признак активности. Только один пункт может быть активным.
1187+ end
1188+ local AssertFilterIsOff = function () asrt .eq (0 , Menu .Filter (0 ,- 1 )) end
1189+ local AssertFilterIsOn = function () asrt .eq (1 , Menu .Filter (0 ,- 1 )) end
1190+
1191+ -- open the menu
1192+ asrt .istrue (Area .Shell )
1193+ mf .acall (far .Menu ,{},Items )
1194+ asrt .istrue (Area .Menu )
1195+ AssertFilterIsOff ()
1196+ AssertInvariant ()
1197+
1198+ -- turn the menu filter on
1199+ Keys (" CtrlAltF" )
1200+ AssertFilterIsOn ()
1201+ AssertInvariant ()
1202+
1203+ -- input something into the filter
1204+ Keys (" I" )
1205+ AssertInvariant ()
1206+ Keys (" BS" )
1207+ AssertInvariant ()
1208+ AssertFilterIsOn ()
1209+
1210+ -- turn the menu filter off
1211+ Keys (" CtrlAltF" )
1212+ AssertFilterIsOff ()
1213+ AssertInvariant ()
1214+
1215+ -- close the menu
1216+ asrt .istrue (Area .Menu )
1217+ Keys (" Esc" )
1218+ asrt .istrue (Area .Shell )
1219+ end
1220+
11701221function MT .test_Menu ()
1222+ test_mantis_2554 ()
1223+
11711224 Keys (" F11" )
11721225 asrt .str (Menu .Value )
11731226 asrt .eq (Menu .Id , far .Guids .PluginsMenuId )
@@ -1679,7 +1732,7 @@ local function test_RegexControl()
16791732 assert (str == " ITEM;ITEMaITEM;ITEM" and nfound == 4 and nrep == 4 )
16801733
16811734 -- Mantis 3336 (https://bugs.farmanager.com/view.php?id=3336)
1682- local fr , to , c1 ,c2 ,c3
1735+ local c1 ,c2 ,c3
16831736 fr ,to ,c1 = regex .find (" {}" , " \\ {(.)?\\ }" )
16841737 assert (fr == 1 and to == 2 and c1 == false )
16851738 fr ,to ,c1 ,c2 ,c3 = regex .find (" bbb" , " (b)?b(b)?(b)?b" )
@@ -1874,7 +1927,7 @@ local function test_AdvControl_Synchro()
18741927 end
18751928 far .AdvControl (" ACTL_SYNCHRO" , 123 )
18761929 far .AdvControl (" ACTL_SYNCHRO" , - 456 )
1877- for k = 1 ,2 do
1930+ for _ = 1 ,2 do
18781931 mf .acall (far .Show ); Keys " Esc"
18791932 end
18801933 export .ProcessSynchroEvent = oldProcessSynchroEvent
@@ -1937,7 +1990,7 @@ local function test_far_FarClock()
19371990 -- check granularity
19381991 local OK = false
19391992 temp = far .FarClock () % 10
1940- for k = 1 ,10 do
1993+ for _ = 1 ,10 do
19411994 win .Sleep (20 )
19421995 if temp ~= far .FarClock () % 10 then OK = true ; break ; end
19431996 end
@@ -2574,6 +2627,84 @@ local function test_Editor_Misc()
25742627 editor .Quit ()
25752628end
25762629
2630+ local function test_Editor_mantis_2571 ()
2631+ local flags = " EF_NONMODAL EF_IMMEDIATERETURN EF_DISABLEHISTORY"
2632+ local fname = asrt .str (far .MkTemp ())
2633+
2634+ -- open the editor
2635+ editor .Editor (fname ,nil ,nil ,nil ,nil ,nil ,flags )
2636+ asrt .istrue (Area .Editor )
2637+
2638+ local EI = asrt .table (editor .GetInfo ())
2639+ asrt .eq (1 , EI .TotalLines )
2640+
2641+ -- input some text
2642+ for k = 1 ,8 do
2643+ editor .InsertString ()
2644+ editor .SetString (nil , k , " 12345678" )
2645+ end
2646+ for _ = 1 ,4 do editor .InsertString () end
2647+
2648+ EI = asrt .table (editor .GetInfo ())
2649+ asrt .eq (13 , EI .TotalLines )
2650+
2651+ -- insert a vertical block
2652+ Keys (" CtrlHome 3*AltRight 7*AltDown CtrlC CtrlU CtrlV" )
2653+ EI = asrt .table (editor .GetInfo ())
2654+ asrt .eq (15 , EI .TotalLines )
2655+
2656+ -- undo
2657+ Keys (" CtrlZ" )
2658+ EI = asrt .table (editor .GetInfo ())
2659+ asrt .eq (13 , EI .TotalLines )
2660+
2661+ -- check
2662+ for k = 1 ,EI .TotalLines do
2663+ local T = asrt .table (editor .GetString (nil , k ))
2664+ asrt .eq (T .StringText , k <= 8 and " 12345678" or " " )
2665+ end
2666+
2667+ -- clean
2668+ Keys (" F2 Esc" )
2669+ asrt .istrue (Area .Shell )
2670+ asrt .istrue (win .DeleteFile (fname ))
2671+ end
2672+
2673+ local function test_Editor_mantis_3367 ()
2674+ local flags = " EF_NONMODAL EF_IMMEDIATERETURN EF_DISABLEHISTORY"
2675+ local fname = asrt .str (far .MkTemp ())
2676+
2677+ -- open the editor
2678+ editor .Editor (fname ,nil ,nil ,nil ,nil ,nil ,flags )
2679+ asrt .istrue (Area .Editor )
2680+
2681+ -- set ESPT_CURSORBEYONDEOL option to true
2682+ local EI = asrt .table (editor .GetInfo ())
2683+ asrt .eq (1 , EI .TotalLines )
2684+ asrt .neq (0 , band (EI .CurState , F .ECSTATE_SAVED ))
2685+ local BeyondEOL = band (EI .Options , F .EOPT_CURSORBEYONDEOL ) ~= 0
2686+ asrt .istrue (editor .SetParam (nil , " ESPT_CURSORBEYONDEOL" , true ))
2687+
2688+ -- move right and input some characters
2689+ Keys (" 8*Right a b c" )
2690+ EI = asrt .table (editor .GetInfo ())
2691+ asrt .eq (0 , band (EI .CurState , F .ECSTATE_SAVED ))
2692+ local T = asrt .table (editor .GetString (nil , 1 ))
2693+ asrt .eq (T .StringText , " abc" )
2694+
2695+ -- undo the input characters
2696+ Keys (" CtrlZ" )
2697+ EI = asrt .table (editor .GetInfo ())
2698+ asrt .neq (0 , band (EI .CurState , F .ECSTATE_SAVED ))
2699+ T = asrt .table (editor .GetString (nil , 1 ))
2700+ asrt .eq (T .StringText , " " )
2701+
2702+ -- restore BeyondEOL and clean
2703+ asrt .istrue (editor .SetParam (nil , " ESPT_CURSORBEYONDEOL" , BeyondEOL ))
2704+ Keys (" Esc" )
2705+ asrt .istrue (Area .Shell )
2706+ end
2707+
25772708function MT .test_Editor ()
25782709 local args = {
25792710 (" 123456789-" ):rep (4 ), -- plain ASCII
@@ -2587,6 +2718,8 @@ function MT.test_Editor()
25872718 test_Editor_Sel_Dialog (args )
25882719 test_Editor_Sel_Editor (args )
25892720 test_Editor_Misc ()
2721+ test_Editor_mantis_2571 ()
2722+ test_Editor_mantis_3367 ()
25902723end
25912724
25922725function MT .test_all ()
0 commit comments