jl165 merging heads
[LibreOffice.git] / testautomation / framework / optional / includes / menuentries.inc
blobf2006915c8b19aa69f34ff06c1b9d7cce9e470f8
1 'encoding UTF-8  Do not remove or change this line!
2 '**************************************************************************
3 ' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 ' Copyright 2000, 2010 Oracle and/or its affiliates.
7 ' OpenOffice.org - a multi-platform office productivity suite
9 ' This file is part of OpenOffice.org.
11 ' OpenOffice.org is free software: you can redistribute it and/or modify
12 ' it under the terms of the GNU Lesser General Public License version 3
13 ' only, as published by the Free Software Foundation.
15 ' OpenOffice.org is distributed in the hope that it will be useful,
16 ' but WITHOUT ANY WARRANTY; without even the implied warranty of
17 ' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18 ' GNU Lesser General Public License version 3 for more details
19 ' (a copy is included in the LICENSE file that accompanied this code).
21 ' You should have received a copy of the GNU Lesser General Public License
22 ' version 3 along with OpenOffice.org.  If not, see
23 ' <http://www.openoffice.org/license.html>
24 ' for a copy of the LGPLv3 License.
26 '/************************************************************************
28 '* Owner : thorsten.bosbach@oracle.com
30 '* short description : Read menubar and first level drop down lists and compare to reference
32 '\*****************************************************************
34 sub t_getMenuText
35     dim k,c as integer
36     dim sApplication() as string
38     sApplication = array("WRITER","MASTERDOCUMENT","HTML","CALC","IMPRESS","DRAW","MATH","BASIC","DATABASE")
40     ' for every application
41     c = uBound(sApplication())
42     for k = 0 to c
43         gApplication = sApplication(k)
44         printlog "********** " + gApplication
45         call s_getMenuText
46     next k
47     gApplication = "WRITER"
48 end sub
50 testcase s_getMenuText
51     dim i,j,l,m,a,b,d,e as integer
52     dim sReference(400) as string
53     dim sCurrent(400) as string
54     dim sFileName as string
55     dim sTemp as string
56     dim bError as boolean
57     dim iTopLevelCount as integer
58     dim iOffset as integer
59     
60         for i=0 to uBound(sReference())
61             sReference(i) = 0
62             sCurrent(i) = 0
63         next i
64         bError = FALSE
65         hNewDocument
66         hUseMenu
67         ' for every item in main menu bar
68         a = MenuGetItemCount
69         iTopLevelCount = a
70         MenuSelect (0)
71         for i = 1 to a
72             hUseMenu
73             stemp = MenuGetItemText(MenuGetItemID(i))
74             'printlog sTemp
75             listAppend(sCurrent(),"********** "+sTemp)
76             MenuSelect(MenuGetItemID(i))
77             b = MenuGetItemCount
78             for j = 1 to b
79                 sTemp = MenuGetItemText(MenuGetItemID(j))
80                 'printlog "    " + sTemp
81                 listAppend(sCurrent(),sTemp)
82             next j
83             MenuSelect (0)
84         next i
85         hCloseDocument
86         sFileName = convertPath(gTestToolPath+"framework\optional\input/menu/"+lCase(gISOLang+"_"+gApplication+".txt"))
87         printlog( "Using reference file: " & sFileName )
88         ' gProductName should not make a big difference.
89         if fileExists(sFileName) then
90             ' load to compare
91             listRead(sReference(), sFileName, "utf8")
92             d = listCount(sCurrent())
93             m = d
94             e = listCount(sReference())
95             if (d <> e) then
96                 warnlog "The count of Menuentries differs from reference "+gApplication+". should: '" + e + "'; delta is: '" + (d - e) + "'"
97                 bError = TRUE
98                 ' always take the shorter list count
99                 if cBool(d - e) then
100                     d = e
101                 endif
102                 e = m - e
103             else
104                 printlog "Count of Menuentries is ok"
105                 e = 0
106             endif
107             ' compare all entries
108             iOffset = 0
109             m = 0
110             for l=1 to d 
111                 ' count main menu bar items
112                 if inStr(sReference(l), "********** ") > 0 then
113                     m = m + 1
114                     ' bug in inc m :-(
115                     printlog mid(sReference(l),12)
116                 endif
117                 ' complain non existing accelerator
118                 if (sReference(l) <> "") AND (inStr(sReference(l),"~") < 1) then
119                     qaErrorLog "No accelerator (~) in item: '" + sReference(l) + "'"
120                 endif
121                 ' compare the menu entries
122                 if (sReference(l) <> sCurrent(l+iOffset))then
123                     ' try to syncronize different count of entries
124                     if (e <> 0) then
125                         iOffset = iOffset + sgn(e)
126                         'qaerrorlog "io: " + ioffset
127                         e = e - sgn(e)
128                         'qaerrorlog "e: " + e
129                     endif
130                     '
131                     if (m = (iTopLevelCount-1)) then
132                         ' tolerate the window menu
133                         printlog "String differs: " + chr(13) + "current  : '"+sCurrent(l) + "'" + chr(13) + "reference: '" + sReference(l) + "'"
134                     else
135                         bError = TRUE
136                         warnlog "String differs: " + chr(13) + "current  : '"+sCurrent(l) + "'" + chr(13) + "reference: '" + sReference(l) + "'"
137                     endif
138                 endif
139             next l
140           '  for l=d-5 to d+5
141           '  printlog "------"
142           '  printlog sreference(l)
143           '  printlog scurrent(l)
144           '  next l
145             ' if there is still is a difference in count
146             if (e <> 0) then
147                 if sgn(e) then
148                     warnlog "Not all reference entries are there, e.g.: '" + sReference(l+1) + "'"
149                 else
150                     warnlog "There are too much entries, e.g.: '" + sCurrent(l+1) + "'"
151                 endif
152             endif
153             if bError then
154                 sFileName = convertPath(gOfficePath+"user/work/menu/"+lCase(gISOLang+"_"+gApplication+".txt"))
155                 listWrite(sCurrent(), sFileName, "utf8")
156                 printlog "Written strings from this build to: " + chr(13) + sFileName
157             else
158                 ' OK
159             endif
160         else
161             ' write to checkin
162             warnlog "No reference found; please copy:"+lCase(gISOLang+"_"+gApplication+".txt")
163             sFileName = convertPath(gOfficePath+"user/work/menu/"+lCase(gISOLang+"_"+gApplication+".txt"))
164             listWrite(sCurrent(), sFileName, "utf8")
165             printlog sFileName + chr(13) + "to"
166             sFileName = convertPath(gTestToolPath+"framework/level1/input/menu/"+lCase(gISOLang+"_"+gApplication+".txt"))
167             printlog sFilename
168             'listWrite(sCurrent(), sFileName, "utf8")
169         endif
170     'speichern: (vendor?) sprache gISOLang applikation
171 endcase