home *** CD-ROM | disk | FTP | other *** search
/ 73.234.73.94.ip.orionnet.ru / 73.234.73.94.ip.orionnet.ru.tar / 73.234.73.94.ip.orionnet.ru / Far30b3000.x86.20121208.msi / macrotest.lua < prev    next >
Text File  |  2012-12-08  |  12KB  |  388 lines

  1. -- Started: 2012-08-20.
  2.  
  3. local luamacroId="4ebbefc8-2084-4b7f-94c0-692ce136894d" -- LuaMacro plugin GUID
  4.  
  5. local function IsNumOrInt(v)
  6.   return type(v)=="number" or bit64.type(v)
  7. end
  8.  
  9. assert(not (APanel.Plugin or PPanel.Plugin),
  10.   "Run these tests when neither of panels is a plugin panel.")
  11.  
  12. assert(Area.Shell and not Area.Help, "Run these tests from the Shell area.")
  13. assert(Area.Current=="Shell")
  14.  
  15. Keys"F1"
  16. assert(Area.Help and not Area.Shell)
  17. assert(Area.Current=="Help")
  18. Keys"Esc"
  19.  
  20. Keys"F7"
  21. assert(Area.Dialog)
  22. assert(Area.Current=="Dialog")
  23. Keys"Esc"
  24.  
  25. assert(Area.Current              =="Shell")
  26. assert(Area.Other                ==false)
  27. assert(Area.Shell                ==true)
  28. assert(Area.Viewer               ==false)
  29. assert(Area.Editor               ==false)
  30. assert(Area.Dialog               ==false)
  31. assert(Area.Search               ==false)
  32. assert(Area.Disks                ==false)
  33. assert(Area.MainMenu             ==false)
  34. assert(Area.Menu                 ==false)
  35. assert(Area.Help                 ==false)
  36. assert(Area.Info                 ==false)
  37. assert(Area.QView                ==false)
  38. assert(Area.Tree                 ==false)
  39. assert(Area.FindFolder           ==false)
  40. assert(Area.UserMenu             ==false)
  41. assert(Area.ShellAutoCompletion  ==false)
  42. assert(Area.DialogAutoCompletion ==false)
  43.  
  44. assert(akey(0)==0x501007B)
  45. assert(akey(1)=="CtrlShiftF12")
  46. --todo: test 2nd parameter
  47.  
  48. assert(band(0xFF,0xFE,0xFD) == 0xFC)
  49. assert(bor(1,2,4) == 7)
  50. assert(bnot(5) == -6)
  51. assert(bxor(0x01,0xF0,0xAA) == 0x5B)
  52.  
  53. temp=nil
  54. assert(eval("temp=5+7")==0)
  55. assert(temp==12)
  56.  
  57. temp=nil
  58. assert(eval("temp=5+7",1)==0)
  59. assert(temp==nil)
  60.  
  61. --assert(eval("5+7")==11) -- todo: suppress error message
  62.  
  63. Keys"Esc f o o Space ╨æ ╨░ ╤Ç"
  64. assert(CmdLine.Value=="foo ╨æ╨░╤Ç")
  65. assert(not CmdLine.Selected)
  66. Keys"SelWord"
  67. assert(CmdLine.Selected)
  68. Keys"Esc"
  69. assert(CmdLine.Value=="")
  70.  
  71. assert(type(msgbox)=="function")
  72.  
  73. Keys"Esc"
  74. print("foo ╨æ╨░╤Ç")
  75. assert(CmdLine.Value=="foo ╨æ╨░╤Ç")
  76. Keys"Esc"
  77.  
  78. Keys"Esc"
  79. printf("%s %d %s", "foo", 5+7, "╨æ╨░╤Ç")
  80. assert(CmdLine.Value=="foo 12 ╨æ╨░╤Ç")
  81. Keys"Esc"
  82.  
  83. assert(type(prompt)=="function")
  84.  
  85. assert(mf.abs(1.3)==1.3)
  86. assert(mf.abs(-1.3)==1.3)
  87. assert(mf.abs(0)==0)
  88.  
  89. assert(mf.asc("0")==48)
  90. assert(mf.asc("Я")==1071)
  91.  
  92. assert(mf.atoi("0")==0)
  93. assert(mf.atoi("-10")==-10)
  94. assert(mf.atoi("0x11")==17)
  95. assert(mf.atoi("1011",2)==11)
  96. assert(mf.atoi("123456789123456789")==bit64.new("123456789123456789"))
  97. assert(mf.atoi("-123456789123456789")==bit64.new("-123456789123456789"))
  98. assert(mf.atoi("0x1B69B4BACD05F15")==bit64.new("0x1B69B4BACD05F15"))
  99. assert(mf.atoi("-0x1B69B4BACD05F15")==bit64.new("-0x1B69B4BACD05F15"))
  100.  
  101. assert(type(mf.beep)=="function")
  102.  
  103. assert(mf.chr(48)=="0")
  104. assert(mf.chr(1071)=="Я")
  105.  
  106. mf.clip(5,2) -- ╨▓╨║╨╗╤Ä╤ç╨╕╤é╤î ╨▓╨╜╤â╤é╤Ç╨╡╨╜╨╜╨╕╨╣ ╨▒╤â╤ä╨╡╤Ç ╨╛╨▒╨╝╨╡╨╜╨░
  107. assert(mf.clip(5,-1)==2)
  108. assert(mf.clip(5,1)==2) -- ╨▓╨║╨╗╤Ä╤ç╨╕╤é╤î ╨▒╤â╤ä╨╡╤Ç ╨╛╨▒╨╝╨╡╨╜╨░ OS
  109. assert(mf.clip(5,-1)==1)
  110. for clipnum=2,1,-1 do -- ╨▓ ╨║╨╛╨╜╤å╨╡ ╨╛╤ü╤é╨░╨▓╨╗╤Å╨╡╤é ╨▓╨║╨╗╤Ä╤ç╨╡╨╜╨╜╤ï╨╝ ╨▒╤â╤ä╨╡╤Ç ╨╛╨▒╨╝╨╡╨╜╨░ OS
  111.   mf.clip(5,clipnum)
  112.   local str = "foo"..clipnum
  113.   assert(mf.clip(1,str) ~= 0)
  114.   assert(mf.clip(0,str) == str)
  115. end
  116.  
  117. assert(type(mf.date())=="string")
  118. assert(type(mf.date("%a"))=="string")
  119.  
  120. mf.env("Foo",1,"Bar")
  121. assert(mf.env("Foo")=="Bar")
  122. mf.env("Foo",1,"")
  123. assert(mf.env("Foo")=="")
  124.  
  125. local fname=assert(win.GetEnv"tmp" or win.GetEnv"temp").."\\tmp.tmp"
  126. assert(io.open(fname,"w")):close()
  127. local attr = mf.fattr(fname)
  128. assert(win.DeleteFile(fname))
  129. assert(type(attr)=="number")
  130.  
  131. local fname=assert(win.GetEnv"tmp" or win.GetEnv"temp").."\\tmp.tmp"
  132. assert(io.open(fname,"w")):close()
  133. assert(mf.fexist(fname))
  134. assert(win.DeleteFile(fname))
  135. assert(not mf.fexist(fname))
  136.  
  137. assert(mf.float("2.56e1")==25.6)
  138.  
  139. assert(type(mf.flock)=="function")
  140.  
  141. assert(mf.fmatch("Readme.txt", "*.txt") == 1)
  142. assert(mf.fmatch("Readme.txt", "Readme.*|*.txt") == 0)
  143. assert(mf.fmatch("c:\\Readme.txt", "/txt$/i") == 1)
  144. assert(mf.fmatch("c:\\Readme.txt", "/txt$") == -1)
  145.  
  146. local path="C:\\Program Files\\Far\\Far.exe"
  147. assert(mf.fsplit(path,1)=="C:\\")
  148. assert(mf.fsplit(path,2)=="\\Program Files\\Far\\")
  149. assert(mf.fsplit(path,4)=="Far")
  150. assert(mf.fsplit(path,8)==".exe")
  151.  
  152. assert(mf.iif(true,  1, 2)==1)
  153. assert(mf.iif(false, 1, 2)==2)
  154. assert(mf.iif("a",   1, 2)==1)
  155. assert(mf.iif("",    1, 2)==2)
  156.  
  157. assert(mf.index("language","gua",0)==3)
  158. assert(mf.index("language","gua",1)==3)
  159. assert(mf.index("language","gUA",1)==-1)
  160. assert(mf.index("language","gUA",0)==3)
  161.  
  162. assert(mf.int("2.99")==2)
  163. assert(mf.int("-2.99")==-2)
  164. assert(mf.int("0x10")==0)
  165. assert(mf.int("123456789123456789")==bit64.new("123456789123456789"))
  166. assert(mf.int("-123456789123456789")==bit64.new("-123456789123456789"))
  167.  
  168. assert(mf.itoa(100)=="100")
  169. assert(mf.itoa(100,10)=="100")
  170. assert(mf.itoa(bit64.new("123456789123456789"))=="123456789123456789")
  171. assert(mf.itoa(bit64.new("-123456789123456789"))=="-123456789123456789")
  172. assert(mf.itoa(100,2)=="1100100")
  173. assert(mf.itoa(100,16)=="64")
  174. assert(mf.itoa(100,36)=="2s")
  175.  
  176. assert(mf.key(83951739)=="CtrlShiftF12")
  177. assert(mf.key("CtrlShiftF12")=="CtrlShiftF12")
  178. assert(mf.key("foobar")=="")
  179.  
  180. assert(mf.lcase("FOo ╨æ╨É╤Ç")=="foo ╨▒╨░╤Ç")
  181.  
  182. assert(mf.len("FOo ╨æ╨É╤Ç")==7)
  183.  
  184. assert(mf.max(-2,-5)==-2)
  185. assert(mf.max(2,5)==5)
  186.  
  187. assert(mf.min(-2,-5)==-5)
  188. assert(mf.min(2,5)==2)
  189.  
  190. mf.msave("macrotest", "testkey", "foo")
  191. assert(mf.mload("macrotest", "testkey")=="foo")
  192. mf.mdelete("macrotest", "*")
  193. assert(mf.mload("macrotest", "testkey")==nil)
  194.  
  195. assert(mf.mod(11,4)==3)
  196.  
  197. assert(mf.replace("Foo ╨æ╨░╤Ç", "o", "1")=="F11 ╨æ╨░╤Ç")
  198. assert(mf.replace("Foo ╨æ╨░╤Ç", "o", "1", 1)=="F1o ╨æ╨░╤Ç")
  199. assert(mf.replace("Foo ╨æ╨░╤Ç", "O", "1", 1, 1)=="Foo ╨æ╨░╤Ç")
  200. assert(mf.replace("Foo ╨æ╨░╤Ç", "O", "1", 1, 0)=="F1o ╨æ╨░╤Ç")
  201.  
  202. assert(mf.rindex("language","a",0)==5)
  203. assert(mf.rindex("language","a",1)==5)
  204. assert(mf.rindex("language","A",1)==-1)
  205. assert(mf.rindex("language","A",0)==5)
  206.  
  207. do
  208.   -- flags
  209.   local sfx=bit64.new"0x0010000000000000"
  210.   local dlm=bit64.new"0x0800000000000000"
  211.   local exp=bit64.new"0x0080000000000000"
  212.   local eco=bit64.new"0x0040000000000000"
  213.   local dec=bit64.new"0x0400000000000000"
  214.   local min=bit64.new"0x0020000000000000"
  215.  
  216.   assert(mf.size2str(123,0,5)=="  123")
  217.   assert(mf.size2str(123,0,-5)=="123  ")
  218. end
  219.  
  220. local temp=os.clock()
  221. mf.sleep(50)
  222. assert(os.clock()-temp > 0.04)
  223.  
  224. assert(mf.string(-5.7)=="-5.7")
  225.  
  226. assert(mf.strpad("Foo",10,"*",  2) == '***Foo****')
  227. assert(mf.strpad("",   10,"-*-",2) == '-*--*--*--')
  228. assert(mf.strpad("",   10,"-*-")   == '-*--*--*--')
  229. assert(mf.strpad("Foo",10)         == 'Foo       ')
  230. assert(mf.strpad("Foo",10,"-")     == 'Foo-------')
  231. assert(mf.strpad("Foo",10," ",  1) == '       Foo')
  232. assert(mf.strpad("Foo",10," ",  2) == '   Foo    ')
  233. assert(mf.strpad("Foo",10,"1234567890",2) == '123Foo1234')
  234.  
  235. assert(mf.strwrap("╨ƒ╤Ç╨╕╨╝╨╡╤Ç ╤ü╤é╤Ç╨╛╨║╨╕, ╨║╨╛╤é╨╛╤Ç╨░╤Å ╨▒╤â╨┤╨╡╤é ╤Ç╨░╨╖╨▒╨╕╤é╨░ ╨╜╨░ ╨╜╨╡╤ü╨║╨╛╨╗╤î╨║╨╛ ╤ü╤é╤Ç╨╛╨║ ╨┐╨╛ ╤ê╨╕╤Ç╨╕╨╜╨╡ ╨▓ 7 ╤ü╨╕╨╝╨▓╨╛╨╗╨╛╨▓.", 7)==
  236. [[
  237. Пример
  238. строки,
  239. которая
  240. будет
  241. разбита
  242. ╨╜╨░
  243. несколько
  244. строк
  245. ╨┐╨╛
  246. ширине
  247. ╨▓ 7
  248. символов.]])
  249.  
  250. assert(mf.strwrap("╨ƒ╤Ç╨╕╨╝╨╡╤Ç ╤ü╤é╤Ç╨╛╨║╨╕, ╨║╨╛╤é╨╛╤Ç╨░╤Å ╨▒╤â╨┤╨╡╤é ╤Ç╨░╨╖╨▒╨╕╤é╨░ ╨╜╨░ ╨╜╨╡╤ü╨║╨╛╨╗╤î╨║╨╛ ╤ü╤é╤Ç╨╛╨║ ╨┐╨╛ ╤ê╨╕╤Ç╨╕╨╜╨╡ ╨▓ 7 ╤ü╨╕╨╝╨▓╨╛╨╗╨╛╨▓.", 7,"\n",1)==
  251. [[
  252. Пример
  253. строки,
  254. которая
  255. будет
  256. разбита
  257. ╨╜╨░
  258. несколь
  259. ╨║╨╛
  260. строк
  261. ╨┐╨╛
  262. ширине
  263. ╨▓ 7
  264. символо
  265. ╨▓.]])
  266.  
  267. assert(mf.substr("abcdef", 1) == "bcdef")
  268. assert(mf.substr("abcdef", 1, 3) == "bcd")
  269. assert(mf.substr("abcdef", 0, 4) == "abcd")
  270. assert(mf.substr("abcdef", 0, 8) == "abcdef")
  271. assert(mf.substr("abcdef", -1) == "f")
  272. assert(mf.substr("abcdef", -2) == "ef")
  273. assert(mf.substr("abcdef", -3, 1) == "d")
  274. assert(mf.substr("abcdef", 0, -1) == "abcde")
  275. assert(mf.substr("abcdef", 2, -1) == "cde")
  276. assert(mf.substr("abcdef", 4, -4) == "")
  277. assert(mf.substr("abcdef", -3, -1) == "de")
  278.  
  279. assert(mf.testfolder(".") > 0)
  280. assert(mf.testfolder("C:\\") == 2)
  281. assert(mf.testfolder("@:\\") <= 0)
  282.  
  283. assert(mf.trim(" abc ")=="abc")
  284. assert(mf.trim(" abc ",0)=="abc")
  285. assert(mf.trim(" abc ",1)=="abc ")
  286. assert(mf.trim(" abc ",2)==" abc")
  287.  
  288. assert(mf.ucase("FOo ╨æ╨É╤Ç")=="FOO ╨æ╨É╨á")
  289.  
  290. assert(mf.waitkey(50,0)=="")
  291. assert(mf.waitkey(50,1)==0xFFFFFFFF)
  292.  
  293. assert(type(mf.xlat)=="function")
  294. -- ╨╖╨░╨║╨╛╨╝╨╝╨╡╨╜╤é╨╕╤Ç╨╛╨▓╨░╨╜╨╛, ╤é.╨║. ╤ì╤é╨╕ ╤é╨╡╤ü╤é╤ï ╨▒╤â╨┤╤â╤é ╤Ç╨░╨▒╨╛╤é╨░╤é╤î ╨╜╨╡ ╨╜╨░ ╨╗╤Ä╨▒╨╛╨╣ ╨║╨╛╨╜╤ä╨╕╨│╤â╤Ç╨░╤å╨╕╨╕.
  295. --assert(mf.xlat("ghzybr")=="пряник")
  296. --assert(mf.xlat("сщьзгеук")=="computer")
  297.  
  298. for _,pan in ipairs{APanel,PPanel} do
  299.   assert(type(pan.Bof)         =="boolean")
  300.   assert(type(pan.ColumnCount) =="number")
  301.   assert(type(pan.CurPos)      =="number")
  302.   assert(type(pan.Current)     =="string")
  303.   assert(type(pan.DriveType)   =="number")
  304.   assert(type(pan.Empty)       =="boolean")
  305.   assert(type(pan.Eof)         =="boolean")
  306.   assert(type(pan.FilePanel)   =="boolean")
  307.   assert(type(pan.Filter)      =="boolean")
  308.   assert(type(pan.Folder)      =="boolean")
  309.   assert(type(pan.Format)      =="string")
  310.   assert(type(pan.Height)      =="number")
  311.   assert(type(pan.HostFile)    =="string")
  312.   assert(type(pan.ItemCount)   =="number")
  313.   assert(type(pan.Left)        =="boolean")
  314.   assert(type(pan.LFN)         =="boolean")
  315.   assert(type(pan.OPIFlags)    =="number")
  316.   assert(type(pan.Path)        =="string")
  317.   assert(type(pan.Path0)       =="string")
  318.   assert(type(pan.Plugin)      =="boolean")
  319.   assert(type(pan.Prefix)      =="string")
  320.   assert(type(pan.Root)        =="boolean")
  321.   assert(type(pan.SelCount)    =="number")
  322.   assert(type(pan.Selected)    =="boolean")
  323.   assert(type(pan.Type)        =="number")
  324.   assert(type(pan.UNCPath)     =="string")
  325.   assert(type(pan.Visible)     =="boolean")
  326.   assert(type(pan.Width)       =="number")
  327. end
  328.  
  329. assert(Panel.FAttr(0,":")==-1)
  330. assert(Panel.FAttr(1,":")==-1)
  331.  
  332. assert(Panel.FExist(0,":")==0)
  333. assert(Panel.FExist(1,":")==0)
  334.  
  335. for pt=0,1 do
  336.   assert(type(Panel.Item(pt,0,0))  =="string")
  337.   assert(type(Panel.Item(pt,0,1))  =="string")
  338.   assert(type(Panel.Item(pt,0,2))  =="number")
  339.   assert(type(Panel.Item(pt,0,3))  =="string")
  340.   assert(type(Panel.Item(pt,0,4))  =="string")
  341.   assert(type(Panel.Item(pt,0,5))  =="string")
  342.   assert(IsNumOrInt(Panel.Item(pt,0,6)))
  343.   assert(IsNumOrInt(Panel.Item(pt,0,7)))
  344.   assert(type(Panel.Item(pt,0,8))  =="boolean")
  345.   assert(type(Panel.Item(pt,0,9))  =="number")
  346.   assert(type(Panel.Item(pt,0,10)) =="boolean")
  347.   assert(type(Panel.Item(pt,0,11)) =="string")
  348.   assert(type(Panel.Item(pt,0,12)) =="string")
  349.   assert(type(Panel.Item(pt,0,13)) =="number")
  350.   assert(type(Panel.Item(pt,0,14)) =="number")
  351.   assert(IsNumOrInt(Panel.Item(pt,0,15)))
  352.   assert(IsNumOrInt(Panel.Item(pt,0,16)))
  353.   assert(IsNumOrInt(Panel.Item(pt,0,17)))
  354.   assert(type(Panel.Item(pt,0,18)) =="number")
  355.   assert(IsNumOrInt(Panel.Item(pt,0,19)))
  356.   assert(type(Panel.Item(pt,0,20)) =="string")
  357.   assert(IsNumOrInt(Panel.Item(pt,0,21)))
  358.   assert(type(Panel.Item(pt,0,22)) =="string")
  359.   assert(type(Panel.Item(pt,0,23)) =="number")
  360. end
  361.  
  362. assert(type(Panel.Select)=="function")
  363.  
  364. assert(type(Panel.SetPath)=="function")
  365.  
  366. assert(type(Panel.SetPos)=="function")
  367.  
  368. assert(type(Panel.SetPosIdx)=="function")
  369.  
  370. assert(type(Far.KbdLayout(0))=="number")
  371.  
  372. assert(type(Far.KeyBar_Show(0))=="number")
  373.  
  374. assert(type(Far.Window_Scroll)=="function")
  375.  
  376. do -- Plugin.Call: test arguments and returns
  377.   local i1 = bit64.new("0x8765876587658765")
  378.   local r1,r2,r3,r4,r5 = Plugin.Call(luamacroId, "argtest", "foo", i1, -2.34, false, {"foo\0bar"})
  379.   assert(r1=="foo" and r2==i1 and r3==-2.34 and r4==false and type(r5)=="table" and r5[1]=="foo\0bar")
  380.  
  381.   local N,src = 4096,{}
  382.   for k=1,N do src[k]=k end
  383.   local trg = { Plugin.Call(luamacroId, "argtest", unpack(src)) }
  384.   assert(#trg==N and trg[1]==1 and trg[N]==N)
  385. end
  386.  
  387. far.Message("All tests OK", "LuaMacro")
  388.