2016-04-11 18:26:37 -04:00
$TXT Created by IVEY,JOEL at JIVEY3.JIVEYSOFT.COM (KIDS) on Saturday, 04/09/16 at 14:22
Updated M-Unit package, fixing a couple of problems and adding
(thanks to Sam H. Habiel) the ability to determine time of unit tests.
$END TXT
$KID MASH*1.4*0
2015-03-25 15:05:25 -04:00
**INSTALL NAME**
2016-04-11 18:26:37 -04:00
MASH*1.4*0
"BLD",9539,0)
MASH*1.4*0^MASH UTILITIES^0^3160409^n
"BLD",9539,1,0)
^^3^3^3160409^
"BLD",9539,1,1,0)
Updated release of MASH UTILITIES package for running unit tests on MUMPS
"BLD",9539,1,2,0)
code fixing a couple of installation issues, and adding (thanks to Sam H.
"BLD",9539,1,3,0)
Habiel) the ability to determine time of the unit tests in milliseconds.
"BLD",9539,4,0)
2015-03-25 15:05:25 -04:00
^9.64PA^17.9001^1
2016-04-11 18:26:37 -04:00
"BLD",9539,4,17.9001,0)
2015-03-25 15:05:25 -04:00
17.9001
2016-04-11 18:26:37 -04:00
"BLD",9539,4,17.9001,222)
2016-02-27 17:01:27 -05:00
y^y^f^^n^^y^m^n
2016-04-11 18:26:37 -04:00
"BLD",9539,4,"B",17.9001,17.9001)
"BLD",9539,6.3)
3
"BLD",9539,"INI")
2015-03-25 15:05:25 -04:00
ZZUTPRE
2016-04-11 18:26:37 -04:00
"BLD",9539,"INIT")
2015-03-25 15:05:25 -04:00
ZZUTPOST
2016-04-11 18:26:37 -04:00
"BLD",9539,"KRN",0)
2016-02-27 17:01:27 -05:00
^9.67PA^779.2^20
2016-04-11 18:26:37 -04:00
"BLD",9539,"KRN",.4,0)
2015-03-25 15:05:25 -04:00
.4
2016-04-11 18:26:37 -04:00
"BLD",9539,"KRN",.401,0)
2015-03-25 15:05:25 -04:00
.401
2016-04-11 18:26:37 -04:00
"BLD",9539,"KRN",.402,0)
2015-03-25 15:05:25 -04:00
.402
2016-04-11 18:26:37 -04:00
"BLD",9539,"KRN",.403,0)
2015-03-25 15:05:25 -04:00
.403
2016-04-11 18:26:37 -04:00
"BLD",9539,"KRN",.5,0)
2015-03-25 15:05:25 -04:00
.5
2016-04-11 18:26:37 -04:00
"BLD",9539,"KRN",.84,0)
2015-03-25 15:05:25 -04:00
.84
2016-04-11 18:26:37 -04:00
"BLD",9539,"KRN",3.6,0)
2015-03-25 15:05:25 -04:00
3.6
2016-04-11 18:26:37 -04:00
"BLD",9539,"KRN",3.8,0)
2015-03-25 15:05:25 -04:00
3.8
2016-04-11 18:26:37 -04:00
"BLD",9539,"KRN",9.2,0)
2015-03-25 15:05:25 -04:00
9.2
2016-04-11 18:26:37 -04:00
"BLD",9539,"KRN",9.8,0)
2015-03-25 15:05:25 -04:00
9.8
2016-04-11 18:26:37 -04:00
"BLD",9539,"KRN",9.8,"NM",0)
2016-02-27 17:01:27 -05:00
^9.68A^10^10
2016-04-11 18:26:37 -04:00
"BLD",9539,"KRN",9.8,"NM",1,0)
ut1^^0^B247874559
"BLD",9539,"KRN",9.8,"NM",2,0)
ut^^0^B250214208
"BLD",9539,"KRN",9.8,"NM",3,0)
utcover^^0^B53892492
"BLD",9539,"KRN",9.8,"NM",4,0)
utt1^^0^B41233993
"BLD",9539,"KRN",9.8,"NM",5,0)
2016-02-27 17:01:27 -05:00
utt2^^0^B501728
2016-04-11 18:26:37 -04:00
"BLD",9539,"KRN",9.8,"NM",6,0)
2016-02-27 17:01:27 -05:00
utt3^^0^B1628564
2016-04-11 18:26:37 -04:00
"BLD",9539,"KRN",9.8,"NM",7,0)
2016-02-27 17:01:27 -05:00
utt4^^0^B1568129
2016-04-11 18:26:37 -04:00
"BLD",9539,"KRN",9.8,"NM",8,0)
2016-02-27 17:01:27 -05:00
utt5^^0^B23054235
2016-04-11 18:26:37 -04:00
"BLD",9539,"KRN",9.8,"NM",9,0)
utt6^^0^B35321186
"BLD",9539,"KRN",9.8,"NM",10,0)
uttcovr^^0^B186933676
"BLD",9539,"KRN",9.8,"NM","B","ut",2)
"BLD",9539,"KRN",9.8,"NM","B","ut1",1)
"BLD",9539,"KRN",9.8,"NM","B","utcover",3)
"BLD",9539,"KRN",9.8,"NM","B","utt1",4)
"BLD",9539,"KRN",9.8,"NM","B","utt2",5)
"BLD",9539,"KRN",9.8,"NM","B","utt3",6)
"BLD",9539,"KRN",9.8,"NM","B","utt4",7)
"BLD",9539,"KRN",9.8,"NM","B","utt5",8)
"BLD",9539,"KRN",9.8,"NM","B","utt6",9)
"BLD",9539,"KRN",9.8,"NM","B","uttcovr",10)
"BLD",9539,"KRN",19,0)
2015-03-25 15:05:25 -04:00
19
2016-04-11 18:26:37 -04:00
"BLD",9539,"KRN",19,"NM",0)
2015-03-25 15:05:25 -04:00
^9.68A^3^3
2016-04-11 18:26:37 -04:00
"BLD",9539,"KRN",19,"NM",1,0)
2015-03-25 15:05:25 -04:00
utMUNIT^^0
2016-04-11 18:26:37 -04:00
"BLD",9539,"KRN",19,"NM",2,0)
2015-03-25 15:05:25 -04:00
utMUNIT GROUP EDIT^^0
2016-04-11 18:26:37 -04:00
"BLD",9539,"KRN",19,"NM",3,0)
2015-03-25 15:05:25 -04:00
utMUNIT GROUP RUN^^0
2016-04-11 18:26:37 -04:00
"BLD",9539,"KRN",19,"NM","B","utMUNIT",1)
"BLD",9539,"KRN",19,"NM","B","utMUNIT GROUP EDIT",2)
"BLD",9539,"KRN",19,"NM","B","utMUNIT GROUP RUN",3)
"BLD",9539,"KRN",19.1,0)
2015-03-25 15:05:25 -04:00
19.1
2016-04-11 18:26:37 -04:00
"BLD",9539,"KRN",101,0)
2015-03-25 15:05:25 -04:00
101
2016-04-11 18:26:37 -04:00
"BLD",9539,"KRN",409.61,0)
2015-03-25 15:05:25 -04:00
409.61
2016-04-11 18:26:37 -04:00
"BLD",9539,"KRN",771,0)
2015-03-25 15:05:25 -04:00
771
2016-04-11 18:26:37 -04:00
"BLD",9539,"KRN",779.2,0)
2016-02-27 17:01:27 -05:00
779.2
2016-04-11 18:26:37 -04:00
"BLD",9539,"KRN",870,0)
2015-03-25 15:05:25 -04:00
870
2016-04-11 18:26:37 -04:00
"BLD",9539,"KRN",8989.51,0)
2015-03-25 15:05:25 -04:00
8989.51
2016-04-11 18:26:37 -04:00
"BLD",9539,"KRN",8989.52,0)
2015-03-25 15:05:25 -04:00
8989.52
2016-04-11 18:26:37 -04:00
"BLD",9539,"KRN",8994,0)
2015-03-25 15:05:25 -04:00
8994
2016-04-11 18:26:37 -04:00
"BLD",9539,"KRN",8994,"NM",0)
2015-03-25 15:05:25 -04:00
^9.68A^3^3
2016-04-11 18:26:37 -04:00
"BLD",9539,"KRN",8994,"NM",1,0)
2015-03-25 15:05:25 -04:00
utMUNIT-TEST GROUP LOAD^^0
2016-04-11 18:26:37 -04:00
"BLD",9539,"KRN",8994,"NM",2,0)
2015-03-25 15:05:25 -04:00
utMUNIT-TEST LOAD^^0
2016-04-11 18:26:37 -04:00
"BLD",9539,"KRN",8994,"NM",3,0)
2015-03-25 15:05:25 -04:00
utMUNIT-TEST NEXT^^0
2016-04-11 18:26:37 -04:00
"BLD",9539,"KRN",8994,"NM","B","utMUNIT-TEST GROUP LOAD",1)
"BLD",9539,"KRN",8994,"NM","B","utMUNIT-TEST LOAD",2)
"BLD",9539,"KRN",8994,"NM","B","utMUNIT-TEST NEXT",3)
"BLD",9539,"KRN","B",.4,.4)
"BLD",9539,"KRN","B",.401,.401)
"BLD",9539,"KRN","B",.402,.402)
"BLD",9539,"KRN","B",.403,.403)
"BLD",9539,"KRN","B",.5,.5)
"BLD",9539,"KRN","B",.84,.84)
"BLD",9539,"KRN","B",3.6,3.6)
"BLD",9539,"KRN","B",3.8,3.8)
"BLD",9539,"KRN","B",9.2,9.2)
"BLD",9539,"KRN","B",9.8,9.8)
"BLD",9539,"KRN","B",19,19)
"BLD",9539,"KRN","B",19.1,19.1)
"BLD",9539,"KRN","B",101,101)
"BLD",9539,"KRN","B",409.61,409.61)
"BLD",9539,"KRN","B",771,771)
"BLD",9539,"KRN","B",779.2,779.2)
"BLD",9539,"KRN","B",870,870)
"BLD",9539,"KRN","B",8989.51,8989.51)
"BLD",9539,"KRN","B",8989.52,8989.52)
"BLD",9539,"KRN","B",8994,8994)
"BLD",9539,"QDEF")
2016-02-27 17:01:27 -05:00
^^^^NO^^^^NO^^NO
2016-04-11 18:26:37 -04:00
"BLD",9539,"QUES",0)
2015-03-25 15:05:25 -04:00
^9.62^^
2016-04-11 18:26:37 -04:00
"BLD",9539,"REQB",0)
2016-02-27 17:01:27 -05:00
^9.611^^
2015-03-25 15:05:25 -04:00
"DATA",17.9001,1,0)
TESTS FOR UNIT TEST ROUTINES
"DATA",17.9001,1,1,0)
^17.90011^5^5
"DATA",17.9001,1,1,1,0)
%utt1
"DATA",17.9001,1,1,2,0)
%utt2
"DATA",17.9001,1,1,3,0)
%utt3
"DATA",17.9001,1,1,4,0)
%utt4
"DATA",17.9001,1,1,5,0)
%utt5
2016-02-27 17:01:27 -05:00
"DATA",17.9001,1,2,0)
^^4^4^3141008^
"DATA",17.9001,1,2,1,0)
This group will run all of the unit tests associated with the M-Unit
"DATA",17.9001,1,2,2,0)
code. In addition, the routine %utt6 should be run as a regular routine
"DATA",17.9001,1,2,3,0)
from the top, and it will run all of the unit tests and,if on a G.TM
"DATA",17.9001,1,2,4,0)
system will run coverage analysis as well.
2015-03-25 15:05:25 -04:00
"FIA",17.9001)
M-UNIT TEST GROUP
"FIA",17.9001,0)
^%ut(17.9001,
"FIA",17.9001,0,0)
17.9001
"FIA",17.9001,0,1)
2016-02-27 17:01:27 -05:00
y^y^f^^n^^y^m^n
2015-03-25 15:05:25 -04:00
"FIA",17.9001,0,10)
"FIA",17.9001,0,11)
"FIA",17.9001,0,"RLRO")
"FIA",17.9001,0,"VR")
2016-02-27 17:01:27 -05:00
1.4^MASH
2015-03-25 15:05:25 -04:00
"FIA",17.9001,17.9001)
0
"FIA",17.9001,17.90011)
0
"FIA",17.9001,17.90012)
0
"INI")
ZZUTPRE
"INIT")
ZZUTPOST
2016-04-11 18:26:37 -04:00
"KRN",19,11538,-1)
2015-03-25 15:05:25 -04:00
0^1
2016-04-11 18:26:37 -04:00
"KRN",19,11538,0)
2015-03-25 15:05:25 -04:00
utMUNIT^M-Unit Tester^^B^^^^^^^^
2016-04-11 18:26:37 -04:00
"KRN",19,11538,1,0)
2015-03-25 15:05:25 -04:00
^^1^1^3140805^
2016-04-11 18:26:37 -04:00
"KRN",19,11538,1,1,0)
2015-03-25 15:05:25 -04:00
This is the context option for M-Unit Test functionality.
2016-04-11 18:26:37 -04:00
"KRN",19,11538,"RPC",0)
2015-03-25 15:05:25 -04:00
^19.05P^3^3
2016-04-11 18:26:37 -04:00
"KRN",19,11538,"RPC",1,0)
2015-03-25 15:05:25 -04:00
utMUNIT-TEST GROUP LOAD
2016-04-11 18:26:37 -04:00
"KRN",19,11538,"RPC",2,0)
2015-03-25 15:05:25 -04:00
utMUNIT-TEST LOAD
2016-04-11 18:26:37 -04:00
"KRN",19,11538,"RPC",3,0)
2015-03-25 15:05:25 -04:00
utMUNIT-TEST NEXT
2016-04-11 18:26:37 -04:00
"KRN",19,11538,"U")
2015-03-25 15:05:25 -04:00
M-UNIT TESTER
2016-04-11 18:26:37 -04:00
"KRN",19,11539,-1)
2015-03-25 15:05:25 -04:00
0^2
2016-04-11 18:26:37 -04:00
"KRN",19,11539,0)
2015-03-25 15:05:25 -04:00
utMUNIT GROUP EDIT^M-Unit Test Group Edit^^E^^^^^^^^TOOLKIT
2016-04-11 18:26:37 -04:00
"KRN",19,11539,1,0)
2015-03-25 15:05:25 -04:00
^19.06^6^6^3031030^^^
2016-04-11 18:26:37 -04:00
"KRN",19,11539,1,1,0)
2015-03-25 15:05:25 -04:00
This option can be used to maintain a listing of unit tests related to a
2016-04-11 18:26:37 -04:00
"KRN",19,11539,1,2,0)
2015-03-25 15:05:25 -04:00
specific topic. The Group identifies the topic, and the unit tests
2016-04-11 18:26:37 -04:00
"KRN",19,11539,1,3,0)
2015-03-25 15:05:25 -04:00
related to that topic are added in the multiple. Unit Tests can be run
2016-04-11 18:26:37 -04:00
"KRN",19,11539,1,4,0)
2015-03-25 15:05:25 -04:00
by selecting a group, and all unit tests included in the multiple will be
2016-04-11 18:26:37 -04:00
"KRN",19,11539,1,5,0)
2015-03-25 15:05:25 -04:00
used for the test. In addition, any other references under the XTROU tag
2016-04-11 18:26:37 -04:00
"KRN",19,11539,1,6,0)
2015-03-25 15:05:25 -04:00
in any of the included test routines will be included in the run.
2016-04-11 18:26:37 -04:00
"KRN",19,11539,30)
2015-03-25 15:05:25 -04:00
%ut(17.9001,
2016-04-11 18:26:37 -04:00
"KRN",19,11539,31)
2015-03-25 15:05:25 -04:00
AEMQL
2016-04-11 18:26:37 -04:00
"KRN",19,11539,50)
2015-03-25 15:05:25 -04:00
17.9001
2016-04-11 18:26:37 -04:00
"KRN",19,11539,51)
2015-03-25 15:05:25 -04:00
.01;1
2016-04-11 18:26:37 -04:00
"KRN",19,11539,"U")
2015-03-25 15:05:25 -04:00
M-UNIT TEST GROUP EDIT
2016-04-11 18:26:37 -04:00
"KRN",19,11540,-1)
2015-03-25 15:05:25 -04:00
0^3
2016-04-11 18:26:37 -04:00
"KRN",19,11540,0)
2015-03-25 15:05:25 -04:00
utMUNIT GROUP RUN^Run M-Unit Tests From Test Groups^^R^^^^^^^^TOOLKIT
2016-04-11 18:26:37 -04:00
"KRN",19,11540,1,0)
2015-03-25 15:05:25 -04:00
^^2^2^3031030^
2016-04-11 18:26:37 -04:00
"KRN",19,11540,1,1,0)
2015-03-25 15:05:25 -04:00
Provides a means of initiating a unit test run from the menu system based
2016-04-11 18:26:37 -04:00
"KRN",19,11540,1,2,0)
2015-03-25 15:05:25 -04:00
on entries in the M-UNIT TEST GROUP file (#17.9001).
2016-04-11 18:26:37 -04:00
"KRN",19,11540,25)
2015-03-25 15:05:25 -04:00
PICKSET^%ut
2016-04-11 18:26:37 -04:00
"KRN",19,11540,"U")
2015-03-25 15:05:25 -04:00
RUN M-UNIT TESTS FROM TEST GRO
2016-04-11 18:26:37 -04:00
"KRN",8994,3261,-1)
2015-03-25 15:05:25 -04:00
0^1
2016-04-11 18:26:37 -04:00
"KRN",8994,3261,0)
2015-03-25 15:05:25 -04:00
utMUNIT-TEST GROUP LOAD^GUISET^%ut^4^^^^1
2016-04-11 18:26:37 -04:00
"KRN",8994,3262,-1)
2015-03-25 15:05:25 -04:00
0^2
2016-04-11 18:26:37 -04:00
"KRN",8994,3262,0)
2015-03-25 15:05:25 -04:00
utMUNIT-TEST LOAD^GUILOAD^%ut^4^^^^1
2016-04-11 18:26:37 -04:00
"KRN",8994,3263,-1)
2015-03-25 15:05:25 -04:00
0^3
2016-04-11 18:26:37 -04:00
"KRN",8994,3263,0)
2015-03-25 15:05:25 -04:00
utMUNIT-TEST NEXT^GUINEXT^%ut^4^^^^1
"MBREQ")
0
"ORD",16,8994)
8994;16;1;;;;;;;RPCDEL^XPDIA1
"ORD",16,8994,0)
REMOTE PROCEDURE
"ORD",18,19)
19;18;;;OPT^XPDTA;OPTF1^XPDIA;OPTE1^XPDIA;OPTF2^XPDIA;;OPTDEL^XPDIA
"ORD",18,19,0)
OPTION
2016-04-11 18:26:37 -04:00
"PKG",222,-1)
2015-03-25 15:05:25 -04:00
1^1
2016-04-11 18:26:37 -04:00
"PKG",222,0)
2015-03-25 15:05:25 -04:00
MASH UTILITIES^%u^Utilities associated with the M Advanced Shell
2016-04-11 18:26:37 -04:00
"PKG",222,20,0)
2015-03-25 15:05:25 -04:00
^9.402P^^
2016-04-11 18:26:37 -04:00
"PKG",222,22,0)
2015-03-25 15:05:25 -04:00
^9.49I^1^1
2016-04-11 18:26:37 -04:00
"PKG",222,22,1,0)
1.4^3160409
"PKG",222,22,1,"PAH",1,0)
0^3160409
"PKG",222,22,1,"PAH",1,1,0)
^^3^3^3160409
"PKG",222,22,1,"PAH",1,1,1,0)
Updated release of MASH UTILITIES package for running unit tests on MUMPS
"PKG",222,22,1,"PAH",1,1,2,0)
code fixing a couple of installation issues, and adding (thanks to Sam H.
"PKG",222,22,1,"PAH",1,1,3,0)
Habiel) the ability to determine time of the unit tests in milliseconds.
2015-03-25 15:05:25 -04:00
"QUES","XPF1",0)
Y
"QUES","XPF1","??")
^D REP^XPDH
"QUES","XPF1","A")
Shall I write over your |FLAG| File
"QUES","XPF1","B")
YES
"QUES","XPF1","M")
D XPF1^XPDIQ
"QUES","XPF2",0)
Y
"QUES","XPF2","??")
^D DTA^XPDH
"QUES","XPF2","A")
Want my data |FLAG| yours
"QUES","XPF2","B")
YES
"QUES","XPF2","M")
D XPF2^XPDIQ
"QUES","XPI1",0)
YO
"QUES","XPI1","??")
^D INHIBIT^XPDH
"QUES","XPI1","A")
Want KIDS to INHIBIT LOGONs during the install
"QUES","XPI1","B")
NO
"QUES","XPI1","M")
D XPI1^XPDIQ
"QUES","XPM1",0)
PO^VA(200,:EM
"QUES","XPM1","??")
^D MG^XPDH
"QUES","XPM1","A")
Enter the Coordinator for Mail Group '|FLAG|'
"QUES","XPM1","B")
"QUES","XPM1","M")
D XPM1^XPDIQ
"QUES","XPO1",0)
Y
"QUES","XPO1","??")
^D MENU^XPDH
"QUES","XPO1","A")
Want KIDS to Rebuild Menu Trees Upon Completion of Install
"QUES","XPO1","B")
NO
"QUES","XPO1","M")
D XPO1^XPDIQ
"QUES","XPZ1",0)
Y
"QUES","XPZ1","??")
^D OPT^XPDH
"QUES","XPZ1","A")
Want to DISABLE Scheduled Options, Menu Options, and Protocols
"QUES","XPZ1","B")
NO
"QUES","XPZ1","M")
D XPZ1^XPDIQ
"QUES","XPZ2",0)
Y
"QUES","XPZ2","??")
^D RTN^XPDH
"QUES","XPZ2","A")
Want to MOVE routines to other CPUs
"QUES","XPZ2","B")
NO
"QUES","XPZ2","M")
D XPZ2^XPDIQ
"RTN")
2016-02-27 17:01:27 -05:00
12
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST")
2016-04-11 18:26:37 -04:00
0^^B19696732
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",1,0)
2016-04-11 18:26:37 -04:00
%utPOST ;VEN-SMH/JLI - post install for M-Unit Test software ;04/08/16 20:51
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",2,0)
2016-04-11 18:26:37 -04:00
;;1.4;MASH UTILITIES;;APR 11, 2016;Build 3
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",3,0)
2016-04-11 18:26:37 -04:00
; Submitted to OSEHRA Apr 11, 2016 by Joel L. Ivey under the Apache 2 license (http://www.apache.org/licenses/LICENSE-2.0.html)
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",4,0)
2016-02-27 17:01:27 -05:00
; Original routine authored by Sam H. Habiel 07/2013-04/2014
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",5,0)
2016-02-27 17:01:27 -05:00
; Additions and modifications made by Joel L. Ivey 05/2014-08/2015
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",6,0)
2016-04-11 18:26:37 -04:00
; Additions and Modifications made by Sam H. Habiel and Joel L. Ivey 02/2016-04/2016
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",7,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",8,0)
2016-04-11 18:26:37 -04:00
N X,I
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",9,0)
2016-04-11 18:26:37 -04:00
D RENAME
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",10,0)
2016-04-11 18:26:37 -04:00
QUIT
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",11,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",12,0)
2016-04-11 18:26:37 -04:00
RENAME ;
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",13,0)
2016-04-11 18:26:37 -04:00
N %S,%D ; Source, destination
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",14,0)
2016-04-11 18:26:37 -04:00
S U="^"
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",15,0)
2016-04-11 18:26:37 -04:00
S %S="ut^ut1^utcover^utt1^utt2^utt3^utt4^utt5^utt6^uttcovr"
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",16,0)
2016-04-11 18:26:37 -04:00
S %D="%ut^%ut1^%utcover^%utt1^%utt2^%utt3^%utt4^%utt5^%utt6^%uttcovr"
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",17,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",18,0)
2016-04-11 18:26:37 -04:00
MOVE ; rename % routines
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",19,0)
2016-04-11 18:26:37 -04:00
N %,X,Y,M
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",20,0)
2016-04-11 18:26:37 -04:00
F %=1:1:$L(%D,"^") D D MES(M) I +$SY=47 D MES(" ")
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",21,0)
2016-04-11 18:26:37 -04:00
. S M="",X=$P(%S,U,%) ; from
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",22,0)
2016-04-11 18:26:37 -04:00
. S Y=$P(%D,U,%) ; to
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",23,0)
2016-04-11 18:26:37 -04:00
. Q:X=""
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",24,0)
2016-04-11 18:26:37 -04:00
. S M="Routine: "_$J(X,8)
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",25,0)
2016-04-11 18:26:37 -04:00
. Q:Y="" I $T(^@X)="" S M=M_" Missing" Q
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",26,0)
2016-04-11 18:26:37 -04:00
. S M=M_" Loaded, "
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",27,0)
2016-04-11 18:26:37 -04:00
. D COPY(X,Y)
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",28,0)
2016-04-11 18:26:37 -04:00
. S M=M_"Saved as "_$J(Y,8)
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",29,0)
;
2016-04-11 18:26:37 -04:00
"RTN","ZZUTPOST",30,0)
QUIT ; END
2016-02-27 17:01:27 -05:00
"RTN","ZZUTPOST",31,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",32,0)
2016-04-11 18:26:37 -04:00
COPY(FROM,TO) ;
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",33,0)
2016-04-11 18:26:37 -04:00
N XVAL
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",34,0)
2016-04-11 18:26:37 -04:00
I +$SYSTEM=0 S XVAL="ZL @FROM ZS @TO" X XVAL QUIT
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",35,0)
2016-04-11 18:26:37 -04:00
I +$SYSTEM=47 DO QUIT
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",36,0)
2016-04-11 18:26:37 -04:00
. S FROM=$$PATH(FROM)
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",37,0)
2016-04-11 18:26:37 -04:00
. S TO=$$PATH(TO,"WRITE")
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",38,0)
2016-04-11 18:26:37 -04:00
. N CMD S CMD="cp "_FROM_" "_TO
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",39,0)
2016-04-11 18:26:37 -04:00
. O "cp":(shell="/bin/sh":command=CMD:WRITEONLY)::"PIPE"
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",40,0)
2016-04-11 18:26:37 -04:00
. U "cp" C "cp"
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",41,0)
2016-04-11 18:26:37 -04:00
QUIT
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",42,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",43,0)
2016-04-11 18:26:37 -04:00
PATH(ROUTINE,MODE) ; for GT.M return source file with path for a routine
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",44,0)
2016-04-11 18:26:37 -04:00
;input: ROUTINE=Name of routine
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",45,0)
2016-04-11 18:26:37 -04:00
; MODE="READ" or "WRITE" defaults to READ
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",46,0)
2016-04-11 18:26:37 -04:00
;output: Full filename
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",47,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",48,0)
2016-04-11 18:26:37 -04:00
S MODE=$G(MODE,"READ") ;set MODE to default value
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",49,0)
2016-04-11 18:26:37 -04:00
N FILE S FILE=$TR(ROUTINE,"%","_")_".m" ;convert rtn name to filename
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",50,0)
2016-04-11 18:26:37 -04:00
N ZRO S ZRO=$ZRO
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",51,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",52,0)
2016-04-11 18:26:37 -04:00
; Get source routine
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",53,0)
2016-04-11 18:26:37 -04:00
N %ZR
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",54,0)
2016-04-11 18:26:37 -04:00
I MODE="READ" D SILENT^%RSEL(ROUTINE,"SRC") Q %ZR(ROUTINE)_FILE
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",55,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",56,0)
2016-04-11 18:26:37 -04:00
; We are writing. Parse directories and get 1st routine directory
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",57,0)
2016-04-11 18:26:37 -04:00
N DIRS
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",58,0)
2016-04-11 18:26:37 -04:00
D PARSEZRO(.DIRS,ZRO)
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",59,0)
2016-04-11 18:26:37 -04:00
N PATH S PATH=$$ZRO1ST(.DIRS)
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",60,0)
;
2016-04-11 18:26:37 -04:00
"RTN","ZZUTPOST",61,0)
QUIT PATH_FILE ;end of PATH return directory and filename
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",62,0)
2016-02-27 17:01:27 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",63,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",64,0)
2016-04-11 18:26:37 -04:00
PARSEZRO(DIRS,ZRO) ; Parse $zroutines properly into an array
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",65,0)
2016-04-11 18:26:37 -04:00
N PIECE
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",66,0)
2016-04-11 18:26:37 -04:00
N I
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",67,0)
2016-04-11 18:26:37 -04:00
F I=1:1:$L(ZRO," ") S PIECE(I)=$P(ZRO," ",I)
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",68,0)
2016-04-11 18:26:37 -04:00
N CNT S CNT=1
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",69,0)
2016-04-11 18:26:37 -04:00
F I=0:0 S I=$O(PIECE(I)) Q:'I D
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",70,0)
2016-04-11 18:26:37 -04:00
. S DIRS(CNT)=$G(DIRS(CNT))_PIECE(I)
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",71,0)
2016-04-11 18:26:37 -04:00
. I DIRS(CNT)["("&(DIRS(CNT)[")") S CNT=CNT+1 QUIT
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",72,0)
2016-04-11 18:26:37 -04:00
. I DIRS(CNT)'["("&(DIRS(CNT)'[")") S CNT=CNT+1 QUIT
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",73,0)
2016-04-11 18:26:37 -04:00
. S DIRS(CNT)=DIRS(CNT)_" " ; prep for next piece
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",74,0)
2016-04-11 18:26:37 -04:00
QUIT
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",75,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",76,0)
2016-04-11 18:26:37 -04:00
ZRO1ST(DIRS) ; $$ Get first routine directory
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",77,0)
2016-04-11 18:26:37 -04:00
N OUT ; $$ return
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",78,0)
2016-04-11 18:26:37 -04:00
N %1 S %1=DIRS(1) ; 1st directory
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",79,0)
2016-04-11 18:26:37 -04:00
; Parse with (...)
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",80,0)
2016-04-11 18:26:37 -04:00
I %1["(" DO
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",81,0)
2016-04-11 18:26:37 -04:00
. S OUT=$P(%1,"(",2)
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",82,0)
2016-04-11 18:26:37 -04:00
. I OUT[" " S OUT=$P(OUT," ")
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",83,0)
2016-04-11 18:26:37 -04:00
. E S OUT=$P(OUT,")")
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",84,0)
2016-04-11 18:26:37 -04:00
; no parens
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",85,0)
2016-04-11 18:26:37 -04:00
E S OUT=%1
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",86,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",87,0)
2016-04-11 18:26:37 -04:00
; Add trailing slash
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",88,0)
2016-04-11 18:26:37 -04:00
I $E(OUT,$L(OUT))'="/" S OUT=OUT_"/"
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",89,0)
2016-04-11 18:26:37 -04:00
QUIT OUT
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",90,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",91,0)
2016-04-11 18:26:37 -04:00
MES(T,B) ;Write message.
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",92,0)
2016-04-11 18:26:37 -04:00
S B=$G(B)
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",93,0)
2016-04-11 18:26:37 -04:00
I $L($T(BMES^XPDUTL)) D BMES^XPDUTL(T):B,MES^XPDUTL(T):'B Q
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",94,0)
2016-04-11 18:26:37 -04:00
W:B ! W !,T
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",95,0)
2016-04-11 18:26:37 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",96,0)
2016-02-27 17:01:27 -05:00
;
2016-04-11 18:26:37 -04:00
"RTN","ZZUTPOST",97,0)
TEST ; @TEST - TESTING TESTING
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",98,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",99,0)
2016-04-11 18:26:37 -04:00
N FAIL S FAIL=0
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",100,0)
2016-04-11 18:26:37 -04:00
N ZR S ZR="o(p r) /var/abc(/var/abc/r/) /abc/def $gtm_dist/libgtmutl.so vista.so"
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",101,0)
2016-04-11 18:26:37 -04:00
N DIRS D PARSEZRO(.DIRS,ZR)
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",102,0)
2016-04-11 18:26:37 -04:00
N FIRSTDIR S FIRSTDIR=$$ZRO1ST(.DIRS)
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",103,0)
2016-04-11 18:26:37 -04:00
I FIRSTDIR'="p/" W !,"TEST 1 Expected 'p/', got '"_FIRSTDIR_"'" S FAIL=FAIL+1 ;S $EC=",U1,"
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",104,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",105,0)
2016-04-11 18:26:37 -04:00
N ZR S ZR="/var/abc(/var/abc/r/) o(p r) /abc/def $gtm_dist/libgtmutl.so vista.so"
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",106,0)
2016-04-11 18:26:37 -04:00
N DIRS D PARSEZRO(.DIRS,ZR)
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",107,0)
2016-04-11 18:26:37 -04:00
N FIRSTDIR S FIRSTDIR=$$ZRO1ST(.DIRS)
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",108,0)
2016-04-11 18:26:37 -04:00
I FIRSTDIR'="/var/abc/r/" W !,"TEST 2 Expected '/var/abc/r/', got '"_FIRSTDIR_"'" S FAIL=FAIL+1 ;S $EC=",U1,"
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",109,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",110,0)
2016-04-11 18:26:37 -04:00
N ZR S ZR="/abc/def /var/abc(/var/abc/r/) o(p r) $gtm_dist/libgtmutl.so vista.so"
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",111,0)
2016-04-11 18:26:37 -04:00
N DIRS D PARSEZRO(.DIRS,ZR)
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",112,0)
2016-04-11 18:26:37 -04:00
N FIRSTDIR S FIRSTDIR=$$ZRO1ST(.DIRS)
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",113,0)
2016-04-11 18:26:37 -04:00
I FIRSTDIR'="/abc/def/" W !,"TEST 3 expected '/abc/def/', got '"_FIRSTDIR_"'" S FAIL=FAIL+1 ;S $EC=",U1,"
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",114,0)
2016-02-27 17:01:27 -05:00
;
2016-04-11 18:26:37 -04:00
"RTN","ZZUTPOST",115,0)
I FAIL=0 WRITE "All tests have run successfully!",!
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",116,0)
2016-04-11 18:26:37 -04:00
I FAIL>0 WRITE !,"***** Failed "_FAIL_" tests out of 3 *****",!
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",117,0)
2016-04-11 18:26:37 -04:00
QUIT
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",118,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",119,0)
2016-04-11 18:26:37 -04:00
PREKIDS ; Ready for KIDS - Move % routines to non-percent version
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",120,0)
2016-04-11 18:26:37 -04:00
N %S,%D ; Source, destination
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",121,0)
2016-04-11 18:26:37 -04:00
S U="^"
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",122,0)
2016-04-11 18:26:37 -04:00
S %D="ut^ut1^utcover^utt1^utt2^utt3^utt4^utt5^utt6^uttcovr"
2016-02-27 17:01:27 -05:00
"RTN","ZZUTPOST",123,0)
2016-04-11 18:26:37 -04:00
S %S="%ut^%ut1^%utcover^%utt1^%utt2^%utt3^%utt4^%utt5^%utt6^%uttcovr"
"RTN","ZZUTPOST",124,0)
D MOVE
"RTN","ZZUTPOST",125,0)
QUIT
"RTN","ZZUTPOST",126,0)
2015-03-25 15:05:25 -04:00
;
"RTN","ZZUTPRE")
2016-04-11 18:26:37 -04:00
0^^B11731108
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPRE",1,0)
2016-04-11 18:26:37 -04:00
%utPRE ;VEN/SMH/JLI - pre installation routine to set up MASH UTILITIES package and assign %ut routines and globals ;04/08/16 20:51
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPRE",2,0)
2016-04-11 18:26:37 -04:00
;;1.4;MASH UTILITIES;;APR 11, 2016;Build 3
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPRE",3,0)
2016-04-11 18:26:37 -04:00
; Submitted to OSEHRA Apr 11, 2016 by Joel L. Ivey under the Apache 2 license (http://www.apache.org/licenses/LICENSE-2.0.html)
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPRE",4,0)
2016-02-27 17:01:27 -05:00
; Original routine authored by Sam H. Habiel 07/2013-04/2014
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPRE",5,0)
2016-04-11 18:26:37 -04:00
; Modified by Sam H. Habiel and Joel L. Ivey 02/2016-04/2016
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPRE",6,0)
2016-02-27 17:01:27 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPRE",7,0)
2016-02-27 17:01:27 -05:00
; The following is used to create, if it does not exist, the MASH UTILITIES
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPRE",8,0)
2016-02-27 17:01:27 -05:00
; package, and to assign the %u namespace to this package. This special
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPRE",9,0)
2016-02-27 17:01:27 -05:00
; processing is necessary, since the input transform currently will not accept a
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPRE",10,0)
2016-02-27 17:01:27 -05:00
; % or lower case character in the namespace.
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPRE",11,0)
2016-04-11 18:26:37 -04:00
; JLI 160406 - following modified to update PACKAGE entry including current version and version subfile
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPRE",12,0)
2016-04-11 18:26:37 -04:00
N Y
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPRE",13,0)
2016-04-11 18:26:37 -04:00
S Y=+$O(^DIC(9.4,"B","MASH UTILITIES",""))
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPRE",14,0)
2016-04-11 18:26:37 -04:00
I 'Y N DIC,X S DIC="^DIC(9.4,",DIC(0)="",X="MASH UTILITIES",DIC("DR")="1////%u;2///Utilities associated with the M Advanced Shell" D FILE^DICN
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPRE",15,0)
2016-04-11 18:26:37 -04:00
I Y>0 D
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPRE",16,0)
2016-04-11 18:26:37 -04:00
. N YVAL S YVAL=+Y
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPRE",17,0)
2016-04-11 18:26:37 -04:00
. N VERSION S VERSION=$P($T(+2),";",3)
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPRE",18,0)
2016-04-11 18:26:37 -04:00
. N DIE,DA,DR S DIE="^DIC(9.4,",DA=+Y,DR="13///"_VERSION D ^DIE
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPRE",19,0)
2016-04-11 18:26:37 -04:00
. N DIC,X,DA S DA(1)=YVAL,DIC="^DIC(9.4,"_DA(1)_",22,",DIC(0)="",X=1.4,DIC("DR")="2///"_DT D FILE^DICN
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPRE",20,0)
2016-04-11 18:26:37 -04:00
. Q
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPRE",21,0)
2016-04-11 18:26:37 -04:00
; end of modification
2016-02-27 17:01:27 -05:00
"RTN","ZZUTPRE",22,0)
2016-04-11 18:26:37 -04:00
; and if necessary, as in CACHE, map %ut routine and namespace in the current account.
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPRE",23,0)
2016-04-11 18:26:37 -04:00
I +$SY=0 D CACHEMAP ; This routine is CACHE specific
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPRE",24,0)
2016-04-11 18:26:37 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPRE",25,0)
2016-04-11 18:26:37 -04:00
; The following code was provided by Sam Habiel to map %
2016-02-27 17:01:27 -05:00
"RTN","ZZUTPRE",26,0)
2016-04-11 18:26:37 -04:00
CACHEMAP ; Map %ut* Globals and Routines away from %SYS in Cache
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPRE",27,0)
2016-04-11 18:26:37 -04:00
; ZEXCEPT: AddGlobalMapping,Class,Config,Configuration,Create,Get,GetErrorText,GetGlobalMapping,MapRoutines,MapGlobals,Namespaces,Status,class - these are all part of Cache class names
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPRE",28,0)
2016-04-11 18:26:37 -04:00
; Get current namespace
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPRE",29,0)
2016-04-11 18:26:37 -04:00
N NMSP
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPRE",30,0)
2016-04-11 18:26:37 -04:00
I $P($P($ZV,") ",2),"(")<2012 S NMSP=$ZU(5)
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPRE",31,0)
2016-04-11 18:26:37 -04:00
I $P($P($ZV,") ",2),"(")>2011 S NMSP=$NAMESPACE
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPRE",32,0)
;
2016-04-11 18:26:37 -04:00
"RTN","ZZUTPRE",33,0)
N $ET S $ET="ZN NMSP D ^%ZTER S $EC="""""
2016-02-27 17:01:27 -05:00
"RTN","ZZUTPRE",34,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPRE",35,0)
2016-04-11 18:26:37 -04:00
ZN "%SYS" ; Go to SYS
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPRE",36,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPRE",37,0)
2016-04-11 18:26:37 -04:00
; Props
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPRE",38,0)
2016-04-11 18:26:37 -04:00
N PROP
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPRE",39,0)
2016-04-11 18:26:37 -04:00
N % S %=##Class(Config.Namespaces).Get(NMSP,.PROP) ; Get all namespace properties
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPRE",40,0)
2016-02-27 17:01:27 -05:00
I '% W !,"Error="_$SYSTEM.Status.GetErrorText(%) S $EC=",U-CONFIG-FAIL," QUIT
2016-04-11 18:26:37 -04:00
"RTN","ZZUTPRE",41,0)
2016-02-27 17:01:27 -05:00
;
2016-04-11 18:26:37 -04:00
"RTN","ZZUTPRE",42,0)
N DBG S DBG=PROP("Globals") ; get the database globals location
2016-02-27 17:01:27 -05:00
"RTN","ZZUTPRE",43,0)
2016-04-11 18:26:37 -04:00
N DBR S DBR=PROP("Routines") ; get the database routines location
2016-02-27 17:01:27 -05:00
"RTN","ZZUTPRE",44,0)
2016-04-11 18:26:37 -04:00
; the following is needed for the call to MapGlobals.Create below, is not set in above call
2016-02-27 17:01:27 -05:00
"RTN","ZZUTPRE",45,0)
2016-04-11 18:26:37 -04:00
S PROP("Database")=NMSP
2016-02-27 17:01:27 -05:00
"RTN","ZZUTPRE",46,0)
2016-04-11 18:26:37 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","ZZUTPRE",47,0)
2016-04-11 18:26:37 -04:00
; Map %ut globals away from %SYS
2016-02-27 17:01:27 -05:00
"RTN","ZZUTPRE",48,0)
2016-04-11 18:26:37 -04:00
N %
2016-02-27 17:01:27 -05:00
"RTN","ZZUTPRE",49,0)
2016-04-11 18:26:37 -04:00
; JLI 160406 - the following was modified to try the new method, and if it is not there
2016-02-27 17:01:27 -05:00
"RTN","ZZUTPRE",50,0)
2016-04-11 18:26:37 -04:00
; (or another error), it then tries the method replacing the original one
"RTN","ZZUTPRE",51,0)
; try recommended replacement for deprecated method
"RTN","ZZUTPRE",52,0)
TRY { ; try new style
"RTN","ZZUTPRE",53,0)
S %=##class(Config.Configuration).GetGlobalMapping(NMSP,"%ut*","",DBG,DBG)
"RTN","ZZUTPRE",54,0)
}
"RTN","ZZUTPRE",55,0)
CATCH {
"RTN","ZZUTPRE",56,0)
S %=0
"RTN","ZZUTPRE",57,0)
}
"RTN","ZZUTPRE",58,0)
; if it didn't work, use the deprecated method
"RTN","ZZUTPRE",59,0)
I '% S %=##Class(Config.MapGlobals).Get(NMSP,"%ut*",.PROP) ; go back to original
"RTN","ZZUTPRE",60,0)
;
"RTN","ZZUTPRE",61,0)
; if not previously set, set new global mapping entry - try recommended replacement
"RTN","ZZUTPRE",62,0)
; for deprecated method for adding a global mapping
"RTN","ZZUTPRE",63,0)
TRY { ; try new style to add global mapping
"RTN","ZZUTPRE",64,0)
I '% S %=##class(Config.Configuration).AddGlobalMapping(NMSP,"%ut*","",DBG,DBG)
"RTN","ZZUTPRE",65,0)
}
"RTN","ZZUTPRE",66,0)
CATCH {
"RTN","ZZUTPRE",67,0)
S %=0
"RTN","ZZUTPRE",68,0)
}
"RTN","ZZUTPRE",69,0)
; again, if it didn't work use the original (now deprecated) method
"RTN","ZZUTPRE",70,0)
S PROP("Database")=NMSP ; needed for call to MapGlobals.Create below
"RTN","ZZUTPRE",71,0)
I '% S %=##Class(Config.MapGlobals).Create(NMSP,"%ut",.PROP) ; doesn't work with "%ut*"
"RTN","ZZUTPRE",72,0)
;
"RTN","ZZUTPRE",73,0)
I '% W !,"Error="_$SYSTEM.Status.GetErrorText(%) S $EC=",U-CONFIG-FAIL," QUIT
"RTN","ZZUTPRE",74,0)
; end of modification
"RTN","ZZUTPRE",75,0)
; Map %ut routines away from %SYS
"RTN","ZZUTPRE",76,0)
N PROPRTN S PROPRTN("Database")=DBR
"RTN","ZZUTPRE",77,0)
N %
"RTN","ZZUTPRE",78,0)
S %=##Class(Config.MapRoutines).Get(NMSP,"%ut*",.PROPRTN)
"RTN","ZZUTPRE",79,0)
S PROPRTN("Database")=DBR ; Cache seems to like deleting this
"RTN","ZZUTPRE",80,0)
I '% S %=##Class(Config.MapRoutines).Create(NMSP,"%ut*",.PROPRTN)
"RTN","ZZUTPRE",81,0)
I '% W !,"Error="_$SYSTEM.Status.GetErrorText(%) S $EC=",U-CONFIG-FAIL," QUIT
"RTN","ZZUTPRE",82,0)
ZN NMSP ; Go back
"RTN","ZZUTPRE",83,0)
2015-03-25 15:05:25 -04:00
QUIT
"RTN","ut")
2016-04-11 18:26:37 -04:00
0^2^B250214208
2015-03-25 15:05:25 -04:00
"RTN","ut",1,0)
2016-04-11 18:26:37 -04:00
%ut ;VEN-SMH/JLI - PRIMARY PROGRAM FOR M-UNIT TESTING ;04/08/16 20:35
2015-03-25 15:05:25 -04:00
"RTN","ut",2,0)
2016-04-11 18:26:37 -04:00
;;1.4;MASH UTILITIES;;APR 11, 2016;Build 3
2015-03-25 15:05:25 -04:00
"RTN","ut",3,0)
2016-04-11 18:26:37 -04:00
; Submitted to OSEHRA Apr 11, 2016 by Joel L. Ivey under the Apache 2 license (http://www.apache.org/licenses/LICENSE-2.0.html)
2015-03-25 15:05:25 -04:00
"RTN","ut",4,0)
2016-02-27 17:01:27 -05:00
; Original routine authored by Joel L. Ivey as XTMUNIT while working for U.S. Department of Veterans Affairs 2003-2012
2015-03-25 15:05:25 -04:00
"RTN","ut",5,0)
2016-02-27 17:01:27 -05:00
; Includes addition of %utVERB and %utBREAK arguments and code related to them as well as other substantial additions authored by Sam Habiel 07/2013-04/2014
2015-03-25 15:05:25 -04:00
"RTN","ut",6,0)
2016-04-11 18:26:37 -04:00
; Additions and modifications made by Sam H. Habiel and Joel L. Ivey 02/2016-04/2016
2015-03-25 15:05:25 -04:00
"RTN","ut",7,0)
;
"RTN","ut",8,0)
2016-02-27 17:01:27 -05:00
; This routine and its companion, %ut1, provide the basic functionality for
2015-03-25 15:05:25 -04:00
"RTN","ut",9,0)
2016-02-27 17:01:27 -05:00
; running unit tests on parts of M programs either at the command line level
2015-03-25 15:05:25 -04:00
"RTN","ut",10,0)
2016-02-27 17:01:27 -05:00
; or via the M-Unit GUI application for windows operating systems.
2015-03-25 15:05:25 -04:00
"RTN","ut",11,0)
2016-02-27 17:01:27 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",12,0)
2016-02-27 17:01:27 -05:00
; Original by Dr. Joel Ivey
2015-03-25 15:05:25 -04:00
"RTN","ut",13,0)
2016-02-27 17:01:27 -05:00
; Contributions by Dr. Sam Habiel
2015-03-25 15:05:25 -04:00
"RTN","ut",14,0)
2016-04-11 18:26:37 -04:00
; comments moved to %utcover due to space requirements
2015-03-25 15:05:25 -04:00
"RTN","ut",15,0)
2016-02-27 17:01:27 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",16,0)
2016-02-27 17:01:27 -05:00
D ^%utt6 ; runs unit tests on all of it
2015-03-25 15:05:25 -04:00
"RTN","ut",17,0)
2016-02-27 17:01:27 -05:00
Q
2015-03-25 15:05:25 -04:00
"RTN","ut",18,0)
2016-02-27 17:01:27 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",19,0)
2016-02-27 17:01:27 -05:00
EN(%utRNAM,%utVERB,%utBREAK) ; .SR Entry point with primary test routine name
2015-03-25 15:05:25 -04:00
"RTN","ut",20,0)
2016-02-27 17:01:27 -05:00
; %utRNAM: (Required) Routine name that contians the tags with @TEST in them or the tag XTROU
2015-03-25 15:05:25 -04:00
"RTN","ut",21,0)
2016-02-27 17:01:27 -05:00
; %utVERB: (optional) 1 for verbose output or 2 for verbose and timing info.
2015-03-25 15:05:25 -04:00
"RTN","ut",22,0)
2016-02-27 17:01:27 -05:00
; %utBREAK:(optional) bool - Break upon error or upon failure
2015-03-25 15:05:25 -04:00
"RTN","ut",23,0)
2016-02-27 17:01:27 -05:00
N %utLIST,%utROU,%ut
2015-03-25 15:05:25 -04:00
"RTN","ut",24,0)
2016-02-27 17:01:27 -05:00
S %utLIST=1,%utROU(%utLIST)=%utRNAM
2015-03-25 15:05:25 -04:00
"RTN","ut",25,0)
2016-02-27 17:01:27 -05:00
K ^TMP("%ut",$J,"UTVALS")
2015-03-25 15:05:25 -04:00
"RTN","ut",26,0)
2016-02-27 17:01:27 -05:00
D SETUT
2015-03-25 15:05:25 -04:00
"RTN","ut",27,0)
2016-02-27 17:01:27 -05:00
D EN1(.%utROU,%utLIST)
2015-03-25 15:05:25 -04:00
"RTN","ut",28,0)
2016-02-27 17:01:27 -05:00
Q
2015-03-25 15:05:25 -04:00
"RTN","ut",29,0)
2016-02-27 17:01:27 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",30,0)
2016-02-27 17:01:27 -05:00
SETUT ;
2015-03-25 15:05:25 -04:00
"RTN","ut",31,0)
2016-02-27 17:01:27 -05:00
; VEN/SMH 26JUL2013
2015-03-25 15:05:25 -04:00
"RTN","ut",32,0)
2016-02-27 17:01:27 -05:00
I '($D(IO)#2) S IO=$P
2015-03-25 15:05:25 -04:00
"RTN","ut",33,0)
2016-02-27 17:01:27 -05:00
S U="^"
2015-03-25 15:05:25 -04:00
"RTN","ut",34,0)
2016-02-27 17:01:27 -05:00
; VEN/SMH 26JUL2013 END
2015-03-25 15:05:25 -04:00
"RTN","ut",35,0)
2016-02-27 17:01:27 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",36,0)
2016-02-27 17:01:27 -05:00
; ZEXCEPT: %ut -- NEWED ON ENTRY
2015-03-25 15:05:25 -04:00
"RTN","ut",37,0)
2016-02-27 17:01:27 -05:00
S %ut("IO")=IO
2015-03-25 15:05:25 -04:00
"RTN","ut",38,0)
2016-02-27 17:01:27 -05:00
S %ut=1 ; set to identify unit test being run check with $$ISUTEST^%ut()
2015-03-25 15:05:25 -04:00
"RTN","ut",39,0)
2016-02-27 17:01:27 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",40,0)
2016-02-27 17:01:27 -05:00
; ZEXCEPT: %utBREAK
2015-03-25 15:05:25 -04:00
"RTN","ut",41,0)
2016-02-27 17:01:27 -05:00
I $G(%utBREAK) S %ut("BREAK")=1
2015-03-25 15:05:25 -04:00
"RTN","ut",42,0)
Q
2016-02-27 17:01:27 -05:00
"RTN","ut",43,0)
2015-03-25 15:05:25 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","ut",44,0)
EN1(%utROU,%utLIST) ;
2015-03-25 15:05:25 -04:00
"RTN","ut",45,0)
2016-02-27 17:01:27 -05:00
; VEN/SMH 26JUL2013 - This block is refactored to fix problems with
2015-03-25 15:05:25 -04:00
"RTN","ut",46,0)
2016-02-27 17:01:27 -05:00
; SETUP and TEARDOWN not happening at the right time
2015-03-25 15:05:25 -04:00
"RTN","ut",47,0)
2016-02-27 17:01:27 -05:00
N %utERRL,%utK,%utI,%utJ,%utSTRT
2015-03-25 15:05:25 -04:00
"RTN","ut",48,0)
2016-02-27 17:01:27 -05:00
; ZEXCEPT: %utVERB -- ARGUMENT TO EN
2015-03-25 15:05:25 -04:00
"RTN","ut",49,0)
2016-02-27 17:01:27 -05:00
I '+$G(%utVERB) S %utVERB=0
2015-03-25 15:05:25 -04:00
"RTN","ut",50,0)
2016-02-27 17:01:27 -05:00
; ZEXCEPT: %utGUI -- CONDITIONALLY DEFINED BY GUINEXT
2015-03-25 15:05:25 -04:00
"RTN","ut",51,0)
2016-02-27 17:01:27 -05:00
; ZEXCEPT: %ut -- NEWED IN EN
2015-03-25 15:05:25 -04:00
"RTN","ut",52,0)
2016-04-11 18:26:37 -04:00
; ZEXCEPT: GetCPUTime,Process -- part of Cache method names
2015-03-25 15:05:25 -04:00
"RTN","ut",53,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",54,0)
2016-04-11 18:26:37 -04:00
; Structure map for %ut
2015-03-25 15:05:25 -04:00
"RTN","ut",55,0)
2016-04-11 18:26:37 -04:00
; -- CURR = Counter for routine number. Used as sub in %utROU
2015-03-25 15:05:25 -04:00
"RTN","ut",56,0)
2016-04-11 18:26:37 -04:00
; -- ECNT = Entry point count in loop (cf. NERT); VEN/SMH - Needed?
2015-03-25 15:05:25 -04:00
"RTN","ut",57,0)
2016-04-11 18:26:37 -04:00
; -- FAIL = Number of failures
2015-03-25 15:05:25 -04:00
"RTN","ut",58,0)
2016-04-11 18:26:37 -04:00
; -- CHK = Number of checks ran (TF/EQ/FAIL)
2015-03-25 15:05:25 -04:00
"RTN","ut",59,0)
2016-04-11 18:26:37 -04:00
; -- NENT = Number of entry points ran
2015-03-25 15:05:25 -04:00
"RTN","ut",60,0)
2016-04-11 18:26:37 -04:00
; -- ERRN = Number of errors
2015-03-25 15:05:25 -04:00
"RTN","ut",61,0)
2016-04-11 18:26:37 -04:00
S %ut("CURR")=0,%ut("ECNT")=0,%ut("FAIL")=0,%ut("CHK")=0,%ut("NENT")=0,%ut("ERRN")=0
2016-02-27 17:01:27 -05:00
"RTN","ut",62,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",63,0)
2016-04-11 18:26:37 -04:00
; -- GET LIST OF ROUTINES --
2015-03-25 15:05:25 -04:00
"RTN","ut",64,0)
2016-04-11 18:26:37 -04:00
; first get any tree of routines from this one
2015-03-25 15:05:25 -04:00
"RTN","ut",65,0)
2016-04-11 18:26:37 -04:00
D GETTREE^%ut1(.%utROU,.%utLIST)
2016-02-27 17:01:27 -05:00
"RTN","ut",66,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",67,0)
2016-04-11 18:26:37 -04:00
; Now process each routine that has been referenced
2015-03-25 15:05:25 -04:00
"RTN","ut",68,0)
2016-04-11 18:26:37 -04:00
N CURRROU
2015-03-25 15:05:25 -04:00
"RTN","ut",69,0)
2016-04-11 18:26:37 -04:00
S %ut("CURR")=0
2015-03-25 15:05:25 -04:00
"RTN","ut",70,0)
2016-04-11 18:26:37 -04:00
F S %ut("CURR")=%ut("CURR")+1 Q:'$D(%utROU(%ut("CURR"))) S CURRROU=%utROU(%ut("CURR")) D I $T(@("SHUTDOWN^"_CURRROU))'="" D @("SHUTDOWN^"_CURRROU)
2015-03-25 15:05:25 -04:00
"RTN","ut",71,0)
2016-04-11 18:26:37 -04:00
. ; 141018 - add ability to run STARTUP and SHUTDOWN in each routine JLI
2015-03-25 15:05:25 -04:00
"RTN","ut",72,0)
2016-04-11 18:26:37 -04:00
. I $T(@("STARTUP^"_CURRROU))'="" D @("STARTUP^"_CURRROU) ; 141018
2015-03-25 15:05:25 -04:00
"RTN","ut",73,0)
2016-04-11 18:26:37 -04:00
. N %utETRY ; Test list to run
2015-03-25 15:05:25 -04:00
"RTN","ut",74,0)
2016-04-11 18:26:37 -04:00
. ;
2015-03-25 15:05:25 -04:00
"RTN","ut",75,0)
2016-04-11 18:26:37 -04:00
. ; Collect Test list.
2015-03-25 15:05:25 -04:00
"RTN","ut",76,0)
2016-04-11 18:26:37 -04:00
. D CHEKTEST^%ut1(%utROU(%ut("CURR")),.%ut,.%utETRY)
2015-03-25 15:05:25 -04:00
"RTN","ut",77,0)
2016-04-11 18:26:37 -04:00
. ;
2015-03-25 15:05:25 -04:00
"RTN","ut",78,0)
2016-04-11 18:26:37 -04:00
. ; if a SETUP entry point exists, save it off in %ut
2015-03-25 15:05:25 -04:00
"RTN","ut",79,0)
2016-04-11 18:26:37 -04:00
. S %ut("SETUP")="" ; 141018 need to clear any previous values JLI
2015-03-25 15:05:25 -04:00
"RTN","ut",80,0)
2016-04-11 18:26:37 -04:00
. N %utSETUP S %utSETUP="SETUP^"_%utROU(%ut("CURR"))
2015-03-25 15:05:25 -04:00
"RTN","ut",81,0)
2016-04-11 18:26:37 -04:00
. S %ut("LINE")=$T(@%utSETUP) I %ut("LINE")'="" S %ut("SETUP")=%utSETUP
2015-03-25 15:05:25 -04:00
"RTN","ut",82,0)
2016-04-11 18:26:37 -04:00
. K %utSETUP ; we're done!
2015-03-25 15:05:25 -04:00
"RTN","ut",83,0)
2016-04-11 18:26:37 -04:00
. ;
2015-03-25 15:05:25 -04:00
"RTN","ut",84,0)
2016-04-11 18:26:37 -04:00
. ; if a TEARDOWN entry point exists, ditto
2015-03-25 15:05:25 -04:00
"RTN","ut",85,0)
2016-04-11 18:26:37 -04:00
. S %ut("TEARDOWN")="" ; 141018 need to clear any previous values JLI
2015-03-25 15:05:25 -04:00
"RTN","ut",86,0)
2016-04-11 18:26:37 -04:00
. N %utTEARDOWN S %utTEARDOWN="TEARDOWN^"_%utROU(%ut("CURR"))
2015-03-25 15:05:25 -04:00
"RTN","ut",87,0)
2016-04-11 18:26:37 -04:00
. S %ut("LINE")=$T(@%utTEARDOWN) I %ut("LINE")'="" S %ut("TEARDOWN")=%utTEARDOWN
2015-03-25 15:05:25 -04:00
"RTN","ut",88,0)
2016-04-11 18:26:37 -04:00
. K %utTEARDOWN ; done here.
2015-03-25 15:05:25 -04:00
"RTN","ut",89,0)
2016-04-11 18:26:37 -04:00
. ;
2015-03-25 15:05:25 -04:00
"RTN","ut",90,0)
2016-04-11 18:26:37 -04:00
. ; VEN/SMH 26JUL2013 - this block changed to correct running of setup and teardown
2015-03-25 15:05:25 -04:00
"RTN","ut",91,0)
2016-04-11 18:26:37 -04:00
. ; run each of the specified entry points
2015-03-25 15:05:25 -04:00
"RTN","ut",92,0)
2016-04-11 18:26:37 -04:00
. ;
2015-03-25 15:05:25 -04:00
"RTN","ut",93,0)
2016-04-11 18:26:37 -04:00
. ; == THIS FOR/DO BLOCK IS THE CENTRAL TEST RUNNER ==
2015-03-25 15:05:25 -04:00
"RTN","ut",94,0)
2016-04-11 18:26:37 -04:00
. S %utI=0
2015-03-25 15:05:25 -04:00
"RTN","ut",95,0)
2016-04-11 18:26:37 -04:00
. F S %utI=$O(%utETRY(%utI)) Q:%utI'>0 S %ut("ENUM")=%ut("ERRN")+%ut("FAIL") D
2015-03-25 15:05:25 -04:00
"RTN","ut",96,0)
2016-04-11 18:26:37 -04:00
. . N $ETRAP S $ETRAP="D ERROR^%ut"
2015-03-25 15:05:25 -04:00
"RTN","ut",97,0)
2016-04-11 18:26:37 -04:00
. . ;
2015-03-25 15:05:25 -04:00
"RTN","ut",98,0)
2016-04-11 18:26:37 -04:00
. . ; Run Set-up Code (only if present)
2015-03-25 15:05:25 -04:00
"RTN","ut",99,0)
2016-04-11 18:26:37 -04:00
. . S %ut("ENT")=$G(%ut("SETUP")) ; Current entry
2015-03-25 15:05:25 -04:00
"RTN","ut",100,0)
2016-04-11 18:26:37 -04:00
. . S %ut("NAME")="Set-up Code"
2015-03-25 15:05:25 -04:00
"RTN","ut",101,0)
2016-04-11 18:26:37 -04:00
. . D:%ut("ENT")]"" @%ut("ENT")
2015-03-25 15:05:25 -04:00
"RTN","ut",102,0)
2016-04-11 18:26:37 -04:00
. . ;
2015-03-25 15:05:25 -04:00
"RTN","ut",103,0)
2016-04-11 18:26:37 -04:00
. . ; Run actual test
2015-03-25 15:05:25 -04:00
"RTN","ut",104,0)
2016-04-11 18:26:37 -04:00
. . S %ut("ECNT")=%ut("ECNT")+1
2015-03-25 15:05:25 -04:00
"RTN","ut",105,0)
2016-04-11 18:26:37 -04:00
. . S %ut("NAME")=%utETRY(%utI,"NAME")
2015-03-25 15:05:25 -04:00
"RTN","ut",106,0)
2016-04-11 18:26:37 -04:00
. . S %ut("ENT")=%utETRY(%utI)_"^"_%utROU(%ut("CURR"))
2015-03-25 15:05:25 -04:00
"RTN","ut",107,0)
2016-04-11 18:26:37 -04:00
. . I %utVERB,'$D(%utGUI) D VERBOSE1(.%utETRY,%utI) ; Say what we executed.
2015-03-25 15:05:25 -04:00
"RTN","ut",108,0)
2016-04-11 18:26:37 -04:00
. . ;
2015-03-25 15:05:25 -04:00
"RTN","ut",109,0)
2016-04-11 18:26:37 -04:00
. . I %utVERB=2 N %utStart D ; Time Start
2015-03-25 15:05:25 -04:00
"RTN","ut",110,0)
2016-04-11 18:26:37 -04:00
. . . I +$SY=0 S %utStart=$P($SYSTEM.Process.GetCPUTime(),",")+$P($SYSTEM.Process.GetCPUTime(),",",2)
2015-03-25 15:05:25 -04:00
"RTN","ut",111,0)
2016-04-11 18:26:37 -04:00
. . . I +$SY=47 S %utStart=$ZGETJPI("","CPUTIM")*10
2015-03-25 15:05:25 -04:00
"RTN","ut",112,0)
2016-04-11 18:26:37 -04:00
. . ;
2015-03-25 15:05:25 -04:00
"RTN","ut",113,0)
2016-04-11 18:26:37 -04:00
. . ; Run the test!
2015-03-25 15:05:25 -04:00
"RTN","ut",114,0)
2016-04-11 18:26:37 -04:00
. . D @%ut("ENT")
2015-03-25 15:05:25 -04:00
"RTN","ut",115,0)
2016-04-11 18:26:37 -04:00
. . ;
2015-03-25 15:05:25 -04:00
"RTN","ut",116,0)
2016-04-11 18:26:37 -04:00
. . I %utVERB=2 N %utEnd,%utElapsed D ; Time End
2015-03-25 15:05:25 -04:00
"RTN","ut",117,0)
2016-04-11 18:26:37 -04:00
. . . I +$SY=0 S %utEnd=$P($SYSTEM.Process.GetCPUTime(),",")+$P($SYSTEM.Process.GetCPUTime(),",",2)
2015-03-25 15:05:25 -04:00
"RTN","ut",118,0)
2016-04-11 18:26:37 -04:00
. . . I +$SY=47 S %utEnd=$ZGETJPI("","CPUTIM")*10
2015-03-25 15:05:25 -04:00
"RTN","ut",119,0)
2016-04-11 18:26:37 -04:00
. . . S %utElapsed=%utEnd-%utStart_"ms"
2015-03-25 15:05:25 -04:00
"RTN","ut",120,0)
2016-04-11 18:26:37 -04:00
. . ;
2015-03-25 15:05:25 -04:00
"RTN","ut",121,0)
2016-04-11 18:26:37 -04:00
. . ; Run Teardown Code (only if present)
2015-03-25 15:05:25 -04:00
"RTN","ut",122,0)
2016-04-11 18:26:37 -04:00
. . S %ut("ENT")=$G(%ut("TEARDOWN"))
2015-03-25 15:05:25 -04:00
"RTN","ut",123,0)
2016-04-11 18:26:37 -04:00
. . S %ut("NAME")="Teardown Code"
2015-03-25 15:05:25 -04:00
"RTN","ut",124,0)
2016-04-11 18:26:37 -04:00
. . D:%ut("ENT")]"" @%ut("ENT")
2015-03-25 15:05:25 -04:00
"RTN","ut",125,0)
2016-04-11 18:26:37 -04:00
. . ;
2015-03-25 15:05:25 -04:00
"RTN","ut",126,0)
2016-04-11 18:26:37 -04:00
. . ; ENUM = Number of errors + failures
2015-03-25 15:05:25 -04:00
"RTN","ut",127,0)
2016-04-11 18:26:37 -04:00
. . ; Only print out the success message [OK] If our error number remains
2015-03-25 15:05:25 -04:00
"RTN","ut",128,0)
2016-04-11 18:26:37 -04:00
. . ; the same as when we started the loop.
2015-03-25 15:05:25 -04:00
"RTN","ut",129,0)
2016-04-11 18:26:37 -04:00
. . I %utVERB,'$D(%utGUI) D
2015-03-25 15:05:25 -04:00
"RTN","ut",130,0)
2016-04-11 18:26:37 -04:00
. . . I %ut("ENUM")=(%ut("ERRN")+%ut("FAIL")) D VERBOSE(.%utETRY,1,%utVERB,$G(%utElapsed)) I 1
2015-03-25 15:05:25 -04:00
"RTN","ut",131,0)
2016-04-11 18:26:37 -04:00
. . . E D VERBOSE(.%utETRY,0,%utVERB,$G(%utElapsed))
2015-03-25 15:05:25 -04:00
"RTN","ut",132,0)
2016-04-11 18:26:37 -04:00
. . . Q
2015-03-25 15:05:25 -04:00
"RTN","ut",133,0)
2016-04-11 18:26:37 -04:00
. . Q
2015-03-25 15:05:25 -04:00
"RTN","ut",134,0)
2016-04-11 18:26:37 -04:00
. ; keep a %utCNT of number of entry points executed across all routines
2015-03-25 15:05:25 -04:00
"RTN","ut",135,0)
2016-04-11 18:26:37 -04:00
. S %ut("NENT")=%ut("NENT")+%ut("ENTN")
2015-03-25 15:05:25 -04:00
"RTN","ut",136,0)
2016-04-11 18:26:37 -04:00
. Q
2015-03-25 15:05:25 -04:00
"RTN","ut",137,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",138,0)
2016-04-11 18:26:37 -04:00
; -- SHUTDOWN --
2015-03-25 15:05:25 -04:00
"RTN","ut",139,0)
2016-04-11 18:26:37 -04:00
D SETIO^%ut1
2015-03-25 15:05:25 -04:00
"RTN","ut",140,0)
2016-04-11 18:26:37 -04:00
W !!,"Ran ",%utLIST," Routine",$S(%utLIST>1:"s",1:""),", ",%ut("NENT")," Entry Tag",$S(%ut("NENT")>1:"s",1:"")
2015-03-25 15:05:25 -04:00
"RTN","ut",141,0)
2016-04-11 18:26:37 -04:00
W !,"Checked ",%ut("CHK")," test",$S(%ut("CHK")>1:"s",1:""),", with ",%ut("FAIL")," failure",$S(%ut("FAIL")'=1:"s",1:"")," and encountered ",%ut("ERRN")," error",$S(%ut("ERRN")'=1:"s",1:""),"."
2015-03-25 15:05:25 -04:00
"RTN","ut",142,0)
2016-04-11 18:26:37 -04:00
S ^TMP("%ut",$J,"UTVALS")=%utLIST_U_%ut("NENT")_U_%ut("CHK")_U_%ut("FAIL")_U_%ut("ERRN") ; JLI 150621 so programs running several sets of unit tests can generate totals
2015-03-25 15:05:25 -04:00
"RTN","ut",143,0)
2016-04-11 18:26:37 -04:00
D RESETIO^%ut1
2015-03-25 15:05:25 -04:00
"RTN","ut",144,0)
2016-04-11 18:26:37 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","ut",145,0)
2016-04-11 18:26:37 -04:00
; -- end EN1
2015-03-25 15:05:25 -04:00
"RTN","ut",146,0)
2016-04-11 18:26:37 -04:00
VERBOSE(%utETRY,SUCCESS,%utVERB,%utElapsed) ;Internal only - Say whether we succeeded or failed.
2015-03-25 15:05:25 -04:00
"RTN","ut",147,0)
2016-04-11 18:26:37 -04:00
; ZEXCEPT: %ut - NEWED IN EN
2015-03-25 15:05:25 -04:00
"RTN","ut",148,0)
2016-04-11 18:26:37 -04:00
D SETIO^%ut1
2015-03-25 15:05:25 -04:00
"RTN","ut",149,0)
2016-04-11 18:26:37 -04:00
N RM S RM=73 ; Right Margin
2015-03-25 15:05:25 -04:00
"RTN","ut",150,0)
2016-04-11 18:26:37 -04:00
I %utVERB=2,$G(%utElapsed)]"" S RM=RM-$L(%utElapsed)-1
2015-03-25 15:05:25 -04:00
"RTN","ut",151,0)
2016-04-11 18:26:37 -04:00
N I F I=$X+3:1:RM W "-"
2015-03-25 15:05:25 -04:00
"RTN","ut",152,0)
2016-04-11 18:26:37 -04:00
W ?RM
2015-03-25 15:05:25 -04:00
"RTN","ut",153,0)
2016-04-11 18:26:37 -04:00
I $G(SUCCESS) W "[OK]"
2015-03-25 15:05:25 -04:00
"RTN","ut",154,0)
2016-04-11 18:26:37 -04:00
E W "[FAIL]"
2015-03-25 15:05:25 -04:00
"RTN","ut",155,0)
2016-04-11 18:26:37 -04:00
I %utVERB=2,$G(%utElapsed)]"" W " ",%utElapsed ; add timing
2015-03-25 15:05:25 -04:00
"RTN","ut",156,0)
2016-04-11 18:26:37 -04:00
D RESETIO^%ut1
2015-03-25 15:05:25 -04:00
"RTN","ut",157,0)
2016-04-11 18:26:37 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","ut",158,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",159,0)
2016-04-11 18:26:37 -04:00
VERBOSE1(%utETRY,%utI) ; Print out the entry point info
2015-03-25 15:05:25 -04:00
"RTN","ut",160,0)
2016-04-11 18:26:37 -04:00
; ZEXCEPT: %ut - NEWED IN EN
2015-03-25 15:05:25 -04:00
"RTN","ut",161,0)
2016-04-11 18:26:37 -04:00
D SETIO^%ut1
2015-03-25 15:05:25 -04:00
"RTN","ut",162,0)
2016-04-11 18:26:37 -04:00
W !,%utETRY(%utI) I $G(%utETRY(%utI,"NAME"))'="" W " - ",%utETRY(%utI,"NAME")
2015-03-25 15:05:25 -04:00
"RTN","ut",163,0)
2016-04-11 18:26:37 -04:00
D RESETIO^%ut1
2016-02-27 17:01:27 -05:00
"RTN","ut",164,0)
2016-04-11 18:26:37 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","ut",165,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",166,0)
2016-04-11 18:26:37 -04:00
CHKTF(XTSTVAL,XTERMSG) ; Entry point for checking True or False values
2015-03-25 15:05:25 -04:00
"RTN","ut",167,0)
2016-04-11 18:26:37 -04:00
; ZEXCEPT: %utERRL,%utGUI - CREATED IN SETUP, KILLED IN END
2015-03-25 15:05:25 -04:00
"RTN","ut",168,0)
2016-04-11 18:26:37 -04:00
; ZEXCEPT: %ut - NEWED IN EN
2015-03-25 15:05:25 -04:00
"RTN","ut",169,0)
2016-04-11 18:26:37 -04:00
; ZEXCEPT: XTGUISEP - newed in GUINEXT
2015-03-25 15:05:25 -04:00
"RTN","ut",170,0)
2016-04-11 18:26:37 -04:00
I '$D(XTSTVAL) D NVLDARG^%ut1("CHKTF") Q
2015-03-25 15:05:25 -04:00
"RTN","ut",171,0)
2016-04-11 18:26:37 -04:00
I $G(XTERMSG)="" S XTERMSG="no failure message provided"
2015-03-25 15:05:25 -04:00
"RTN","ut",172,0)
2016-04-11 18:26:37 -04:00
S %ut("CHK")=$G(%ut("CHK"))+1
2015-03-25 15:05:25 -04:00
"RTN","ut",173,0)
2016-04-11 18:26:37 -04:00
I '$D(%utGUI) D
2015-03-25 15:05:25 -04:00
"RTN","ut",174,0)
2016-04-11 18:26:37 -04:00
. D SETIO^%ut1
2015-03-25 15:05:25 -04:00
"RTN","ut",175,0)
2016-04-11 18:26:37 -04:00
. I 'XTSTVAL W !,%ut("ENT")," - " W:%ut("NAME")'="" %ut("NAME")," - " D
2015-03-25 15:05:25 -04:00
"RTN","ut",176,0)
2016-04-11 18:26:37 -04:00
. . W XTERMSG,! S %ut("FAIL")=%ut("FAIL")+1,%utERRL(%ut("FAIL"))=%ut("NAME"),%utERRL(%ut("FAIL"),"MSG")=XTERMSG,%utERRL(%ut("FAIL"),"ENTRY")=%ut("ENT")
2015-03-25 15:05:25 -04:00
"RTN","ut",177,0)
2016-04-11 18:26:37 -04:00
. . I $D(%ut("BREAK")) BREAK ; Break upon failure
2015-03-25 15:05:25 -04:00
"RTN","ut",178,0)
2016-04-11 18:26:37 -04:00
. . Q
2015-03-25 15:05:25 -04:00
"RTN","ut",179,0)
2016-04-11 18:26:37 -04:00
. I XTSTVAL W "."
2015-03-25 15:05:25 -04:00
"RTN","ut",180,0)
2016-04-11 18:26:37 -04:00
. D RESETIO^%ut1
2015-03-25 15:05:25 -04:00
"RTN","ut",181,0)
2016-04-11 18:26:37 -04:00
. Q
2015-03-25 15:05:25 -04:00
"RTN","ut",182,0)
2016-04-11 18:26:37 -04:00
I $D(%utGUI),'XTSTVAL S %ut("CNT")=%ut("CNT")+1,@%ut("RSLT")@(%ut("CNT"))=%ut("LOC")_XTGUISEP_"FAILURE"_XTGUISEP_XTERMSG,%ut("FAIL")=%ut("FAIL")+1
2015-03-25 15:05:25 -04:00
"RTN","ut",183,0)
2016-04-11 18:26:37 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","ut",184,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",185,0)
2016-04-11 18:26:37 -04:00
CHKEQ(XTEXPECT,XTACTUAL,XTERMSG) ; Entry point for checking values to see if they are EQUAL
2015-03-25 15:05:25 -04:00
"RTN","ut",186,0)
2016-04-11 18:26:37 -04:00
N FAILMSG
2015-03-25 15:05:25 -04:00
"RTN","ut",187,0)
2016-04-11 18:26:37 -04:00
; ZEXCEPT: %utERRL,%utGUI -CREATED IN SETUP, KILLED IN END
2015-03-25 15:05:25 -04:00
"RTN","ut",188,0)
2016-04-11 18:26:37 -04:00
; ZEXCEPT: %ut -- NEWED IN EN
2015-03-25 15:05:25 -04:00
"RTN","ut",189,0)
2016-04-11 18:26:37 -04:00
; ZEXCEPT: XTGUISEP - newed in GUINEXT
2015-03-25 15:05:25 -04:00
"RTN","ut",190,0)
2016-04-11 18:26:37 -04:00
I '$D(XTEXPECT)!'$D(XTACTUAL) D NVLDARG^%ut1("CHKEQ") Q
2015-03-25 15:05:25 -04:00
"RTN","ut",191,0)
2016-04-11 18:26:37 -04:00
S XTACTUAL=$G(XTACTUAL),XTEXPECT=$G(XTEXPECT)
2015-03-25 15:05:25 -04:00
"RTN","ut",192,0)
2016-04-11 18:26:37 -04:00
I $G(XTERMSG)="" S XTERMSG="no failure message provided"
2015-03-25 15:05:25 -04:00
"RTN","ut",193,0)
2016-04-11 18:26:37 -04:00
S %ut("CHK")=%ut("CHK")+1
2015-03-25 15:05:25 -04:00
"RTN","ut",194,0)
2016-04-11 18:26:37 -04:00
I XTEXPECT'=XTACTUAL S FAILMSG="<"_XTEXPECT_"> vs <"_XTACTUAL_"> - "
2015-03-25 15:05:25 -04:00
"RTN","ut",195,0)
2016-04-11 18:26:37 -04:00
I '$D(%utGUI) D
2015-03-25 15:05:25 -04:00
"RTN","ut",196,0)
2016-04-11 18:26:37 -04:00
. D SETIO^%ut1
2015-03-25 15:05:25 -04:00
"RTN","ut",197,0)
2016-04-11 18:26:37 -04:00
. I XTEXPECT'=XTACTUAL W !,%ut("ENT")," - " W:%ut("NAME")'="" %ut("NAME")," - " W FAILMSG,XTERMSG,! D
2015-03-25 15:05:25 -04:00
"RTN","ut",198,0)
2016-04-11 18:26:37 -04:00
. . S %ut("FAIL")=%ut("FAIL")+1,%utERRL(%ut("FAIL"))=%ut("NAME"),%utERRL(%ut("FAIL"),"MSG")=XTERMSG,%utERRL(%ut("FAIL"),"ENTRY")=%ut("ENT")
2015-03-25 15:05:25 -04:00
"RTN","ut",199,0)
2016-04-11 18:26:37 -04:00
. . I $D(%ut("BREAK")) BREAK ; Break upon failure
2015-03-25 15:05:25 -04:00
"RTN","ut",200,0)
2016-04-11 18:26:37 -04:00
. . Q
2015-03-25 15:05:25 -04:00
"RTN","ut",201,0)
2016-04-11 18:26:37 -04:00
. E W "."
2015-03-25 15:05:25 -04:00
"RTN","ut",202,0)
2016-04-11 18:26:37 -04:00
. D RESETIO^%ut1
2015-03-25 15:05:25 -04:00
"RTN","ut",203,0)
2016-04-11 18:26:37 -04:00
. Q
2015-03-25 15:05:25 -04:00
"RTN","ut",204,0)
2016-04-11 18:26:37 -04:00
I $D(%utGUI),XTEXPECT'=XTACTUAL S %ut("CNT")=%ut("CNT")+1,@%ut("RSLT")@(%ut("CNT"))=%ut("LOC")_XTGUISEP_"FAILURE"_XTGUISEP_FAILMSG_XTERMSG,%ut("FAIL")=%ut("FAIL")+1
2015-03-25 15:05:25 -04:00
"RTN","ut",205,0)
2016-04-11 18:26:37 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","ut",206,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",207,0)
2016-04-11 18:26:37 -04:00
FAIL(XTERMSG) ; Entry point for generating a failure message
2015-03-25 15:05:25 -04:00
"RTN","ut",208,0)
2016-04-11 18:26:37 -04:00
D FAIL^%ut1($G(XTERMSG))
2015-03-25 15:05:25 -04:00
"RTN","ut",209,0)
2016-04-11 18:26:37 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","ut",210,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",211,0)
2016-04-11 18:26:37 -04:00
SUCCEED ; Entry point for forcing a success (Thx David Whitten)
2015-03-25 15:05:25 -04:00
"RTN","ut",212,0)
2016-04-11 18:26:37 -04:00
; ZEXCEPT: %utERRL,%utGUI - CREATED IN SETUP, KILLED IN END
2015-03-25 15:05:25 -04:00
"RTN","ut",213,0)
2016-04-11 18:26:37 -04:00
; ZEXCEPT: %ut - NEWED IN EN
2015-03-25 15:05:25 -04:00
"RTN","ut",214,0)
2016-04-11 18:26:37 -04:00
; Switch IO and write out the dot for activity
2015-03-25 15:05:25 -04:00
"RTN","ut",215,0)
2016-04-11 18:26:37 -04:00
I '$D(%utGUI) D
2015-03-25 15:05:25 -04:00
"RTN","ut",216,0)
2016-04-11 18:26:37 -04:00
. D SETIO^%ut1
2015-03-25 15:05:25 -04:00
"RTN","ut",217,0)
2016-04-11 18:26:37 -04:00
. W "."
2015-03-25 15:05:25 -04:00
"RTN","ut",218,0)
2016-04-11 18:26:37 -04:00
. D RESETIO^%ut1
2015-03-25 15:05:25 -04:00
"RTN","ut",219,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",220,0)
2016-04-11 18:26:37 -04:00
; Increment test counter
2015-03-25 15:05:25 -04:00
"RTN","ut",221,0)
2016-04-11 18:26:37 -04:00
S %ut("CHK")=%ut("CHK")+1
2015-03-25 15:05:25 -04:00
"RTN","ut",222,0)
2016-04-11 18:26:37 -04:00
QUIT
2015-03-25 15:05:25 -04:00
"RTN","ut",223,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",224,0)
2016-04-11 18:26:37 -04:00
CHKLEAKS(%utCODE,%utLOC,%utINPT) ; functionality to check for variable leaks on executing a section of code
2015-03-25 15:05:25 -04:00
"RTN","ut",225,0)
2016-04-11 18:26:37 -04:00
; %utCODE - A string that specifies the code that is to be XECUTED and checked for leaks.
2015-03-25 15:05:25 -04:00
"RTN","ut",226,0)
2016-04-11 18:26:37 -04:00
; this should be a complete piece of code (e.g., "S X=$$NOW^XLFDT()" or "D EN^%ut(""ROUNAME"")")
2015-03-25 15:05:25 -04:00
"RTN","ut",227,0)
2016-04-11 18:26:37 -04:00
; %utLOC - A string that is used to indicate the code tested for variable leaks
2015-03-25 15:05:25 -04:00
"RTN","ut",228,0)
2016-04-11 18:26:37 -04:00
; %utINPT - An optional variable which may be passed by reference. This may
2015-03-25 15:05:25 -04:00
"RTN","ut",229,0)
2016-04-11 18:26:37 -04:00
; be used to pass any variable values, etc. into the code to be
2015-03-25 15:05:25 -04:00
"RTN","ut",230,0)
2016-04-11 18:26:37 -04:00
; XECUTED. In this case, set the subscript to the variable name and the
2015-03-25 15:05:25 -04:00
"RTN","ut",231,0)
2016-04-11 18:26:37 -04:00
; value of the subscripted variable to the desired value of the subscript.
2015-03-25 15:05:25 -04:00
"RTN","ut",232,0)
2016-04-11 18:26:37 -04:00
; e.g., (using NAME as my current namespace)
2015-03-25 15:05:25 -04:00
"RTN","ut",233,0)
2016-04-11 18:26:37 -04:00
; S CODE="S %utINPT=$$ENTRY^ROUTINE(ZZVALUE1,ZZVALUE2)"
2015-03-25 15:05:25 -04:00
"RTN","ut",234,0)
2016-04-11 18:26:37 -04:00
; S NAMELOC="ENTRY^ROUTINE leak test" (or simply "ENTRY^ROUTINE")
2015-03-25 15:05:25 -04:00
"RTN","ut",235,0)
2016-04-11 18:26:37 -04:00
; S NAMEINPT("ZZVALUE1")=ZZVALUE1
2015-03-25 15:05:25 -04:00
"RTN","ut",236,0)
2016-04-11 18:26:37 -04:00
; S NAMEINPT("ZZVALUE2")=ZZVALUE2
2015-03-25 15:05:25 -04:00
"RTN","ut",237,0)
2016-04-11 18:26:37 -04:00
; D CHKLEAKS^%ut(CODE,NAMELOC,.NAMEINPT)
2015-03-25 15:05:25 -04:00
"RTN","ut",238,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",239,0)
2016-04-11 18:26:37 -04:00
; If part of a unit test, any leaked variables in ENTRY^ROUTINE which result
2015-03-25 15:05:25 -04:00
"RTN","ut",240,0)
2016-04-11 18:26:37 -04:00
; from running the code with the variables indicated will be shown as FAILUREs.
2015-03-25 15:05:25 -04:00
"RTN","ut",241,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",242,0)
2016-04-11 18:26:37 -04:00
; If called outside of a unit test, any leaked variables will be printed to the
2015-03-25 15:05:25 -04:00
"RTN","ut",243,0)
2016-04-11 18:26:37 -04:00
; current device.
2015-03-25 15:05:25 -04:00
"RTN","ut",244,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",245,0)
2016-04-11 18:26:37 -04:00
N (%utCODE,%utLOC,%utINPT,DUZ,IO,U,%utERRL,%ut,%utGUI,%utERR,%utI,%utJ,%utK,%utLIST,%utROU,%utSTRT,XTGUISEP)
2015-03-25 15:05:25 -04:00
"RTN","ut",246,0)
2016-04-11 18:26:37 -04:00
; ZEXCEPT: %ut - part of exclusive NEW TESTS FOR EXISTENCE ONLY
2015-03-25 15:05:25 -04:00
"RTN","ut",247,0)
2016-04-11 18:26:37 -04:00
; ZEXCEPT: %utVAR - handled by exclusive NEW
2015-03-25 15:05:25 -04:00
"RTN","ut",248,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",249,0)
2016-04-11 18:26:37 -04:00
; ACTIVATE ANY VARIABLES PASSED AS SUBSCRIPTS TO %utINPT TO THEIR VALUES
2015-03-25 15:05:25 -04:00
"RTN","ut",250,0)
2016-04-11 18:26:37 -04:00
S %utVAR=" " F S %utVAR=$O(%utINPT(%utVAR)) Q:%utVAR="" S (@%utVAR)=%utINPT(%utVAR)
2015-03-25 15:05:25 -04:00
"RTN","ut",251,0)
2016-04-11 18:26:37 -04:00
X %utCODE
2015-03-25 15:05:25 -04:00
"RTN","ut",252,0)
2016-04-11 18:26:37 -04:00
N ZZUTVAR S ZZUTVAR="%"
2015-03-25 15:05:25 -04:00
"RTN","ut",253,0)
2016-04-11 18:26:37 -04:00
I $G(%ut)=1 D
2015-03-25 15:05:25 -04:00
"RTN","ut",254,0)
2016-04-11 18:26:37 -04:00
. I $D(@ZZUTVAR),'$D(%utINPT(ZZUTVAR)) D FAIL^%ut(%utLOC_" VARIABLE LEAK: "_ZZUTVAR)
2015-03-25 15:05:25 -04:00
"RTN","ut",255,0)
2016-04-11 18:26:37 -04:00
. F S ZZUTVAR=$O(@ZZUTVAR) Q:ZZUTVAR="" I $E(ZZUTVAR,1,3)'="%ut",'$D(%utINPT(ZZUTVAR)),",DUZ,IO,U,DTIME,ZZUTVAR,DT,%ut,XTGUISEP,"'[(","_ZZUTVAR_",") D FAIL^%ut(%utLOC_" VARIABLE LEAK: "_ZZUTVAR)
2015-03-25 15:05:25 -04:00
"RTN","ut",256,0)
2016-04-11 18:26:37 -04:00
. Q
2015-03-25 15:05:25 -04:00
"RTN","ut",257,0)
2016-04-11 18:26:37 -04:00
I '($G(%ut)=1) D
2015-03-25 15:05:25 -04:00
"RTN","ut",258,0)
2016-04-11 18:26:37 -04:00
. I $D(@ZZUTVAR),'$D(%utINPT(ZZUTVAR)) W !,%utLOC_" VARIABLE LEAK: "_ZZUTVAR
2015-03-25 15:05:25 -04:00
"RTN","ut",259,0)
2016-04-11 18:26:37 -04:00
. F S ZZUTVAR=$O(@ZZUTVAR) Q:ZZUTVAR="" I $E(ZZUTVAR,1,3)'="%ut",'$D(%utINPT(ZZUTVAR)),",DUZ,IO,U,DTIME,ZZUTVAR,DT,%ut,XTGUISEP,"'[(","_ZZUTVAR_",") W !,%utLOC_" VARIABLE LEAK: "_ZZUTVAR
2015-03-25 15:05:25 -04:00
"RTN","ut",260,0)
2016-04-11 18:26:37 -04:00
. Q
2015-03-25 15:05:25 -04:00
"RTN","ut",261,0)
2016-04-11 18:26:37 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","ut",262,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",263,0)
2016-04-11 18:26:37 -04:00
ERROR ; record errors
2015-03-25 15:05:25 -04:00
"RTN","ut",264,0)
2016-04-11 18:26:37 -04:00
; ZEXCEPT: %utERRL,%utGUI,%utERR -CREATED IN SETUP, KILLED IN END
2015-03-25 15:05:25 -04:00
"RTN","ut",265,0)
2016-04-11 18:26:37 -04:00
; ZEXCEPT: %ut -- NEWED ON ENTRY
2015-03-25 15:05:25 -04:00
"RTN","ut",266,0)
2016-04-11 18:26:37 -04:00
; ZEXCEPT: XTGUISEP - newed in GUINEXT
2015-03-25 15:05:25 -04:00
"RTN","ut",267,0)
2016-04-11 18:26:37 -04:00
S %ut("CHK")=%ut("CHK")+1
2015-03-25 15:05:25 -04:00
"RTN","ut",268,0)
2016-04-11 18:26:37 -04:00
I '$D(%utGUI) D ERROR1
2015-03-25 15:05:25 -04:00
"RTN","ut",269,0)
2016-04-11 18:26:37 -04:00
I $D(%utGUI) D
2015-03-25 15:05:25 -04:00
"RTN","ut",270,0)
2016-04-11 18:26:37 -04:00
. S %ut("CNT")=%ut("CNT")+1
2015-03-25 15:05:25 -04:00
"RTN","ut",271,0)
2016-04-11 18:26:37 -04:00
. S %utERR=%utERR+1
2015-03-25 15:05:25 -04:00
"RTN","ut",272,0)
2016-04-11 18:26:37 -04:00
. S @%ut("RSLT")@(%ut("CNT"))=%ut("LOC")_XTGUISEP_"ERROR"_XTGUISEP_$S(+$SY=47:$ZS,1:$ZE)
2015-03-25 15:05:25 -04:00
"RTN","ut",273,0)
2016-04-11 18:26:37 -04:00
. Q
2015-03-25 15:05:25 -04:00
"RTN","ut",274,0)
2016-04-11 18:26:37 -04:00
S @($S(+$SY=47:"$ZS",1:"$ZE")_"="_""""""),$EC=""
2015-03-25 15:05:25 -04:00
"RTN","ut",275,0)
2016-04-11 18:26:37 -04:00
Q
2016-02-27 17:01:27 -05:00
"RTN","ut",276,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",277,0)
2016-04-11 18:26:37 -04:00
ERROR1 ;
2015-03-25 15:05:25 -04:00
"RTN","ut",278,0)
2016-04-11 18:26:37 -04:00
I $G(%ut("BREAK")) BREAK ; if we are asked to break upon error, please do so!
2015-03-25 15:05:25 -04:00
"RTN","ut",279,0)
2016-04-11 18:26:37 -04:00
; ZEXCEPT: %utERRL -CREATED IN SETUP, KILLED IN END
2015-03-25 15:05:25 -04:00
"RTN","ut",280,0)
2016-04-11 18:26:37 -04:00
; ZEXCEPT: %ut -- NEWED ON ENTRY
2015-03-25 15:05:25 -04:00
"RTN","ut",281,0)
2016-04-11 18:26:37 -04:00
D SETIO^%ut1
2015-03-25 15:05:25 -04:00
"RTN","ut",282,0)
2016-04-11 18:26:37 -04:00
W !,%ut("ENT")," - " W:%ut("NAME")'="" %ut("NAME")," - Error: " W $S(+$SY=47:$ZS,1:$ZE),! D
2015-03-25 15:05:25 -04:00
"RTN","ut",283,0)
2016-04-11 18:26:37 -04:00
. S %ut("ERRN")=%ut("ERRN")+1,%utERRL(%ut("ERRN"))=%ut("NAME"),%utERRL(%ut("FAIL"),"MSG")=$S(+$SY=47:$ZS,1:$ZE),%utERRL(%ut("FAIL"),"ENTRY")=%ut("ENT")
2016-02-27 17:01:27 -05:00
"RTN","ut",284,0)
2016-04-11 18:26:37 -04:00
. Q
2015-03-25 15:05:25 -04:00
"RTN","ut",285,0)
2016-04-11 18:26:37 -04:00
D RESETIO^%ut1
2015-03-25 15:05:25 -04:00
"RTN","ut",286,0)
2016-04-11 18:26:37 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","ut",287,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",288,0)
2016-04-11 18:26:37 -04:00
ISUTEST() ; .SUPPORTED API TO DETERMINE IF CURRENTLY IN UNIT TEST
2015-03-25 15:05:25 -04:00
"RTN","ut",289,0)
2016-04-11 18:26:37 -04:00
; ZEXCEPT: %ut -- NEWED ON ENTRY
2015-03-25 15:05:25 -04:00
"RTN","ut",290,0)
2016-04-11 18:26:37 -04:00
Q $G(%ut)=1
2015-03-25 15:05:25 -04:00
"RTN","ut",291,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",292,0)
2016-04-11 18:26:37 -04:00
PICKSET ; .OPT Interactive selection of MUnit Test Group
2015-03-25 15:05:25 -04:00
"RTN","ut",293,0)
2016-04-11 18:26:37 -04:00
N DIC,Y,%utROU,%utLIST,DIR
2015-03-25 15:05:25 -04:00
"RTN","ut",294,0)
2016-04-11 18:26:37 -04:00
I '$$ISUTEST^%ut() S DIC=17.9001,DIC(0)="AEQM" D ^DIC Q:Y'>0 W ! D GETSET(+Y,.%utROU,.%utLIST) N DIC,Y,%ut D SETUT D EN1(.%utROU,%utLIST) S DIR(0)="EA",DIR("A")="Enter RETURN to continue:" D ^DIR K DIR
2015-03-25 15:05:25 -04:00
"RTN","ut",295,0)
2016-04-11 18:26:37 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","ut",296,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",297,0)
2016-04-11 18:26:37 -04:00
RUNSET(SETNAME,VERBOSE) ; .SR Run with Specified Selection of MUnit Test Group
2015-03-25 15:05:25 -04:00
"RTN","ut",298,0)
2016-04-11 18:26:37 -04:00
N Y,%utROU,%utLIST,%utVERB
2015-03-25 15:05:25 -04:00
"RTN","ut",299,0)
2016-04-11 18:26:37 -04:00
Q:$G(SETNAME)=""
2015-03-25 15:05:25 -04:00
"RTN","ut",300,0)
2016-04-11 18:26:37 -04:00
S %utVERB=$G(VERBOSE,0)
2015-03-25 15:05:25 -04:00
"RTN","ut",301,0)
2016-04-11 18:26:37 -04:00
S Y=+$$FIND1^DIC(17.9001,"","X",SETNAME) Q:Y'>0
2015-03-25 15:05:25 -04:00
"RTN","ut",302,0)
2016-04-11 18:26:37 -04:00
D GETSET(Y,.%utROU,.%utLIST)
2015-03-25 15:05:25 -04:00
"RTN","ut",303,0)
2016-04-11 18:26:37 -04:00
N Y,SETNAME,%ut
2015-03-25 15:05:25 -04:00
"RTN","ut",304,0)
2016-04-11 18:26:37 -04:00
D SETUT
2015-03-25 15:05:25 -04:00
"RTN","ut",305,0)
2016-04-11 18:26:37 -04:00
D EN1(.%utROU,%utLIST)
2015-03-25 15:05:25 -04:00
"RTN","ut",306,0)
2016-04-11 18:26:37 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","ut",307,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",308,0)
2016-04-11 18:26:37 -04:00
; DOSET CAN BE USED TO RUN A SET OF TESTS BASED ON THE IEN IN THE MUNIT TEST GROUP file (#17.9001)
2015-03-25 15:05:25 -04:00
"RTN","ut",309,0)
2016-04-11 18:26:37 -04:00
DOSET(IEN,%utVERB) ; 140731 JLI added %utVERB as a second argument
2015-03-25 15:05:25 -04:00
"RTN","ut",310,0)
2016-04-11 18:26:37 -04:00
; IEN - Internal entry number for selected set of tests in the MUNIT TEST GROUP file (#17.9001)
2015-03-25 15:05:25 -04:00
"RTN","ut",311,0)
2016-04-11 18:26:37 -04:00
; %utVERB - optional input that indicates verbose output is permitted
2015-03-25 15:05:25 -04:00
"RTN","ut",312,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",313,0)
2016-04-11 18:26:37 -04:00
N %utROU,%utLIST
2015-03-25 15:05:25 -04:00
"RTN","ut",314,0)
2016-04-11 18:26:37 -04:00
I '$D(%utVERB) S %utVERB=0
2015-03-25 15:05:25 -04:00
"RTN","ut",315,0)
2016-04-11 18:26:37 -04:00
S %utLIST=0
2015-03-25 15:05:25 -04:00
"RTN","ut",316,0)
2016-04-11 18:26:37 -04:00
D GETSET($G(IEN),.%utROU,.%utLIST)
2015-03-25 15:05:25 -04:00
"RTN","ut",317,0)
2016-04-11 18:26:37 -04:00
I %utLIST>0 N IEN,%ut D SETUT,EN1(.%utROU,%utLIST)
2015-03-25 15:05:25 -04:00
"RTN","ut",318,0)
2016-04-11 18:26:37 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","ut",319,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",320,0)
2016-04-11 18:26:37 -04:00
GETSET(IEN,%utROU,%utLIST) ; JLI 140731 - called from PICKSET, RUNSET, DOSET, GUISET
2015-03-25 15:05:25 -04:00
"RTN","ut",321,0)
2016-04-11 18:26:37 -04:00
N IENS,%utROOT
2015-03-25 15:05:25 -04:00
"RTN","ut",322,0)
2016-04-11 18:26:37 -04:00
S IENS=IEN_"," D GETS^DIQ(17.9001,IENS,"1*","","%utROOT")
2015-03-25 15:05:25 -04:00
"RTN","ut",323,0)
2016-04-11 18:26:37 -04:00
S %utLIST=0,IENS="" F S IENS=$O(%utROOT(17.90011,IENS)) Q:IENS="" S %utLIST=%utLIST+1,%utROU(%utLIST)=%utROOT(17.90011,IENS,.01)
2015-03-25 15:05:25 -04:00
"RTN","ut",324,0)
2016-04-11 18:26:37 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","ut",325,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",326,0)
2016-04-11 18:26:37 -04:00
COV(NMSP,COVCODE,VERBOSITY) ; simply make it callable from %ut1 as well (along with other APIs) JLI 150101
2015-03-25 15:05:25 -04:00
"RTN","ut",327,0)
2016-04-11 18:26:37 -04:00
D COV^%ut1(NMSP,COVCODE,+$G(VERBOSITY)) ; see COV^%ut1 for description of arguments
2015-03-25 15:05:25 -04:00
"RTN","ut",328,0)
2016-04-11 18:26:37 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","ut",329,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",330,0)
2016-04-11 18:26:37 -04:00
MULTAPIS(TESTROUS) ; .SR - RUN TESTS FOR SPECIFIED ROUTINES AND ENTRY POINTS
2015-03-25 15:05:25 -04:00
"RTN","ut",331,0)
2016-04-11 18:26:37 -04:00
; input - TESTROUS - passed by reference
2015-03-25 15:05:25 -04:00
"RTN","ut",332,0)
2016-04-11 18:26:37 -04:00
; see TESTONLY in routine %utcover for full description of TESTROUS argument
2015-03-25 15:05:25 -04:00
"RTN","ut",333,0)
2016-04-11 18:26:37 -04:00
D MULTAPIS^%utcover(.TESTROUS) ; RUN TESTS FOR SPECIFIED ROUTINES AND ENTRY POINTS
2015-03-25 15:05:25 -04:00
"RTN","ut",334,0)
2016-04-11 18:26:37 -04:00
Q
2016-02-27 17:01:27 -05:00
"RTN","ut",335,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",336,0)
2016-04-11 18:26:37 -04:00
COVERAGE(ROUNMSP,TESTROUS,XCLDROUS,RESLTLVL) ;.SR - run coverage analysis for multiple routines and entry points
2015-03-25 15:05:25 -04:00
"RTN","ut",337,0)
2016-04-11 18:26:37 -04:00
; input ROUNMSP
2015-03-25 15:05:25 -04:00
"RTN","ut",338,0)
2016-04-11 18:26:37 -04:00
; input TESTROUS - passed by reference
2015-03-25 15:05:25 -04:00
"RTN","ut",339,0)
2016-04-11 18:26:37 -04:00
; input XCLDROUS - passed by reference
2015-03-25 15:05:25 -04:00
"RTN","ut",340,0)
2016-04-11 18:26:37 -04:00
; input RESLTLVL
2015-03-25 15:05:25 -04:00
"RTN","ut",341,0)
2016-04-11 18:26:37 -04:00
; see COVERAGE in routine %utcover for full description of arguments
2015-03-25 15:05:25 -04:00
"RTN","ut",342,0)
2016-04-11 18:26:37 -04:00
D COVERAGE^%utcover(ROUNMSP,.TESTROUS,.XCLDROUS,+$G(RESLTLVL))
2015-03-25 15:05:25 -04:00
"RTN","ut",343,0)
2016-04-11 18:26:37 -04:00
Q
2016-02-27 17:01:27 -05:00
"RTN","ut",344,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",345,0)
2016-04-11 18:26:37 -04:00
GETUTVAL(UTDATA) ; .SR - returns totals for current unit test data in cumulative totals
2015-03-25 15:05:25 -04:00
"RTN","ut",346,0)
2016-04-11 18:26:37 -04:00
; usage D GETUTVAL^%ut(.UTDATA)
2015-03-25 15:05:25 -04:00
"RTN","ut",347,0)
2016-04-11 18:26:37 -04:00
; input - UTDATA - passed by reference
2015-03-25 15:05:25 -04:00
"RTN","ut",348,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",349,0)
2016-04-11 18:26:37 -04:00
; subscripted values returned:
2015-03-25 15:05:25 -04:00
"RTN","ut",350,0)
2016-04-11 18:26:37 -04:00
; 1) cumulative number of routines run; 2) cumulative number of entry tags;
2015-03-25 15:05:25 -04:00
"RTN","ut",351,0)
2016-04-11 18:26:37 -04:00
; 3) cumulative number of tests; 4) cummulative number of failures;
2015-03-25 15:05:25 -04:00
"RTN","ut",352,0)
2016-04-11 18:26:37 -04:00
; 5) cumulative number of errors
2015-03-25 15:05:25 -04:00
"RTN","ut",353,0)
2016-04-11 18:26:37 -04:00
N VALS,I,VAL
2015-03-25 15:05:25 -04:00
"RTN","ut",354,0)
2016-04-11 18:26:37 -04:00
S VALS=$G(^TMP("%ut",$J,"UTVALS")) I VALS="" Q
2015-03-25 15:05:25 -04:00
"RTN","ut",355,0)
2016-04-11 18:26:37 -04:00
F I=1:1 S VAL=$P(VALS,U,I) Q:VAL="" S UTDATA(I)=$G(UTDATA(I))+VAL
2015-03-25 15:05:25 -04:00
"RTN","ut",356,0)
2016-04-11 18:26:37 -04:00
K ^TMP("%ut",$J,"UTVALS")
2015-03-25 15:05:25 -04:00
"RTN","ut",357,0)
2016-04-11 18:26:37 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","ut",358,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",359,0)
2016-04-11 18:26:37 -04:00
LSTUTVAL(UTDATA) ; .SR - lists cumulative totals in UTDATA array
2015-03-25 15:05:25 -04:00
"RTN","ut",360,0)
2016-04-11 18:26:37 -04:00
; usage D LSTUTVAL^%ut(.UTDATA)
2015-03-25 15:05:25 -04:00
"RTN","ut",361,0)
2016-04-11 18:26:37 -04:00
; input - UTDATA - passed by reference
2015-03-25 15:05:25 -04:00
"RTN","ut",362,0)
2016-04-11 18:26:37 -04:00
W !!!,"------------ SUMMARY ------------"
2015-03-25 15:05:25 -04:00
"RTN","ut",363,0)
2016-04-11 18:26:37 -04:00
W !,"Ran ",UTDATA(1)," Routine",$S(UTDATA(1)>1:"s",1:""),", ",UTDATA(2)," Entry Tag",$S(UTDATA(2)>1:"s",1:"")
2015-03-25 15:05:25 -04:00
"RTN","ut",364,0)
2016-04-11 18:26:37 -04:00
W !,"Checked ",UTDATA(3)," test",$S(UTDATA(3)>1:"s",1:""),", with ",UTDATA(4)," failure",$S(UTDATA(4)'=1:"s",1:"")," and encountered ",UTDATA(5)," error",$S(UTDATA(5)'=1:"s",1:""),"."
2015-03-25 15:05:25 -04:00
"RTN","ut",365,0)
2016-04-11 18:26:37 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","ut",366,0)
2016-02-27 17:01:27 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",367,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",368,0)
2016-04-11 18:26:37 -04:00
GUISET(%utRSLT,XTSET) ; Entry point for GUI start with selected Test Set IEN - called by %ut-TEST GROUP LOAD rpc
2015-03-25 15:05:25 -04:00
"RTN","ut",369,0)
2016-04-11 18:26:37 -04:00
N %utROU,%utLIST,%ut
2015-03-25 15:05:25 -04:00
"RTN","ut",370,0)
2016-04-11 18:26:37 -04:00
D SETUT
2015-03-25 15:05:25 -04:00
"RTN","ut",371,0)
2016-04-11 18:26:37 -04:00
S %ut("RSLT")=$NA(^TMP("MUNIT-%utRSLT",$J)) K @%ut("RSLT")
2015-03-25 15:05:25 -04:00
"RTN","ut",372,0)
2016-04-11 18:26:37 -04:00
D GETSET(XTSET,.%utROU,.%utLIST)
2015-03-25 15:05:25 -04:00
"RTN","ut",373,0)
2016-04-11 18:26:37 -04:00
D GETLIST(.%utROU,%utLIST,%ut("RSLT"))
2015-03-25 15:05:25 -04:00
"RTN","ut",374,0)
2016-04-11 18:26:37 -04:00
S @%ut("RSLT")@(1)=(@%ut("RSLT")@(1))_"^1" ; 110719 mark as new version
2015-03-25 15:05:25 -04:00
"RTN","ut",375,0)
2016-04-11 18:26:37 -04:00
S %utRSLT=%ut("RSLT")
2016-02-27 17:01:27 -05:00
"RTN","ut",376,0)
2016-04-11 18:26:37 -04:00
Q
2016-02-27 17:01:27 -05:00
"RTN","ut",377,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",378,0)
2016-04-11 18:26:37 -04:00
GUILOAD(%utRSLT,%utROUN) ; Entry point for GUI start with %utROUN containing primary routine name - called by %ut-TEST LOAD rpc
2015-03-25 15:05:25 -04:00
"RTN","ut",379,0)
2016-04-11 18:26:37 -04:00
N %utROU,%ut
2015-03-25 15:05:25 -04:00
"RTN","ut",380,0)
2016-04-11 18:26:37 -04:00
D SETUT
2015-03-25 15:05:25 -04:00
"RTN","ut",381,0)
2016-04-11 18:26:37 -04:00
S %ut("RSLT")=$NA(^TMP("MUNIT-%utRSLT",$J)) K @%ut("RSLT")
2015-03-25 15:05:25 -04:00
"RTN","ut",382,0)
2016-04-11 18:26:37 -04:00
S %utROU(1)=%utROUN
2015-03-25 15:05:25 -04:00
"RTN","ut",383,0)
2016-04-11 18:26:37 -04:00
D GETLIST(.%utROU,1,%ut("RSLT"))
2015-03-25 15:05:25 -04:00
"RTN","ut",384,0)
2016-04-11 18:26:37 -04:00
S @%ut("RSLT")@(1)=(@%ut("RSLT")@(1))_"^1" ; 110719 mark as new version
2015-03-25 15:05:25 -04:00
"RTN","ut",385,0)
2016-04-11 18:26:37 -04:00
S %utRSLT=%ut("RSLT")
2015-03-25 15:05:25 -04:00
"RTN","ut",386,0)
2016-04-11 18:26:37 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","ut",387,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",388,0)
2016-04-11 18:26:37 -04:00
GETLIST(%utROU,%utLIST,%utRSLT) ; called from GUISET, GUILOAD
2015-03-25 15:05:25 -04:00
"RTN","ut",389,0)
2016-04-11 18:26:37 -04:00
N I,%utROUL,%utROUN,%ut,XTCOMNT,XTVALUE,%utCNT
2015-03-25 15:05:25 -04:00
"RTN","ut",390,0)
2016-04-11 18:26:37 -04:00
S XTVALUE=$NA(^TMP("GUI-MUNIT",$J)) K @XTVALUE
2015-03-25 15:05:25 -04:00
"RTN","ut",391,0)
2016-04-11 18:26:37 -04:00
S %utCNT=0,XTCOMNT=""
2015-03-25 15:05:25 -04:00
"RTN","ut",392,0)
2016-04-11 18:26:37 -04:00
D GETTREE^%ut1(.%utROU,%utLIST)
2015-03-25 15:05:25 -04:00
"RTN","ut",393,0)
2016-04-11 18:26:37 -04:00
F I=1:1 Q:'$D(%utROU(I)) S %utROUL(%utROU(I))=""
2015-03-25 15:05:25 -04:00
"RTN","ut",394,0)
2016-04-11 18:26:37 -04:00
S %utROUN="" F S %utROUN=$O(%utROUL(%utROUN)) Q:%utROUN="" D LOAD(%utROUN,.%utCNT,XTVALUE,XTCOMNT,.%utROUL)
2015-03-25 15:05:25 -04:00
"RTN","ut",395,0)
2016-04-11 18:26:37 -04:00
M @%utRSLT=@XTVALUE
2015-03-25 15:05:25 -04:00
"RTN","ut",396,0)
2016-04-11 18:26:37 -04:00
K @%utRSLT@("SHUTDOWN")
2015-03-25 15:05:25 -04:00
"RTN","ut",397,0)
2016-04-11 18:26:37 -04:00
K @%utRSLT@("STARTUP")
2015-03-25 15:05:25 -04:00
"RTN","ut",398,0)
2016-04-11 18:26:37 -04:00
S @XTVALUE@("LASTROU")="" ; Use this to keep track of place in routines
2015-03-25 15:05:25 -04:00
"RTN","ut",399,0)
2016-04-11 18:26:37 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","ut",400,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",401,0)
2016-04-11 18:26:37 -04:00
; generate list of unit test routines, entry points and comments on test for entry point
2015-03-25 15:05:25 -04:00
"RTN","ut",402,0)
2016-04-11 18:26:37 -04:00
LOAD(%utROUN,%utNCNT,XTVALUE,XTCOMNT,%utROUL) ; called from GETLIST, and recursively from LOAD
2015-03-25 15:05:25 -04:00
"RTN","ut",403,0)
2016-04-11 18:26:37 -04:00
I $T(@("^"_%utROUN))="" S %utNCNT=%utNCNT+1,@XTVALUE@(%utNCNT)=%utROUN_"^^*** ERROR - ROUTINE NAME NOT FOUND" Q
2015-03-25 15:05:25 -04:00
"RTN","ut",404,0)
2016-04-11 18:26:37 -04:00
S %utNCNT=%utNCNT+1,@XTVALUE@(%utNCNT)=%utROUN_U_U_XTCOMNT
2015-03-25 15:05:25 -04:00
"RTN","ut",405,0)
2016-04-11 18:26:37 -04:00
;N %utI,XTX1,XTX2,LINE
2015-03-25 15:05:25 -04:00
"RTN","ut",406,0)
2016-04-11 18:26:37 -04:00
N %utI,XTX1,XTX2,LINE,LIST,I
2015-03-25 15:05:25 -04:00
"RTN","ut",407,0)
2016-04-11 18:26:37 -04:00
; 100622 JLI added code to identify STARTUP and TEARDOWN
2015-03-25 15:05:25 -04:00
"RTN","ut",408,0)
2016-04-11 18:26:37 -04:00
I $T(@("STARTUP^"_%utROUN))'="",'$D(@XTVALUE@("STARTUP")) S @XTVALUE@("STARTUP")="STARTUP^"_%utROUN
2015-03-25 15:05:25 -04:00
"RTN","ut",409,0)
2016-04-11 18:26:37 -04:00
I $T(@("SHUTDOWN^"_%utROUN))'="",'$D(@XTVALUE@("SHUTDOWN")) S @XTVALUE@("SHUTDOWN")="SHUTDOWN^"_%utROUN
2015-03-25 15:05:25 -04:00
"RTN","ut",410,0)
2016-04-11 18:26:37 -04:00
; JLI 140731 handle @TEST identified test tags
2015-03-25 15:05:25 -04:00
"RTN","ut",411,0)
2016-04-11 18:26:37 -04:00
D NEWSTYLE^%ut1(.LIST,%utROUN)
2015-03-25 15:05:25 -04:00
"RTN","ut",412,0)
2016-04-11 18:26:37 -04:00
F I=1:1:LIST S %utNCNT=%utNCNT+1,@XTVALUE@(%utNCNT)=%utROUN_U_LIST(I)
2015-03-25 15:05:25 -04:00
"RTN","ut",413,0)
2016-04-11 18:26:37 -04:00
; JLI 140731 end of @TEST addition
2015-03-25 15:05:25 -04:00
"RTN","ut",414,0)
2016-04-11 18:26:37 -04:00
F %utI=1:1 S LINE=$T(@("XTENT+"_%utI_"^"_%utROUN)) S XTX1=$P(LINE,";",3) Q:XTX1="" S XTX2=$P(LINE,";",4),%utNCNT=%utNCNT+1,@XTVALUE@(%utNCNT)=%utROUN_U_XTX1_U_XTX2
2015-03-25 15:05:25 -04:00
"RTN","ut",415,0)
2016-04-11 18:26:37 -04:00
F %utI=1:1 S LINE=$T(@("XTROU+"_%utI_"^"_%utROUN)) S XTX1=$P(LINE,";",3) Q:XTX1="" S XTCOMNT=$P(LINE,";",4) I '$D(%utROUL(XTX1)) S %utROUL(XTX1)="" D LOAD(XTX1,.%utNCNT,XTVALUE,XTCOMNT,.%utROUL)
2015-03-25 15:05:25 -04:00
"RTN","ut",416,0)
2016-04-11 18:26:37 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","ut",417,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",418,0)
2016-04-11 18:26:37 -04:00
GUINEXT(%utRSLT,%utLOC,XTGUISEP) ; Entry point for GUI execute next test - called by %ut-TEST NEXT rpc
2015-03-25 15:05:25 -04:00
"RTN","ut",419,0)
2016-04-11 18:26:37 -04:00
; XTGUISEP - added 110719 to provide for changing separator for GUI
2015-03-25 15:05:25 -04:00
"RTN","ut",420,0)
2016-04-11 18:26:37 -04:00
; return from ^ to another value ~~^~~ so that data returned
2015-03-25 15:05:25 -04:00
"RTN","ut",421,0)
2016-04-11 18:26:37 -04:00
; is not affected by ^ values in the data - if not present
2015-03-25 15:05:25 -04:00
"RTN","ut",422,0)
2016-04-11 18:26:37 -04:00
; sets value to default ^
2015-03-25 15:05:25 -04:00
"RTN","ut",423,0)
2016-04-11 18:26:37 -04:00
N %utETRY,%utROUT,XTOLROU,XTVALUE,%utERR,%utGUI
2015-03-25 15:05:25 -04:00
"RTN","ut",424,0)
2016-04-11 18:26:37 -04:00
N %ut
2015-03-25 15:05:25 -04:00
"RTN","ut",425,0)
2016-04-11 18:26:37 -04:00
I $G(XTGUISEP)="" S XTGUISEP="^"
2015-03-25 15:05:25 -04:00
"RTN","ut",426,0)
2016-04-11 18:26:37 -04:00
D SETUT
2015-03-25 15:05:25 -04:00
"RTN","ut",427,0)
2016-04-11 18:26:37 -04:00
S %ut("LOC")=%utLOC
2015-03-25 15:05:25 -04:00
"RTN","ut",428,0)
2016-04-11 18:26:37 -04:00
S %ut("CURR")=0,%ut("ECNT")=0,%ut("FAIL")=0,%ut("CHK")=0,%ut("NENT")=0,%ut("ERRN")=0
2015-03-25 15:05:25 -04:00
"RTN","ut",429,0)
2016-04-11 18:26:37 -04:00
S XTVALUE=$NA(^TMP("GUI-MUNIT",$J))
2015-03-25 15:05:25 -04:00
"RTN","ut",430,0)
2016-04-11 18:26:37 -04:00
S %ut("RSLT")=$NA(^TMP("GUINEXT",$J)) K @%ut("RSLT")
2015-03-25 15:05:25 -04:00
"RTN","ut",431,0)
2016-04-11 18:26:37 -04:00
S %utRSLT=%ut("RSLT")
2015-03-25 15:05:25 -04:00
"RTN","ut",432,0)
2016-04-11 18:26:37 -04:00
S %utETRY=$P(%utLOC,U),%utROUT=$P(%utLOC,U,2),XTOLROU=$G(@XTVALUE@("LASTROU"))
2015-03-25 15:05:25 -04:00
"RTN","ut",433,0)
2016-04-11 18:26:37 -04:00
S %utGUI=1
2015-03-25 15:05:25 -04:00
"RTN","ut",434,0)
2016-04-11 18:26:37 -04:00
S %ut("CHK")=0,%ut("CNT")=1,%utERR=0
2015-03-25 15:05:25 -04:00
"RTN","ut",435,0)
2016-04-11 18:26:37 -04:00
; I %utROUT'=XTOLROU D I %utROUT="" S @%utRSLT@(1)="" K @XTVALUE Q ;140731 JLI - commented out
2015-03-25 15:05:25 -04:00
"RTN","ut",436,0)
2016-04-11 18:26:37 -04:00
;D I %utROUT="" S @%utRSLT@(1)="" K @XTVALUE Q ; 140731 JLI - replaced previous line - moves check for SHUTDOWN at end of processing
2015-03-25 15:05:25 -04:00
"RTN","ut",437,0)
2016-04-11 18:26:37 -04:00
D I %utROUT="" S @%utRSLT@(1)="" Q ; 141018 JLI - Have to leave XTVALUE intact, in case they simply run again for STARTUP, etc.
2015-03-25 15:05:25 -04:00
"RTN","ut",438,0)
2016-04-11 18:26:37 -04:00
. I XTOLROU="",$D(@XTVALUE@("STARTUP")) D
2015-03-25 15:05:25 -04:00
"RTN","ut",439,0)
2016-04-11 18:26:37 -04:00
. . S %ut("LOC")=@XTVALUE@("STARTUP")
2015-03-25 15:05:25 -04:00
"RTN","ut",440,0)
2016-04-11 18:26:37 -04:00
. . N $ETRAP S $ETRAP="D ERROR^%ut"
2015-03-25 15:05:25 -04:00
"RTN","ut",441,0)
2016-04-11 18:26:37 -04:00
. . D @(@XTVALUE@("STARTUP"))
2015-03-25 15:05:25 -04:00
"RTN","ut",442,0)
2016-04-11 18:26:37 -04:00
. . Q
2015-03-25 15:05:25 -04:00
"RTN","ut",443,0)
2016-04-11 18:26:37 -04:00
. S @XTVALUE@("LASTROU")=%utROUT I %utROUT'="",$T(@("SETUP^"_%utROUT))'="" D
2015-03-25 15:05:25 -04:00
"RTN","ut",444,0)
2016-04-11 18:26:37 -04:00
. . S %ut("LOC")="SETUP^"_%utROUT
2015-03-25 15:05:25 -04:00
"RTN","ut",445,0)
2016-04-11 18:26:37 -04:00
. . N $ETRAP S $ETRAP="D ERROR^%ut"
2015-03-25 15:05:25 -04:00
"RTN","ut",446,0)
2016-04-11 18:26:37 -04:00
. . D @("SETUP^"_%utROUT)
2015-03-25 15:05:25 -04:00
"RTN","ut",447,0)
2016-04-11 18:26:37 -04:00
. . Q
2015-03-25 15:05:25 -04:00
"RTN","ut",448,0)
2016-04-11 18:26:37 -04:00
. I %utROUT="",$D(@XTVALUE@("SHUTDOWN")) D
2015-03-25 15:05:25 -04:00
"RTN","ut",449,0)
2016-04-11 18:26:37 -04:00
. . S %ut("LOC")=@XTVALUE@("SHUTDOWN")
2015-03-25 15:05:25 -04:00
"RTN","ut",450,0)
2016-04-11 18:26:37 -04:00
. . N $ETRAP S $ETRAP="D ERROR^%ut"
2015-03-25 15:05:25 -04:00
"RTN","ut",451,0)
2016-04-11 18:26:37 -04:00
. . D @(@XTVALUE@("SHUTDOWN"))
2015-03-25 15:05:25 -04:00
"RTN","ut",452,0)
2016-04-11 18:26:37 -04:00
. . Q
2015-03-25 15:05:25 -04:00
"RTN","ut",453,0)
2016-04-11 18:26:37 -04:00
. Q
2015-03-25 15:05:25 -04:00
"RTN","ut",454,0)
2016-04-11 18:26:37 -04:00
S %ut("LOC")=%utLOC
2015-03-25 15:05:25 -04:00
"RTN","ut",455,0)
2016-04-11 18:26:37 -04:00
S %ut("CHK")=0,%ut("CNT")=1,%utERR=0
2015-03-25 15:05:25 -04:00
"RTN","ut",456,0)
2016-04-11 18:26:37 -04:00
D ; to limit range of error trap so we continue through other tests
2015-03-25 15:05:25 -04:00
"RTN","ut",457,0)
2016-04-11 18:26:37 -04:00
. N $ETRAP S $ETRAP="D ERROR^%ut"
2015-03-25 15:05:25 -04:00
"RTN","ut",458,0)
2016-04-11 18:26:37 -04:00
. D @%ut("LOC")
2015-03-25 15:05:25 -04:00
"RTN","ut",459,0)
2016-04-11 18:26:37 -04:00
. Q
2015-03-25 15:05:25 -04:00
"RTN","ut",460,0)
2016-04-11 18:26:37 -04:00
I $T(@("TEARDOWN^"_%utROUT))'="" D
2015-03-25 15:05:25 -04:00
"RTN","ut",461,0)
2016-04-11 18:26:37 -04:00
. S %ut("LOC")="TEARDOWN^"_%utROUT
2015-03-25 15:05:25 -04:00
"RTN","ut",462,0)
2016-04-11 18:26:37 -04:00
. N $ETRAP S $ETRAP="D ERROR^%ut"
2015-03-25 15:05:25 -04:00
"RTN","ut",463,0)
2016-04-11 18:26:37 -04:00
. D @("TEARDOWN^"_%utROUT)
2015-03-25 15:05:25 -04:00
"RTN","ut",464,0)
2016-04-11 18:26:37 -04:00
. Q
2015-03-25 15:05:25 -04:00
"RTN","ut",465,0)
2016-04-11 18:26:37 -04:00
S @%ut("RSLT")@(1)=%ut("CHK")_XTGUISEP_(%ut("CNT")-1-%utERR)_XTGUISEP_%utERR
2015-03-25 15:05:25 -04:00
"RTN","ut",466,0)
2016-04-11 18:26:37 -04:00
K ^TMP("%ut",$J,"UTVALS")
2016-02-27 17:01:27 -05:00
"RTN","ut",467,0)
2016-04-11 18:26:37 -04:00
Q
"RTN","ut",468,0)
2015-03-25 15:05:25 -04:00
;
"RTN","ut1")
2016-04-11 18:26:37 -04:00
0^1^B247874559
2015-03-25 15:05:25 -04:00
"RTN","ut1",1,0)
2016-04-11 18:26:37 -04:00
%ut1 ;VEN/SMH/JLI - CONTINUATION OF M-UNIT PROCESSING ;04/08/16 20:36
2015-03-25 15:05:25 -04:00
"RTN","ut1",2,0)
2016-04-11 18:26:37 -04:00
;;1.4;MASH UTILITIES;;APR 11, 2016;Build 3
2015-03-25 15:05:25 -04:00
"RTN","ut1",3,0)
2016-04-11 18:26:37 -04:00
; Submitted to OSEHRA Apr 11, 2016 by Joel L. Ivey under the Apache 2 license (http://www.apache.org/licenses/LICENSE-2.0.html)
2015-03-25 15:05:25 -04:00
"RTN","ut1",4,0)
2016-02-27 17:01:27 -05:00
; Original routine authored by Joel L. Ivey as XTMUNIT1 while working for U.S. Department of Veterans Affairs 2003-2012
2015-03-25 15:05:25 -04:00
"RTN","ut1",5,0)
2016-02-27 17:01:27 -05:00
; Includes addition of original COV entry and code related coverage analysis as well as other substantial additions authored by Sam Habiel 07/2013?04/2014
2015-03-25 15:05:25 -04:00
"RTN","ut1",6,0)
2016-02-27 17:01:27 -05:00
; Additions and modifications made by Joel L. Ivey 05/2014-12/2015
2015-03-25 15:05:25 -04:00
"RTN","ut1",7,0)
2016-04-11 18:26:37 -04:00
; Additions and modifications made by Sam H. Habiel and Joel L. Ivey 02/2016-04/2016
2015-03-25 15:05:25 -04:00
"RTN","ut1",8,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut1",9,0)
2016-04-11 18:26:37 -04:00
; comments moved to %utcover due to space requirements
2015-03-25 15:05:25 -04:00
"RTN","ut1",10,0)
2016-04-11 18:26:37 -04:00
D ^%utt6 ; runs unit tests from several perspectives
2016-02-27 17:01:27 -05:00
"RTN","ut1",11,0)
2016-04-11 18:26:37 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","ut1",12,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut1",13,0)
2016-04-11 18:26:37 -04:00
;following is original header from XTMUNIT1 in unreleased patch XT*7.3*81 VA code
2015-03-25 15:05:25 -04:00
"RTN","ut1",14,0)
2016-04-11 18:26:37 -04:00
;XTMUNIT1 ;JLI/FO-OAK-CONTINUATION OF UNIT TEST ROUTINE ;2014-04-17 5:26 PM
2015-03-25 15:05:25 -04:00
"RTN","ut1",15,0)
2016-04-11 18:26:37 -04:00
;;7.3;TOOLKIT;**81**;APR 25 1995;Build 24
2015-03-25 15:05:25 -04:00
"RTN","ut1",16,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut1",17,0)
2016-02-27 17:01:27 -05:00
;
2016-04-11 18:26:37 -04:00
"RTN","ut1",18,0)
; Original by Dr. Joel Ivey
2015-03-25 15:05:25 -04:00
"RTN","ut1",19,0)
2016-04-11 18:26:37 -04:00
; Major contributions by Dr. Sam Habiel
2015-03-25 15:05:25 -04:00
"RTN","ut1",20,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut1",21,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut1",22,0)
2016-04-11 18:26:37 -04:00
CHEKTEST(%utROU,%ut,%utUETRY) ; Collect Test list.
2015-03-25 15:05:25 -04:00
"RTN","ut1",23,0)
2016-04-11 18:26:37 -04:00
; %utROU - input - Name of routine to check for tags with @TEST attribute
2015-03-25 15:05:25 -04:00
"RTN","ut1",24,0)
2016-04-11 18:26:37 -04:00
; %ut - input/output - passed by reference
2015-03-25 15:05:25 -04:00
"RTN","ut1",25,0)
2016-04-11 18:26:37 -04:00
; %utUETRY - input/output - passed by reference
2015-03-25 15:05:25 -04:00
"RTN","ut1",26,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut1",27,0)
2016-04-11 18:26:37 -04:00
; Test list collected in two ways:
2015-03-25 15:05:25 -04:00
"RTN","ut1",28,0)
2016-04-11 18:26:37 -04:00
; - @TEST on labellines
2015-03-25 15:05:25 -04:00
"RTN","ut1",29,0)
2016-04-11 18:26:37 -04:00
; - Offsets of XTENT
2015-03-25 15:05:25 -04:00
"RTN","ut1",30,0)
;
"RTN","ut1",31,0)
2016-04-11 18:26:37 -04:00
S %ut("ENTN")=0 ; Number of test, sub to %utUETRY.
2015-03-25 15:05:25 -04:00
"RTN","ut1",32,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut1",33,0)
2016-04-11 18:26:37 -04:00
; This stanza and everything below is for collecting @TEST.
2015-03-25 15:05:25 -04:00
"RTN","ut1",34,0)
2016-04-11 18:26:37 -04:00
; VEN/SMH - block refactored to use $TEXT instead of ^%ZOSF("LOAD")
2015-03-25 15:05:25 -04:00
"RTN","ut1",35,0)
2016-04-11 18:26:37 -04:00
N I,LIST
2015-03-25 15:05:25 -04:00
"RTN","ut1",36,0)
2016-04-11 18:26:37 -04:00
S I=$L($T(@(U_%utROU))) I I<0 Q "-1^Invalid Routine Name"
2015-03-25 15:05:25 -04:00
"RTN","ut1",37,0)
2016-04-11 18:26:37 -04:00
D NEWSTYLE(.LIST,%utROU)
2015-03-25 15:05:25 -04:00
"RTN","ut1",38,0)
2016-04-11 18:26:37 -04:00
F I=1:1:LIST S %ut("ENTN")=%ut("ENTN")+1,%utUETRY(%ut("ENTN"))=$P(LIST(I),U),%utUETRY(%ut("ENTN"),"NAME")=$P(LIST(I),U,2,99)
2015-03-25 15:05:25 -04:00
"RTN","ut1",39,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut1",40,0)
2016-04-11 18:26:37 -04:00
; This Stanza is to collect XTENT offsets
2015-03-25 15:05:25 -04:00
"RTN","ut1",41,0)
2016-04-11 18:26:37 -04:00
N %utUI F %utUI=1:1 S %ut("ELIN")=$T(@("XTENT+"_%utUI_"^"_%utROU)) Q:$P(%ut("ELIN"),";",3)="" D
2015-03-25 15:05:25 -04:00
"RTN","ut1",42,0)
2016-04-11 18:26:37 -04:00
. S %ut("ENTN")=%ut("ENTN")+1,%utUETRY(%ut("ENTN"))=$P(%ut("ELIN"),";",3),%utUETRY(%ut("ENTN"),"NAME")=$P(%ut("ELIN"),";",4)
2015-03-25 15:05:25 -04:00
"RTN","ut1",43,0)
2016-04-11 18:26:37 -04:00
. Q
2015-03-25 15:05:25 -04:00
"RTN","ut1",44,0)
2016-02-27 17:01:27 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut1",45,0)
2016-04-11 18:26:37 -04:00
QUIT
2015-03-25 15:05:25 -04:00
"RTN","ut1",46,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut1",47,0)
2016-04-11 18:26:37 -04:00
; VEN/SMH 26JUL2013 - Moved GETTREE here.
2015-03-25 15:05:25 -04:00
"RTN","ut1",48,0)
2016-04-11 18:26:37 -04:00
GETTREE(%utROU,%utULIST) ;
2015-03-25 15:05:25 -04:00
"RTN","ut1",49,0)
2016-04-11 18:26:37 -04:00
; first get any other routines this one references for running subsequently
2015-03-25 15:05:25 -04:00
"RTN","ut1",50,0)
2016-04-11 18:26:37 -04:00
; then any that they refer to as well
2015-03-25 15:05:25 -04:00
"RTN","ut1",51,0)
2016-04-11 18:26:37 -04:00
; this builds a tree of all routines referred to by any routine including each only once
2015-03-25 15:05:25 -04:00
"RTN","ut1",52,0)
2016-04-11 18:26:37 -04:00
N %utUK,%utUI,%utUJ,%utURNAM,%utURLIN
2015-03-25 15:05:25 -04:00
"RTN","ut1",53,0)
2016-04-11 18:26:37 -04:00
F %utUK=1:1 Q:'$D(%utROU(%utUK)) D
2015-03-25 15:05:25 -04:00
"RTN","ut1",54,0)
2016-04-11 18:26:37 -04:00
. F %utUI=1:1 S %utURLIN=$T(@("XTROU+"_%utUI_"^"_%utROU(%utUK))) S %utURNAM=$P(%utURLIN,";",3) Q:%utURNAM="" D
2015-03-25 15:05:25 -04:00
"RTN","ut1",55,0)
2016-04-11 18:26:37 -04:00
. . F %utUJ=1:1:%utULIST I %utROU(%utUJ)=%utURNAM S %utURNAM="" Q
2015-03-25 15:05:25 -04:00
"RTN","ut1",56,0)
2016-04-11 18:26:37 -04:00
. . I %utURNAM'="",$T(@("+1^"_%utURNAM))="" W:'$D(XWBOS) "Referenced routine ",%utURNAM," not found.",! Q
2015-03-25 15:05:25 -04:00
"RTN","ut1",57,0)
2016-04-11 18:26:37 -04:00
. . S:%utURNAM'="" %utULIST=%utULIST+1,%utROU(%utULIST)=%utURNAM
2015-03-25 15:05:25 -04:00
"RTN","ut1",58,0)
2016-04-11 18:26:37 -04:00
QUIT
2015-03-25 15:05:25 -04:00
"RTN","ut1",59,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut1",60,0)
2016-04-11 18:26:37 -04:00
NEWSTYLE(LIST,ROUNAME) ; JLI 140726 identify and return list of newstyle tags or entries for this routine
2015-03-25 15:05:25 -04:00
"RTN","ut1",61,0)
2016-04-11 18:26:37 -04:00
; LIST - input, passed by reference - returns containing array with list of tags identified as tests
2015-03-25 15:05:25 -04:00
"RTN","ut1",62,0)
2016-04-11 18:26:37 -04:00
; LIST indicates number of tags identified, LIST(n)=tag^test_info where tag is entry point for test
2015-03-25 15:05:25 -04:00
"RTN","ut1",63,0)
2016-04-11 18:26:37 -04:00
; ROUNAME - input - routine name in which tests should be identified
2015-03-25 15:05:25 -04:00
"RTN","ut1",64,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut1",65,0)
2016-04-11 18:26:37 -04:00
N I,VALUE,LINE
2015-03-25 15:05:25 -04:00
"RTN","ut1",66,0)
2016-04-11 18:26:37 -04:00
K LIST S LIST=0
2015-03-25 15:05:25 -04:00
"RTN","ut1",67,0)
2016-04-11 18:26:37 -04:00
; search routine by line for a tag and @TEST declaration
2015-03-25 15:05:25 -04:00
"RTN","ut1",68,0)
2016-04-11 18:26:37 -04:00
F I=1:1 S LINE=$T(@("+"_I_"^"_ROUNAME)) Q:LINE="" S VALUE=$$CHECKTAG(LINE) I VALUE'="" S LIST=LIST+1,LIST(LIST)=VALUE
2015-03-25 15:05:25 -04:00
"RTN","ut1",69,0)
2016-04-11 18:26:37 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","ut1",70,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut1",71,0)
2016-04-11 18:26:37 -04:00
CHECKTAG(LINE) ; JLI 140726 check line to determine @test TAG
2015-03-25 15:05:25 -04:00
"RTN","ut1",72,0)
2016-04-11 18:26:37 -04:00
; LINE - input - Line of code to be checked
2015-03-25 15:05:25 -04:00
"RTN","ut1",73,0)
2016-04-11 18:26:37 -04:00
; returns null line if not @TEST line, otherwise TAG^NOTE
2015-03-25 15:05:25 -04:00
"RTN","ut1",74,0)
2016-04-11 18:26:37 -04:00
N TAG,NOTE,CHAR
2015-03-25 15:05:25 -04:00
"RTN","ut1",75,0)
2016-04-11 18:26:37 -04:00
I $E(LINE)=" " Q "" ; test entry must have a tag
2015-03-25 15:05:25 -04:00
"RTN","ut1",76,0)
2016-04-11 18:26:37 -04:00
I $$UP(LINE)'["@TEST" Q "" ; must have @TEST declaration
2015-03-25 15:05:25 -04:00
"RTN","ut1",77,0)
2016-04-11 18:26:37 -04:00
I $P($$UP(LINE),"@TEST")["(" Q "" ; can't have an argument
2015-03-25 15:05:25 -04:00
"RTN","ut1",78,0)
2016-04-11 18:26:37 -04:00
S TAG=$P(LINE," "),LINE=$P(LINE," ",2,400),NOTE=$P($$UP(LINE),"@TEST"),LINE=$E(LINE,$L(NOTE)+5+1,$L(LINE))
2015-03-25 15:05:25 -04:00
"RTN","ut1",79,0)
2016-04-11 18:26:37 -04:00
F Q:NOTE="" S CHAR=$E(NOTE),NOTE=$E(NOTE,2,$L(NOTE)) I " ;"'[CHAR Q ;
2015-03-25 15:05:25 -04:00
"RTN","ut1",80,0)
2016-04-11 18:26:37 -04:00
I $L(NOTE)'=0 Q "" ; @TEST must be first text on line
2015-03-25 15:05:25 -04:00
"RTN","ut1",81,0)
2016-04-11 18:26:37 -04:00
F Q:$E(LINE)'=" " S LINE=$E(LINE,2,$L(LINE)) ; remove leading spaces from test info
2015-03-25 15:05:25 -04:00
"RTN","ut1",82,0)
2016-04-11 18:26:37 -04:00
S TAG=TAG_U_LINE
2015-03-25 15:05:25 -04:00
"RTN","ut1",83,0)
2016-04-11 18:26:37 -04:00
Q TAG
2015-03-25 15:05:25 -04:00
"RTN","ut1",84,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut1",85,0)
2016-04-11 18:26:37 -04:00
FAIL(XTERMSG) ; Entry point for generating a failure message
2015-03-25 15:05:25 -04:00
"RTN","ut1",86,0)
2016-04-11 18:26:37 -04:00
; ZEXCEPT: %utERRL,%utGUI -CREATED IN SETUP, KILLED IN END
2015-03-25 15:05:25 -04:00
"RTN","ut1",87,0)
2016-04-11 18:26:37 -04:00
; ZEXCEPT: %ut -- NEWED ON ENTRY
2015-03-25 15:05:25 -04:00
"RTN","ut1",88,0)
2016-04-11 18:26:37 -04:00
; ZEXCEPT: XTGUISEP - newed in GUINEXT
2015-03-25 15:05:25 -04:00
"RTN","ut1",89,0)
2016-04-11 18:26:37 -04:00
I $G(XTERMSG)="" S XTERMSG="no failure message provided"
2015-03-25 15:05:25 -04:00
"RTN","ut1",90,0)
2016-04-11 18:26:37 -04:00
S %ut("CHK")=%ut("CHK")+1
2015-03-25 15:05:25 -04:00
"RTN","ut1",91,0)
2016-04-11 18:26:37 -04:00
I '$D(%utGUI) D
2015-03-25 15:05:25 -04:00
"RTN","ut1",92,0)
2016-04-11 18:26:37 -04:00
. D SETIO
2015-03-25 15:05:25 -04:00
"RTN","ut1",93,0)
2016-04-11 18:26:37 -04:00
. W !,%ut("ENT")," - " W:%ut("NAME")'="" %ut("NAME")," - " W XTERMSG,! D
2015-03-25 15:05:25 -04:00
"RTN","ut1",94,0)
2016-04-11 18:26:37 -04:00
. . S %ut("FAIL")=%ut("FAIL")+1,%utERRL(%ut("FAIL"))=%ut("NAME"),%utERRL(%ut("FAIL"),"MSG")=XTERMSG,%utERRL(%ut("FAIL"),"ENTRY")=%ut("ENT")
2015-03-25 15:05:25 -04:00
"RTN","ut1",95,0)
2016-04-11 18:26:37 -04:00
. . I $D(%ut("BREAK")) BREAK ; Break upon failure
2015-03-25 15:05:25 -04:00
"RTN","ut1",96,0)
2016-04-11 18:26:37 -04:00
. . Q
2015-03-25 15:05:25 -04:00
"RTN","ut1",97,0)
2016-04-11 18:26:37 -04:00
. D RESETIO
2015-03-25 15:05:25 -04:00
"RTN","ut1",98,0)
2016-04-11 18:26:37 -04:00
. Q
2015-03-25 15:05:25 -04:00
"RTN","ut1",99,0)
2016-04-11 18:26:37 -04:00
I $D(%utGUI) S %ut("CNT")=%ut("CNT")+1,@%ut("RSLT")@(%ut("CNT"))=%ut("LOC")_XTGUISEP_"FAILURE"_XTGUISEP_XTERMSG,%ut("FAIL")=%ut("FAIL")+1
2016-02-27 17:01:27 -05:00
"RTN","ut1",100,0)
2016-04-11 18:26:37 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","ut1",101,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut1",102,0)
2016-04-11 18:26:37 -04:00
NVLDARG(API) ; generate message for invalid arguments to test
2015-03-25 15:05:25 -04:00
"RTN","ut1",103,0)
2016-04-11 18:26:37 -04:00
N XTERMSG
2015-03-25 15:05:25 -04:00
"RTN","ut1",104,0)
2016-04-11 18:26:37 -04:00
; ZEXCEPT: %ut -- NEWED ON ENTRY
2015-03-25 15:05:25 -04:00
"RTN","ut1",105,0)
2016-04-11 18:26:37 -04:00
; ZEXCEPT: %utERRL,%utGUI -CREATED IN SETUP, KILLED IN END
2015-03-25 15:05:25 -04:00
"RTN","ut1",106,0)
2016-04-11 18:26:37 -04:00
; ZEXCEPT: XTGUISEP - newed in GUINEXT
2015-03-25 15:05:25 -04:00
"RTN","ut1",107,0)
2016-04-11 18:26:37 -04:00
S XTERMSG="NO VALUES INPUT TO "_API_"^%ut - no evaluation possible"
2015-03-25 15:05:25 -04:00
"RTN","ut1",108,0)
2016-04-11 18:26:37 -04:00
I '$D(%utGUI) D
2015-03-25 15:05:25 -04:00
"RTN","ut1",109,0)
2016-04-11 18:26:37 -04:00
. D SETIO
2015-03-25 15:05:25 -04:00
"RTN","ut1",110,0)
2016-04-11 18:26:37 -04:00
. W !,%ut("ENT")," - " W:%ut("NAME")'="" %ut("NAME")," - " W XTERMSG,! D
2015-03-25 15:05:25 -04:00
"RTN","ut1",111,0)
2016-04-11 18:26:37 -04:00
. . S %ut("FAIL")=%ut("FAIL")+1,%utERRL(%ut("FAIL"))=%ut("NAME"),%utERRL(%ut("FAIL"),"MSG")=XTERMSG,%utERRL(%ut("FAIL"),"ENTRY")=%ut("ENT")
2015-03-25 15:05:25 -04:00
"RTN","ut1",112,0)
2016-04-11 18:26:37 -04:00
. . Q
2015-03-25 15:05:25 -04:00
"RTN","ut1",113,0)
2016-04-11 18:26:37 -04:00
. D RESETIO
2015-03-25 15:05:25 -04:00
"RTN","ut1",114,0)
2016-04-11 18:26:37 -04:00
. Q
2015-03-25 15:05:25 -04:00
"RTN","ut1",115,0)
2016-04-11 18:26:37 -04:00
I $D(%utGUI) S %ut("CNT")=%ut("CNT")+1,@%ut("RSLT")@(%ut("CNT"))=%ut("LOC")_XTGUISEP_"FAILURE"_XTGUISEP_XTERMSG,%ut("FAIL")=%ut("FAIL")+1
2015-03-25 15:05:25 -04:00
"RTN","ut1",116,0)
2016-04-11 18:26:37 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","ut1",117,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut1",118,0)
2016-04-11 18:26:37 -04:00
SETIO ; Set M-Unit Device to write the results to...
2015-03-25 15:05:25 -04:00
"RTN","ut1",119,0)
2016-04-11 18:26:37 -04:00
; ZEXCEPT: %ut -- NEWED ON ENTRY
2015-03-25 15:05:25 -04:00
"RTN","ut1",120,0)
2016-04-11 18:26:37 -04:00
I $IO'=%ut("IO") S (IO(0),%ut("DEV","OLD"))=$IO USE %ut("IO") SET IO=$IO
2015-03-25 15:05:25 -04:00
"RTN","ut1",121,0)
2016-04-11 18:26:37 -04:00
QUIT
2015-03-25 15:05:25 -04:00
"RTN","ut1",122,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut1",123,0)
2016-04-11 18:26:37 -04:00
RESETIO ; Reset $IO back to the original device if we changed it.
2015-03-25 15:05:25 -04:00
"RTN","ut1",124,0)
2016-04-11 18:26:37 -04:00
; ZEXCEPT: %ut -- NEWED ON ENTRY
2015-03-25 15:05:25 -04:00
"RTN","ut1",125,0)
2016-04-11 18:26:37 -04:00
I $D(%ut("DEV","OLD")) S IO(0)=%ut("IO") U %ut("DEV","OLD") S IO=$IO K %ut("DEV","OLD")
2015-03-25 15:05:25 -04:00
"RTN","ut1",126,0)
2016-04-11 18:26:37 -04:00
QUIT
2015-03-25 15:05:25 -04:00
"RTN","ut1",127,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut1",128,0)
2016-04-11 18:26:37 -04:00
; VEN/SMH 17DEC2013 - Remove dependence on VISTA - Uppercase here instead of XLFSTR.
2015-03-25 15:05:25 -04:00
"RTN","ut1",129,0)
2016-04-11 18:26:37 -04:00
UP(X) ;
2015-03-25 15:05:25 -04:00
"RTN","ut1",130,0)
2016-04-11 18:26:37 -04:00
Q $TR(X,"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")
2015-03-25 15:05:25 -04:00
"RTN","ut1",131,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut1",132,0)
2016-04-11 18:26:37 -04:00
COV(NMSP,COVCODE,VERBOSITY) ; VEN/SMH - PUBLIC ENTRY POINT; Coverage calculations
2015-03-25 15:05:25 -04:00
"RTN","ut1",133,0)
2016-04-11 18:26:37 -04:00
; NMSP: Namespace of the routines to analyze. End with * to include all routines.
2015-03-25 15:05:25 -04:00
"RTN","ut1",134,0)
2016-04-11 18:26:37 -04:00
; Not using * will only include the routine with NMSP name.
2015-03-25 15:05:25 -04:00
"RTN","ut1",135,0)
2016-04-11 18:26:37 -04:00
; e.g. PSOM* will include all routines starting with PSOM
2015-03-25 15:05:25 -04:00
"RTN","ut1",136,0)
2016-04-11 18:26:37 -04:00
; PSOM will only include PSOM.
2015-03-25 15:05:25 -04:00
"RTN","ut1",137,0)
2016-04-11 18:26:37 -04:00
; COVCODE: Mumps code to run over which coverage will be calculated. Typically Unit Tests.
2015-03-25 15:05:25 -04:00
"RTN","ut1",138,0)
2016-04-11 18:26:37 -04:00
; VERBOSITY (optional): Scalar from -1 to 3.
2015-03-25 15:05:25 -04:00
"RTN","ut1",139,0)
2016-04-11 18:26:37 -04:00
; - -1 = Global output in ^TMP("%utCOVREPORT",$J)
2015-03-25 15:05:25 -04:00
"RTN","ut1",140,0)
2016-04-11 18:26:37 -04:00
; - 0 = Print only total coverage
2015-03-25 15:05:25 -04:00
"RTN","ut1",141,0)
2016-04-11 18:26:37 -04:00
; - 1 = Break down by routine
2015-03-25 15:05:25 -04:00
"RTN","ut1",142,0)
2016-04-11 18:26:37 -04:00
; - 2 = Break down by routine and tag
2015-03-25 15:05:25 -04:00
"RTN","ut1",143,0)
2016-04-11 18:26:37 -04:00
; - 3 = Break down by routine and tag, and print lines that didn't execute for each tag.
2015-03-25 15:05:25 -04:00
"RTN","ut1",144,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut1",145,0)
2016-04-11 18:26:37 -04:00
; ZEXCEPT: %utcovxx - SET and KILLED in this code at top level
2015-03-25 15:05:25 -04:00
"RTN","ut1",146,0)
2016-04-11 18:26:37 -04:00
; ZEXCEPT: %Monitor,%apiOBJ,DecomposeStatus,LineByLine,Start,Stop,System,class - not variables parts of classes
2015-03-25 15:05:25 -04:00
"RTN","ut1",147,0)
2016-04-11 18:26:37 -04:00
N COVER,COVERSAV,I,NMSP1,RTN,RTNS,ERR,STATUS
2015-03-25 15:05:25 -04:00
"RTN","ut1",148,0)
2016-04-11 18:26:37 -04:00
I (+$SY=47) D ; GT.M only!
2015-03-25 15:05:25 -04:00
"RTN","ut1",149,0)
2016-04-11 18:26:37 -04:00
. N %ZR ; GT.M specific
2015-03-25 15:05:25 -04:00
"RTN","ut1",150,0)
2016-04-11 18:26:37 -04:00
. D SILENT^%RSEL(NMSP,"SRC") ; GT.M specific. On Cache use $O(^$R(RTN)).
2015-03-25 15:05:25 -04:00
"RTN","ut1",151,0)
2016-04-11 18:26:37 -04:00
. N RN S RN=""
2015-03-25 15:05:25 -04:00
"RTN","ut1",152,0)
2016-04-11 18:26:37 -04:00
. W !,"Loading routines to test coverage...",!
2015-03-25 15:05:25 -04:00
"RTN","ut1",153,0)
2016-04-11 18:26:37 -04:00
. F S RN=$O(%ZR(RN)) Q:RN="" W RN," " D
2015-03-25 15:05:25 -04:00
"RTN","ut1",154,0)
2016-04-11 18:26:37 -04:00
. . N L2 S L2=$T(+2^@RN)
2015-03-25 15:05:25 -04:00
"RTN","ut1",155,0)
2016-04-11 18:26:37 -04:00
. . ;S L2=$TR(L2,$C(9,32)) ; Translate spaces and tabs out ; JLI 160316 commented out
2015-03-25 15:05:25 -04:00
"RTN","ut1",156,0)
2016-04-11 18:26:37 -04:00
. . S L2=$TR(L2,$C(9)," ") ; change tabs to spaces ; JLI 160316 inserted to replace above
2015-03-25 15:05:25 -04:00
"RTN","ut1",157,0)
2016-04-11 18:26:37 -04:00
. . ;I $E(L2,1,2)'=";;" K %ZR(RN) ; Not a human produced routine JLI 160316 commented out
2015-03-25 15:05:25 -04:00
"RTN","ut1",158,0)
2016-04-11 18:26:37 -04:00
. . ; routine doesn't follow the standards and second line start with ;; ; JLI 160316
2015-03-25 15:05:25 -04:00
"RTN","ut1",159,0)
2016-04-11 18:26:37 -04:00
. . I $E($P(L2," ",2),1,2)'=";;" K %ZR(RN) W !,"Routine "_RN_" removed from analysis, since it doesn't have the standard second line" ; JLI 160316 inserted to replace above
2016-02-27 17:01:27 -05:00
"RTN","ut1",160,0)
2016-04-11 18:26:37 -04:00
. ;
2015-03-25 15:05:25 -04:00
"RTN","ut1",161,0)
2016-04-11 18:26:37 -04:00
. M RTNS=%ZR
2015-03-25 15:05:25 -04:00
"RTN","ut1",162,0)
2016-04-11 18:26:37 -04:00
. K %ZR
2015-03-25 15:05:25 -04:00
"RTN","ut1",163,0)
2016-02-27 17:01:27 -05:00
. Q
2016-04-11 18:26:37 -04:00
"RTN","ut1",164,0)
2016-02-27 17:01:27 -05:00
;
2016-04-11 18:26:37 -04:00
"RTN","ut1",165,0)
I (+$SY=0) D ; CACHE SPECIFIC
2015-03-25 15:05:25 -04:00
"RTN","ut1",166,0)
2016-04-11 18:26:37 -04:00
. S NMSP1=NMSP I NMSP["*" S NMSP1=$P(NMSP,"*")
2015-03-25 15:05:25 -04:00
"RTN","ut1",167,0)
2016-04-11 18:26:37 -04:00
. I $D(^$R(NMSP1)) S RTNS(NMSP1)=""
2015-03-25 15:05:25 -04:00
"RTN","ut1",168,0)
2016-04-11 18:26:37 -04:00
. I NMSP["*" S RTN=NMSP1 F S RTN=$O(^$R(RTN)) Q:RTN'[NMSP1 S RTNS(RTN)=""
2015-03-25 15:05:25 -04:00
"RTN","ut1",169,0)
2016-04-11 18:26:37 -04:00
. Q
2015-03-25 15:05:25 -04:00
"RTN","ut1",170,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut1",171,0)
2016-04-11 18:26:37 -04:00
; ZEXCEPT: CTRAP - not really a variable
2015-03-25 15:05:25 -04:00
"RTN","ut1",172,0)
2016-04-11 18:26:37 -04:00
S VERBOSITY=+$G(VERBOSITY) ; Get 0 if not passed.
2015-03-25 15:05:25 -04:00
"RTN","ut1",173,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut1",174,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut1",175,0)
2016-04-11 18:26:37 -04:00
N GL
2015-03-25 15:05:25 -04:00
"RTN","ut1",176,0)
2016-04-11 18:26:37 -04:00
S GL=$NA(^TMP("%utCOVCOHORT",$J))
2015-03-25 15:05:25 -04:00
"RTN","ut1",177,0)
2016-04-11 18:26:37 -04:00
I '$D(^TMP("%utcovrunning",$J)) K @GL
2015-03-25 15:05:25 -04:00
"RTN","ut1",178,0)
2016-04-11 18:26:37 -04:00
D RTNANAL(.RTNS,GL) ; save off any current coverage data
2015-03-25 15:05:25 -04:00
"RTN","ut1",179,0)
2016-04-11 18:26:37 -04:00
I '$D(^TMP("%utcovrunning",$J)) N EXIT S EXIT=0 D Q:EXIT
2015-03-25 15:05:25 -04:00
"RTN","ut1",180,0)
2016-04-11 18:26:37 -04:00
. K ^TMP("%utCOVCOHORTSAV",$J)
2015-03-25 15:05:25 -04:00
"RTN","ut1",181,0)
2016-04-11 18:26:37 -04:00
. M ^TMP("%utCOVCOHORTSAV",$J)=^TMP("%utCOVCOHORT",$J)
2015-03-25 15:05:25 -04:00
"RTN","ut1",182,0)
2016-04-11 18:26:37 -04:00
. K ^TMP("%utCOVRESULT",$J)
2015-03-25 15:05:25 -04:00
"RTN","ut1",183,0)
2016-04-11 18:26:37 -04:00
. S ^TMP("%utcovrunning",$J)=1,%utcovxx=1
2015-03-25 15:05:25 -04:00
"RTN","ut1",184,0)
2016-04-11 18:26:37 -04:00
. ;
2015-03-25 15:05:25 -04:00
"RTN","ut1",185,0)
2016-04-11 18:26:37 -04:00
. I (+$SY=47) VIEW "TRACE":1:$NA(^TMP("%utCOVRESULT",$J)) ; GT.M START PROFILING
2015-03-25 15:05:25 -04:00
"RTN","ut1",186,0)
2016-04-11 18:26:37 -04:00
. ;
2015-03-25 15:05:25 -04:00
"RTN","ut1",187,0)
2016-04-11 18:26:37 -04:00
. I (+$SY=0) D ; CACHE CODE TO START PROFILING
2015-03-25 15:05:25 -04:00
"RTN","ut1",188,0)
2016-04-11 18:26:37 -04:00
. . S STATUS=##class(%Monitor.System.LineByLine).Start($lb(NMSP),$lb("RtnLine"),$lb($j))
2015-03-25 15:05:25 -04:00
"RTN","ut1",189,0)
2016-04-11 18:26:37 -04:00
. . I +STATUS'=1 D DecomposeStatus^%apiOBJ(STATUS,.ERR,"-d") F I=1:1:ERR W ERR(I),!
2015-03-25 15:05:25 -04:00
"RTN","ut1",190,0)
2016-04-11 18:26:37 -04:00
. . I +STATUS'=1 K ERR S EXIT=1
2015-03-25 15:05:25 -04:00
"RTN","ut1",191,0)
2016-04-11 18:26:37 -04:00
. . Q
2015-03-25 15:05:25 -04:00
"RTN","ut1",192,0)
2016-04-11 18:26:37 -04:00
. Q
2015-03-25 15:05:25 -04:00
"RTN","ut1",193,0)
2016-04-11 18:26:37 -04:00
DO ; Run the code, but keep our variables to ourselves.
2015-03-25 15:05:25 -04:00
"RTN","ut1",194,0)
2016-04-11 18:26:37 -04:00
. NEW $ETRAP,$ESTACK
2015-03-25 15:05:25 -04:00
"RTN","ut1",195,0)
2016-04-11 18:26:37 -04:00
. I (+$SY=47) D ; GT.M SPECIFIC
2015-03-25 15:05:25 -04:00
"RTN","ut1",196,0)
2016-04-11 18:26:37 -04:00
. . SET $ETRAP="Q:($ES&$Q) -9 Q:$ES W ""CTRL-C ENTERED"""
2015-03-25 15:05:25 -04:00
"RTN","ut1",197,0)
2016-04-11 18:26:37 -04:00
. . USE $PRINCIPAL:(CTRAP=$C(3))
2015-03-25 15:05:25 -04:00
"RTN","ut1",198,0)
2016-04-11 18:26:37 -04:00
. . Q
2015-03-25 15:05:25 -04:00
"RTN","ut1",199,0)
2016-04-11 18:26:37 -04:00
. NEW (DUZ,IO,COVCODE,U,DILOCKTM,DISYS,DT,DTIME,IOBS,IOF,IOM,ION,IOS,IOSL,IOST,IOT,IOXY)
2015-03-25 15:05:25 -04:00
"RTN","ut1",200,0)
2016-04-11 18:26:37 -04:00
. XECUTE COVCODE
2015-03-25 15:05:25 -04:00
"RTN","ut1",201,0)
2016-02-27 17:01:27 -05:00
. Q
2016-04-11 18:26:37 -04:00
"RTN","ut1",202,0)
; GT.M STOP PROFILING if this is the original level that started it
2015-03-25 15:05:25 -04:00
"RTN","ut1",203,0)
2016-04-11 18:26:37 -04:00
I $D(^TMP("%utcovrunning",$J)),$D(%utcovxx) D
2015-03-25 15:05:25 -04:00
"RTN","ut1",204,0)
2016-04-11 18:26:37 -04:00
. I (+$SY=47) VIEW "TRACE":0:$NA(^TMP("%utCOVRESULT",$J)) ; GT.M SPECIFIC
2015-03-25 15:05:25 -04:00
"RTN","ut1",205,0)
2016-04-11 18:26:37 -04:00
. I (+$SY=0) ; CACHE SPECIFIC
2015-03-25 15:05:25 -04:00
"RTN","ut1",206,0)
2016-04-11 18:26:37 -04:00
. K %utcovxx,^TMP("%utcovrunning",$J)
2015-03-25 15:05:25 -04:00
"RTN","ut1",207,0)
2016-04-11 18:26:37 -04:00
. Q
2015-03-25 15:05:25 -04:00
"RTN","ut1",208,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut1",209,0)
2016-04-11 18:26:37 -04:00
I '$D(^TMP("%utcovrunning",$J)) D
2015-03-25 15:05:25 -04:00
"RTN","ut1",210,0)
2016-04-11 18:26:37 -04:00
. I (+$SY=0) D ; CACHE SPECIFIC CODE
2015-03-25 15:05:25 -04:00
"RTN","ut1",211,0)
2016-04-11 18:26:37 -04:00
. . S COVERSAV=$NA(^TMP("%utCOVCOHORTSAV",$J)) K @COVERSAV
2015-03-25 15:05:25 -04:00
"RTN","ut1",212,0)
2016-04-11 18:26:37 -04:00
. . S COVER=$NA(^TMP("%utCOVCOHORT",$J)) K @COVER
2015-03-25 15:05:25 -04:00
"RTN","ut1",213,0)
2016-04-11 18:26:37 -04:00
. . D CACHECOV(COVERSAV,COVER)
2015-03-25 15:05:25 -04:00
"RTN","ut1",214,0)
2016-04-11 18:26:37 -04:00
. . D TOTAGS(COVERSAV,0),TOTAGS(COVER,1)
2015-03-25 15:05:25 -04:00
"RTN","ut1",215,0)
2016-04-11 18:26:37 -04:00
. . D ##class(%Monitor.System.LineByLine).Stop()
2015-03-25 15:05:25 -04:00
"RTN","ut1",216,0)
2016-02-27 17:01:27 -05:00
. . Q
2016-04-11 18:26:37 -04:00
"RTN","ut1",217,0)
. D COVCOV($NA(^TMP("%utCOVCOHORT",$J)),$NA(^TMP("%utCOVRESULT",$J))) ; Venn diagram matching between globals
2015-03-25 15:05:25 -04:00
"RTN","ut1",218,0)
2016-04-11 18:26:37 -04:00
. ; Report
2015-03-25 15:05:25 -04:00
"RTN","ut1",219,0)
2016-04-11 18:26:37 -04:00
. I VERBOSITY=-1 D
2015-03-25 15:05:25 -04:00
"RTN","ut1",220,0)
2016-04-11 18:26:37 -04:00
. . K ^TMP("%utCOVREPORT",$J)
2015-03-25 15:05:25 -04:00
"RTN","ut1",221,0)
2016-04-11 18:26:37 -04:00
. . D COVRPTGL($NA(^TMP("%utCOVCOHORTSAV",$J)),$NA(^TMP("%utCOVCOHORT",$J)),$NA(^TMP("%utCOVRESULT",$J)),$NA(^TMP("%utCOVREPORT",$J)))
2015-03-25 15:05:25 -04:00
"RTN","ut1",222,0)
2016-04-11 18:26:37 -04:00
. . Q
2015-03-25 15:05:25 -04:00
"RTN","ut1",223,0)
2016-04-11 18:26:37 -04:00
. E D COVRPT($NA(^TMP("%utCOVCOHORTSAV",$J)),$NA(^TMP("%utCOVCOHORT",$J)),$NA(^TMP("%utCOVRESULT",$J)),VERBOSITY)
2015-03-25 15:05:25 -04:00
"RTN","ut1",224,0)
2016-04-11 18:26:37 -04:00
. Q
2015-03-25 15:05:25 -04:00
"RTN","ut1",225,0)
2016-04-11 18:26:37 -04:00
QUIT
2015-03-25 15:05:25 -04:00
"RTN","ut1",226,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut1",227,0)
2016-04-11 18:26:37 -04:00
CACHECOV(GLOBSAV,GLOB) ;
2015-03-25 15:05:25 -04:00
"RTN","ut1",228,0)
2016-04-11 18:26:37 -04:00
; ZEXCEPT: %Monitor,GetMetrics,GetRoutineCount,GetRoutineName,LineByLine,System,class - not variable names, part of classes
2015-03-25 15:05:25 -04:00
"RTN","ut1",229,0)
2016-04-11 18:26:37 -04:00
N DIF,I,METRIC,METRICNT,METRICS,MTRICNUM,ROUNAME,ROUNUM,X,XCNP,XXX
2015-03-25 15:05:25 -04:00
"RTN","ut1",230,0)
2016-04-11 18:26:37 -04:00
I $$ISUTEST(),'$D(^TMP("%utt4val",$J)) S ROUNUM=1,METRICS="RtnLine",METRICNT=1,ROUNAME="%ut"
2015-03-25 15:05:25 -04:00
"RTN","ut1",231,0)
2016-04-11 18:26:37 -04:00
I $D(^TMP("%utt4val",$J))!'$$ISUTEST() S ROUNUM=##class(%Monitor.System.LineByLine).GetRoutineCount(),METRICS=##class(%Monitor.System.LineByLine).GetMetrics(),METRICNT=$l(METRICS,",")
2015-03-25 15:05:25 -04:00
"RTN","ut1",232,0)
2016-04-11 18:26:37 -04:00
; if only running to do coverage, should be 1
2015-03-25 15:05:25 -04:00
"RTN","ut1",233,0)
2016-04-11 18:26:37 -04:00
S MTRICNUM=0 F I=1:1:METRICNT S METRIC=$P(METRICS,",",I) I METRIC="RtnLine" S MTRICNUM=I Q
2015-03-25 15:05:25 -04:00
"RTN","ut1",234,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut1",235,0)
2016-04-11 18:26:37 -04:00
F I=1:1:ROUNUM D
2015-03-25 15:05:25 -04:00
"RTN","ut1",236,0)
2016-04-11 18:26:37 -04:00
. I $D(^TMP("%utt4val",$J))!'$$ISUTEST() S ROUNAME=##class(%Monitor.System.LineByLine).GetRoutineName(I)
2015-03-25 15:05:25 -04:00
"RTN","ut1",237,0)
2016-04-11 18:26:37 -04:00
. ; get routine loaded into location
2015-03-25 15:05:25 -04:00
"RTN","ut1",238,0)
2016-04-11 18:26:37 -04:00
. S DIF=$NA(@GLOBSAV@(ROUNAME)),DIF=$E(DIF,1,$L(DIF)-1)_",",XCNP=0,X=ROUNAME
2015-03-25 15:05:25 -04:00
"RTN","ut1",239,0)
2016-04-11 18:26:37 -04:00
. X ^%ZOSF("LOAD")
2015-03-25 15:05:25 -04:00
"RTN","ut1",240,0)
2016-04-11 18:26:37 -04:00
. M @GLOB@(ROUNAME)=@GLOBSAV@(ROUNAME)
2015-03-25 15:05:25 -04:00
"RTN","ut1",241,0)
2016-04-11 18:26:37 -04:00
. Q
2015-03-25 15:05:25 -04:00
"RTN","ut1",242,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut1",243,0)
2016-04-11 18:26:37 -04:00
I $D(^TMP("%utt4val",$J))!'$$ISUTEST() F XXX=1:1:ROUNUM D GETVALS(XXX,GLOB,MTRICNUM)
2015-03-25 15:05:25 -04:00
"RTN","ut1",244,0)
2016-04-11 18:26:37 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","ut1",245,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut1",246,0)
2016-04-11 18:26:37 -04:00
GETVALS(ROUNUM,GLOB,MTRICNUM) ; get data on number of times a line seen (set into VAL)
2015-03-25 15:05:25 -04:00
"RTN","ut1",247,0)
2016-04-11 18:26:37 -04:00
; ZEXCEPT: %Monitor,%New,%ResultSet,Execute,GetData,GetRoutineName,LineByLine,Next,System,class - not variables parts of Cache classes
2015-03-25 15:05:25 -04:00
"RTN","ut1",248,0)
2016-04-11 18:26:37 -04:00
N LINE,MORE,ROUNAME,RSET,VAL,X
2015-03-25 15:05:25 -04:00
"RTN","ut1",249,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut1",250,0)
2016-04-11 18:26:37 -04:00
S RSET=##class(%ResultSet).%New("%Monitor.System.LineByLine:Result")
2015-03-25 15:05:25 -04:00
"RTN","ut1",251,0)
2016-04-11 18:26:37 -04:00
S ROUNAME=##class(%Monitor.System.LineByLine).GetRoutineName(ROUNUM)
2015-03-25 15:05:25 -04:00
"RTN","ut1",252,0)
2016-04-11 18:26:37 -04:00
S LINE=RSET.Execute(ROUNAME)
2015-03-25 15:05:25 -04:00
"RTN","ut1",253,0)
2016-04-11 18:26:37 -04:00
F LINE=1:1 S MORE=RSET.Next() Q:'MORE D
2015-03-25 15:05:25 -04:00
"RTN","ut1",254,0)
2016-04-11 18:26:37 -04:00
. S X=RSET.GetData(1)
2015-03-25 15:05:25 -04:00
"RTN","ut1",255,0)
2016-04-11 18:26:37 -04:00
. S VAL=$LI(X,MTRICNUM)
2015-03-25 15:05:25 -04:00
"RTN","ut1",256,0)
2016-04-11 18:26:37 -04:00
. S @GLOB@(ROUNAME,LINE,"C")=+VAL ; values are 0 if not seen, otherwise positive number
2015-03-25 15:05:25 -04:00
"RTN","ut1",257,0)
2016-04-11 18:26:37 -04:00
. Q
2015-03-25 15:05:25 -04:00
"RTN","ut1",258,0)
2016-04-11 18:26:37 -04:00
D RSET.Close()
2015-03-25 15:05:25 -04:00
"RTN","ut1",259,0)
2016-04-11 18:26:37 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","ut1",260,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut1",261,0)
2016-04-11 18:26:37 -04:00
TOTAGS(GLOBAL,ACTIVE) ; convert to lines from tags and set value only if not seen
2015-03-25 15:05:25 -04:00
"RTN","ut1",262,0)
2016-04-11 18:26:37 -04:00
N ACTIVCOD,LINE,LINENUM,ROU,ROUCODE
2015-03-25 15:05:25 -04:00
"RTN","ut1",263,0)
2016-04-11 18:26:37 -04:00
S ROU="" F S ROU=$O(@GLOBAL@(ROU)) Q:ROU="" D
2015-03-25 15:05:25 -04:00
"RTN","ut1",264,0)
2016-04-11 18:26:37 -04:00
. M ROUCODE(ROU)=@GLOBAL@(ROU) K @GLOBAL@(ROU)
2015-03-25 15:05:25 -04:00
"RTN","ut1",265,0)
2016-04-11 18:26:37 -04:00
. N TAG,OFFSET,OLDTAG S TAG="",OFFSET=0,OLDTAG=""
2015-03-25 15:05:25 -04:00
"RTN","ut1",266,0)
2016-04-11 18:26:37 -04:00
. F LINENUM=1:1 Q:'$D(ROUCODE(ROU,LINENUM,0)) D
2015-03-25 15:05:25 -04:00
"RTN","ut1",267,0)
2016-04-11 18:26:37 -04:00
. . S LINE=ROUCODE(ROU,LINENUM,0)
2016-02-27 17:01:27 -05:00
"RTN","ut1",268,0)
2016-04-11 18:26:37 -04:00
. . S ACTIVCOD=$$LINEDATA(LINE,.TAG,.OFFSET)
2016-02-27 17:01:27 -05:00
"RTN","ut1",269,0)
2016-04-11 18:26:37 -04:00
. . I TAG'=OLDTAG S @GLOBAL@(ROU,TAG)=TAG
2016-02-27 17:01:27 -05:00
"RTN","ut1",270,0)
2016-04-11 18:26:37 -04:00
. . I ACTIVE,ACTIVCOD,(+$G(ROUCODE(ROU,LINENUM,"C"))'>0) S @GLOBAL@(ROU,TAG,OFFSET)=LINE
2016-02-27 17:01:27 -05:00
"RTN","ut1",271,0)
2016-04-11 18:26:37 -04:00
. . I 'ACTIVE,ACTIVCOD S @GLOBAL@(ROU,TAG,OFFSET)=LINE
2016-02-27 17:01:27 -05:00
"RTN","ut1",272,0)
2016-04-11 18:26:37 -04:00
. . Q
2016-02-27 17:01:27 -05:00
"RTN","ut1",273,0)
2016-04-11 18:26:37 -04:00
. Q
2016-02-27 17:01:27 -05:00
"RTN","ut1",274,0)
2016-04-11 18:26:37 -04:00
Q
2016-02-27 17:01:27 -05:00
"RTN","ut1",275,0)
2016-04-11 18:26:37 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","ut1",276,0)
2016-04-11 18:26:37 -04:00
LINEDATA(LINE,TAG,OFFSET) ;
2016-02-27 17:01:27 -05:00
"RTN","ut1",277,0)
2016-04-11 18:26:37 -04:00
; LINE - input - the line of code
2016-02-27 17:01:27 -05:00
"RTN","ut1",278,0)
2016-04-11 18:26:37 -04:00
; TAG - passed by reference -
2016-02-27 17:01:27 -05:00
"RTN","ut1",279,0)
2016-04-11 18:26:37 -04:00
; OFFSET - passed by reference
2016-02-27 17:01:27 -05:00
"RTN","ut1",280,0)
2016-04-11 18:26:37 -04:00
N CODE,NEWTAG
2016-02-27 17:01:27 -05:00
"RTN","ut1",281,0)
2016-04-11 18:26:37 -04:00
S NEWTAG=""
2016-02-27 17:01:27 -05:00
"RTN","ut1",282,0)
2016-04-11 18:26:37 -04:00
S OFFSET=$G(OFFSET)+1
2016-02-27 17:01:27 -05:00
"RTN","ut1",283,0)
2016-04-11 18:26:37 -04:00
F Q:$E(LINE,1)=" " Q:$E(LINE,1)=$C(9) Q:LINE="" S NEWTAG=NEWTAG_$E(LINE,1),LINE=$E(LINE,2,$L(LINE))
2016-02-27 17:01:27 -05:00
"RTN","ut1",284,0)
2016-04-11 18:26:37 -04:00
S NEWTAG=$P(NEWTAG,"(")
2016-02-27 17:01:27 -05:00
"RTN","ut1",285,0)
2016-04-11 18:26:37 -04:00
I NEWTAG'="" S TAG=NEWTAG,OFFSET=0
2016-02-27 17:01:27 -05:00
"RTN","ut1",286,0)
2016-04-11 18:26:37 -04:00
S CODE=1
2016-02-27 17:01:27 -05:00
"RTN","ut1",287,0)
2016-04-11 18:26:37 -04:00
F S:(LINE="")!($E(LINE)=";") CODE=0 Q:'CODE Q:(" ."'[$E(LINE)) S LINE=$E(LINE,2,$L(LINE))
2016-02-27 17:01:27 -05:00
"RTN","ut1",288,0)
2016-04-11 18:26:37 -04:00
Q CODE
2016-02-27 17:01:27 -05:00
"RTN","ut1",289,0)
2015-03-25 15:05:25 -04:00
;
2016-04-11 18:26:37 -04:00
"RTN","ut1",290,0)
RTNANAL(RTNS,GL) ; [Private] - Routine Analysis
2016-02-27 17:01:27 -05:00
"RTN","ut1",291,0)
2016-04-11 18:26:37 -04:00
; Create a global similar to the trace global produced by GT.M in GL
2016-02-27 17:01:27 -05:00
"RTN","ut1",292,0)
2016-04-11 18:26:37 -04:00
; Only non-comment lines are stored.
2016-02-27 17:01:27 -05:00
"RTN","ut1",293,0)
2016-04-11 18:26:37 -04:00
; A tag is always stored. Tag,0 is stored only if there is code on the tag line (format list or actual code).
2016-02-27 17:01:27 -05:00
"RTN","ut1",294,0)
2016-04-11 18:26:37 -04:00
; tags by themselves don't count toward the total.
2016-02-27 17:01:27 -05:00
"RTN","ut1",295,0)
2016-04-11 18:26:37 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","ut1",296,0)
2016-04-11 18:26:37 -04:00
N RTN S RTN=""
2016-02-27 17:01:27 -05:00
"RTN","ut1",297,0)
2016-04-11 18:26:37 -04:00
F S RTN=$O(RTNS(RTN)) Q:RTN="" D ; for each routine
2016-02-27 17:01:27 -05:00
"RTN","ut1",298,0)
2016-04-11 18:26:37 -04:00
. N TAG,LN,T
2016-02-27 17:01:27 -05:00
"RTN","ut1",299,0)
2016-04-11 18:26:37 -04:00
. ; S TAG=RTN ; start the tags at the first ; JLI 160316 commented out
2016-02-27 17:01:27 -05:00
"RTN","ut1",300,0)
2016-04-11 18:26:37 -04:00
. S LN=$T(+1^@RTN)
2016-02-27 17:01:27 -05:00
"RTN","ut1",301,0)
2016-04-11 18:26:37 -04:00
. S TAG=$$GETTAG(.T,LN) ; JLI 160316 - don't assume first line tag is routine name
2016-02-27 17:01:27 -05:00
"RTN","ut1",302,0)
2016-04-11 18:26:37 -04:00
. N I F I=2:1 S LN=$T(@TAG+I^@RTN) Q:LN="" D ; for each line, starting with the 3rd line (2 off the first tag)
2016-02-27 17:01:27 -05:00
"RTN","ut1",303,0)
2016-04-11 18:26:37 -04:00
. . I $E(LN)?1A D QUIT ; formal line
2016-02-27 17:01:27 -05:00
"RTN","ut1",304,0)
2016-04-11 18:26:37 -04:00
. . . ;N T ; Terminator
2016-02-27 17:01:27 -05:00
"RTN","ut1",305,0)
2016-04-11 18:26:37 -04:00
. . . ;N J F J=1:1:$L(LN) S T=$E(LN,J) Q:T'?1AN ; Loop to...
2016-02-27 17:01:27 -05:00
"RTN","ut1",306,0)
2016-04-11 18:26:37 -04:00
. . . ;S TAG=$E(LN,1,J-1) ; Get tag
2016-02-27 17:01:27 -05:00
"RTN","ut1",307,0)
2016-04-11 18:26:37 -04:00
. . . S TAG=$$GETTAG(.T,LN) ; JLI 160316 - replace above commented out lines
2016-02-27 17:01:27 -05:00
"RTN","ut1",308,0)
2016-04-11 18:26:37 -04:00
. . . S @GL@(RTN,TAG)=TAG ; store line
2016-02-27 17:01:27 -05:00
"RTN","ut1",309,0)
2016-04-11 18:26:37 -04:00
. . . ;I T="(" S @GL@(RTN,TAG,0)=LN ; formal list
2016-02-27 17:01:27 -05:00
"RTN","ut1",310,0)
2016-04-11 18:26:37 -04:00
. . . I T="(" D ; formal list
2016-02-27 17:01:27 -05:00
"RTN","ut1",311,0)
2016-04-11 18:26:37 -04:00
. . . . ;N PCNT,STR,CHR S PCNT=0,STR=$E(LN,J+1,$L(LN))
2016-02-27 17:01:27 -05:00
"RTN","ut1",312,0)
2016-04-11 18:26:37 -04:00
. . . . N PCNT,STR,CHR S PCNT=0,STR=$P(LN,"(",2,99)
2016-02-27 17:01:27 -05:00
"RTN","ut1",313,0)
2016-04-11 18:26:37 -04:00
. . . . F S CHR=$E(STR),STR=$E(STR,2,$L(STR)) Q:(PCNT=0)&(CHR=")") D
2016-02-27 17:01:27 -05:00
"RTN","ut1",314,0)
2016-04-11 18:26:37 -04:00
. . . . . I CHR="(" S PCNT=PCNT+1
2016-02-27 17:01:27 -05:00
"RTN","ut1",315,0)
2016-04-11 18:26:37 -04:00
. . . . . I CHR=")" S PCNT=PCNT-1
2016-02-27 17:01:27 -05:00
"RTN","ut1",316,0)
2016-04-11 18:26:37 -04:00
. . . . . Q
2016-02-27 17:01:27 -05:00
"RTN","ut1",317,0)
2016-04-11 18:26:37 -04:00
. . . . S STR=$TR(STR,$C(9,32))
2016-02-27 17:01:27 -05:00
"RTN","ut1",318,0)
2016-04-11 18:26:37 -04:00
. . . . I $E(STR)=";" QUIT ; comment line - no code
2016-02-27 17:01:27 -05:00
"RTN","ut1",319,0)
2016-04-11 18:26:37 -04:00
. . . . S @GL@(RTN,TAG,0)=LN
2016-02-27 17:01:27 -05:00
"RTN","ut1",320,0)
2016-04-11 18:26:37 -04:00
. . . . Q
2016-02-27 17:01:27 -05:00
"RTN","ut1",321,0)
2016-04-11 18:26:37 -04:00
. . . E D ; No formal list
2016-02-27 17:01:27 -05:00
"RTN","ut1",322,0)
2016-04-11 18:26:37 -04:00
. . . . N LNTR S LNTR=$P(LN,TAG,2,999),LNTR=$TR(LNTR,$C(9,32)) ; Get rest of line, Remove spaces and tabs
2016-02-27 17:01:27 -05:00
"RTN","ut1",323,0)
2016-04-11 18:26:37 -04:00
. . . . I $E(LNTR)=";" QUIT ; Comment
2016-02-27 17:01:27 -05:00
"RTN","ut1",324,0)
2016-04-11 18:26:37 -04:00
. . . . S @GL@(RTN,TAG,0)=LN ; Otherwise, store for testing
2016-02-27 17:01:27 -05:00
"RTN","ut1",325,0)
2016-04-11 18:26:37 -04:00
. . . S I=0 ; Start offsets from zero (first one at the for will be 1)
2016-02-27 17:01:27 -05:00
"RTN","ut1",326,0)
2016-04-11 18:26:37 -04:00
. . I $C(32,9)[$E(LN) D QUIT ; Regular line
2016-02-27 17:01:27 -05:00
"RTN","ut1",327,0)
2016-04-11 18:26:37 -04:00
. . . N LNTR S LNTR=$TR(LN,$C(32,9,46)) ; Remove all spaces and tabs - JLI 150202 remove periods as well
2016-02-27 17:01:27 -05:00
"RTN","ut1",328,0)
2016-04-11 18:26:37 -04:00
. . . I $E(LNTR)=";" QUIT ; Comment line -- don't want.
2016-02-27 17:01:27 -05:00
"RTN","ut1",329,0)
2016-04-11 18:26:37 -04:00
. . . S @GL@(RTN,TAG,I)=LN ; Record line
2016-02-27 17:01:27 -05:00
"RTN","ut1",330,0)
2016-04-11 18:26:37 -04:00
QUIT
2016-02-27 17:01:27 -05:00
"RTN","ut1",331,0)
2016-04-11 18:26:37 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","ut1",332,0)
2016-04-11 18:26:37 -04:00
GETTAG(TERMINTR,LN) ;.EF - get TAG for line, if any
2016-02-27 17:01:27 -05:00
"RTN","ut1",333,0)
2016-04-11 18:26:37 -04:00
; TERMINTR - passed by reference - contains terminator of tag on return
2016-02-27 17:01:27 -05:00
"RTN","ut1",334,0)
2016-04-11 18:26:37 -04:00
; LN - input - text of line
2016-02-27 17:01:27 -05:00
"RTN","ut1",335,0)
2016-04-11 18:26:37 -04:00
N J,TAG
2016-02-27 17:01:27 -05:00
"RTN","ut1",336,0)
2016-04-11 18:26:37 -04:00
F J=1:1:$L(LN) S TERMINTR=$E(LN,J) Q:(TERMINTR'?1AN)&((J'=1)&(TERMINTR'="%")) ; Loop to...
2016-02-27 17:01:27 -05:00
"RTN","ut1",337,0)
2016-04-11 18:26:37 -04:00
S TAG=$E(LN,1,J-1) ; Get tag
2016-02-27 17:01:27 -05:00
"RTN","ut1",338,0)
2016-04-11 18:26:37 -04:00
Q TAG
2016-02-27 17:01:27 -05:00
"RTN","ut1",339,0)
2016-04-11 18:26:37 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","ut1",340,0)
2016-04-11 18:26:37 -04:00
ACTLINES(GL) ; [Private] $$ ; Count active lines
2016-02-27 17:01:27 -05:00
"RTN","ut1",341,0)
2016-04-11 18:26:37 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","ut1",342,0)
2016-04-11 18:26:37 -04:00
N CNT S CNT=0
2016-02-27 17:01:27 -05:00
"RTN","ut1",343,0)
2016-04-11 18:26:37 -04:00
N REF S REF=GL
2016-02-27 17:01:27 -05:00
"RTN","ut1",344,0)
2016-04-11 18:26:37 -04:00
N GLQL S GLQL=$QL(GL)
2016-02-27 17:01:27 -05:00
"RTN","ut1",345,0)
2016-04-11 18:26:37 -04:00
F S REF=$Q(@REF) Q:REF="" Q:(GL'=$NA(@REF,GLQL)) D
2016-02-27 17:01:27 -05:00
"RTN","ut1",346,0)
2016-04-11 18:26:37 -04:00
. N REFQL S REFQL=$QL(REF)
2016-02-27 17:01:27 -05:00
"RTN","ut1",347,0)
2016-04-11 18:26:37 -04:00
. N LASTSUB S LASTSUB=$QS(REF,REFQL)
2016-02-27 17:01:27 -05:00
"RTN","ut1",348,0)
2016-04-11 18:26:37 -04:00
. ;I LASTSUB?1.N S CNT=CNT+1 ; JLI 160315 commented out
2016-02-27 17:01:27 -05:00
"RTN","ut1",349,0)
2016-04-11 18:26:37 -04:00
. ; count only those with tag,number - not tags which are numbers only ; JLI 160315
2016-02-27 17:01:27 -05:00
"RTN","ut1",350,0)
2016-04-11 18:26:37 -04:00
. I (LASTSUB?1.N)&($QL(REF)=5) S CNT=CNT+1 ; JLI 160315 replaces commented out line
2016-02-27 17:01:27 -05:00
"RTN","ut1",351,0)
2016-04-11 18:26:37 -04:00
QUIT CNT
2016-02-27 17:01:27 -05:00
"RTN","ut1",352,0)
2016-04-11 18:26:37 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","ut1",353,0)
2016-04-11 18:26:37 -04:00
COVCOV(C,R) ; [Private] - Analyze coverage Cohort vs Result
2016-02-27 17:01:27 -05:00
"RTN","ut1",354,0)
2016-04-11 18:26:37 -04:00
N RTN S RTN=""
2016-02-27 17:01:27 -05:00
"RTN","ut1",355,0)
2016-04-11 18:26:37 -04:00
F S RTN=$O(@C@(RTN)) Q:RTN="" D ; For each routine in cohort set
2016-02-27 17:01:27 -05:00
"RTN","ut1",356,0)
2016-04-11 18:26:37 -04:00
. I '$D(@R@(RTN)) QUIT ; Not present in result set
2016-02-27 17:01:27 -05:00
"RTN","ut1",357,0)
2016-04-11 18:26:37 -04:00
. N TAG S TAG=""
2016-02-27 17:01:27 -05:00
"RTN","ut1",358,0)
2016-04-11 18:26:37 -04:00
. F S TAG=$O(@R@(RTN,TAG)) Q:TAG="" D ; For each tag in the routine in the result set
2016-02-27 17:01:27 -05:00
"RTN","ut1",359,0)
2016-04-11 18:26:37 -04:00
. . N LN S LN=""
2016-02-27 17:01:27 -05:00
"RTN","ut1",360,0)
2016-04-11 18:26:37 -04:00
. . F S LN=$O(@R@(RTN,TAG,LN)) Q:LN="" D ; for each line in the tag in the routine in the result set
2016-02-27 17:01:27 -05:00
"RTN","ut1",361,0)
2016-04-11 18:26:37 -04:00
. . . I $D(@C@(RTN,TAG,LN)) K ^(LN) ; if present in cohort, kill off
2016-02-27 17:01:27 -05:00
"RTN","ut1",362,0)
2016-04-11 18:26:37 -04:00
QUIT
2016-02-27 17:01:27 -05:00
"RTN","ut1",363,0)
2016-04-11 18:26:37 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","ut1",364,0)
2016-04-11 18:26:37 -04:00
COVRPT(C,S,R,V) ; [Private] - Coverage Report
2016-02-27 17:01:27 -05:00
"RTN","ut1",365,0)
2016-04-11 18:26:37 -04:00
; C = COHORT - Global name
2016-02-27 17:01:27 -05:00
"RTN","ut1",366,0)
2016-04-11 18:26:37 -04:00
; S = SURVIVORS - Global name
2016-02-27 17:01:27 -05:00
"RTN","ut1",367,0)
2016-04-11 18:26:37 -04:00
; R = RESULT - Global name
2016-02-27 17:01:27 -05:00
"RTN","ut1",368,0)
2016-04-11 18:26:37 -04:00
; V = Verbosity - Scalar from -1 to 3
2016-02-27 17:01:27 -05:00
"RTN","ut1",369,0)
2016-04-11 18:26:37 -04:00
; JLI 150702 - modified to be able to do unit tests on setting up the text via COVRPTLS
2016-02-27 17:01:27 -05:00
"RTN","ut1",370,0)
2016-04-11 18:26:37 -04:00
N X,I
2016-02-27 17:01:27 -05:00
"RTN","ut1",371,0)
2016-04-11 18:26:37 -04:00
S X=$NA(^TMP("%ut1-covrpt",$J)) K @X
2016-02-27 17:01:27 -05:00
"RTN","ut1",372,0)
2016-04-11 18:26:37 -04:00
D COVRPTLS(C,S,R,V,X)
2016-02-27 17:01:27 -05:00
"RTN","ut1",373,0)
2016-04-11 18:26:37 -04:00
I '$$ISUTEST^%ut() F I=1:1 W:$D(@X@(I)) !,@X@(I) I '$D(@X@(I)) K @X Q
2016-02-27 17:01:27 -05:00
"RTN","ut1",374,0)
2016-04-11 18:26:37 -04:00
Q
2016-02-27 17:01:27 -05:00
"RTN","ut1",375,0)
2016-04-11 18:26:37 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","ut1",376,0)
2016-04-11 18:26:37 -04:00
COVRPTLS(C,S,R,V,X) ;
2016-02-27 17:01:27 -05:00
"RTN","ut1",377,0)
2016-04-11 18:26:37 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","ut1",378,0)
2016-04-11 18:26:37 -04:00
N LINNUM S LINNUM=0
2016-02-27 17:01:27 -05:00
"RTN","ut1",379,0)
2016-04-11 18:26:37 -04:00
N ORIGLINES S ORIGLINES=$$ACTLINES(C)
2016-02-27 17:01:27 -05:00
"RTN","ut1",380,0)
2016-04-11 18:26:37 -04:00
N LEFTLINES S LEFTLINES=$$ACTLINES(S)
2016-02-27 17:01:27 -05:00
"RTN","ut1",381,0)
2016-04-11 18:26:37 -04:00
S LINNUM=LINNUM+1,@X@(LINNUM)="",LINNUM=LINNUM+1,@X@(LINNUM)=""
2016-02-27 17:01:27 -05:00
"RTN","ut1",382,0)
2016-04-11 18:26:37 -04:00
S LINNUM=LINNUM+1,@X@(LINNUM)="ORIG: "_ORIGLINES
2016-02-27 17:01:27 -05:00
"RTN","ut1",383,0)
2016-04-11 18:26:37 -04:00
S LINNUM=LINNUM+1,@X@(LINNUM)="LEFT: "_LEFTLINES
2016-02-27 17:01:27 -05:00
"RTN","ut1",384,0)
2016-04-11 18:26:37 -04:00
S LINNUM=LINNUM+1,@X@(LINNUM)="COVERAGE PERCENTAGE: "_$S(ORIGLINES:$J((ORIGLINES-LEFTLINES)/ORIGLINES*100,"",2),1:100.00)
2016-02-27 17:01:27 -05:00
"RTN","ut1",385,0)
2016-04-11 18:26:37 -04:00
S LINNUM=LINNUM+1,@X@(LINNUM)="",LINNUM=LINNUM+1,@X@(LINNUM)=""
2016-02-27 17:01:27 -05:00
"RTN","ut1",386,0)
2016-04-11 18:26:37 -04:00
S LINNUM=LINNUM+1,@X@(LINNUM)="BY ROUTINE:"
2016-02-27 17:01:27 -05:00
"RTN","ut1",387,0)
2016-04-11 18:26:37 -04:00
I V=0 QUIT ; No verbosity. Don't print routine detail
2016-02-27 17:01:27 -05:00
"RTN","ut1",388,0)
2016-04-11 18:26:37 -04:00
N RTN S RTN=""
2016-02-27 17:01:27 -05:00
"RTN","ut1",389,0)
2016-04-11 18:26:37 -04:00
F S RTN=$O(@C@(RTN)) Q:RTN="" D
2016-02-27 17:01:27 -05:00
"RTN","ut1",390,0)
2016-04-11 18:26:37 -04:00
. N O S O=$$ACTLINES($NA(@C@(RTN)))
2016-02-27 17:01:27 -05:00
"RTN","ut1",391,0)
2016-04-11 18:26:37 -04:00
. N L S L=$$ACTLINES($NA(@S@(RTN)))
2016-02-27 17:01:27 -05:00
"RTN","ut1",392,0)
2016-04-11 18:26:37 -04:00
. N XX,XY S XX=" "_RTN_" ",XX=$E(XX,1,12)
2016-02-27 17:01:27 -05:00
"RTN","ut1",393,0)
2016-04-11 18:26:37 -04:00
. S XY=" "_$S(O:$J((O-L)/O*100,"",2)_"%",1:"------"),XY=$E(XY,$L(XY)-11,$L(XY))
2016-02-27 17:01:27 -05:00
"RTN","ut1",394,0)
2016-04-11 18:26:37 -04:00
. I O>0 S LINNUM=LINNUM+1,@X@(LINNUM)=XX_XY_" "_(O-L)_" out of "_O
2016-02-27 17:01:27 -05:00
"RTN","ut1",395,0)
2016-04-11 18:26:37 -04:00
. I V=1 QUIT ; Just print the routine coverage for V=1
2016-02-27 17:01:27 -05:00
"RTN","ut1",396,0)
2016-04-11 18:26:37 -04:00
. N TAG S TAG=""
2016-02-27 17:01:27 -05:00
"RTN","ut1",397,0)
2016-04-11 18:26:37 -04:00
. F S TAG=$O(@C@(RTN,TAG)) Q:TAG="" D
2016-02-27 17:01:27 -05:00
"RTN","ut1",398,0)
2016-04-11 18:26:37 -04:00
. . N O S O=$$ACTLINES($NA(@C@(RTN,TAG)))
2016-02-27 17:01:27 -05:00
"RTN","ut1",399,0)
2016-04-11 18:26:37 -04:00
. . N L S L=$$ACTLINES($NA(@S@(RTN,TAG)))
2016-02-27 17:01:27 -05:00
"RTN","ut1",400,0)
2016-04-11 18:26:37 -04:00
. . S XX=" "_TAG_" ",XX=$E(XX,1,20)
2016-02-27 17:01:27 -05:00
"RTN","ut1",401,0)
2016-04-11 18:26:37 -04:00
. . S XY=" "_$S(O:$J((O-L)/O*100,"",2)_"%",1:"------"),XY=$E(XY,$L(XY)-7,$L(XY))
2016-02-27 17:01:27 -05:00
"RTN","ut1",402,0)
2016-04-11 18:26:37 -04:00
. . I O>0 S LINNUM=LINNUM+1,@X@(LINNUM)=XX_XY_" "_(O-L)_" out of "_O
2016-02-27 17:01:27 -05:00
"RTN","ut1",403,0)
2016-04-11 18:26:37 -04:00
. . I V=2 QUIT ; Just print routine/tags coverage for V=2; V=3 print uncovered lines
2016-02-27 17:01:27 -05:00
"RTN","ut1",404,0)
2016-04-11 18:26:37 -04:00
. . N LN S LN=""
2016-02-27 17:01:27 -05:00
"RTN","ut1",405,0)
2016-04-11 18:26:37 -04:00
. . F S LN=$O(@S@(RTN,TAG,LN)) Q:LN="" S LINNUM=LINNUM+1,@X@(LINNUM)=TAG_"+"_LN_": "_^(LN)
2016-02-27 17:01:27 -05:00
"RTN","ut1",406,0)
2016-04-11 18:26:37 -04:00
. . Q
2016-02-27 17:01:27 -05:00
"RTN","ut1",407,0)
2016-04-11 18:26:37 -04:00
. Q
2016-02-27 17:01:27 -05:00
"RTN","ut1",408,0)
2016-04-11 18:26:37 -04:00
QUIT
2016-02-27 17:01:27 -05:00
"RTN","ut1",409,0)
2016-04-11 18:26:37 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","ut1",410,0)
2016-04-11 18:26:37 -04:00
COVRPTGL(C,S,R,OUT) ; [Private] - Coverage Global for silent invokers
2016-02-27 17:01:27 -05:00
"RTN","ut1",411,0)
2016-04-11 18:26:37 -04:00
; C = COHORT - Global name
2016-02-27 17:01:27 -05:00
"RTN","ut1",412,0)
2016-04-11 18:26:37 -04:00
; S = SURVIVORS - Global name
2016-02-27 17:01:27 -05:00
"RTN","ut1",413,0)
2016-04-11 18:26:37 -04:00
; R = RESULT - Global name
2016-02-27 17:01:27 -05:00
"RTN","ut1",414,0)
2016-04-11 18:26:37 -04:00
; OUT = OUTPUT - Global name
2016-02-27 17:01:27 -05:00
"RTN","ut1",415,0)
2016-04-11 18:26:37 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","ut1",416,0)
2016-04-11 18:26:37 -04:00
N O S O=$$ACTLINES(C)
2016-02-27 17:01:27 -05:00
"RTN","ut1",417,0)
2016-04-11 18:26:37 -04:00
N L S L=$$ACTLINES(S)
2016-02-27 17:01:27 -05:00
"RTN","ut1",418,0)
2016-04-11 18:26:37 -04:00
S @OUT=(O-L)_"/"_O
2016-02-27 17:01:27 -05:00
"RTN","ut1",419,0)
2016-04-11 18:26:37 -04:00
N RTN,TAG,LN S (RTN,TAG,LN)=""
2016-02-27 17:01:27 -05:00
"RTN","ut1",420,0)
2016-04-11 18:26:37 -04:00
F S RTN=$O(@C@(RTN)) Q:RTN="" D
2016-02-27 17:01:27 -05:00
"RTN","ut1",421,0)
2016-04-11 18:26:37 -04:00
. N O S O=$$ACTLINES($NA(@C@(RTN)))
2016-02-27 17:01:27 -05:00
"RTN","ut1",422,0)
2016-04-11 18:26:37 -04:00
. N L S L=$$ACTLINES($NA(@S@(RTN)))
2016-02-27 17:01:27 -05:00
"RTN","ut1",423,0)
2016-04-11 18:26:37 -04:00
. S @OUT@(RTN)=(O-L)_"/"_O
2016-02-27 17:01:27 -05:00
"RTN","ut1",424,0)
2016-04-11 18:26:37 -04:00
. F S TAG=$O(@C@(RTN,TAG)) Q:TAG="" D
"RTN","ut1",425,0)
. . N O S O=$$ACTLINES($NA(@C@(RTN,TAG)))
"RTN","ut1",426,0)
. . N L S L=$$ACTLINES($NA(@S@(RTN,TAG)))
"RTN","ut1",427,0)
. . S @OUT@(RTN,TAG)=(O-L)_"/"_O
"RTN","ut1",428,0)
. . F S LN=$O(@S@(RTN,TAG,LN)) Q:LN="" S @OUT@(RTN,TAG,LN)=@S@(RTN,TAG,LN)
"RTN","ut1",429,0)
QUIT
"RTN","ut1",430,0)
;
"RTN","ut1",431,0)
ISUTEST() ;
"RTN","ut1",432,0)
2016-02-27 17:01:27 -05:00
Q $$ISUTEST^%ut()
"RTN","utcover")
2016-04-11 18:26:37 -04:00
0^3^B53892492
2016-02-27 17:01:27 -05:00
"RTN","utcover",1,0)
2016-04-11 18:26:37 -04:00
%utcover ;JLI - generic coverage and unit test runner ;04/08/16 20:37
2016-02-27 17:01:27 -05:00
"RTN","utcover",2,0)
2016-04-11 18:26:37 -04:00
;;1.4;MASH UTILITIES;;APR 11, 2016;Build 3
2016-02-27 17:01:27 -05:00
"RTN","utcover",3,0)
2016-04-11 18:26:37 -04:00
; Submitted to OSEHRA Apr 11, 2016 by Joel L. Ivey under the Apache 2 license (http://www.apache.org/licenses/LICENSE-2.0.html)
2016-02-27 17:01:27 -05:00
"RTN","utcover",4,0)
2016-04-11 18:26:37 -04:00
; Original routine authored by Joel L. Ivey 08/15. Additional work 08/15-04/16.
2016-02-27 17:01:27 -05:00
"RTN","utcover",5,0)
;
"RTN","utcover",6,0)
; Changes: (Moved from %ut and %ut1)
"RTN","utcover",7,0)
; 130726 SMH - Moved test collection logic from %utUNIT to here (multiple places)
"RTN","utcover",8,0)
; 131218 SMH - dependence on XLFSTR removed
"RTN","utcover",9,0)
; 131218 SMH - CHEKTEST refactored to use $TEXT instead of ^%ZOSF("LOAD")
"RTN","utcover",10,0)
; 131218 SMH - CATCHERR now nulls out $ZS if on GT.M
"RTN","utcover",11,0)
;
"RTN","utcover",12,0)
; ------- COMMENTS moved from %ut due to space requirements
"RTN","utcover",13,0)
;
"RTN","utcover",14,0)
; 100622 JLI - corrected typo in comments where %utINPT was listed as %utINP
"RTN","utcover",15,0)
; 100622 JLI - removed a comment which indicated data could potentially be returned from the called routine
"RTN","utcover",16,0)
; in the %utINPT array.
"RTN","utcover",17,0)
; 100622 JLI - added code to handle STARTUP and SHUTDOWN from GUI app
"RTN","utcover",18,0)
; 110719 JLI - modified separators in GUI handling from ^ to ~~^~~
"RTN","utcover",19,0)
; in the variable XTGUISEP if using a newer version of the
"RTN","utcover",20,0)
; GUI app (otherwise, it is simply set to ^) since results
"RTN","utcover",21,0)
; with a series of ^ embedded disturbed the output reported
"RTN","utcover",22,0)
; 130726 SMH - Fixed SETUP and TEARDOWN so that they run before/after each
"RTN","utcover",23,0)
; test rather than once. General refactoring.
"RTN","utcover",24,0)
; 130726 SMH - SETUT initialized IO in case it's not there to $P. Inits vars
"RTN","utcover",25,0)
; using DT^DICRW.
"RTN","utcover",26,0)
; 131217 SMH - Change call in SETUP to S U="^" instead of DT^DICRW
"RTN","utcover",27,0)
; 131218 SMH - Any checks to $ZE will also check $ZS for GT.M.
"RTN","utcover",28,0)
; 131218 SMH - Remove calls to %ZISUTL to manage devices to prevent dependence on VISTA.
"RTN","utcover",29,0)
; Use %utNIT("DEV","OLD") for old devices
"RTN","utcover",30,0)
; 140109 SMH - Add parameter %utBREAK - Break upon error
"RTN","utcover",31,0)
; 1402 SMH - Break will cause the break to happen even on failed tests.
"RTN","utcover",32,0)
; 140401 SMH - Added Succeed entry point for take it into your hands tester.
"RTN","utcover",33,0)
; 140401 SMH - Reformatted the output of M-Unit so that the test's name
"RTN","utcover",34,0)
; will print BEFORE the execution of the test. This has been
"RTN","utcover",35,0)
; really confusing for beginning users of M-Unit, so this was
"RTN","utcover",36,0)
; necessary.
"RTN","utcover",37,0)
; 140401 SMH - OK message gets printed at the end of --- as [OK].
"RTN","utcover",38,0)
; 140401 SMH - FAIL message now prints. Previously, OK failed to be printed.
"RTN","utcover",39,0)
; Unfortunately, that's rather passive aggressive. Now it
"RTN","utcover",40,0)
; explicitly says that a test failed.
"RTN","utcover",41,0)
; 140503 SMH - Fixed IO issues all over the routine. Much simpler now.
"RTN","utcover",42,0)
; 140731 JLI - Combined routine changes between JLI and SMH
"RTN","utcover",43,0)
; Moved routines from %utNIT and %utNIT1 to %ut and %ut1
"RTN","utcover",44,0)
; Updated unit test routines (%utt1 to %utt6)
"RTN","utcover",45,0)
; Created M-UNIT TEST GROUP file at 17.9001 based on the 17.9001 file
"RTN","utcover",46,0)
; 141030 JLI - Removed tag TESTCOVR and code under it, not necessary
"RTN","utcover",47,0)
; since %uttcovr can handle all of the calling needed
"RTN","utcover",48,0)
; Added call to run routine %utt6 if run from the top,
"RTN","utcover",49,0)
; since this will run the full range of unit tests
"RTN","utcover",50,0)
; Modified STARTUP and SHUTDOWN commands to handle in
"RTN","utcover",51,0)
; each routine where they are available, since only
"RTN","utcover",52,0)
; running one STARTUP and SHUTDOWN (the first seen by
"RTN","utcover",53,0)
; the program) restricted their use in suites of multiple
"RTN","utcover",54,0)
; tests.
"RTN","utcover",55,0)
; 150101 JLI - Added COV entry to %ut (in addition to current in %ut1) so it is easier
"RTN","utcover",56,0)
; to remember how to use it.
"RTN","utcover",57,0)
; 150621 JLI - Added a global location to pick up summary data for a unit test call, so
"RTN","utcover",58,0)
; programs running multiple calls can generate a summary if desired.
"RTN","utcover",59,0)
;
"RTN","utcover",60,0)
;
"RTN","utcover",61,0)
D EN^%ut("%uttcovr") ; unit tests
"RTN","utcover",62,0)
Q
"RTN","utcover",63,0)
;
"RTN","utcover",64,0)
MULTAPIS(TESTROUS) ; RUN TESTS FOR SPECIFIED ROUTINES AND ENTRY POINTS
"RTN","utcover",65,0)
; can be run from %ut using D MULTAPIS^%ut(.TESTROUS)
"RTN","utcover",66,0)
; input TESTROUS - passed by reference - array of routine names to run tests for
"RTN","utcover",67,0)
; specify those to be called directly by including ^ as part of
"RTN","utcover",68,0)
; TAG^ROUTINE or ^ROUTINE.
"RTN","utcover",69,0)
; ROUTINE names without a ^ will be called as EN^%ut("ROUTINE")
"RTN","utcover",70,0)
; Sometimes to get complete coverage, different entry points may
"RTN","utcover",71,0)
; need to be called (e.g., at top and for VERBOSE), these should each
"RTN","utcover",72,0)
; be included.
"RTN","utcover",73,0)
; If the subscript is a number, it will take the list of comma separated
"RTN","utcover",74,0)
; values as the routines. If the the subscript is not a number, it will
"RTN","utcover",75,0)
; take it as a routine to be added to the list, then if the value of the
"RTN","utcover",76,0)
; contains a comma separated list of routines, they will be added as well.
"RTN","utcover",77,0)
; Thus a value of
"RTN","utcover",78,0)
; TESTROUS(1)="A^ROU1,^ROU1,^ROU2,ROU3"
"RTN","utcover",79,0)
; or a value of
"RTN","utcover",80,0)
; TESTROUS("A^ROU1")="^ROU1,^ROU2,ROU3"
"RTN","utcover",81,0)
; will both result in tests for
"RTN","utcover",82,0)
; D A^ROU1,^ROU1,^ROU2,EN^%ut("ROU3")
"RTN","utcover",83,0)
K ^TMP("%utcover",$J,"TESTROUS")
"RTN","utcover",84,0)
M ^TMP("%utcover",$J,"TESTROUS")=TESTROUS
"RTN","utcover",85,0)
D COVENTRY
"RTN","utcover",86,0)
K ^TMP("%utcover",$J,"TESTROUS")
"RTN","utcover",87,0)
Q
"RTN","utcover",88,0)
;
"RTN","utcover",89,0)
COVENTRY ; setup of COVERAGE NEWs most variables, so TESTROUS passed by global
"RTN","utcover",90,0)
;
"RTN","utcover",91,0)
N I,ROU,VAL,VALS,UTDATA,TESTS,TESTROUS
"RTN","utcover",92,0)
M TESTROUS=^TMP("%utcover",$J,"TESTROUS")
"RTN","utcover",93,0)
S ROU="" F S ROU=$O(TESTROUS(ROU)) Q:ROU="" D
"RTN","utcover",94,0)
. I ROU'=+ROU S TESTS(ROU)=""
"RTN","utcover",95,0)
. F I=1:1 S VAL=$P(TESTROUS(ROU),",",I) Q:VAL="" S TESTS(VAL)=""
"RTN","utcover",96,0)
. Q
"RTN","utcover",97,0)
S ROU="" F S ROU=$O(TESTS(ROU)) Q:ROU="" D
"RTN","utcover",98,0)
2016-04-11 18:26:37 -04:00
. W !!,"------------------- RUNNING ",ROU," -------------------",! ; JLI 160319 put CR after line so periods start on new line
2016-02-27 17:01:27 -05:00
"RTN","utcover",99,0)
. I ROU[U D @ROU
"RTN","utcover",100,0)
. I ROU'[U D @("EN^%ut("""_ROU_""")")
"RTN","utcover",101,0)
. D GETUTVAL^%ut(.UTDATA)
"RTN","utcover",102,0)
. Q
"RTN","utcover",103,0)
I $D(UTDATA) D LSTUTVAL^%ut(.UTDATA)
"RTN","utcover",104,0)
Q
"RTN","utcover",105,0)
;
"RTN","utcover",106,0)
COVERAGE(ROUNMSP,TESTROUS,XCLDROUS,RESLTLVL) ; run coverage analysis for multiple routines and entry points
"RTN","utcover",107,0)
; can be run from %ut using D COVERAGE^%ut(ROUNMSP,.TESTROUS,.XCLDROUS,RESLTLVL)
"RTN","utcover",108,0)
; input ROUNMSP - Namespace for routine(s) to be analyzed
"RTN","utcover",109,0)
; ROUNAME will result in only the routine ROUNAME being analyzed
"RTN","utcover",110,0)
; ROUN* will result in all routines beginning with ROUN being analyzed
"RTN","utcover",111,0)
; input TESTROUS - passed by reference - see TESTROUS description for JUSTTEST
"RTN","utcover",112,0)
; input XCLDROUS - passed by reference - routines passed in a manner similar to TESTROUS,
"RTN","utcover",113,0)
; but only the routine names, whether as arguments or a comma separated
"RTN","utcover",114,0)
; list of routines, will be excluded from the analysis of coverage. These
"RTN","utcover",115,0)
; would normally be names of routines which are only for unit tests, or
"RTN","utcover",116,0)
; others which should not be included in the analysis for some reason.
"RTN","utcover",117,0)
; input RESLTLVL - This value determines the amount of information to be generated for the
"RTN","utcover",118,0)
; analysis. A missing or null value will be considered to be level 1
"RTN","utcover",119,0)
; 1 - Listing of analysis only for routine overall
"RTN","utcover",120,0)
; 2 - Listing of analysis for routine overall and for each TAG
"RTN","utcover",121,0)
; 3 - Full analysis for each tag, and lists out those lines which were
"RTN","utcover",122,0)
; not executed during the analysis
"RTN","utcover",123,0)
;
"RTN","utcover",124,0)
N I,ROU,TYPE,XCLUDE
"RTN","utcover",125,0)
S RESLTLVL=$G(RESLTLVL,1)
"RTN","utcover",126,0)
I (RESLTLVL<1) S RESLTLVL=1
"RTN","utcover",127,0)
I (RESLTLVL>3) S RESLTLVL=3
"RTN","utcover",128,0)
M ^TMP("%utcover",$J,"TESTROUS")=TESTROUS ;
"RTN","utcover",129,0)
D COV^%ut1(ROUNMSP,"D COVENTRY^%utcover",-1)
"RTN","utcover",130,0)
K ^TMP("%utcover",$J,"TESTROUS")
"RTN","utcover",131,0)
S ROU="" F S ROU=$O(XCLDROUS(ROU)) Q:ROU="" D SETROUS(.XCLUDE,.XCLDROUS,ROU)
"RTN","utcover",132,0)
N TEXTGLOB S TEXTGLOB=$NA(^TMP("%utcover-text",$J)) K @TEXTGLOB
"RTN","utcover",133,0)
D LIST(.XCLUDE,RESLTLVL,TEXTGLOB)
"RTN","utcover",134,0)
F I=1:1 Q:'$D(@TEXTGLOB@(I)) W !,@TEXTGLOB@(I)
"RTN","utcover",135,0)
K @TEXTGLOB
"RTN","utcover",136,0)
Q
"RTN","utcover",137,0)
;
"RTN","utcover",138,0)
SETROUS(XCLUDE,XCLDROUS,ROU) ;
"RTN","utcover",139,0)
; XCLUDE - passed by reference - on return contains array with indices as routines to exclude from analysis
"RTN","utcover",140,0)
; XCLDROUS - passed by referenc - array may contain a comma-delimited list of routines to exclude from analysis
"RTN","utcover",141,0)
; ROU - input - if non-numberic is name of routine to exclude from analysis
"RTN","utcover",142,0)
N I,VAL
"RTN","utcover",143,0)
I ROU'=+ROU S XCLUDE(ROU)=""
"RTN","utcover",144,0)
F I=1:1 S VAL=$P(XCLDROUS(ROU),",",I) Q:VAL="" S XCLUDE(VAL)=""
"RTN","utcover",145,0)
Q
"RTN","utcover",146,0)
;
"RTN","utcover",147,0)
LIST(XCLDROUS,TYPE,TEXTGLOB,GLOB,LINNUM) ;
"RTN","utcover",148,0)
; ZEXCEPT: TYPE1 - NEWed and set below for recursion
"RTN","utcover",149,0)
; input - ROULIST - a comma separated list of routine names that will
"RTN","utcover",150,0)
; be used to identify desired routines. Any name
"RTN","utcover",151,0)
; that begins with one of the specified values will
"RTN","utcover",152,0)
; be included
"RTN","utcover",153,0)
; input - TYPE - value indicating amount of detail desired
"RTN","utcover",154,0)
; 3=full with listing of untouched lines
"RTN","utcover",155,0)
; 2=moderated with listing by tags
"RTN","utcover",156,0)
; 1=summary with listing by routine
"RTN","utcover",157,0)
; input - TEXTGLOB - closed global location in which text is returned
"RTN","utcover",158,0)
; input - GLOB - used for unit tests - specifies global to work with
"RTN","utcover",159,0)
; so that coverage data is not impacted
"RTN","utcover",160,0)
;
"RTN","utcover",161,0)
N CURRCOV,CURRLIN,LINCOV,LINE,LINTOT,ROULIST,ROUNAME,TAG,TOTCOV,TOTLIN,XVAL
"RTN","utcover",162,0)
;
"RTN","utcover",163,0)
I '$D(LINNUM) S LINNUM=0 ; initialize on first entry
"RTN","utcover",164,0)
I '$D(GLOB) N GLOB S GLOB=$NA(^TMP("%utCOVREPORT",$J))
"RTN","utcover",165,0)
D TRIMDATA(.XCLDROUS,GLOB) ; remove undesired routines from data
"RTN","utcover",166,0)
;
"RTN","utcover",167,0)
N JOB,NAME,BASE,TEXT,VAL
"RTN","utcover",168,0)
S TOTCOV=0,TOTLIN=0
"RTN","utcover",169,0)
; F NAME="%utCOVREPORT","%utCOVRESULT","%utCOVCOHORT","%utCOVCOHORTSAV" D
"RTN","utcover",170,0)
I TYPE>1 S ROUNAME="" F S ROUNAME=$O(@GLOB@(ROUNAME)) Q:ROUNAME="" S XVAL=^(ROUNAME) D
"RTN","utcover",171,0)
. S CURRCOV=$P(XVAL,"/"),CURRLIN=$P(XVAL,"/",2)
"RTN","utcover",172,0)
. S LINNUM=LINNUM+1,@TEXTGLOB@(LINNUM)="",LINNUM=LINNUM+1,@TEXTGLOB@(LINNUM)=""
"RTN","utcover",173,0)
. S TEXT="Routine "_ROUNAME_" ",TEXT=$E(TEXT,1,20)
"RTN","utcover",174,0)
. I CURRLIN>0 S VAL=" ("_$J((100*CURRCOV)/CURRLIN,"",2),VAL=$E(VAL,$L(VAL)-6,$L(VAL))
"RTN","utcover",175,0)
. S LINNUM=LINNUM+1,@TEXTGLOB@(LINNUM)=TEXT_" "_$S(CURRLIN>0:VAL_"%)",1:" ------ ")_" "_CURRCOV_" out of "_CURRLIN_" lines covered"
"RTN","utcover",176,0)
. I TYPE>1 S LINNUM=LINNUM+1,@TEXTGLOB@(LINNUM)=" - "_$S(TYPE=2:"Summary",1:"Detailed Breakdown")
"RTN","utcover",177,0)
. S TAG="" F S TAG=$O(@GLOB@(ROUNAME,TAG)) Q:TAG="" S XVAL=^(TAG) D
"RTN","utcover",178,0)
. . S LINCOV=$P(XVAL,"/"),LINTOT=$P(XVAL,"/",2)
"RTN","utcover",179,0)
. . S TEXT=" Tag "_TAG_"^"_ROUNAME_" ",TEXT=$E(TEXT,1,26)
"RTN","utcover",180,0)
. . I LINTOT>0 S VAL=" ("_$J((100*LINCOV)/LINTOT,"",2),VAL=$E(VAL,$L(VAL)-6,$L(VAL))
"RTN","utcover",181,0)
. . S LINNUM=LINNUM+1,@TEXTGLOB@(LINNUM)=TEXT_$S(LINTOT>0:VAL_"%)",1:" ------ ")_" "_LINCOV_" out of "_LINTOT_" lines covered"
"RTN","utcover",182,0)
. . I TYPE=2 Q
"RTN","utcover",183,0)
. . I LINCOV=LINTOT Q
"RTN","utcover",184,0)
. . S LINNUM=LINNUM+1,@TEXTGLOB@(LINNUM)=" the following is a list of the lines **NOT** covered"
"RTN","utcover",185,0)
. . S LINE="" F S LINE=$O(@GLOB@(ROUNAME,TAG,LINE)) Q:LINE="" D
"RTN","utcover",186,0)
. . . I LINE=0 S LINNUM=LINNUM+1,@TEXTGLOB@(LINNUM)=" "_TAG_" "_@GLOB@(ROUNAME,TAG,LINE) Q
"RTN","utcover",187,0)
. . . S LINNUM=LINNUM+1,@TEXTGLOB@(LINNUM)=" "_TAG_"+"_LINE_" "_@GLOB@(ROUNAME,TAG,LINE)
"RTN","utcover",188,0)
. . . Q
"RTN","utcover",189,0)
. . Q
"RTN","utcover",190,0)
. Q
"RTN","utcover",191,0)
; for type=3 generate a summary at bottom after detail
"RTN","utcover",192,0)
I TYPE=3 N TYPE1 S TYPE1=2 D LIST(.XCLDROUS,2,TEXTGLOB,GLOB,.LINNUM) K TYPE1
"RTN","utcover",193,0)
I TYPE=2,$G(TYPE1) Q ; CAME IN FROM ABOVE LINE
"RTN","utcover",194,0)
; summarize by just routine name
"RTN","utcover",195,0)
S LINNUM=LINNUM+1,@TEXTGLOB@(LINNUM)="",LINNUM=LINNUM+1,@TEXTGLOB@(LINNUM)=""
"RTN","utcover",196,0)
S ROUNAME="" F S ROUNAME=$O(@GLOB@(ROUNAME)) Q:ROUNAME="" S XVAL=^(ROUNAME) D
"RTN","utcover",197,0)
. S CURRCOV=$P(XVAL,"/"),CURRLIN=$P(XVAL,"/",2)
"RTN","utcover",198,0)
. S TOTCOV=TOTCOV+CURRCOV,TOTLIN=TOTLIN+CURRLIN
"RTN","utcover",199,0)
. I CURRLIN>0 S VAL=" ("_$J((100*CURRCOV)/CURRLIN,"",2),VAL=$E(VAL,$L(VAL)-6,$L(VAL))
"RTN","utcover",200,0)
. S LINNUM=LINNUM+1,@TEXTGLOB@(LINNUM)="Routine "_ROUNAME_" "_$S(CURRLIN>0:VAL_"%)",1:" ------ ")_" "_CURRCOV_" out of "_CURRLIN_" lines covered"
"RTN","utcover",201,0)
S LINNUM=LINNUM+1,@TEXTGLOB@(LINNUM)="",LINNUM=LINNUM+1,@TEXTGLOB@(LINNUM)=""
"RTN","utcover",202,0)
S LINNUM=LINNUM+1,@TEXTGLOB@(LINNUM)="Overall Analysis "_TOTCOV_" out of "_TOTLIN_" lines covered"_$S(TOTLIN>0:" ("_$P((100*TOTCOV)/TOTLIN,".")_"% coverage)",1:"")
"RTN","utcover",203,0)
Q
"RTN","utcover",204,0)
;
"RTN","utcover",205,0)
TRIMDATA(ROULIST,GLOB) ;
"RTN","utcover",206,0)
N ROUNAME
"RTN","utcover",207,0)
S ROUNAME="" F S ROUNAME=$O(ROULIST(ROUNAME)) Q:ROUNAME="" K @GLOB@(ROUNAME)
"RTN","utcover",208,0)
Q
"RTN","utcover",209,0)
;
"RTN","utt1")
2016-04-11 18:26:37 -04:00
0^4^B41233993
2016-02-27 17:01:27 -05:00
"RTN","utt1",1,0)
2016-04-11 18:26:37 -04:00
%utt1 ; VEN/SMH-JLI - Testing routines for M-Unit;04/08/16 20:38
2016-02-27 17:01:27 -05:00
"RTN","utt1",2,0)
2016-04-11 18:26:37 -04:00
;;1.4;MASH UTILITIES;;APR 11, 2016;Build 3
2016-02-27 17:01:27 -05:00
"RTN","utt1",3,0)
2016-04-11 18:26:37 -04:00
; Submitted to OSEHRA Apr 11, 2016 by Joel L. Ivey under the Apache 2 license (http://www.apache.org/licenses/LICENSE-2.0.html)
2016-02-27 17:01:27 -05:00
"RTN","utt1",4,0)
; Original routine authored by Sam H. Habiel 07/2013-04/2014
"RTN","utt1",5,0)
; Additions and modifications made by Joel L. Ivey 05/2014-12/2015
"RTN","utt1",6,0)
2016-04-11 18:26:37 -04:00
; Modifications made by Sam H. Habiel 02/2016
2016-02-27 17:01:27 -05:00
"RTN","utt1",7,0)
;
2016-04-11 18:26:37 -04:00
"RTN","utt1",8,0)
; THIS ROUTINE IS THE UNIFIED UNIT TESTER FOR ALL OF M-UNIT.
2016-02-27 17:01:27 -05:00
"RTN","utt1",9,0)
;
2016-04-11 18:26:37 -04:00
"RTN","utt1",10,0)
; Dear Users,
2016-02-27 17:01:27 -05:00
"RTN","utt1",11,0)
2016-04-11 18:26:37 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","utt1",12,0)
2016-04-11 18:26:37 -04:00
; I know about about the irony of a test suite for the testing suite,
2016-02-27 17:01:27 -05:00
"RTN","utt1",13,0)
2016-04-11 18:26:37 -04:00
; so stop snikering. Aside from that, it's actually going to be hard.
2016-02-27 17:01:27 -05:00
"RTN","utt1",14,0)
;
2016-04-11 18:26:37 -04:00
"RTN","utt1",15,0)
; Truly yours,
2016-02-27 17:01:27 -05:00
"RTN","utt1",16,0)
;
2016-04-11 18:26:37 -04:00
"RTN","utt1",17,0)
; Sam H
2016-02-27 17:01:27 -05:00
"RTN","utt1",18,0)
2016-04-11 18:26:37 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","utt1",19,0)
2016-04-11 18:26:37 -04:00
D EN^%ut($T(+0),1) ; Run tests here, be verbose.
2016-02-27 17:01:27 -05:00
"RTN","utt1",20,0)
2016-04-11 18:26:37 -04:00
N % S $P(%,"-",80)="-"
2015-03-25 15:05:25 -04:00
"RTN","utt1",21,0)
2016-04-11 18:26:37 -04:00
W !!,%,!,%,!,%,!,%,!!
2015-03-25 15:05:25 -04:00
"RTN","utt1",22,0)
2016-04-11 18:26:37 -04:00
K %
2015-03-25 15:05:25 -04:00
"RTN","utt1",23,0)
2016-04-11 18:26:37 -04:00
D EN^%ut($T(+0),2) ; Run tests here, be verbose with timings for each piece of code.
2015-03-25 15:05:25 -04:00
"RTN","utt1",24,0)
2016-04-11 18:26:37 -04:00
QUIT
2015-03-25 15:05:25 -04:00
"RTN","utt1",25,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt1",26,0)
2016-04-11 18:26:37 -04:00
STARTUP ; M-Unit Start-Up - This runs before anything else.
2015-03-25 15:05:25 -04:00
"RTN","utt1",27,0)
2016-04-11 18:26:37 -04:00
; ZEXCEPT: KBANCOUNT - created here, removed in SHUTDOWN
2015-03-25 15:05:25 -04:00
"RTN","utt1",28,0)
2016-04-11 18:26:37 -04:00
S ^TMP($J,"%ut","STARTUP")=""
2015-03-25 15:05:25 -04:00
"RTN","utt1",29,0)
2016-04-11 18:26:37 -04:00
S KBANCOUNT=1
2015-03-25 15:05:25 -04:00
"RTN","utt1",30,0)
2016-04-11 18:26:37 -04:00
QUIT
2015-03-25 15:05:25 -04:00
"RTN","utt1",31,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt1",32,0)
2016-04-11 18:26:37 -04:00
SHUTDOWN ; M-Unit Shutdown - This runs after everything else is done.
2015-03-25 15:05:25 -04:00
"RTN","utt1",33,0)
2016-04-11 18:26:37 -04:00
; ZEXCEPT: KBANCOUNT - created in STARTUP, removed here
2015-03-25 15:05:25 -04:00
"RTN","utt1",34,0)
2016-04-11 18:26:37 -04:00
K ^TMP($J,"%ut","STARTUP")
2015-03-25 15:05:25 -04:00
"RTN","utt1",35,0)
2016-04-11 18:26:37 -04:00
K KBANCOUNT
2015-03-25 15:05:25 -04:00
"RTN","utt1",36,0)
2016-04-11 18:26:37 -04:00
QUIT
2015-03-25 15:05:25 -04:00
"RTN","utt1",37,0)
2016-02-27 17:01:27 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt1",38,0)
;
"RTN","utt1",39,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt1",40,0)
2016-04-11 18:26:37 -04:00
SETUP ; This runs before every test.
2015-03-25 15:05:25 -04:00
"RTN","utt1",41,0)
2016-04-11 18:26:37 -04:00
; ZEXCEPT: KBANCOUNT - created in STARTUP, removed in SHUTDOWN
2015-03-25 15:05:25 -04:00
"RTN","utt1",42,0)
2016-04-11 18:26:37 -04:00
S KBANCOUNT=KBANCOUNT+1
2016-02-27 17:01:27 -05:00
"RTN","utt1",43,0)
2016-04-11 18:26:37 -04:00
QUIT
2016-02-27 17:01:27 -05:00
"RTN","utt1",44,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt1",45,0)
2016-04-11 18:26:37 -04:00
TEARDOWN ; This runs after every test
2015-03-25 15:05:25 -04:00
"RTN","utt1",46,0)
2016-04-11 18:26:37 -04:00
; ZEXCEPT: KBANCOUNT - created in STARTUP, removed in SHUTDOWN
2015-03-25 15:05:25 -04:00
"RTN","utt1",47,0)
2016-04-11 18:26:37 -04:00
S KBANCOUNT=KBANCOUNT-1
2015-03-25 15:05:25 -04:00
"RTN","utt1",48,0)
2016-04-11 18:26:37 -04:00
QUIT
2015-03-25 15:05:25 -04:00
"RTN","utt1",49,0)
2016-02-27 17:01:27 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt1",50,0)
2016-02-27 17:01:27 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt1",51,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt1",52,0)
2016-04-11 18:26:37 -04:00
T1 ; @TEST - Make sure Start-up Ran
2015-03-25 15:05:25 -04:00
"RTN","utt1",53,0)
2016-04-11 18:26:37 -04:00
D CHKTF($D(^TMP($J,"%ut","STARTUP")),"Start-up node on ^TMP must exist")
2015-03-25 15:05:25 -04:00
"RTN","utt1",54,0)
2016-04-11 18:26:37 -04:00
QUIT
2015-03-25 15:05:25 -04:00
"RTN","utt1",55,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt1",56,0)
2016-04-11 18:26:37 -04:00
T2 ; @TEST - Make sure Set-up runs
2015-03-25 15:05:25 -04:00
"RTN","utt1",57,0)
2016-04-11 18:26:37 -04:00
; ZEXCEPT: KBANCOUNT - created in STARTUP, removed in SHUTDOWN
2015-03-25 15:05:25 -04:00
"RTN","utt1",58,0)
2016-04-11 18:26:37 -04:00
D CHKEQ(KBANCOUNT,2,"KBANCount not incremented properly at SETUP")
2015-03-25 15:05:25 -04:00
"RTN","utt1",59,0)
2016-04-11 18:26:37 -04:00
QUIT
2015-03-25 15:05:25 -04:00
"RTN","utt1",60,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt1",61,0)
2016-04-11 18:26:37 -04:00
T3 ; @TEST - Make sure Teardown runs
2015-03-25 15:05:25 -04:00
"RTN","utt1",62,0)
2016-04-11 18:26:37 -04:00
; ZEXCEPT: KBANCOUNT - created in STARTUP, removed in SHUTDOWN
2015-03-25 15:05:25 -04:00
"RTN","utt1",63,0)
2016-04-11 18:26:37 -04:00
D CHKEQ(KBANCOUNT,2,"KBANCount not decremented properly at TEARDOWN")
2015-03-25 15:05:25 -04:00
"RTN","utt1",64,0)
2016-04-11 18:26:37 -04:00
QUIT
2015-03-25 15:05:25 -04:00
"RTN","utt1",65,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt1",66,0)
2016-04-11 18:26:37 -04:00
T4 ; Specified in XTMTAG
2015-03-25 15:05:25 -04:00
"RTN","utt1",67,0)
2016-04-11 18:26:37 -04:00
; 140731 JLI - note that this will fail when run from the GUI runner, since it calls each tag separately
2015-03-25 15:05:25 -04:00
"RTN","utt1",68,0)
2016-04-11 18:26:37 -04:00
; ZEXCEPT: %utETRY - newed and created in EN1^%ut
2015-03-25 15:05:25 -04:00
"RTN","utt1",69,0)
2016-04-11 18:26:37 -04:00
; ZEXCEPT: %utGUI -- CONDITIONALLY DEFINED BY GUINEXT^%ut
2015-03-25 15:05:25 -04:00
"RTN","utt1",70,0)
2016-04-11 18:26:37 -04:00
I $G(%utGUI) D CHKEQ(%utETRY,"T4","T4 should be the value for %utETRY in the GUI Runner")
2015-03-25 15:05:25 -04:00
"RTN","utt1",71,0)
2016-04-11 18:26:37 -04:00
I '$G(%utGUI) D CHKEQ(%utETRY(4),"T4","T4 should be the collected as the fourth entry in %utETRY")
2016-02-27 17:01:27 -05:00
"RTN","utt1",72,0)
2016-04-11 18:26:37 -04:00
QUIT
2016-02-27 17:01:27 -05:00
"RTN","utt1",73,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt1",74,0)
2016-04-11 18:26:37 -04:00
T5 ; ditto
2015-03-25 15:05:25 -04:00
"RTN","utt1",75,0)
2016-04-11 18:26:37 -04:00
; ZEXCEPT: %ut - NEWed and created in EN1^%ut
2015-03-25 15:05:25 -04:00
"RTN","utt1",76,0)
2016-04-11 18:26:37 -04:00
D CHKTF(0,"This is an intentional failure.")
2015-03-25 15:05:25 -04:00
"RTN","utt1",77,0)
2016-04-11 18:26:37 -04:00
D CHKEQ(%ut("FAIL"),1,"By this point, we should have failed one test")
2015-03-25 15:05:25 -04:00
"RTN","utt1",78,0)
2016-04-11 18:26:37 -04:00
D FAIL^%ut("Intentionally throwing a failure")
2015-03-25 15:05:25 -04:00
"RTN","utt1",79,0)
2016-04-11 18:26:37 -04:00
D CHKEQ(%ut("FAIL"),2,"By this point, we should have failed two tests")
2015-03-25 15:05:25 -04:00
"RTN","utt1",80,0)
2016-04-11 18:26:37 -04:00
; S %ut("FAIL")=0 ; Okay... Boy's and Girls... as the developer I can do that.
2015-03-25 15:05:25 -04:00
"RTN","utt1",81,0)
2016-04-11 18:26:37 -04:00
QUIT
2015-03-25 15:05:25 -04:00
"RTN","utt1",82,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt1",83,0)
2016-04-11 18:26:37 -04:00
T6 ; ditto
2015-03-25 15:05:25 -04:00
"RTN","utt1",84,0)
2016-04-11 18:26:37 -04:00
; ZEXCEPT: %ut - NEWed and created in EN1^%ut
2015-03-25 15:05:25 -04:00
"RTN","utt1",85,0)
2016-04-11 18:26:37 -04:00
N TESTCOUNT S TESTCOUNT=%ut("CHK")
2015-03-25 15:05:25 -04:00
"RTN","utt1",86,0)
2016-02-27 17:01:27 -05:00
D SUCCEED^%ut
2015-03-25 15:05:25 -04:00
"RTN","utt1",87,0)
2016-04-11 18:26:37 -04:00
D SUCCEED^%ut
2015-03-25 15:05:25 -04:00
"RTN","utt1",88,0)
2016-04-11 18:26:37 -04:00
D CHKEQ(%ut("CHK"),TESTCOUNT+2,"Succeed should increment the number of tests")
2015-03-25 15:05:25 -04:00
"RTN","utt1",89,0)
2016-04-11 18:26:37 -04:00
QUIT
2016-02-27 17:01:27 -05:00
"RTN","utt1",90,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt1",91,0)
2016-04-11 18:26:37 -04:00
T7 ; Make sure we write to principal even though we are on another device
2015-03-25 15:05:25 -04:00
"RTN","utt1",92,0)
2016-04-11 18:26:37 -04:00
; This is a rather difficult test to carry out for GT.M and Cache...
2015-03-25 15:05:25 -04:00
"RTN","utt1",93,0)
2016-04-11 18:26:37 -04:00
; ZEXCEPT: GetEnviron,Util,delete,newversion,readonly - not really variables
2015-03-25 15:05:25 -04:00
"RTN","utt1",94,0)
2016-04-11 18:26:37 -04:00
N D
2015-03-25 15:05:25 -04:00
"RTN","utt1",95,0)
2016-04-11 18:26:37 -04:00
I +$SY=47 S D="/tmp/test.txt" ; All GT.M ; VMS not supported.
2015-03-25 15:05:25 -04:00
"RTN","utt1",96,0)
2016-04-11 18:26:37 -04:00
I +$SY=0 D ; All Cache
2015-03-25 15:05:25 -04:00
"RTN","utt1",97,0)
2016-04-11 18:26:37 -04:00
. I $ZVERSION(1)=2 S D=$SYSTEM.Util.GetEnviron("temp")_"\test.txt" I 1 ; Windows
2015-03-25 15:05:25 -04:00
"RTN","utt1",98,0)
2016-04-11 18:26:37 -04:00
. E S D="/tmp/test.txt" ; not windows; VMS not supported.
2015-03-25 15:05:25 -04:00
"RTN","utt1",99,0)
2016-04-11 18:26:37 -04:00
I +$SY=0 O D:"NWS" ; Cache new file
2015-03-25 15:05:25 -04:00
"RTN","utt1",100,0)
2016-04-11 18:26:37 -04:00
I +$SY=47 O D:(newversion) ; GT.M new file
2015-03-25 15:05:25 -04:00
"RTN","utt1",101,0)
2016-04-11 18:26:37 -04:00
U D
2015-03-25 15:05:25 -04:00
"RTN","utt1",102,0)
2016-02-27 17:01:27 -05:00
WRITE "HELLO",!
2015-03-25 15:05:25 -04:00
"RTN","utt1",103,0)
2016-04-11 18:26:37 -04:00
WRITE "HELLO",!
2015-03-25 15:05:25 -04:00
"RTN","utt1",104,0)
2016-04-11 18:26:37 -04:00
C D
2015-03-25 15:05:25 -04:00
"RTN","utt1",105,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt1",106,0)
2016-04-11 18:26:37 -04:00
; Now open back the file, and read the hello, but open in read only so
2015-03-25 15:05:25 -04:00
"RTN","utt1",107,0)
2016-04-11 18:26:37 -04:00
; M-Unit will error out if it will write something out there.
2015-03-25 15:05:25 -04:00
"RTN","utt1",108,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt1",109,0)
2016-04-11 18:26:37 -04:00
I +$SY=0 O D:"R"
2015-03-25 15:05:25 -04:00
"RTN","utt1",110,0)
2016-04-11 18:26:37 -04:00
I +$SY=47 O D:(readonly)
2015-03-25 15:05:25 -04:00
"RTN","utt1",111,0)
2016-04-11 18:26:37 -04:00
U D
2015-03-25 15:05:25 -04:00
"RTN","utt1",112,0)
2016-04-11 18:26:37 -04:00
N X READ X:1
2015-03-25 15:05:25 -04:00
"RTN","utt1",113,0)
2016-04-11 18:26:37 -04:00
D CHKTF(X="HELLO") ; This should write to the screen the dot not to the file.
2015-03-25 15:05:25 -04:00
"RTN","utt1",114,0)
2016-04-11 18:26:37 -04:00
D CHKTF(($$LO($IO)=$$LO(D)),"IO device didn't get reset back") ; $$LO is b/c of a bug in Cache/Windows. $IO is not the same cas D.
2015-03-25 15:05:25 -04:00
"RTN","utt1",115,0)
2016-04-11 18:26:37 -04:00
I +$SY=0 C D:"D"
2015-03-25 15:05:25 -04:00
"RTN","utt1",116,0)
2016-04-11 18:26:37 -04:00
I +$SY=47 C D:(delete)
2015-03-25 15:05:25 -04:00
"RTN","utt1",117,0)
2016-04-11 18:26:37 -04:00
U $P
2015-03-25 15:05:25 -04:00
"RTN","utt1",118,0)
2016-04-11 18:26:37 -04:00
S IO=$IO
2015-03-25 15:05:25 -04:00
"RTN","utt1",119,0)
2016-04-11 18:26:37 -04:00
QUIT
2015-03-25 15:05:25 -04:00
"RTN","utt1",120,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt1",121,0)
2016-04-11 18:26:37 -04:00
; At the moment T8^%utt1 throws a fail, with no message
2015-03-25 15:05:25 -04:00
"RTN","utt1",122,0)
2016-04-11 18:26:37 -04:00
; in the GUI runner. For some reason, both X and Y
2015-03-25 15:05:25 -04:00
"RTN","utt1",123,0)
2016-04-11 18:26:37 -04:00
; variables are returned as null strings, while in the
2015-03-25 15:05:25 -04:00
"RTN","utt1",124,0)
2016-04-11 18:26:37 -04:00
; command line runner, Y has a value containing the
2015-03-25 15:05:25 -04:00
"RTN","utt1",125,0)
2016-04-11 18:26:37 -04:00
; word being sought
2015-03-25 15:05:25 -04:00
"RTN","utt1",126,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt1",127,0)
2016-04-11 18:26:37 -04:00
T8 ; If IO starts with another device, write to that device as if it's the pricipal device
2015-03-25 15:05:25 -04:00
"RTN","utt1",128,0)
2016-04-11 18:26:37 -04:00
; ZEXCEPT: GetEnviron,Util,delete,newversion,readonly - not really variables
2015-03-25 15:05:25 -04:00
"RTN","utt1",129,0)
2016-04-11 18:26:37 -04:00
N D
2015-03-25 15:05:25 -04:00
"RTN","utt1",130,0)
2016-04-11 18:26:37 -04:00
I +$SY=47 S D="/tmp/test.txt" ; All GT.M ; VMS not supported.
2015-03-25 15:05:25 -04:00
"RTN","utt1",131,0)
2016-04-11 18:26:37 -04:00
I +$SY=0 D ; All Cache
2015-03-25 15:05:25 -04:00
"RTN","utt1",132,0)
2016-04-11 18:26:37 -04:00
. I $ZVERSION(1)=2 S D=$SYSTEM.Util.GetEnviron("temp")_"\test.txt" I 1 ; Windows
2015-03-25 15:05:25 -04:00
"RTN","utt1",133,0)
2016-04-11 18:26:37 -04:00
. E S D="/tmp/test.txt" ; not windows; VMS not supported.
2015-03-25 15:05:25 -04:00
"RTN","utt1",134,0)
2016-04-11 18:26:37 -04:00
I +$SY=0 O D:"NWS" ; Cache new file
2015-03-25 15:05:25 -04:00
"RTN","utt1",135,0)
2016-04-11 18:26:37 -04:00
I +$SY=47 O D:(newversion) ; GT.M new file
2015-03-25 15:05:25 -04:00
"RTN","utt1",136,0)
2016-04-11 18:26:37 -04:00
S IO=D
2015-03-25 15:05:25 -04:00
"RTN","utt1",137,0)
2016-04-11 18:26:37 -04:00
U D
2015-03-25 15:05:25 -04:00
"RTN","utt1",138,0)
2016-04-11 18:26:37 -04:00
D ^%utt4 ; Run some Unit Tests
2015-03-25 15:05:25 -04:00
"RTN","utt1",139,0)
2016-04-11 18:26:37 -04:00
C D
2015-03-25 15:05:25 -04:00
"RTN","utt1",140,0)
2016-04-11 18:26:37 -04:00
I +$SY=0 O D:"R" ; Cache read only
2015-03-25 15:05:25 -04:00
"RTN","utt1",141,0)
2016-04-11 18:26:37 -04:00
I +$SY=47 O D:(readonly) ; GT.M read only
2015-03-25 15:05:25 -04:00
"RTN","utt1",142,0)
2016-04-11 18:26:37 -04:00
U D
2015-03-25 15:05:25 -04:00
"RTN","utt1",143,0)
2016-04-11 18:26:37 -04:00
N X,Y,Z R X:1,Y:1,Z:1
2015-03-25 15:05:25 -04:00
"RTN","utt1",144,0)
2016-04-11 18:26:37 -04:00
I +$SY=0 C D:"D"
2015-03-25 15:05:25 -04:00
"RTN","utt1",145,0)
2016-04-11 18:26:37 -04:00
I +$SY=47 C D:(delete)
2015-03-25 15:05:25 -04:00
"RTN","utt1",146,0)
2016-04-11 18:26:37 -04:00
;D CHKTF(Y["MAIN") ; JLI 140829 commented out, gui doesn't run verbose
2015-03-25 15:05:25 -04:00
"RTN","utt1",147,0)
2016-04-11 18:26:37 -04:00
D CHKTF((Y["MAIN")!(Z["T2 - Test 2"),"Write to system during test didn't work")
2015-03-25 15:05:25 -04:00
"RTN","utt1",148,0)
2016-04-11 18:26:37 -04:00
S IO=$P
2015-03-25 15:05:25 -04:00
"RTN","utt1",149,0)
2016-04-11 18:26:37 -04:00
QUIT
2015-03-25 15:05:25 -04:00
"RTN","utt1",150,0)
2016-04-11 18:26:37 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","utt1",151,0)
2016-04-11 18:26:37 -04:00
COVRPTGL ;
2016-02-27 17:01:27 -05:00
"RTN","utt1",152,0)
2016-04-11 18:26:37 -04:00
N GL1,GL2,GL3,GL4
2016-02-27 17:01:27 -05:00
"RTN","utt1",153,0)
2016-04-11 18:26:37 -04:00
S GL1=$NA(^TMP("%utCOVCOHORTSAVx",$J)) K @GL1
2016-02-27 17:01:27 -05:00
"RTN","utt1",154,0)
2016-04-11 18:26:37 -04:00
S GL2=$NA(^TMP("%utCOVCOHORTx",$J)) K @GL2
2016-02-27 17:01:27 -05:00
"RTN","utt1",155,0)
2016-04-11 18:26:37 -04:00
S GL3=$NA(^TMP("%utCOVRESULTx",$J)) K @GL3
2016-02-27 17:01:27 -05:00
"RTN","utt1",156,0)
2016-04-11 18:26:37 -04:00
S GL4=$NA(^TMP("%utCOVREPORTx",$J)) K @GL4
2016-02-27 17:01:27 -05:00
"RTN","utt1",157,0)
2016-04-11 18:26:37 -04:00
D SETGLOBS^%uttcovr(GL1,GL2)
2016-02-27 17:01:27 -05:00
"RTN","utt1",158,0)
2016-04-11 18:26:37 -04:00
D COVRPTGL^%ut1(GL1,GL2,GL3,GL4)
2016-02-27 17:01:27 -05:00
"RTN","utt1",159,0)
2016-04-11 18:26:37 -04:00
D CHKEQ($G(@GL4@("%ut1","ACTLINES")),"0/9","Wrong number of lines covered f>>or ACTLINES")
2016-02-27 17:01:27 -05:00
"RTN","utt1",160,0)
2016-04-11 18:26:37 -04:00
D CHKEQ($G(@GL4@("%ut1","ACTLINES",9))," QUIT CNT","Wrong result for last l>>ine not covered for ACTLINES")
2016-02-27 17:01:27 -05:00
"RTN","utt1",161,0)
2016-04-11 18:26:37 -04:00
D CHKEQ($G(@GL4@("%ut1","CHEKTEST")),"8/10","Wrong number of lines covered >>for CHEKTEST")
2016-02-27 17:01:27 -05:00
"RTN","utt1",162,0)
2016-04-11 18:26:37 -04:00
D CHKEQ($G(@GL4@("%ut1","CHEKTEST",39))," . Q","Wrong result for last line >>not covered for CHEKTEST")
2016-02-27 17:01:27 -05:00
"RTN","utt1",163,0)
2016-04-11 18:26:37 -04:00
K @GL1,@GL2,@GL3,@GL4
2016-02-27 17:01:27 -05:00
"RTN","utt1",164,0)
2016-04-11 18:26:37 -04:00
Q
2016-02-27 17:01:27 -05:00
"RTN","utt1",165,0)
2016-04-11 18:26:37 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","utt1",166,0)
2016-04-11 18:26:37 -04:00
LO(X) Q $TR(X,"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz")
2016-02-27 17:01:27 -05:00
"RTN","utt1",167,0)
2016-04-11 18:26:37 -04:00
; Shortcut methods for M-Unit
2016-02-27 17:01:27 -05:00
"RTN","utt1",168,0)
2016-04-11 18:26:37 -04:00
CHKTF(X,Y) ;
2016-02-27 17:01:27 -05:00
"RTN","utt1",169,0)
2016-04-11 18:26:37 -04:00
D CHKTF^%ut(X,$G(Y))
2016-02-27 17:01:27 -05:00
"RTN","utt1",170,0)
2016-04-11 18:26:37 -04:00
QUIT
2016-02-27 17:01:27 -05:00
"RTN","utt1",171,0)
2016-04-11 18:26:37 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","utt1",172,0)
2016-04-11 18:26:37 -04:00
CHKEQ(A,B,M) ;
2016-02-27 17:01:27 -05:00
"RTN","utt1",173,0)
2016-04-11 18:26:37 -04:00
D CHKEQ^%ut(A,B,$G(M))
2016-02-27 17:01:27 -05:00
"RTN","utt1",174,0)
2016-04-11 18:26:37 -04:00
QUIT
2016-02-27 17:01:27 -05:00
"RTN","utt1",175,0)
2016-04-11 18:26:37 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","utt1",176,0)
2016-04-11 18:26:37 -04:00
XTENT ; Entry points
2016-02-27 17:01:27 -05:00
"RTN","utt1",177,0)
2016-04-11 18:26:37 -04:00
;;T4;Entry point using XTMENT
2016-02-27 17:01:27 -05:00
"RTN","utt1",178,0)
2016-04-11 18:26:37 -04:00
;;T5;Error count check
2016-02-27 17:01:27 -05:00
"RTN","utt1",179,0)
2016-04-11 18:26:37 -04:00
;;T6;Succeed Entry Point
2016-02-27 17:01:27 -05:00
"RTN","utt1",180,0)
2016-04-11 18:26:37 -04:00
;;T7;Make sure we write to principal even though we are on another device
2016-02-27 17:01:27 -05:00
"RTN","utt1",181,0)
2016-04-11 18:26:37 -04:00
;;T8;If IO starts with another device, write to that device as if it's the pricipal device
2016-02-27 17:01:27 -05:00
"RTN","utt1",182,0)
2016-04-11 18:26:37 -04:00
;;COVRPTGL;coverage report returning global
2016-02-27 17:01:27 -05:00
"RTN","utt1",183,0)
2016-04-11 18:26:37 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","utt1",184,0)
2016-04-11 18:26:37 -04:00
XTROU ; Routines containing additional tests
2016-02-27 17:01:27 -05:00
"RTN","utt1",185,0)
2016-04-11 18:26:37 -04:00
;;%utt2; old %utNITU
2016-02-27 17:01:27 -05:00
"RTN","utt1",186,0)
2016-04-11 18:26:37 -04:00
;;%utt4; old %utNITW
2016-02-27 17:01:27 -05:00
"RTN","utt1",187,0)
2016-04-11 18:26:37 -04:00
;;%utt5;
2016-02-27 17:01:27 -05:00
"RTN","utt1",188,0)
2016-04-11 18:26:37 -04:00
;;%utt6;
"RTN","utt1",189,0)
2016-02-27 17:01:27 -05:00
;;%uttcovr;coverage related tests
2015-03-25 15:05:25 -04:00
"RTN","utt2")
2016-02-27 17:01:27 -05:00
0^5^B501728
2015-03-25 15:05:25 -04:00
"RTN","utt2",1,0)
2016-04-11 18:26:37 -04:00
%utt2 ; VEN/SMH - Bad Ass Continuation of Unit Tests;04/08/16 20:38
2015-03-25 15:05:25 -04:00
"RTN","utt2",2,0)
2016-04-11 18:26:37 -04:00
;;1.4;MASH UTILITIES;;APR 11, 2016;Build 3
2015-03-25 15:05:25 -04:00
"RTN","utt2",3,0)
2016-04-11 18:26:37 -04:00
; Submitted to OSEHRA Apr 11, 2016 by Joel L. Ivey under the Apache 2 license (http://www.apache.org/licenses/LICENSE-2.0.html)
2015-03-25 15:05:25 -04:00
"RTN","utt2",4,0)
2016-02-27 17:01:27 -05:00
; Original routine authored by Sam H. Habiel
2015-03-25 15:05:25 -04:00
"RTN","utt2",5,0)
2016-02-27 17:01:27 -05:00
; Modifications made by Joel L. Ivey 05/2014-09/2015
2015-03-25 15:05:25 -04:00
"RTN","utt2",6,0)
2016-02-27 17:01:27 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt2",7,0)
2016-02-27 17:01:27 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt2",8,0)
2016-02-27 17:01:27 -05:00
T11 ; @TEST An @TEST Entry point in Another Routine invoked through XTROU offsets
2015-03-25 15:05:25 -04:00
"RTN","utt2",9,0)
D CHKTF^%ut(1)
"RTN","utt2",10,0)
QUIT
"RTN","utt2",11,0)
2016-02-27 17:01:27 -05:00
T12 ;
2015-03-25 15:05:25 -04:00
"RTN","utt2",12,0)
2016-02-27 17:01:27 -05:00
D CHKTF^%ut(1)
"RTN","utt2",13,0)
QUIT
"RTN","utt2",14,0)
XTENT ;
"RTN","utt2",15,0)
2015-03-25 15:05:25 -04:00
;;T12;An XTENT offset entry point in Another Routine invoked through XTROU offsets
"RTN","utt3")
2016-02-27 17:01:27 -05:00
0^6^B1628564
2015-03-25 15:05:25 -04:00
"RTN","utt3",1,0)
2016-04-11 18:26:37 -04:00
%utt3 ; VEN/SMH-JLI - Unit Tests Coverage Tests;04/08/16 20:38
2015-03-25 15:05:25 -04:00
"RTN","utt3",2,0)
2016-04-11 18:26:37 -04:00
;;1.4;MASH UTILITIES;;APR 11, 2016;Build 3
2015-03-25 15:05:25 -04:00
"RTN","utt3",3,0)
2016-04-11 18:26:37 -04:00
; Submitted to OSEHRA Apr 11, 2016 by Joel L. Ivey under the Apache 2 license (http://www.apache.org/licenses/LICENSE-2.0.html)
2015-03-25 15:05:25 -04:00
"RTN","utt3",4,0)
2016-02-27 17:01:27 -05:00
; Original routine authored by Sam H. Habiel 07/2013-04/2014
2015-03-25 15:05:25 -04:00
"RTN","utt3",5,0)
2016-02-27 17:01:27 -05:00
; Additions and modifications made by Joel L. Ivey 05/2014-08/2015
2015-03-25 15:05:25 -04:00
"RTN","utt3",6,0)
2016-02-27 17:01:27 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt3",7,0)
2016-02-27 17:01:27 -05:00
XTMUNITV ; VEN/SMH - Unit Tests Coverage Tests;2014-04-16 7:14 PM
2015-03-25 15:05:25 -04:00
"RTN","utt3",8,0)
;
"RTN","utt3",9,0)
2016-02-27 17:01:27 -05:00
; *** BE VERY CAREFUL IN MODIFIYING THIS ROUTINE ***
2015-03-25 15:05:25 -04:00
"RTN","utt3",10,0)
2016-02-27 17:01:27 -05:00
; *** THE UNIT TEST COUNTS ACTIVE AND INACTIVE LINES OF CODE ***
2015-03-25 15:05:25 -04:00
"RTN","utt3",11,0)
2016-02-27 17:01:27 -05:00
; *** IF YOU MODIFY THIS, MODIFY XTMUNITW AS WELL ***
2015-03-25 15:05:25 -04:00
"RTN","utt3",12,0)
;
2016-02-27 17:01:27 -05:00
"RTN","utt3",13,0)
; Coverage tester in %utt4
2015-03-25 15:05:25 -04:00
"RTN","utt3",14,0)
2016-02-27 17:01:27 -05:00
; 20 Lines of code
2015-03-25 15:05:25 -04:00
"RTN","utt3",15,0)
2016-02-27 17:01:27 -05:00
; 5 do not run as they are dead code
2015-03-25 15:05:25 -04:00
"RTN","utt3",16,0)
2016-02-27 17:01:27 -05:00
; Expected Coverage: 15/20 = 75%
2015-03-25 15:05:25 -04:00
"RTN","utt3",17,0)
;
2016-02-27 17:01:27 -05:00
"RTN","utt3",18,0)
STARTUP ; Doesn't count
2015-03-25 15:05:25 -04:00
"RTN","utt3",19,0)
2016-02-27 17:01:27 -05:00
N X ; Counts
2015-03-25 15:05:25 -04:00
"RTN","utt3",20,0)
2016-02-27 17:01:27 -05:00
S X=1 ; Counts
2015-03-25 15:05:25 -04:00
"RTN","utt3",21,0)
2016-02-27 17:01:27 -05:00
QUIT ; Counts
2015-03-25 15:05:25 -04:00
"RTN","utt3",22,0)
;
"RTN","utt3",23,0)
2016-02-27 17:01:27 -05:00
SHUTDOWN K X,Y QUIT ; Counts; ZEXCEPT: X,Y
2015-03-25 15:05:25 -04:00
"RTN","utt3",24,0)
2016-02-27 17:01:27 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt3",25,0)
2016-02-27 17:01:27 -05:00
SETUP S Y=$G(Y)+1 QUIT ; Counts
2015-03-25 15:05:25 -04:00
"RTN","utt3",26,0)
;
"RTN","utt3",27,0)
2016-02-27 17:01:27 -05:00
TEARDOWN ; Doesn't count
2015-03-25 15:05:25 -04:00
"RTN","utt3",28,0)
2016-02-27 17:01:27 -05:00
S Y=Y-1 ; Counts
2015-03-25 15:05:25 -04:00
"RTN","utt3",29,0)
2016-02-27 17:01:27 -05:00
QUIT ; Counts
2015-03-25 15:05:25 -04:00
"RTN","utt3",30,0)
;
"RTN","utt3",31,0)
2016-02-27 17:01:27 -05:00
T1 ; @TEST Test 1
2015-03-25 15:05:25 -04:00
"RTN","utt3",32,0)
2016-02-27 17:01:27 -05:00
D CHKTF^%ut($D(Y)) ; Counts
2015-03-25 15:05:25 -04:00
"RTN","utt3",33,0)
QUIT ; Counts
2016-02-27 17:01:27 -05:00
"RTN","utt3",34,0)
;
2015-03-25 15:05:25 -04:00
"RTN","utt3",35,0)
2016-02-27 17:01:27 -05:00
T2 ; @TEST Test 2
2015-03-25 15:05:25 -04:00
"RTN","utt3",36,0)
2016-02-27 17:01:27 -05:00
D INTERNAL(1) ; Counts
2015-03-25 15:05:25 -04:00
"RTN","utt3",37,0)
2016-02-27 17:01:27 -05:00
D CHKTF^%ut(1) ; Counts
2015-03-25 15:05:25 -04:00
"RTN","utt3",38,0)
2016-02-27 17:01:27 -05:00
QUIT ; Counts
2015-03-25 15:05:25 -04:00
"RTN","utt3",39,0)
2016-02-27 17:01:27 -05:00
S X=1 ; Dead code
2015-03-25 15:05:25 -04:00
"RTN","utt3",40,0)
2016-02-27 17:01:27 -05:00
QUIT ; Dead code
2015-03-25 15:05:25 -04:00
"RTN","utt3",41,0)
2016-02-27 17:01:27 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt3",42,0)
2016-02-27 17:01:27 -05:00
INTERNAL(A) ; Counts
2015-03-25 15:05:25 -04:00
"RTN","utt3",43,0)
2016-02-27 17:01:27 -05:00
S A=A+1 ; Counts
"RTN","utt3",44,0)
QUIT ; Counts
"RTN","utt3",45,0)
S A=2 ; Dead code
"RTN","utt3",46,0)
S Y=2 ; Dead code
"RTN","utt3",47,0)
2015-03-25 15:05:25 -04:00
QUIT ; Dead code
"RTN","utt4")
2016-02-27 17:01:27 -05:00
0^7^B1568129
2015-03-25 15:05:25 -04:00
"RTN","utt4",1,0)
2016-04-11 18:26:37 -04:00
%utt4 ; VEN/SMH/JLI - Coverage Test Runner;04/08/16 20:38
2015-03-25 15:05:25 -04:00
"RTN","utt4",2,0)
2016-04-11 18:26:37 -04:00
;;1.4;MASH UTILITIES;;APR 11, 2016;Build 3
2015-03-25 15:05:25 -04:00
"RTN","utt4",3,0)
2016-04-11 18:26:37 -04:00
; Submitted to OSEHRA Apr 11, 2016 by Joel L. Ivey under the Apache 2 license (http://www.apache.org/licenses/LICENSE-2.0.html)
2015-03-25 15:05:25 -04:00
"RTN","utt4",4,0)
2016-02-27 17:01:27 -05:00
; Original routine authored by Sam H. Habiel 07/2013-04/2014
2015-03-25 15:05:25 -04:00
"RTN","utt4",5,0)
2016-02-27 17:01:27 -05:00
; Additions and modifications made by Joel L. Ivey 05/2014-08/2015
2015-03-25 15:05:25 -04:00
"RTN","utt4",6,0)
2016-02-27 17:01:27 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt4",7,0)
2016-02-27 17:01:27 -05:00
XTMUNITW ; VEN/SMH - Coverage Test Runner;2014-04-17 3:30 PM
2015-03-25 15:05:25 -04:00
"RTN","utt4",8,0)
2016-02-27 17:01:27 -05:00
;;7.3;KERNEL TOOLKIT;;
2015-03-25 15:05:25 -04:00
"RTN","utt4",9,0)
2016-02-27 17:01:27 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt4",10,0)
2016-02-27 17:01:27 -05:00
; This tests code in XTMUNITV for coverage
2015-03-25 15:05:25 -04:00
"RTN","utt4",11,0)
2016-02-27 17:01:27 -05:00
D EN^%ut($T(+0),1) QUIT
2015-03-25 15:05:25 -04:00
"RTN","utt4",12,0)
2016-02-27 17:01:27 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt4",13,0)
2016-02-27 17:01:27 -05:00
MAIN ; @TEST - Test coverage calculations
2015-03-25 15:05:25 -04:00
"RTN","utt4",14,0)
2016-02-27 17:01:27 -05:00
Q:$D(^TMP("%uttcovr",$J)) ; already running coverage analysis from %uttcovr
2015-03-25 15:05:25 -04:00
"RTN","utt4",15,0)
2016-02-27 17:01:27 -05:00
S ^TMP("%utt4val",$J)=1
2015-03-25 15:05:25 -04:00
"RTN","utt4",16,0)
2016-02-27 17:01:27 -05:00
D COV^%ut("%utt3","D EN^%ut(""%utt3"",1)",-1) ; Only produce output global.
2015-03-25 15:05:25 -04:00
"RTN","utt4",17,0)
2016-02-27 17:01:27 -05:00
D CHKEQ^%ut("14/19",^TMP("%utCOVREPORT",$J))
2015-03-25 15:05:25 -04:00
"RTN","utt4",18,0)
2016-02-27 17:01:27 -05:00
D CHKEQ^%ut("2/5",^TMP("%utCOVREPORT",$J,"%utt3","INTERNAL"))
2015-03-25 15:05:25 -04:00
"RTN","utt4",19,0)
2016-02-27 17:01:27 -05:00
D CHKTF^%ut($D(^TMP("%utCOVREPORT",$J,"%utt3","T2",4)))
2015-03-25 15:05:25 -04:00
"RTN","utt4",20,0)
2016-02-27 17:01:27 -05:00
D CHKEQ^%ut("1/1",^TMP("%utCOVREPORT",$J,"%utt3","SETUP"))
2015-03-25 15:05:25 -04:00
"RTN","utt4",21,0)
2016-02-27 17:01:27 -05:00
K ^TMP("%utt4val",$J)
"RTN","utt4",22,0)
2015-03-25 15:05:25 -04:00
QUIT
"RTN","utt5")
2016-02-27 17:01:27 -05:00
0^8^B23054235
2015-03-25 15:05:25 -04:00
"RTN","utt5",1,0)
2016-04-11 18:26:37 -04:00
%utt5 ;JLI - test for aspects of MUnit functionality ;04/08/16 20:38
2015-03-25 15:05:25 -04:00
"RTN","utt5",2,0)
2016-04-11 18:26:37 -04:00
;;1.4;MASH UTILITIES;;APR 11, 2016;Build 3
2015-03-25 15:05:25 -04:00
"RTN","utt5",3,0)
2016-04-11 18:26:37 -04:00
; Submitted to OSEHRA Apr 11, 2016 by Joel L. Ivey under the Apache 2 license (http://www.apache.org/licenses/LICENSE-2.0.html)
2015-03-25 15:05:25 -04:00
"RTN","utt5",4,0)
2016-02-27 17:01:27 -05:00
; Original routine authored by Joel L. Ivey 05/2014-12/2015.
2015-03-25 15:05:25 -04:00
"RTN","utt5",5,0)
2016-02-27 17:01:27 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt5",6,0)
2016-02-27 17:01:27 -05:00
Q
2015-03-25 15:05:25 -04:00
"RTN","utt5",7,0)
2016-02-27 17:01:27 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt5",8,0)
2016-02-27 17:01:27 -05:00
OLDSTYLE ;
2015-03-25 15:05:25 -04:00
"RTN","utt5",9,0)
2016-02-27 17:01:27 -05:00
; ZEXCEPT: %ut - Newed in EN^%zu
2015-03-25 15:05:25 -04:00
"RTN","utt5",10,0)
2016-02-27 17:01:27 -05:00
; ZEXCEPT: %utt6cnt,%utt6var - if present, NEWED following top entry of routine %utt6
2015-03-25 15:05:25 -04:00
"RTN","utt5",11,0)
2016-02-27 17:01:27 -05:00
I $D(%utt6var) S %ut("ENT")="OLDSTYLE",%utt6cnt=$G(%utt6cnt)+1,^TMP("%utt5",$J,%utt6cnt,"OLDSTYLE")=""
2015-03-25 15:05:25 -04:00
"RTN","utt5",12,0)
2016-02-27 17:01:27 -05:00
D CHKEQ^%ut(5,5,"SET EQUAL ON PURPOSE - OLDSTYLE DONE")
2015-03-25 15:05:25 -04:00
"RTN","utt5",13,0)
2016-02-27 17:01:27 -05:00
D CHKTF^%ut(4=4,"MY EQUAL VALUE")
2015-03-25 15:05:25 -04:00
"RTN","utt5",14,0)
2016-02-27 17:01:27 -05:00
Q
2015-03-25 15:05:25 -04:00
"RTN","utt5",15,0)
2016-02-27 17:01:27 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt5",16,0)
2016-02-27 17:01:27 -05:00
OLDSTYL1 ;
2015-03-25 15:05:25 -04:00
"RTN","utt5",17,0)
2016-02-27 17:01:27 -05:00
; ZEXCEPT: %ut - Newed in EN^%zu
2015-03-25 15:05:25 -04:00
"RTN","utt5",18,0)
2016-02-27 17:01:27 -05:00
; ZEXCEPT: %utt6cnt,%utt6var - if present, NEWED following top entry of routine %utt6
2015-03-25 15:05:25 -04:00
"RTN","utt5",19,0)
2016-02-27 17:01:27 -05:00
I $D(%utt6var) S %ut("ENT")="OLDSTYL1",%utt6cnt=$G(%utt6cnt)+1,^TMP("%utt5",$J,%utt6cnt,"OLDSTYL1")=""
2015-03-25 15:05:25 -04:00
"RTN","utt5",20,0)
2016-02-27 17:01:27 -05:00
D CHKEQ^%ut(4,4,"SET EQUAL ON PURPOSE - OLDSTYL1 DONE")
2015-03-25 15:05:25 -04:00
"RTN","utt5",21,0)
2016-02-27 17:01:27 -05:00
Q
2015-03-25 15:05:25 -04:00
"RTN","utt5",22,0)
2016-02-27 17:01:27 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt5",23,0)
2016-02-27 17:01:27 -05:00
NEWSTYLE ; @TEST identify new style test indicator functionality
2015-03-25 15:05:25 -04:00
"RTN","utt5",24,0)
2016-02-27 17:01:27 -05:00
; ZEXCEPT: %ut - Newed in EN^%zu
2015-03-25 15:05:25 -04:00
"RTN","utt5",25,0)
2016-02-27 17:01:27 -05:00
; ZEXCEPT: %utt6cnt,%utt6var - if present, NEWED following top entry of routine %utt6
2015-03-25 15:05:25 -04:00
"RTN","utt5",26,0)
2016-02-27 17:01:27 -05:00
I $D(%utt6var) S %ut("ENT")="NEWSTYLE" S %utt6cnt=$G(%utt6cnt)+1,^TMP("%utt5",$J,%utt6cnt,"NEWSTYLE")=""
2015-03-25 15:05:25 -04:00
"RTN","utt5",27,0)
2016-02-27 17:01:27 -05:00
D CHKEQ^%ut(4,4,"SET EQUAL ON PURPOSE - NEWSTYLE DONE")
2015-03-25 15:05:25 -04:00
"RTN","utt5",28,0)
2016-02-27 17:01:27 -05:00
Q
2015-03-25 15:05:25 -04:00
"RTN","utt5",29,0)
2016-02-27 17:01:27 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt5",30,0)
2016-02-27 17:01:27 -05:00
BADCHKEQ ;
2015-03-25 15:05:25 -04:00
"RTN","utt5",31,0)
2016-02-27 17:01:27 -05:00
; ZEXCEPT: %ut - Newed in EN^%zu
2015-03-25 15:05:25 -04:00
"RTN","utt5",32,0)
2016-02-27 17:01:27 -05:00
; ZEXCEPT: %utt6cnt,%utt6var - if present, NEWED following top entry of routine %utt6
2015-03-25 15:05:25 -04:00
"RTN","utt5",33,0)
2016-02-27 17:01:27 -05:00
I $D(%utt6var) S %ut("ENT")="BADCHKEQ" S %utt6cnt=$G(%utt6cnt)+1,^TMP("%utt5",$J,%utt6cnt,"BADCHKEQ")=""
2015-03-25 15:05:25 -04:00
"RTN","utt5",34,0)
2016-02-27 17:01:27 -05:00
D CHKEQ^%ut(4,3,"SET UNEQUAL ON PURPOSE - SHOULD FAIL")
2015-03-25 15:05:25 -04:00
"RTN","utt5",35,0)
2016-02-27 17:01:27 -05:00
Q
2015-03-25 15:05:25 -04:00
"RTN","utt5",36,0)
2016-02-27 17:01:27 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt5",37,0)
2016-02-27 17:01:27 -05:00
BADCHKTF ;
2015-03-25 15:05:25 -04:00
"RTN","utt5",38,0)
2016-02-27 17:01:27 -05:00
; ZEXCEPT: %ut - Newed in EN^%zu
2015-03-25 15:05:25 -04:00
"RTN","utt5",39,0)
2016-02-27 17:01:27 -05:00
; ZEXCEPT: %utt6cnt,%utt6var - if present, NEWED following top entry of routine %utt6
2015-03-25 15:05:25 -04:00
"RTN","utt5",40,0)
2016-02-27 17:01:27 -05:00
I $D(%utt6var) S %ut("ENT")="BADCHKTF" S %utt6cnt=$G(%utt6cnt)+1,^TMP("%utt5",$J,%utt6cnt,"BADCHKTF")=""
2015-03-25 15:05:25 -04:00
"RTN","utt5",41,0)
2016-02-27 17:01:27 -05:00
D CHKTF^%ut(0,"SET FALSE (0) ON PURPOSE - SHOULD FAIL")
2015-03-25 15:05:25 -04:00
"RTN","utt5",42,0)
2016-02-27 17:01:27 -05:00
Q
2015-03-25 15:05:25 -04:00
"RTN","utt5",43,0)
2016-02-27 17:01:27 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt5",44,0)
2016-02-27 17:01:27 -05:00
BADERROR ;
2015-03-25 15:05:25 -04:00
"RTN","utt5",45,0)
2016-02-27 17:01:27 -05:00
; ZEXCEPT: %ut - Newed in EN^%zu
2015-03-25 15:05:25 -04:00
"RTN","utt5",46,0)
2016-02-27 17:01:27 -05:00
; ZEXCEPT: %utt6cnt,%utt6var - if present, NEWED following top entry of routine %utt6
2015-03-25 15:05:25 -04:00
"RTN","utt5",47,0)
2016-02-27 17:01:27 -05:00
N X
2015-03-25 15:05:25 -04:00
"RTN","utt5",48,0)
2016-02-27 17:01:27 -05:00
I $D(%utt6var) S %ut("ENT")="BADERROR" S %utt6cnt=$G(%utt6cnt)+1,^TMP("%utt5",$J,%utt6cnt,"BADERROR")=""
2015-03-25 15:05:25 -04:00
"RTN","utt5",49,0)
2016-02-27 17:01:27 -05:00
; following syntax error is on purpose to throw an error
2015-03-25 15:05:25 -04:00
"RTN","utt5",50,0)
2016-02-27 17:01:27 -05:00
S X= ; syntax error on purpose
2015-03-25 15:05:25 -04:00
"RTN","utt5",51,0)
2016-02-27 17:01:27 -05:00
Q
2015-03-25 15:05:25 -04:00
"RTN","utt5",52,0)
2016-02-27 17:01:27 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt5",53,0)
2016-02-27 17:01:27 -05:00
CALLFAIL ;
2015-03-25 15:05:25 -04:00
"RTN","utt5",54,0)
2016-02-27 17:01:27 -05:00
; ZEXCEPT: %ut - Newed in EN^%zu
2015-03-25 15:05:25 -04:00
"RTN","utt5",55,0)
2016-02-27 17:01:27 -05:00
; ZEXCEPT: %utt6cnt,%utt6var - if present, NEWED following top entry of routine %utt6
2015-03-25 15:05:25 -04:00
"RTN","utt5",56,0)
2016-02-27 17:01:27 -05:00
N X
2015-03-25 15:05:25 -04:00
"RTN","utt5",57,0)
2016-02-27 17:01:27 -05:00
I $D(%utt6var) S %ut("ENT")="CALLFAIL" S %utt6cnt=$G(%utt6cnt)+1,^TMP("%utt5",$J,%utt6cnt,"CALLFAIL")=""
2015-03-25 15:05:25 -04:00
"RTN","utt5",58,0)
2016-02-27 17:01:27 -05:00
D FAIL^%ut("Called FAIL to test it")
2015-03-25 15:05:25 -04:00
"RTN","utt5",59,0)
2016-02-27 17:01:27 -05:00
Q
2015-03-25 15:05:25 -04:00
"RTN","utt5",60,0)
2016-02-27 17:01:27 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt5",61,0)
2016-02-27 17:01:27 -05:00
LEAKSOK ;
2015-03-25 15:05:25 -04:00
"RTN","utt5",62,0)
2016-02-27 17:01:27 -05:00
N CODE,LOCATN,MYVALS,X
2015-03-25 15:05:25 -04:00
"RTN","utt5",63,0)
2016-02-27 17:01:27 -05:00
S CODE="S X=$$NOW^XLFDT()",LOCATN="LEAKSOK TEST",MYVALS("X")=""
2015-03-25 15:05:25 -04:00
"RTN","utt5",64,0)
2016-02-27 17:01:27 -05:00
D CHKLEAKS^%ut(CODE,LOCATN,.MYVALS) ; should find no leaks
2015-03-25 15:05:25 -04:00
"RTN","utt5",65,0)
2016-02-27 17:01:27 -05:00
Q
2015-03-25 15:05:25 -04:00
"RTN","utt5",66,0)
2016-02-27 17:01:27 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt5",67,0)
2016-02-27 17:01:27 -05:00
LEAKSBAD ;
2015-03-25 15:05:25 -04:00
"RTN","utt5",68,0)
2016-02-27 17:01:27 -05:00
N CODE,LOCATN,MYVALS,X
2015-03-25 15:05:25 -04:00
"RTN","utt5",69,0)
2016-02-27 17:01:27 -05:00
S CODE="S X=$$NOW^XLFDT()",LOCATN="LEAKSBAD TEST - X NOT SPECIFIED"
2015-03-25 15:05:25 -04:00
"RTN","utt5",70,0)
2016-02-27 17:01:27 -05:00
D CHKLEAKS^%ut(CODE,LOCATN,.MYVALS) ; should find X since it isn't indicated
2015-03-25 15:05:25 -04:00
"RTN","utt5",71,0)
Q
2016-02-27 17:01:27 -05:00
"RTN","utt5",72,0)
2015-03-25 15:05:25 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","utt5",73,0)
NVLDARG1 ;
2015-03-25 15:05:25 -04:00
"RTN","utt5",74,0)
2016-02-27 17:01:27 -05:00
D CHKEQ^%ut(1)
2015-03-25 15:05:25 -04:00
"RTN","utt5",75,0)
Q
2016-02-27 17:01:27 -05:00
"RTN","utt5",76,0)
2015-03-25 15:05:25 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","utt5",77,0)
ISUTEST ;
2015-03-25 15:05:25 -04:00
"RTN","utt5",78,0)
2016-02-27 17:01:27 -05:00
D CHKTF^%ut($$ISUTEST^%ut,"ISUTEST returned FALSE!")
2015-03-25 15:05:25 -04:00
"RTN","utt5",79,0)
2016-02-27 17:01:27 -05:00
Q
2015-03-25 15:05:25 -04:00
"RTN","utt5",80,0)
2016-02-27 17:01:27 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt5",81,0)
2016-02-27 17:01:27 -05:00
BADFORM1(X) ; @TEST should not be selected - arguments
2015-03-25 15:05:25 -04:00
"RTN","utt5",82,0)
2016-02-27 17:01:27 -05:00
; ZEXCEPT: %ut - Newed in EN^%zu
2015-03-25 15:05:25 -04:00
"RTN","utt5",83,0)
2016-02-27 17:01:27 -05:00
; ZEXCEPT: %utt6cnt,%utt6var - if present, NEWED following top entry of routine %utt6
2015-03-25 15:05:25 -04:00
"RTN","utt5",84,0)
2016-02-27 17:01:27 -05:00
I $D(%utt6var) S %ut("ENT")="NEWSTYLE" S %utt6cnt=$G(%utt6cnt)+1,^TMP("%utt5",$J,%utt6cnt,"BADFORM1")=""
2015-03-25 15:05:25 -04:00
"RTN","utt5",85,0)
2016-02-27 17:01:27 -05:00
D CHKEQ^%ut(4,3,"SHOULD NOT BE SELECTED - ARGUMENTS - BADFORM1")
2015-03-25 15:05:25 -04:00
"RTN","utt5",86,0)
2016-02-27 17:01:27 -05:00
Q
2015-03-25 15:05:25 -04:00
"RTN","utt5",87,0)
2016-02-27 17:01:27 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt5",88,0)
2016-02-27 17:01:27 -05:00
BADFORM2 ; ABC @TEST should not be selected - @TEST NOT FIRST
2015-03-25 15:05:25 -04:00
"RTN","utt5",89,0)
2016-02-27 17:01:27 -05:00
; ZEXCEPT: %ut - Newed in EN^%zu
2015-03-25 15:05:25 -04:00
"RTN","utt5",90,0)
2016-02-27 17:01:27 -05:00
; ZEXCEPT: %utt6cnt,%utt6var - if present, NEWED following top entry of routine %utt6
2015-03-25 15:05:25 -04:00
"RTN","utt5",91,0)
2016-02-27 17:01:27 -05:00
I $D(%utt6var) S %utt6cnt=$G(%utt6cnt)+1,^TMP("%utt5",$J,%utt6cnt,"BADFORM2")=""
2015-03-25 15:05:25 -04:00
"RTN","utt5",92,0)
2016-02-27 17:01:27 -05:00
D CHKEQ^%ut(4,3,"SHOULD NOT BE SELECTED - @TEST NOT FIRST - BADFORM2")
2015-03-25 15:05:25 -04:00
"RTN","utt5",93,0)
2016-02-27 17:01:27 -05:00
Q
2015-03-25 15:05:25 -04:00
"RTN","utt5",94,0)
2016-02-27 17:01:27 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt5",95,0)
2016-02-27 17:01:27 -05:00
STARTUP ;
2015-03-25 15:05:25 -04:00
"RTN","utt5",96,0)
2016-02-27 17:01:27 -05:00
; ZEXCEPT: %utt6cnt,%utt6var - if present, NEWED following top entry of routine %utt6
2015-03-25 15:05:25 -04:00
"RTN","utt5",97,0)
2016-02-27 17:01:27 -05:00
; ZEXCEPT: KBANCOUNT created here, killed in SHUTDOWN
2015-03-25 15:05:25 -04:00
"RTN","utt5",98,0)
2016-02-27 17:01:27 -05:00
I $D(%utt6var),$D(^TMP("%utt5",$J)) K ^TMP("%utt5",$J)
2015-03-25 15:05:25 -04:00
"RTN","utt5",99,0)
2016-02-27 17:01:27 -05:00
I $D(%utt6var) S %utt6cnt=$G(%utt6cnt)+1,^TMP("%utt5",$J,%utt6cnt,"STARTUP")=""
2015-03-25 15:05:25 -04:00
"RTN","utt5",100,0)
2016-02-27 17:01:27 -05:00
; following brought from %utt1, since only one STARTUP can RUN in a set
2015-03-25 15:05:25 -04:00
"RTN","utt5",101,0)
2016-02-27 17:01:27 -05:00
I '$D(%utt6var) D
2015-03-25 15:05:25 -04:00
"RTN","utt5",102,0)
2016-02-27 17:01:27 -05:00
. S ^TMP($J,"%ut","STARTUP")=""
2015-03-25 15:05:25 -04:00
"RTN","utt5",103,0)
2016-02-27 17:01:27 -05:00
. S KBANCOUNT=1
2015-03-25 15:05:25 -04:00
"RTN","utt5",104,0)
2016-02-27 17:01:27 -05:00
. Q
2015-03-25 15:05:25 -04:00
"RTN","utt5",105,0)
2016-02-27 17:01:27 -05:00
Q
2015-03-25 15:05:25 -04:00
"RTN","utt5",106,0)
2016-02-27 17:01:27 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt5",107,0)
2016-02-27 17:01:27 -05:00
SHUTDOWN ;
2015-03-25 15:05:25 -04:00
"RTN","utt5",108,0)
2016-02-27 17:01:27 -05:00
; ZEXCEPT: %utt6cnt,%utt6var - if present, NEWED following top entry of routine %utt6
2015-03-25 15:05:25 -04:00
"RTN","utt5",109,0)
2016-02-27 17:01:27 -05:00
; ZEXCEPT: KBANCOUNT created in STARTUP, killed here
2015-03-25 15:05:25 -04:00
"RTN","utt5",110,0)
2016-02-27 17:01:27 -05:00
I $D(%utt6var) S %utt6cnt=$G(%utt6cnt)+1,^TMP("%utt5",$J,%utt6cnt,"SHUTDOWN")=""
2015-03-25 15:05:25 -04:00
"RTN","utt5",111,0)
2016-02-27 17:01:27 -05:00
; following brought from %utt1, since only one SHUTDOWN can RUN in a set
2015-03-25 15:05:25 -04:00
"RTN","utt5",112,0)
2016-02-27 17:01:27 -05:00
I '$D(%utt6var) D
2015-03-25 15:05:25 -04:00
"RTN","utt5",113,0)
2016-02-27 17:01:27 -05:00
. K ^TMP($J,"%ut","STARTUP")
2015-03-25 15:05:25 -04:00
"RTN","utt5",114,0)
2016-02-27 17:01:27 -05:00
. K KBANCOUNT
2015-03-25 15:05:25 -04:00
"RTN","utt5",115,0)
2016-02-27 17:01:27 -05:00
. Q
2015-03-25 15:05:25 -04:00
"RTN","utt5",116,0)
2016-02-27 17:01:27 -05:00
Q
2015-03-25 15:05:25 -04:00
"RTN","utt5",117,0)
2016-02-27 17:01:27 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt5",118,0)
2016-02-27 17:01:27 -05:00
SETUP ;
2015-03-25 15:05:25 -04:00
"RTN","utt5",119,0)
2016-02-27 17:01:27 -05:00
; ZEXCEPT: %utt6cnt,%utt6var - if present, NEWED following top entry of routine %utt6
2015-03-25 15:05:25 -04:00
"RTN","utt5",120,0)
2016-02-27 17:01:27 -05:00
I $D(%utt6var) S %utt6cnt=$G(%utt6cnt)+1,^TMP("%utt5",$J,%utt6cnt,"SETUP")=""
2015-03-25 15:05:25 -04:00
"RTN","utt5",121,0)
2016-02-27 17:01:27 -05:00
Q
"RTN","utt5",122,0)
;
"RTN","utt5",123,0)
TEARDOWN ;
"RTN","utt5",124,0)
2015-03-25 15:05:25 -04:00
; ZEXCEPT: %utt6cnt,%utt6var - if present, NEWED following top entry of routine %utt6
2016-02-27 17:01:27 -05:00
"RTN","utt5",125,0)
2015-03-25 15:05:25 -04:00
I $D(%utt6var) S %utt6cnt=$G(%utt6cnt)+1,^TMP("%utt5",$J,%utt6cnt,"TEARDOWN")=""
2016-02-27 17:01:27 -05:00
"RTN","utt5",126,0)
2015-03-25 15:05:25 -04:00
Q
2016-02-27 17:01:27 -05:00
"RTN","utt5",127,0)
2015-03-25 15:05:25 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","utt5",128,0)
2015-03-25 15:05:25 -04:00
XTENT ;
2016-02-27 17:01:27 -05:00
"RTN","utt5",129,0)
2015-03-25 15:05:25 -04:00
;;OLDSTYLE; identify old style test indicator functionality
2016-02-27 17:01:27 -05:00
"RTN","utt5",130,0)
2015-03-25 15:05:25 -04:00
;;OLDSTYL1; identify old style test indicator 2
2016-02-27 17:01:27 -05:00
"RTN","utt5",131,0)
2015-03-25 15:05:25 -04:00
;;BADCHKEQ; CHKEQ should fail on unequal value
2016-02-27 17:01:27 -05:00
"RTN","utt5",132,0)
2015-03-25 15:05:25 -04:00
;;BADCHKTF; CHKTF should fail on false value
2016-02-27 17:01:27 -05:00
"RTN","utt5",133,0)
2015-03-25 15:05:25 -04:00
;;BADERROR; throws an error on purpose
2016-02-27 17:01:27 -05:00
"RTN","utt5",134,0)
2015-03-25 15:05:25 -04:00
;;CALLFAIL; called FAIL to test it
2016-02-27 17:01:27 -05:00
"RTN","utt5",135,0)
2015-03-25 15:05:25 -04:00
;;LEAKSOK;check leaks should be ok
2016-02-27 17:01:27 -05:00
"RTN","utt5",136,0)
2015-03-25 15:05:25 -04:00
;;LEAKSBAD;check leaks with leak
2016-02-27 17:01:27 -05:00
"RTN","utt5",137,0)
2015-03-25 15:05:25 -04:00
;;NVLDARG1;check invalid arg in CHKEQ
2016-02-27 17:01:27 -05:00
"RTN","utt5",138,0)
2015-03-25 15:05:25 -04:00
;;ISUTEST;check ISUTEST inside unit test
"RTN","utt6")
2016-04-11 18:26:37 -04:00
0^9^B35321186
2015-03-25 15:05:25 -04:00
"RTN","utt6",1,0)
2016-04-11 18:26:37 -04:00
%utt6 ;JLI - Unit tests for MUnit functionality ;04/08/16 20:49
2015-03-25 15:05:25 -04:00
"RTN","utt6",2,0)
2016-04-11 18:26:37 -04:00
;;1.4;MASH UTILITIES;;APR 11, 2016;Build 3
2015-03-25 15:05:25 -04:00
"RTN","utt6",3,0)
2016-04-11 18:26:37 -04:00
; Submitted to OSEHRA Apr 11, 2016 by Joel L. Ivey under the Apache 2 license (http://www.apache.org/licenses/LICENSE-2.0.html)
2015-03-25 15:05:25 -04:00
"RTN","utt6",4,0)
2016-02-27 17:01:27 -05:00
; Original routine authored by Joel L. Ivey 05/2014-12/2015
2015-03-25 15:05:25 -04:00
"RTN","utt6",5,0)
2016-02-27 17:01:27 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt6",6,0)
;
"RTN","utt6",7,0)
2016-04-11 18:26:37 -04:00
; The counts for the command line processing are based on the number of unit test tags
2015-03-25 15:05:25 -04:00
"RTN","utt6",8,0)
2016-04-11 18:26:37 -04:00
; determined for the GUI processing as well. The numbers are 2 (startup and shutdown)
2015-03-25 15:05:25 -04:00
"RTN","utt6",9,0)
2016-04-11 18:26:37 -04:00
; + 3 x the number of tests present.
2015-03-25 15:05:25 -04:00
"RTN","utt6",10,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt6",11,0)
2016-04-11 18:26:37 -04:00
; run unit tests by command line
2015-03-25 15:05:25 -04:00
"RTN","utt6",12,0)
2016-04-11 18:26:37 -04:00
N VERBOSE
2015-03-25 15:05:25 -04:00
"RTN","utt6",13,0)
2016-04-11 18:26:37 -04:00
S VERBOSE=0
2015-03-25 15:05:25 -04:00
"RTN","utt6",14,0)
2016-04-11 18:26:37 -04:00
VERBOSE ;
2015-03-25 15:05:25 -04:00
"RTN","utt6",15,0)
2016-04-11 18:26:37 -04:00
I '$D(VERBOSE) N VERBOSE S VERBOSE=1
2016-02-27 17:01:27 -05:00
"RTN","utt6",16,0)
2016-04-11 18:26:37 -04:00
N ZZUTCNT,UTTCNT,UTTEXPCT,UTTI,UTTX,ZZUTRSLT,%utt5,%utt6,%utt6var
2015-03-25 15:05:25 -04:00
"RTN","utt6",17,0)
2016-04-11 18:26:37 -04:00
W !!,"RUNNING COMMAND LINE TESTS VIA DOSET^%ut",!
2015-03-25 15:05:25 -04:00
"RTN","utt6",18,0)
2016-04-11 18:26:37 -04:00
D DOSET^%ut(1,VERBOSE) ; run `1 in M-UNIT TEST GROUP file
2015-03-25 15:05:25 -04:00
"RTN","utt6",19,0)
;
2016-02-27 17:01:27 -05:00
"RTN","utt6",20,0)
2016-04-11 18:26:37 -04:00
W !!!,"Running command line tests by RUNSET^%ut",!
2015-03-25 15:05:25 -04:00
"RTN","utt6",21,0)
2016-04-11 18:26:37 -04:00
D RUNSET^%ut("TESTS FOR UNIT TEST ROUTINES")
2015-03-25 15:05:25 -04:00
"RTN","utt6",22,0)
2016-02-27 17:01:27 -05:00
;
2016-04-11 18:26:37 -04:00
"RTN","utt6",23,0)
; Call GUISET to obtain list of tags via entry in M-UNIT TEST GROUP file
2015-03-25 15:05:25 -04:00
"RTN","utt6",24,0)
2016-04-11 18:26:37 -04:00
; silent to the user
2015-03-25 15:05:25 -04:00
"RTN","utt6",25,0)
2016-04-11 18:26:37 -04:00
D GUISET^%ut(.%utt6,1)
2015-03-25 15:05:25 -04:00
"RTN","utt6",26,0)
2016-04-11 18:26:37 -04:00
K ^TMP("%utt6_GUISET",$J) M ^TMP("%utt6_GUISET",$J)=@%utt6
2015-03-25 15:05:25 -04:00
"RTN","utt6",27,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt6",28,0)
2016-04-11 18:26:37 -04:00
W !!!,"RUNNING COMMAND LINE UNIT TESTS FOR %utt5",!
2015-03-25 15:05:25 -04:00
"RTN","utt6",29,0)
2016-04-11 18:26:37 -04:00
N ZZUTCNT,UTTCNT,UTTEXPCT,UTTI,UTTX,ZZUTRSLT
2015-03-25 15:05:25 -04:00
"RTN","utt6",30,0)
2016-04-11 18:26:37 -04:00
S ZZUTCNT=0
2015-03-25 15:05:25 -04:00
"RTN","utt6",31,0)
2016-04-11 18:26:37 -04:00
K ^TMP("%utt5",$J) ; kill any contents of data storage
2015-03-25 15:05:25 -04:00
"RTN","utt6",32,0)
2016-04-11 18:26:37 -04:00
D EN^%ut("%utt5",VERBOSE) ; should do STARTUP(1x), then SETUP, test, TEARDOWN (each together 3x) and SHUTDOWN (1x)
2015-03-25 15:05:25 -04:00
"RTN","utt6",33,0)
2016-04-11 18:26:37 -04:00
K ^TMP("%utt5_C",$J) M ^TMP("%utt5_C",$J)=^TMP("%utt5",$J)
2015-03-25 15:05:25 -04:00
"RTN","utt6",34,0)
2016-02-27 17:01:27 -05:00
;
2016-04-11 18:26:37 -04:00
"RTN","utt6",35,0)
; now run unit tests by GUI - first determines unit test tags
2015-03-25 15:05:25 -04:00
"RTN","utt6",36,0)
2016-04-11 18:26:37 -04:00
W !!!,"RUNNING UNIT TESTS FOR %utt5 VIA GUI CALLS - Silent",!
2015-03-25 15:05:25 -04:00
"RTN","utt6",37,0)
2016-04-11 18:26:37 -04:00
S ZZUTCNT=0
2015-03-25 15:05:25 -04:00
"RTN","utt6",38,0)
2016-04-11 18:26:37 -04:00
K ^TMP("%utt5",$J),^TMP("%utt6",$J)
2015-03-25 15:05:25 -04:00
"RTN","utt6",39,0)
2016-04-11 18:26:37 -04:00
D GUILOAD^%ut(.%utt6,"%utt5")
2015-03-25 15:05:25 -04:00
"RTN","utt6",40,0)
2016-04-11 18:26:37 -04:00
M ^TMP("%utt6",$J)=@%utt6
2015-03-25 15:05:25 -04:00
"RTN","utt6",41,0)
2016-04-11 18:26:37 -04:00
S %utt6=$NA(^TMP("%utt6",$J))
2015-03-25 15:05:25 -04:00
"RTN","utt6",42,0)
2016-04-11 18:26:37 -04:00
; then run each tag separately
2015-03-25 15:05:25 -04:00
"RTN","utt6",43,0)
2016-04-11 18:26:37 -04:00
; UTTCNT is count of unit test tags, which can be determined for GUI call for each unit test tag
2015-03-25 15:05:25 -04:00
"RTN","utt6",44,0)
2016-04-11 18:26:37 -04:00
S UTTCNT=0 F UTTI=1:1 S UTTX=$G(@%utt6@(UTTI)) Q:UTTX="" I $P(UTTX,U,2)'="" S UTTCNT=UTTCNT+1 D GUINEXT^%ut(.ZZUTRSLT,$P(UTTX,U,2)_U_$P(UTTX,U))
2015-03-25 15:05:25 -04:00
"RTN","utt6",45,0)
2016-04-11 18:26:37 -04:00
; and close it with a null routine name
2015-03-25 15:05:25 -04:00
"RTN","utt6",46,0)
2016-04-11 18:26:37 -04:00
D GUINEXT^%ut(.ZZUTRSLT,"")
2015-03-25 15:05:25 -04:00
"RTN","utt6",47,0)
2016-04-11 18:26:37 -04:00
K ^TMP("%utt5_G",$J) M ^TMP("%utt5_G",$J)=^TMP("%utt5",$J)
2015-03-25 15:05:25 -04:00
"RTN","utt6",48,0)
2016-04-11 18:26:37 -04:00
S UTTEXPCT=2+(3*UTTCNT) ; number of lines that should be in the global nodes for command line and GUI
2015-03-25 15:05:25 -04:00
"RTN","utt6",49,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt6",50,0)
2016-04-11 18:26:37 -04:00
W !!,"NOW RUNNING UNIT TESTS FOR %uttcovr",!!
2015-03-25 15:05:25 -04:00
"RTN","utt6",51,0)
2016-04-11 18:26:37 -04:00
D EN^%ut("%uttcovr",VERBOSE)
2015-03-25 15:05:25 -04:00
"RTN","utt6",52,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt6",53,0)
2016-04-11 18:26:37 -04:00
; now run the unit tests in this routine
2015-03-25 15:05:25 -04:00
"RTN","utt6",54,0)
2016-04-11 18:26:37 -04:00
W !!,"NOW RUNNING UNIT TESTS FOR %utt6",!!
2015-03-25 15:05:25 -04:00
"RTN","utt6",55,0)
2016-04-11 18:26:37 -04:00
D EN^%ut("%utt6",VERBOSE)
2015-03-25 15:05:25 -04:00
"RTN","utt6",56,0)
2016-04-11 18:26:37 -04:00
K ^TMP("%utt5",$J),^TMP("%utt5_C",$J),^TMP("%utt5_G",$J),^TMP("%utt6",$J),^TMP("%utt6_GUISET",$J)
2015-03-25 15:05:25 -04:00
"RTN","utt6",57,0)
2016-04-11 18:26:37 -04:00
; clean up after GUI calls as well
2015-03-25 15:05:25 -04:00
"RTN","utt6",58,0)
2016-04-11 18:26:37 -04:00
K ^TMP("GUI-MUNIT",$J),^TMP("GUINEXT",$J),^TMP("MUNIT-%utRSLT",$J)
2015-03-25 15:05:25 -04:00
"RTN","utt6",59,0)
2016-04-11 18:26:37 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","utt6",60,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt6",61,0)
2016-02-27 17:01:27 -05:00
;
2016-04-11 18:26:37 -04:00
"RTN","utt6",62,0)
; WARNING -- WARNING -- WARNING
2015-03-25 15:05:25 -04:00
"RTN","utt6",63,0)
2016-04-11 18:26:37 -04:00
; If the number of NEW STYLE tests in %utt5 is increased (it is currently 1), then the following
2015-03-25 15:05:25 -04:00
"RTN","utt6",64,0)
2016-04-11 18:26:37 -04:00
; test will need to be updated to reflect the change(s)
2015-03-25 15:05:25 -04:00
"RTN","utt6",65,0)
2016-04-11 18:26:37 -04:00
; END OF WARNING -- END OF WARNING -- END OF WARNING
2015-03-25 15:05:25 -04:00
"RTN","utt6",66,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt6",67,0)
2016-04-11 18:26:37 -04:00
SETROUS ; @TEST - generate array with indices of routines to exclude
2015-03-25 15:05:25 -04:00
"RTN","utt6",68,0)
2016-04-11 18:26:37 -04:00
N ROU,XCLDROUS,ROULIST
2015-03-25 15:05:25 -04:00
"RTN","utt6",69,0)
2016-04-11 18:26:37 -04:00
S XCLDROUS(1)="ROU1NAME,ROU2NAME"
2015-03-25 15:05:25 -04:00
"RTN","utt6",70,0)
2016-04-11 18:26:37 -04:00
S XCLDROUS("ROUNAME3")="ROUNAME4,ROUNAME5"
2015-03-25 15:05:25 -04:00
"RTN","utt6",71,0)
2016-04-11 18:26:37 -04:00
D SETROUS^%utcover(.ROULIST,.XCLDROUS,1)
2015-03-25 15:05:25 -04:00
"RTN","utt6",72,0)
2016-04-11 18:26:37 -04:00
D CHKTF('$D(ROULIST(1)),"SETROUS returned number for routine")
2015-03-25 15:05:25 -04:00
"RTN","utt6",73,0)
2016-04-11 18:26:37 -04:00
D CHKTF($D(ROULIST("ROU1NAME")),"Didn't get first name on numeric subscript")
2015-03-25 15:05:25 -04:00
"RTN","utt6",74,0)
2016-04-11 18:26:37 -04:00
D CHKTF($D(ROULIST("ROU2NAME")),"Didn't get second name on numeric subscript")
2015-03-25 15:05:25 -04:00
"RTN","utt6",75,0)
2016-04-11 18:26:37 -04:00
D SETROUS^%utcover(.ROULIST,.XCLDROUS,"ROUNAME3")
2015-03-25 15:05:25 -04:00
"RTN","utt6",76,0)
2016-04-11 18:26:37 -04:00
D CHKTF($D(ROULIST("ROUNAME3")),"Didn't get name for routine argument")
2015-03-25 15:05:25 -04:00
"RTN","utt6",77,0)
2016-04-11 18:26:37 -04:00
D CHKTF($D(ROULIST("ROUNAME4")),"Didn't get first name on routine subscript")
2015-03-25 15:05:25 -04:00
"RTN","utt6",78,0)
2016-04-11 18:26:37 -04:00
D CHKTF($D(ROULIST("ROUNAME5")),"Didn't get second name on routine subscript")
2015-03-25 15:05:25 -04:00
"RTN","utt6",79,0)
2016-04-11 18:26:37 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","utt6",80,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt6",81,0)
2016-04-11 18:26:37 -04:00
NEWSTYLE ; tests return of valid new style or @TEST indicators
2015-03-25 15:05:25 -04:00
"RTN","utt6",82,0)
2016-04-11 18:26:37 -04:00
N LIST
2015-03-25 15:05:25 -04:00
"RTN","utt6",83,0)
2016-04-11 18:26:37 -04:00
D NEWSTYLE^%ut1(.LIST,"%utt5")
2015-03-25 15:05:25 -04:00
"RTN","utt6",84,0)
2016-04-11 18:26:37 -04:00
D CHKEQ^%ut(LIST,1,"Returned an incorrect number ("_LIST_") of New Style indicators - should be one")
2015-03-25 15:05:25 -04:00
"RTN","utt6",85,0)
2016-04-11 18:26:37 -04:00
I LIST>0 D CHKEQ^%ut(LIST(1),"NEWSTYLE^identify new style test indicator functionality","Returned incorrect TAG^reason "_LIST(1))
2015-03-25 15:05:25 -04:00
"RTN","utt6",86,0)
2016-04-11 18:26:37 -04:00
I LIST>0 D CHKEQ^%ut($G(LIST(2)),"","Returned a value for LIST(2) - should not have any value (i.e., null)")
2015-03-25 15:05:25 -04:00
"RTN","utt6",87,0)
2016-04-11 18:26:37 -04:00
; the following is basically just for coverage
2015-03-25 15:05:25 -04:00
"RTN","utt6",88,0)
2016-04-11 18:26:37 -04:00
D PICKSET^%ut
2015-03-25 15:05:25 -04:00
"RTN","utt6",89,0)
2016-04-11 18:26:37 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","utt6",90,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt6",91,0)
2016-04-11 18:26:37 -04:00
CKGUISET ;
2015-03-25 15:05:25 -04:00
"RTN","utt6",92,0)
2016-04-11 18:26:37 -04:00
; ZEXCEPT: %utt6var - if present, is NEWed and created in code following VERBOSE
2015-03-25 15:05:25 -04:00
"RTN","utt6",93,0)
2016-04-11 18:26:37 -04:00
I '$D(%utt6var) Q
2015-03-25 15:05:25 -04:00
"RTN","utt6",94,0)
2016-04-11 18:26:37 -04:00
N MAX
2015-03-25 15:05:25 -04:00
"RTN","utt6",95,0)
2016-04-11 18:26:37 -04:00
S MAX=$O(^TMP("%utt6_GUISET",$J,""),-1)
2015-03-25 15:05:25 -04:00
"RTN","utt6",96,0)
2016-04-11 18:26:37 -04:00
D CHKTF(^TMP("%utt6_GUISET",$J,MAX)["%utt6^NEWSTYLE","GUISET returned incorrect list")
2015-03-25 15:05:25 -04:00
"RTN","utt6",97,0)
2016-04-11 18:26:37 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","utt6",98,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt6",99,0)
2016-04-11 18:26:37 -04:00
CHKCMDLN ; check command line processing of %utt5
2015-03-25 15:05:25 -04:00
"RTN","utt6",100,0)
2016-04-11 18:26:37 -04:00
; ZEXCEPT: UTTEXPCT,%utt6var - if present NEWed and created in code following VERBOSE tag
2015-03-25 15:05:25 -04:00
"RTN","utt6",101,0)
2016-04-11 18:26:37 -04:00
I '$D(%utt6var) Q
2015-03-25 15:05:25 -04:00
"RTN","utt6",102,0)
2016-04-11 18:26:37 -04:00
D CHKTF($D(^TMP("%utt5_C",$J,UTTEXPCT))=10,"Not enough entries in %utt5 expected "_UTTEXPCT)
2015-03-25 15:05:25 -04:00
"RTN","utt6",103,0)
2016-04-11 18:26:37 -04:00
D CHKTF($D(^TMP("%utt5_C",$J,UTTEXPCT+1))=0,"Too many entries in %utt5 expected "_UTTEXPCT)
2015-03-25 15:05:25 -04:00
"RTN","utt6",104,0)
2016-04-11 18:26:37 -04:00
D CHKTF($O(^TMP("%utt5_C",$J,1,""))="STARTUP","Incorrect function for entry 1,'"_$O(^TMP("%utt5_C",$J,1,""))_"' should be 'STARTUP'")
2015-03-25 15:05:25 -04:00
"RTN","utt6",105,0)
2016-04-11 18:26:37 -04:00
D CHKTF($O(^TMP("%utt5_C",$J,UTTEXPCT,""))="SHUTDOWN","Incorrect function for entry "_UTTEXPCT_", '"_$O(^TMP("%utt5_C",$J,UTTEXPCT,""))_"' should be 'SHUTDOWN'")
2015-03-25 15:05:25 -04:00
"RTN","utt6",106,0)
2016-04-11 18:26:37 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","utt6",107,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt6",108,0)
2016-04-11 18:26:37 -04:00
CHKGUI ; check GUI processing of %utt5
2015-03-25 15:05:25 -04:00
"RTN","utt6",109,0)
2016-04-11 18:26:37 -04:00
; ZEXCEPT: UTTEXPCT,%utt6var - if present NEWed and created in code following VERBOSE tag
2015-03-25 15:05:25 -04:00
"RTN","utt6",110,0)
2016-04-11 18:26:37 -04:00
I '$D(%utt6var) Q
2015-03-25 15:05:25 -04:00
"RTN","utt6",111,0)
2016-04-11 18:26:37 -04:00
D CHKTF($D(^TMP("%utt5_G",$J,UTTEXPCT))=10,"Not enough entries in %utt5 expected "_UTTEXPCT)
2015-03-25 15:05:25 -04:00
"RTN","utt6",112,0)
2016-04-11 18:26:37 -04:00
D CHKTF($D(^TMP("%utt5_G",$J,UTTEXPCT+1))=0,"Too many entries in %utt5 expected "_UTTEXPCT)
2016-02-27 17:01:27 -05:00
"RTN","utt6",113,0)
2016-04-11 18:26:37 -04:00
D CHKTF($O(^TMP("%utt5_G",$J,1,""))="STARTUP","Incorrect function for entry 1,'"_$O(^TMP("%utt5Z_G",1,""))_"' should be 'STARTUP'")
2016-02-27 17:01:27 -05:00
"RTN","utt6",114,0)
2016-04-11 18:26:37 -04:00
D CHKTF($O(^TMP("%utt5_G",$J,UTTEXPCT,""))="SHUTDOWN","Incorrect function for entry "_UTTEXPCT_", '"_$O(^TMP("%utt5_G",$J,UTTEXPCT,""))_"' should be 'SHUTDOWN'")
2016-02-27 17:01:27 -05:00
"RTN","utt6",115,0)
2016-04-11 18:26:37 -04:00
Q
2016-02-27 17:01:27 -05:00
"RTN","utt6",116,0)
2016-04-11 18:26:37 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","utt6",117,0)
2016-04-11 18:26:37 -04:00
CHKTF(VALUE,MESSAGE) ;
2016-02-27 17:01:27 -05:00
"RTN","utt6",118,0)
2016-04-11 18:26:37 -04:00
D CHKTF^%ut($G(VALUE),$G(MESSAGE))
2016-02-27 17:01:27 -05:00
"RTN","utt6",119,0)
Q
"RTN","utt6",120,0)
;
"RTN","utt6",121,0)
XTENT ;
2016-04-11 18:26:37 -04:00
"RTN","utt6",122,0)
2016-02-27 17:01:27 -05:00
;;CHKCMDLN;check command line processing of %utt5
2016-04-11 18:26:37 -04:00
"RTN","utt6",123,0)
2016-02-27 17:01:27 -05:00
;;CHKGUI;check GUI processing of %utt5
2016-04-11 18:26:37 -04:00
"RTN","utt6",124,0)
2016-02-27 17:01:27 -05:00
;;CKGUISET;check list of tests returned by GUISET
2016-04-11 18:26:37 -04:00
"RTN","utt6",125,0)
2015-03-25 15:05:25 -04:00
;;NEWSTYLE;test return of valid new style or @TEST indicators
"RTN","uttcovr")
2016-04-11 18:26:37 -04:00
0^10^B186933676
2015-03-25 15:05:25 -04:00
"RTN","uttcovr",1,0)
2016-04-11 18:26:37 -04:00
%uttcovr ;JIVEYSOFT/JLI - runs coverage tests on %ut and %ut1 routines via unit tests ;04/08/16 20:49
2015-03-25 15:05:25 -04:00
"RTN","uttcovr",2,0)
2016-04-11 18:26:37 -04:00
;;1.4;MASH UTILITIES;;APR 11, 2016;Build 3
2015-03-25 15:05:25 -04:00
"RTN","uttcovr",3,0)
2016-04-11 18:26:37 -04:00
; Submitted to OSEHRA Apr 11, 2016 by Joel L. Ivey under the Apache 2 license (http://www.apache.org/licenses/LICENSE-2.0.html)
2015-03-25 15:05:25 -04:00
"RTN","uttcovr",4,0)
2016-02-27 17:01:27 -05:00
; Original routine authored by Joel L. Ivey 05/2014-12/2015
2015-03-25 15:05:25 -04:00
"RTN","uttcovr",5,0)
2016-04-11 18:26:37 -04:00
; Modified by Joel L. Ivey 02/2016-03/2016
2015-03-25 15:05:25 -04:00
"RTN","uttcovr",6,0)
2016-02-27 17:01:27 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","uttcovr",7,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","uttcovr",8,0)
2016-04-11 18:26:37 -04:00
; ZEXCEPT: DTIME - if present the value is Kernel timeout for reads
2015-03-25 15:05:25 -04:00
"RTN","uttcovr",9,0)
2016-04-11 18:26:37 -04:00
N RUNCODE,XCLUDE
2015-03-25 15:05:25 -04:00
"RTN","uttcovr",10,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","uttcovr",11,0)
2016-04-11 18:26:37 -04:00
; Have it run the following entry points or, if no ^, call EN^%ut with routine name
2015-03-25 15:05:25 -04:00
"RTN","uttcovr",12,0)
2016-04-11 18:26:37 -04:00
S RUNCODE(1)="^%utt1,%utt1,^%utt6,VERBOSE^%utt6,%uttcovr,^%ut,^%ut1,^%utcover"
2015-03-25 15:05:25 -04:00
"RTN","uttcovr",13,0)
2016-04-11 18:26:37 -04:00
S RUNCODE("ENTRY^%uttcovr")=""
2015-03-25 15:05:25 -04:00
"RTN","uttcovr",14,0)
2016-04-11 18:26:37 -04:00
; Have the analysis EXCLUDE the following routines from coverage - unit test routines
2015-03-25 15:05:25 -04:00
"RTN","uttcovr",15,0)
2016-04-11 18:26:37 -04:00
S XCLUDE(1)="%utt1,%utt2,%utt3,%utt4,%utt5,%utt6,%uttcovr"
2015-03-25 15:05:25 -04:00
"RTN","uttcovr",16,0)
2016-04-11 18:26:37 -04:00
S XCLUDE(2)="%utf2hex" ; a GT.M system file, although it wasn't showing up anyway
2015-03-25 15:05:25 -04:00
"RTN","uttcovr",17,0)
2016-04-11 18:26:37 -04:00
M ^TMP("%uttcovr",$J,"XCLUDE")=XCLUDE
2015-03-25 15:05:25 -04:00
"RTN","uttcovr",18,0)
2016-04-11 18:26:37 -04:00
D COVERAGE^%ut("%ut*",.RUNCODE,.XCLUDE,3)
2015-03-25 15:05:25 -04:00
"RTN","uttcovr",19,0)
2016-04-11 18:26:37 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","uttcovr",20,0)
2016-04-11 18:26:37 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","uttcovr",21,0)
2016-04-11 18:26:37 -04:00
ENTRY ;
2015-03-25 15:05:25 -04:00
"RTN","uttcovr",22,0)
2016-04-11 18:26:37 -04:00
K ^TMP("ENTRY^%uttcovr",$J,"VALS")
2015-03-25 15:05:25 -04:00
"RTN","uttcovr",23,0)
2016-04-11 18:26:37 -04:00
M ^TMP("ENTRY^%uttcovr",$J,"VALS")=^TMP("%ut",$J,"UTVALS")
2015-03-25 15:05:25 -04:00
"RTN","uttcovr",24,0)
2016-04-11 18:26:37 -04:00
K ^TMP("%ut",$J,"UTVALS")
2015-03-25 15:05:25 -04:00
"RTN","uttcovr",25,0)
2016-04-11 18:26:37 -04:00
; these tests run outside of unit tests to handle CHKLEAKS calls not in unit tests
2015-03-25 15:05:25 -04:00
"RTN","uttcovr",26,0)
2016-04-11 18:26:37 -04:00
; they need data set, so they are called in here
2015-03-25 15:05:25 -04:00
"RTN","uttcovr",27,0)
2016-04-11 18:26:37 -04:00
; LEAKSOK ;
2015-03-25 15:05:25 -04:00
"RTN","uttcovr",28,0)
2016-04-11 18:26:37 -04:00
N CODE,LOCATN,MYVALS,X,I
2015-03-25 15:05:25 -04:00
"RTN","uttcovr",29,0)
2016-04-11 18:26:37 -04:00
S CODE="S X=$$NOW^XLFDT()",LOCATN="LEAKSOK TEST",MYVALS("X")=""
2015-03-25 15:05:25 -04:00
"RTN","uttcovr",30,0)
2016-04-11 18:26:37 -04:00
D CHKLEAKS^%ut(CODE,LOCATN,.MYVALS) ; should find no leaks
2015-03-25 15:05:25 -04:00
"RTN","uttcovr",31,0)
2016-04-11 18:26:37 -04:00
; LEAKSBAD ;
2015-03-25 15:05:25 -04:00
"RTN","uttcovr",32,0)
2016-04-11 18:26:37 -04:00
N CODE,LOCATN,MYVALS,X
2015-03-25 15:05:25 -04:00
"RTN","uttcovr",33,0)
2016-04-11 18:26:37 -04:00
S CODE="S X=$$NOW^XLFDT()",LOCATN="LEAKSBAD TEST - X NOT SPECIFIED"
2015-03-25 15:05:25 -04:00
"RTN","uttcovr",34,0)
2016-04-11 18:26:37 -04:00
D CHKLEAKS^%ut(CODE,LOCATN,.MYVALS) ; should find X since it isn't indicated
2015-03-25 15:05:25 -04:00
"RTN","uttcovr",35,0)
2016-04-11 18:26:37 -04:00
; try to run coverage
2015-03-25 15:05:25 -04:00
"RTN","uttcovr",36,0)
2016-04-11 18:26:37 -04:00
W !,"xxxxxxxxxxxxxxxxxxxx GOING TO COV^%ut FOR %utt5 at 3",!!!
2015-03-25 15:05:25 -04:00
"RTN","uttcovr",37,0)
2016-04-11 18:26:37 -04:00
D COV^%ut("%ut1","D EN^%ut(""%utt5"")",3)
2015-03-25 15:05:25 -04:00
"RTN","uttcovr",38,0)
2016-04-11 18:26:37 -04:00
W !,"xxxxxxxxxxxxxxxxxxxx GOING TO COV^%ut FOR %utt5 at -1",!!!
2015-03-25 15:05:25 -04:00
"RTN","uttcovr",39,0)
2016-04-11 18:26:37 -04:00
D COV^%ut("%ut1","D EN^%ut(""%utt5"")",-1)
2015-03-25 15:05:25 -04:00
"RTN","uttcovr",40,0)
2016-04-11 18:26:37 -04:00
N RUNCODE S RUNCODE(1)="^%utt4,^%ut"
2015-03-25 15:05:25 -04:00
"RTN","uttcovr",41,0)
2016-04-11 18:26:37 -04:00
N XCLUDE M XCLUDE=^TMP("%uttcovr",$J,"XCLUDE")
2015-03-25 15:05:25 -04:00
"RTN","uttcovr",42,0)
2016-04-11 18:26:37 -04:00
W !,"xxxxxxxxxxxxxxxxxxxx GOING TO MULTAPIS for %utt4 and %ut",!!!
2015-03-25 15:05:25 -04:00
"RTN","uttcovr",43,0)
2016-04-11 18:26:37 -04:00
D MULTAPIS^%ut(.RUNCODE)
2015-03-25 15:05:25 -04:00
"RTN","uttcovr",44,0)
2016-04-11 18:26:37 -04:00
W !,"xxxxxxxxxxxxxxxxxxxx GOING TO COVERAGE for %utt4 and %ut at 3",!!!
2015-03-25 15:05:25 -04:00
"RTN","uttcovr",45,0)
2016-04-11 18:26:37 -04:00
D COVERAGE^%ut("%ut*",.RUNCODE,.XCLUDE,3)
2015-03-25 15:05:25 -04:00
"RTN","uttcovr",46,0)
2016-04-11 18:26:37 -04:00
N GLT S GLT=$NA(^TMP("%uttcovr-text",$J)) K @GLT
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",47,0)
2016-04-11 18:26:37 -04:00
W !,"xxxxxxxxxxxxxxxxxxxx LISTING DATA VIA LIST",!!!
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",48,0)
2016-04-11 18:26:37 -04:00
D LIST^%utcover(.XCLUDE,3,GLT) ; get coverage for listing and trimdata in %utcover
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",49,0)
2016-04-11 18:26:37 -04:00
F I=1:1 Q:'$D(@GLT@(I)) W !,@GLT@(I)
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",50,0)
2016-04-11 18:26:37 -04:00
K @GLT
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",51,0)
2016-04-11 18:26:37 -04:00
; restore unit test totals from before entry
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",52,0)
2016-04-11 18:26:37 -04:00
K ^TMP("%ut",$J,"UTVALS")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",53,0)
2016-04-11 18:26:37 -04:00
M ^TMP("%ut",$J,"UTVALS")=^TMP("ENTRY^%uttcovr",$J,"VALS")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",54,0)
2016-04-11 18:26:37 -04:00
K ^TMP("ENTRY^%uttcovr",$J,"VALS")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",55,0)
2016-04-11 18:26:37 -04:00
W !,"xxxxxxxxxxxxxxxxxxxx Finished in ENTRY^%uttcovr",!!!
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",56,0)
2016-04-11 18:26:37 -04:00
Q
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",57,0)
2016-04-11 18:26:37 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",58,0)
2016-04-11 18:26:37 -04:00
RTNANAL ; @TEST - routine analysis
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",59,0)
2016-04-11 18:26:37 -04:00
N ROUS,GLB
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",60,0)
2016-04-11 18:26:37 -04:00
S ROUS("%utt4")=""
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",61,0)
2016-04-11 18:26:37 -04:00
S GLB=$NA(^TMP("%uttcovr-rtnanal",$J)) K @GLB
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",62,0)
2016-04-11 18:26:37 -04:00
D RTNANAL^%ut1(.ROUS,GLB)
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",63,0)
2016-04-11 18:26:37 -04:00
D CHKTF($D(@GLB@("%utt4","MAIN"))>1,"Not enough 'MAIN' nodes found")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",64,0)
2016-04-11 18:26:37 -04:00
D CHKTF($G(@GLB@("%utt4","MAIN",3))["D COV^%ut(""%utt3"",""D EN^%ut(""""%utt3"""",1)"",-1)","Incorrect data for line 2 in MAIN")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",65,0)
2016-04-11 18:26:37 -04:00
D CHKTF($G(@GLB@("%utt4","MAIN",9))=" QUIT","Final QUIT not on expected line")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",66,0)
2016-04-11 18:26:37 -04:00
K @GLB
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",67,0)
2016-04-11 18:26:37 -04:00
Q
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",68,0)
2016-04-11 18:26:37 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",69,0)
2016-04-11 18:26:37 -04:00
COVCOV ; @TEST - check COVCOV - remove seen lines
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",70,0)
2016-04-11 18:26:37 -04:00
N C,R
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",71,0)
2016-04-11 18:26:37 -04:00
S C=$NA(^TMP("%uttcovr_C",$J))
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",72,0)
2016-04-11 18:26:37 -04:00
S R=$NA(^TMP("%uttcovr_R",$J))
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",73,0)
2016-04-11 18:26:37 -04:00
S @C@("ROU1")=""
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",74,0)
2016-04-11 18:26:37 -04:00
S @C@("ROU2")="",@R@("ROU2")=""
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",75,0)
2016-04-11 18:26:37 -04:00
S @C@("ROU2","TAG1")="",@R@("ROU2","TAG1")=""
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",76,0)
2016-04-11 18:26:37 -04:00
S @C@("ROU2","TAG1",1)="AAA"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",77,0)
2016-04-11 18:26:37 -04:00
S @C@("ROU2","TAG1",2)="AAA",@R@("ROU2","TAG1",2)="AAA"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",78,0)
2016-04-11 18:26:37 -04:00
S @C@("ROU2","TAG1",3)="ABB",@R@("ROU2","TAG1",3)="ABB"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",79,0)
2016-04-11 18:26:37 -04:00
S @C@("ROU2","TAG2",6)="ACC"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",80,0)
2016-04-11 18:26:37 -04:00
S @C@("ROU2","TAG2",7)="ADD",@R@("ROU2","TAG2",7)="ADD"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",81,0)
2016-04-11 18:26:37 -04:00
S @C@("ROU3","TAG1",2)="BAA",@R@("ROU3","TAG1",2)="BAA"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",82,0)
2016-04-11 18:26:37 -04:00
S @C@("ROU3","TAG1",3)="CAA"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",83,0)
2016-04-11 18:26:37 -04:00
S @C@("ROU3","TAG1",4)="DAA"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",84,0)
2016-04-11 18:26:37 -04:00
S @C@("ROU3","TAG1",5)="EAA",@R@("ROU3","TAG1",5)="EAA"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",85,0)
2016-04-11 18:26:37 -04:00
S @C@("ROU3","TAG1",6)="FAA",@R@("ROU3","TAG1",6)="FAA"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",86,0)
2016-04-11 18:26:37 -04:00
D COVCOV^%ut1(C,R)
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",87,0)
2016-04-11 18:26:37 -04:00
D CHKTF($D(@C@("ROU2","TAG1",1)),"Invalid value for ""ROU2"",""TAG1"",1")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",88,0)
2016-04-11 18:26:37 -04:00
D CHKTF('$D(@C@("ROU2","TAG1",2)),"Unexpected value for ""ROU2"",""TAG1"",1")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",89,0)
2016-04-11 18:26:37 -04:00
D CHKTF($D(@C@("ROU2","TAG2",6)),"Invalid value for ""ROU2"",""TAG1"",1")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",90,0)
2016-04-11 18:26:37 -04:00
D CHKTF('$D(@C@("ROU2","TAG2",7)),"Unexpected value for ""ROU2"",""TAG1"",1")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",91,0)
2016-04-11 18:26:37 -04:00
D CHKTF($D(@C@("ROU3","TAG1",4)),"Invalid value for ""ROU2"",""TAG1"",1")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",92,0)
2016-04-11 18:26:37 -04:00
D CHKTF('$D(@C@("ROU3","TAG1",5)),"Unexpected value for ""ROU2"",""TAG1"",1")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",93,0)
2016-04-11 18:26:37 -04:00
K @C,@R
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",94,0)
2016-04-11 18:26:37 -04:00
Q
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",95,0)
2016-04-11 18:26:37 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",96,0)
2016-04-11 18:26:37 -04:00
COVRPT ; @TEST
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",97,0)
2016-04-11 18:26:37 -04:00
N GL1,GL2,GL3,GL4,VRBOSITY,GL5
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",98,0)
2016-04-11 18:26:37 -04:00
S GL1=$NA(^TMP("%utCOVCOHORTSAVx",$J)) K @GL1
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",99,0)
2016-04-11 18:26:37 -04:00
S GL2=$NA(^TMP("%utCOVCOHORTx",$J)) K @GL2
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",100,0)
2016-04-11 18:26:37 -04:00
S GL3=$NA(^TMP("%utCOVRESULTx",$J)) K @GL3
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",101,0)
2016-04-11 18:26:37 -04:00
S GL4=$NA(^TMP("%utCOVREPORTx",$J)) K @GL4
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",102,0)
2016-04-11 18:26:37 -04:00
S GL5=$NA(^TMP("%ut1-covrpt",$J)) K @GL5
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",103,0)
2016-04-11 18:26:37 -04:00
D SETGLOBS(GL1,GL2)
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",104,0)
2016-04-11 18:26:37 -04:00
S VRBOSITY=1
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",105,0)
2016-04-11 18:26:37 -04:00
D COVRPT^%ut1(GL1,GL2,GL3,VRBOSITY)
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",106,0)
2016-04-11 18:26:37 -04:00
D CHKEQ("COVERAGE PERCENTAGE: 42.11",$G(@GL5@(5)),"Verbosity 1 - not expected percentage value")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",107,0)
2016-04-11 18:26:37 -04:00
D CHKEQ(" %ut1 42.11% 8 out of 19",$G(@GL5@(9)),"Verbosity 1 - not expected value for line 9")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",108,0)
2016-04-11 18:26:37 -04:00
D CHKTF('$D(@GL5@(10)),"Verbosity 1 - unexpected data in 10th line")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",109,0)
2016-04-11 18:26:37 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",110,0)
2016-04-11 18:26:37 -04:00
S VRBOSITY=2
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",111,0)
2016-04-11 18:26:37 -04:00
D COVRPT^%ut1(GL1,GL2,GL3,VRBOSITY)
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",112,0)
2016-04-11 18:26:37 -04:00
D CHKEQ(" ACTLINES 0.00% 0 out of 9",$G(@GL5@(10)),"Verbosity 2 - not expected value for 10th line")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",113,0)
2016-04-11 18:26:37 -04:00
D CHKEQ(" CHEKTEST 80.00% 8 out of 10",$G(@GL5@(11)),"Verbosity 2 - not expected value for 11th line")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",114,0)
2016-04-11 18:26:37 -04:00
D CHKTF('$D(@GL5@(12)),"Verbosity 2 - unexpected data for 12th line")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",115,0)
2016-04-11 18:26:37 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",116,0)
2016-04-11 18:26:37 -04:00
S VRBOSITY=3
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",117,0)
2016-04-11 18:26:37 -04:00
D COVRPT^%ut1(GL1,GL2,GL3,VRBOSITY)
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",118,0)
2016-04-11 18:26:37 -04:00
D CHKEQ(" ACTLINES 0.00% 0 out of 9",$G(@GL5@(10)),"Verbosity 3 - unexpected value for line 10")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",119,0)
2016-04-11 18:26:37 -04:00
D CHKEQ("ACTLINES+9: QUIT CNT",$G(@GL5@(19)),"Verbosity 3 - unexpected value for line 19")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",120,0)
2016-04-11 18:26:37 -04:00
D CHKEQ(" CHEKTEST 80.00% 8 out of 10",$G(@GL5@(20)),"Verbosity 3 - unexpected value for line 20")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",121,0)
2016-04-11 18:26:37 -04:00
D CHKEQ("CHEKTEST+39: . Q",$G(@GL5@(22)),"Verbosity 3 - unexpected value for line 22")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",122,0)
2016-04-11 18:26:37 -04:00
D CHKTF('$D(@GL5@(23)),"Verbosity 3 - unexpected line 23")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",123,0)
2016-04-11 18:26:37 -04:00
K @GL1,@GL2,@GL3,@GL4,@GL5
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",124,0)
2016-04-11 18:26:37 -04:00
Q
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",125,0)
2016-04-11 18:26:37 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",126,0)
2016-04-11 18:26:37 -04:00
COVRPTLS ; @TEST - coverage report returning text in global
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",127,0)
2016-04-11 18:26:37 -04:00
N GL1,GL2,GL3,GL4,VRBOSITY
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",128,0)
2016-04-11 18:26:37 -04:00
S GL1=$NA(^TMP("%utCOVCOHORTSAVx",$J)) K @GL1
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",129,0)
2016-04-11 18:26:37 -04:00
S GL2=$NA(^TMP("%utCOVCOHORTx",$J)) K @GL2
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",130,0)
2016-04-11 18:26:37 -04:00
S GL3=$NA(^TMP("%utCOVRESULTx",$J)) K @GL3
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",131,0)
2016-04-11 18:26:37 -04:00
S GL4=$NA(^TMP("%utCOVREPORTx",$J)) K @GL4
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",132,0)
2016-04-11 18:26:37 -04:00
D SETGLOBS(GL1,GL2)
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",133,0)
2016-04-11 18:26:37 -04:00
S VRBOSITY=1
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",134,0)
2016-04-11 18:26:37 -04:00
D COVRPTLS^%ut1(GL1,GL2,GL3,VRBOSITY,GL4)
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",135,0)
2016-04-11 18:26:37 -04:00
D CHKEQ("COVERAGE PERCENTAGE: 42.11",$G(@GL4@(5)),"Verbosity 1 - not expected percentage value")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",136,0)
2016-04-11 18:26:37 -04:00
D CHKEQ(" %ut1 42.11% 8 out of 19",$G(@GL4@(9)),"Verbosity 1 - not expected value for line 9")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",137,0)
2016-04-11 18:26:37 -04:00
D CHKTF('$D(@GL4@(10)),"Verbosity 1 - unexpected data in 10th line")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",138,0)
2016-04-11 18:26:37 -04:00
K @GL4
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",139,0)
2016-04-11 18:26:37 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",140,0)
2016-04-11 18:26:37 -04:00
S VRBOSITY=2
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",141,0)
2016-04-11 18:26:37 -04:00
D COVRPTLS^%ut1(GL1,GL2,GL3,VRBOSITY,GL4)
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",142,0)
2016-04-11 18:26:37 -04:00
D CHKEQ(" ACTLINES 0.00% 0 out of 9",$G(@GL4@(10)),"Verbosity 2 - not expected value for 10th line")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",143,0)
2016-04-11 18:26:37 -04:00
D CHKEQ(" CHEKTEST 80.00% 8 out of 10",$G(@GL4@(11)),"Verbosity 2 - not expected value for 11th line")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",144,0)
2016-04-11 18:26:37 -04:00
D CHKTF('$D(@GL4@(12)),"Verbosity 2 - unexpected data for 12th line")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",145,0)
2016-04-11 18:26:37 -04:00
K @GL4
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",146,0)
2016-04-11 18:26:37 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",147,0)
2016-04-11 18:26:37 -04:00
S VRBOSITY=3
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",148,0)
2016-04-11 18:26:37 -04:00
D COVRPTLS^%ut1(GL1,GL2,GL3,VRBOSITY,GL4)
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",149,0)
2016-04-11 18:26:37 -04:00
D CHKEQ(" ACTLINES 0.00% 0 out of 9",$G(@GL4@(10)),"Verbosity 3 - unexpected value for line 10")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",150,0)
2016-04-11 18:26:37 -04:00
D CHKEQ("ACTLINES+9: QUIT CNT",$G(@GL4@(19)),"Verbosity 3 - unexpected value for line 19")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",151,0)
2016-04-11 18:26:37 -04:00
D CHKEQ(" CHEKTEST 80.00% 8 out of 10",$G(@GL4@(20)),"Verbosity 3 - unexpected value for line 20")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",152,0)
2016-04-11 18:26:37 -04:00
D CHKEQ("CHEKTEST+39: . Q",$G(@GL4@(22)),"Verbosity 3 - unexpected value for line 22")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",153,0)
2016-04-11 18:26:37 -04:00
D CHKTF('$D(@GL4@(23)),"Verbosity 3 - unexpected line 23")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",154,0)
2016-04-11 18:26:37 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",155,0)
2016-04-11 18:26:37 -04:00
K @GL1,@GL2,@GL3,@GL4
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",156,0)
2016-04-11 18:26:37 -04:00
Q
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",157,0)
2016-04-11 18:26:37 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",158,0)
2016-04-11 18:26:37 -04:00
TRIMDATA ; @TEST - TRIMDATA in %utcover
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",159,0)
2016-04-11 18:26:37 -04:00
N GL1,XCLUD
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",160,0)
2016-04-11 18:26:37 -04:00
S GL1=$NA(^TMP("%uttcovr-trimdata",$J)) K @GL1
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",161,0)
2016-04-11 18:26:37 -04:00
S @GL1@("GOOD",1)="1"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",162,0)
2016-04-11 18:26:37 -04:00
S @GL1@("BAD",1)="1"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",163,0)
2016-04-11 18:26:37 -04:00
S XCLUD("BAD")=""
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",164,0)
2016-04-11 18:26:37 -04:00
D TRIMDATA^%utcover(.XCLUD,GL1)
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",165,0)
2016-04-11 18:26:37 -04:00
D CHKTF($D(@GL1@("GOOD")),"GOOD ENTRY WAS REMOVED")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",166,0)
2016-04-11 18:26:37 -04:00
D CHKTF('$D(@GL1@("BAD")),"ENTRY WAS NOT TRIMMED")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",167,0)
2016-04-11 18:26:37 -04:00
K @GL1,XCLUD
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",168,0)
2016-04-11 18:26:37 -04:00
Q
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",169,0)
2016-04-11 18:26:37 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",170,0)
2016-04-11 18:26:37 -04:00
LIST ; @TEST - LIST in %utcover
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",171,0)
2016-04-11 18:26:37 -04:00
N GL1,GLT S GL1=$NA(^TMP("%uttcovr-list",$J)),GLT=$NA(^TMP("%uttcovr-text",$J))
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",172,0)
2016-04-11 18:26:37 -04:00
S @GL1@("%ut1")="89/160"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",173,0)
2016-04-11 18:26:37 -04:00
S @GL1@("%ut1","%ut1")="2/2"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",174,0)
2016-04-11 18:26:37 -04:00
S @GL1@("%ut1","ACTLINES")="0/8"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",175,0)
2016-04-11 18:26:37 -04:00
S @GL1@("%ut1","ACTLINES",2)=" N CNT S CNT=0"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",176,0)
2016-04-11 18:26:37 -04:00
S @GL1@("%ut1","ACTLINES",3)=" N REF S REF=GL"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",177,0)
2016-04-11 18:26:37 -04:00
S @GL1@("%ut1","ACTLINES",4)=" N GLQL S GLQL=$QL(GL)"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",178,0)
2016-04-11 18:26:37 -04:00
S @GL1@("%ut1","ACTLINES",5)=" F S REF=$Q(@REF) Q:REF="""" Q:(GL'=$NA(@REF,GLQL)) D"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",179,0)
2016-04-11 18:26:37 -04:00
S @GL1@("%ut1","ACTLINES",6)=" . N REFQL S REFQL=$QL(REF)"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",180,0)
2016-04-11 18:26:37 -04:00
S @GL1@("%ut1","ACTLINES",7)=" . N LASTSUB S LASTSUB=$QS(REF,REFQL)"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",181,0)
2016-04-11 18:26:37 -04:00
S @GL1@("%ut1","ACTLINES",8)=" . I LASTSUB?1.N S CNT=CNT+1"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",182,0)
2016-04-11 18:26:37 -04:00
S @GL1@("%ut1","ACTLINES",9)=" QUIT CNT"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",183,0)
2016-04-11 18:26:37 -04:00
S @GL1@("%ut1","CHECKTAG")="11/11"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",184,0)
2016-04-11 18:26:37 -04:00
S @GL1@("%ut1","CHEKTEST")="10/10"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",185,0)
2016-04-11 18:26:37 -04:00
N XCLUD S XCLUD("%utt1")=""
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",186,0)
2016-04-11 18:26:37 -04:00
D LIST^%utcover(.XCLUD,1,GLT,GL1)
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",187,0)
2016-04-11 18:26:37 -04:00
D CHKEQ("Routine %ut1 (55.63%) 89 out of 160 lines covered",$G(@GLT@(3)),"Verbosity 1 - Unexpected text for line 3")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",188,0)
2016-04-11 18:26:37 -04:00
D CHKEQ("Overall Analysis 89 out of 160 lines covered (55% coverage)",$G(@GLT@(6)),"Verbosity 1 - unexpected text for line 6")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",189,0)
2016-04-11 18:26:37 -04:00
D CHKTF('$D(@GLT@(7)),"Verbosity 1 - Unexpected line 7 present")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",190,0)
2016-04-11 18:26:37 -04:00
K @GLT
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",191,0)
2016-04-11 18:26:37 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",192,0)
2016-04-11 18:26:37 -04:00
D LIST^%utcover(.XCLUD,2,GLT,GL1)
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",193,0)
2016-04-11 18:26:37 -04:00
D CHKEQ(" - Summary",$G(@GLT@(4)),"Verbosity 2 - unexpected text at line 4")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",194,0)
2016-04-11 18:26:37 -04:00
D CHKEQ(" Tag ACTLINES^%ut1 (0.00%) 0 out of 8 lines covered",$G(@GLT@(6)),"Verbosity 2 - unexpected text at line 6")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",195,0)
2016-04-11 18:26:37 -04:00
D CHKEQ(" Tag CHEKTEST^%ut1 (100.00%) 10 out of 10 lines covered",$G(@GLT@(8)),"Verbosity 2 - unexpected text at line 8")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",196,0)
2016-04-11 18:26:37 -04:00
D CHKTF($D(@GLT@(14)),"Verbosity 2 - expected line at line 14")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",197,0)
2016-04-11 18:26:37 -04:00
D CHKTF('$D(@GLT@(15)),"Verbosity 2 - unexpected line at line 15")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",198,0)
2016-04-11 18:26:37 -04:00
K @GLT
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",199,0)
2016-04-11 18:26:37 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",200,0)
2016-04-11 18:26:37 -04:00
D LIST^%utcover(.XCLUD,3,GLT,GL1)
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",201,0)
2016-04-11 18:26:37 -04:00
D CHKEQ(" Tag %ut1^%ut1 (100.00%) 2 out of 2 lines covered",$G(@GLT@(5)),"Verbosity 3 - Incorrect text at line 5")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",202,0)
2016-04-11 18:26:37 -04:00
D CHKEQ(" ACTLINES+9 QUIT CNT",$G(@GLT@(15)),"Verbosity 3 - incorrect line 15")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",203,0)
2016-04-11 18:26:37 -04:00
D CHKTF($D(@GLT@(31)),"Verbosity 3 - expected data in line 31")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",204,0)
2016-04-11 18:26:37 -04:00
D CHKTF('$D(@GLT@(32)),"Verbosity 3 - did not expect a line 32")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",205,0)
2016-04-11 18:26:37 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",206,0)
2016-04-11 18:26:37 -04:00
K @GL1,@GLT
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",207,0)
2016-04-11 18:26:37 -04:00
Q
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",208,0)
2016-04-11 18:26:37 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",209,0)
2016-04-11 18:26:37 -04:00
SETGLOBS(GL1,GL2) ;
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",210,0)
2016-04-11 18:26:37 -04:00
S @GL1@("%ut1","ACTLINES")="ACTLINES"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",211,0)
2016-04-11 18:26:37 -04:00
S @GL1@("%ut1","ACTLINES",0)="ACTLINES(GL) ; [Private] $$ ; Count active lines"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",212,0)
2016-04-11 18:26:37 -04:00
S @GL1@("%ut1","ACTLINES",2)=" N CNT S CNT=0"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",213,0)
2016-04-11 18:26:37 -04:00
S @GL1@("%ut1","ACTLINES",3)=" N REF S REF=GL"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",214,0)
2016-04-11 18:26:37 -04:00
S @GL1@("%ut1","ACTLINES",4)=" N GLQL S GLQL=$QL(GL)"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",215,0)
2016-04-11 18:26:37 -04:00
S @GL1@("%ut1","ACTLINES",5)=" F S REF=$Q(@REF) Q:REF="""" Q:(GL'=$NA(@REF,GLQL)) D"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",216,0)
2016-04-11 18:26:37 -04:00
S @GL1@("%ut1","ACTLINES",6)=" . N REFQL S REFQL=$QL(REF)"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",217,0)
2016-04-11 18:26:37 -04:00
S @GL1@("%ut1","ACTLINES",7)=" . N LASTSUB S LASTSUB=$QS(REF,REFQL)"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",218,0)
2016-04-11 18:26:37 -04:00
S @GL1@("%ut1","ACTLINES",8)=" . I LASTSUB?1.N S CNT=CNT+1"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",219,0)
2016-04-11 18:26:37 -04:00
S @GL1@("%ut1","ACTLINES",9)=" QUIT CNT"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",220,0)
2016-04-11 18:26:37 -04:00
S @GL1@("%ut1","CHEKTEST")="CHEKTEST"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",221,0)
2016-04-11 18:26:37 -04:00
S @GL1@("%ut1","CHEKTEST",0)="CHEKTEST(%utROU,%ut,%utUETRY) ; Collect Test list."
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",222,0)
2016-04-11 18:26:37 -04:00
S @GL1@("%ut1","CHEKTEST",13)=" N I,LIST"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",223,0)
2016-04-11 18:26:37 -04:00
S @GL1@("%ut1","CHEKTEST",14)=" S I=$L($T(@(U_%utROU))) I I<0 Q ""-1^Invalid Routine Name"""
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",224,0)
2016-04-11 18:26:37 -04:00
S @GL1@("%ut1","CHEKTEST",31)=" D NEWSTYLE(.LIST,%utROU)"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",225,0)
2016-04-11 18:26:37 -04:00
S @GL1@("%ut1","CHEKTEST",32)=" F I=1:1:LIST S %ut(""ENTN"")=%ut(""ENTN"")+1,%utUETRY(%ut(""ENTN""))=$P(LIST(I),U),%utUETRY(%ut(""ENTN""),""NAME"")=$P(LIST(I),U,2,99)"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",226,0)
2016-04-11 18:26:37 -04:00
S @GL1@("%ut1","CHEKTEST",37)=" N %utUI F %utUI=1:1 S %ut(""ELIN"")=$T(@(""XTENT+""_%utUI_""^""_%utROU)) Q:$P(%ut(""ELIN""),"";"",3)="""" D"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",227,0)
2016-04-11 18:26:37 -04:00
S @GL1@("%ut1","CHEKTEST",38)=" . S %ut(""ENTN"")=%ut(""ENTN"")+1,%utUETRY(%ut(""ENTN""))=$P(%ut(""ELIN""),"";"",3),%utUETRY(%ut(""ENTN""),""NAME"")=$P(%ut(""ELIN""),"";"",4)"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",228,0)
2016-04-11 18:26:37 -04:00
S @GL1@("%ut1","CHEKTEST",39)=" . Q"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",229,0)
2016-04-11 18:26:37 -04:00
S @GL1@("%ut1","CHEKTEST",41)=" QUIT"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",230,0)
2016-04-11 18:26:37 -04:00
S @GL1@("%ut1","CHEKTEST",9)=" S %ut(""ENTN"")=0 ; Number of test, sub to %utUETRY."
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",231,0)
2016-04-11 18:26:37 -04:00
S @GL2@("%ut1","ACTLINES")="ACTLINES"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",232,0)
2016-04-11 18:26:37 -04:00
S @GL2@("%ut1","ACTLINES",0)="ACTLINES(GL) ; [Private] $$ ; Count active lines"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",233,0)
2016-04-11 18:26:37 -04:00
S @GL2@("%ut1","ACTLINES",2)=" N CNT S CNT=0"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",234,0)
2016-04-11 18:26:37 -04:00
S @GL2@("%ut1","ACTLINES",3)=" N REF S REF=GL"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",235,0)
2016-04-11 18:26:37 -04:00
S @GL2@("%ut1","ACTLINES",4)=" N GLQL S GLQL=$QL(GL)"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",236,0)
2016-04-11 18:26:37 -04:00
S @GL2@("%ut1","ACTLINES",5)=" F S REF=$Q(@REF) Q:REF="""" Q:(GL'=$NA(@REF,GLQL)) D"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",237,0)
2016-04-11 18:26:37 -04:00
S @GL2@("%ut1","ACTLINES",6)=" . N REFQL S REFQL=$QL(REF)"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",238,0)
2016-04-11 18:26:37 -04:00
S @GL2@("%ut1","ACTLINES",7)=" . N LASTSUB S LASTSUB=$QS(REF,REFQL)"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",239,0)
2016-04-11 18:26:37 -04:00
S @GL2@("%ut1","ACTLINES",8)=" . I LASTSUB?1.N S CNT=CNT+1"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",240,0)
2016-04-11 18:26:37 -04:00
S @GL2@("%ut1","ACTLINES",9)=" QUIT CNT"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",241,0)
2016-04-11 18:26:37 -04:00
S @GL2@("%ut1","CHEKTEST")="CHEKTEST"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",242,0)
2016-04-11 18:26:37 -04:00
S @GL2@("%ut1","CHEKTEST",38)=" . S %ut(""ENTN"")=%ut(""ENTN"")+1,%utUETRY(%ut(""ENTN""))=$P(%ut(""ELIN""),"";"",3),%utUETRY(%ut(""ENTN""),""NAME"")=$P(%ut(""ELIN""),"";"",4)"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",243,0)
2016-04-11 18:26:37 -04:00
S @GL2@("%ut1","CHEKTEST",39)=" . Q"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",244,0)
2016-04-11 18:26:37 -04:00
Q
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",245,0)
;
"RTN","uttcovr",246,0)
2016-04-11 18:26:37 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",247,0)
2016-04-11 18:26:37 -04:00
CACHECOV ;@TEST - set up routine for analysis in globals
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",248,0)
2016-04-11 18:26:37 -04:00
N GLOB,GLOBT
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",249,0)
2016-04-11 18:26:37 -04:00
S GLOB=$NA(^TMP("%uttcovr1",$J)),GLOBT=$NA(@GLOB@("uttcovr2",$J)) K @GLOB,@GLOBT
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",250,0)
2016-04-11 18:26:37 -04:00
D CACHECOV^%ut1(GLOB,GLOBT)
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",251,0)
2016-04-11 18:26:37 -04:00
D CHKEQ($T(+1^%ut),@GLOB@("%ut",1,0),"BAD FIRST LINE LOADED FOR %ut")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",252,0)
2016-04-11 18:26:37 -04:00
D CHKEQ($T(+14^%ut),@GLOBT@("%ut",14,0),"Bad 14th line loaded for %ut")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",253,0)
2016-04-11 18:26:37 -04:00
K @GLOB,@GLOBT
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",254,0)
2016-04-11 18:26:37 -04:00
Q
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",255,0)
2016-04-11 18:26:37 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",256,0)
2016-04-11 18:26:37 -04:00
GETVALS ; no test - primarily calls to Cache classes
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",257,0)
2016-04-11 18:26:37 -04:00
Q
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",258,0)
2016-04-11 18:26:37 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",259,0)
2016-04-11 18:26:37 -04:00
LINEDATA ; @TEST - convert code line to based on tags and offset, and identify active code lines
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",260,0)
2016-04-11 18:26:37 -04:00
N CODE,LINE,OFFSET,TAG
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",261,0)
2016-04-11 18:26:37 -04:00
S LINE="TEST1 ; COMMENT ON TAG",TAG="",OFFSET=0
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",262,0)
2016-04-11 18:26:37 -04:00
S CODE=$$LINEDATA^%ut1(LINE,.TAG,.OFFSET) ;
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",263,0)
2016-04-11 18:26:37 -04:00
D CHKEQ(0,CODE,"Tag with comment identified as active code")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",264,0)
2016-04-11 18:26:37 -04:00
D CHKEQ("TEST1",TAG,"Bad tag returned for TEST1")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",265,0)
2016-04-11 18:26:37 -04:00
D CHKEQ(0,OFFSET,"Bad OFFSET returned for TEST1")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",266,0)
2016-04-11 18:26:37 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",267,0)
2016-04-11 18:26:37 -04:00
S LINE=" ; COMMENT ONLY"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",268,0)
2016-04-11 18:26:37 -04:00
S CODE=$$LINEDATA^%ut1(LINE,.TAG,.OFFSET) ;
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",269,0)
2016-04-11 18:26:37 -04:00
D CHKEQ(0,CODE,"Comment line identified as active code")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",270,0)
2016-04-11 18:26:37 -04:00
D CHKEQ("TEST1",TAG,"Bad tag returned for TEST1+1")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",271,0)
2016-04-11 18:26:37 -04:00
D CHKEQ(1,OFFSET,"Bad OFFSET returned for TEST1+1")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",272,0)
2016-04-11 18:26:37 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",273,0)
2016-04-11 18:26:37 -04:00
S LINE=" S X=VALUE"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",274,0)
2016-04-11 18:26:37 -04:00
S CODE=$$LINEDATA^%ut1(LINE,.TAG,.OFFSET) ;
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",275,0)
2016-04-11 18:26:37 -04:00
D CHKEQ(1,CODE,"Code line NOT identified as active code")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",276,0)
2016-04-11 18:26:37 -04:00
D CHKEQ("TEST1",TAG,"Bad tag returned for TEST1+2")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",277,0)
2016-04-11 18:26:37 -04:00
D CHKEQ(2,OFFSET,"Bad OFFSET returned for TEST1+2")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",278,0)
2016-04-11 18:26:37 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",279,0)
2016-04-11 18:26:37 -04:00
S LINE="TEST2 S X=VALUE"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",280,0)
2016-04-11 18:26:37 -04:00
S CODE=$$LINEDATA^%ut1(LINE,.TAG,.OFFSET) ;
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",281,0)
2016-04-11 18:26:37 -04:00
D CHKEQ(1,CODE,"Tag line with code NOT identified as active code")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",282,0)
2016-04-11 18:26:37 -04:00
D CHKEQ("TEST2",TAG,"Bad tag returned for TEST2")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",283,0)
2016-04-11 18:26:37 -04:00
D CHKEQ(0,OFFSET,"Bad OFFSET returned for TEST2")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",284,0)
;
2016-04-11 18:26:37 -04:00
"RTN","uttcovr",285,0)
Q
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",286,0)
2016-04-11 18:26:37 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",287,0)
2016-04-11 18:26:37 -04:00
TOTAGS ;@TEST - convert from lines of code by line number to lines ordered by tag, line from tag, and only not covered
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",288,0)
2016-04-11 18:26:37 -04:00
N ACTIVE,GLOB,GLOBT,X1,X0
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",289,0)
2016-04-11 18:26:37 -04:00
S GLOB=$NA(^TMP("%uttcovr",$J)),GLOBT=$NA(@GLOB@("TEST1")) K @GLOB
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",290,0)
2016-04-11 18:26:37 -04:00
S @GLOBT@(1,0)="LINE1 ; CODE1 LINE1+0 NOT ACTIVE"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",291,0)
2016-04-11 18:26:37 -04:00
S @GLOBT@(2,0)=" CODE2 LINE+1 SEEN"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",292,0)
2016-04-11 18:26:37 -04:00
S @GLOBT@(2,"C")=2
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",293,0)
2016-04-11 18:26:37 -04:00
S @GLOBT@(3,0)=" CODE3 LINE1+2 NOT SEEN"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",294,0)
2016-04-11 18:26:37 -04:00
S @GLOBT@(4,0)="LINE4 CODE4 LINE4+0 SEEN"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",295,0)
2016-04-11 18:26:37 -04:00
S @GLOBT@(4,"C")=5
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",296,0)
2016-04-11 18:26:37 -04:00
S @GLOBT@(5,0)=" ; CODE5 LINE4+1 NOT ACTIVE"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",297,0)
2016-04-11 18:26:37 -04:00
S @GLOBT@(6,0)=" CODE6 LINE4+2 COVERED"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",298,0)
2016-04-11 18:26:37 -04:00
S @GLOBT@(6,"C")=2
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",299,0)
2016-04-11 18:26:37 -04:00
S @GLOBT@(7,0)="LINE7 CODE7 LINE7+0 NOT COVERED"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",300,0)
2016-04-11 18:26:37 -04:00
S @GLOBT@(8,0)=" CODE8 LINE7+1 NOT COVERED"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",301,0)
2016-04-11 18:26:37 -04:00
S ACTIVE=1
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",302,0)
2016-04-11 18:26:37 -04:00
D TOTAGS^%ut1(GLOB,ACTIVE)
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",303,0)
2016-04-11 18:26:37 -04:00
D CHKEQ(1,($D(@GLOBT@("LINE1"))#2),"LINE1 TAG NOT IDENTIFIED")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",304,0)
2016-04-11 18:26:37 -04:00
D CHKEQ(1,($D(@GLOBT@("LINE4"))#2),"LINE4 TAG NOT IDENTIFIED")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",305,0)
2016-04-11 18:26:37 -04:00
D CHKEQ(1,($D(@GLOBT@("LINE7"))#2),"LINE7 TAG NOT IDENTIFIED")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",306,0)
2016-04-11 18:26:37 -04:00
D CHKEQ(0,$D(@GLOBT@("LINE1",0)),"LINE1+0 SHOULD NOT BE INCLUDED - IT IS A COMMENT")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",307,0)
2016-04-11 18:26:37 -04:00
D CHKEQ(0,$D(@GLOBT@("LINE1",1)),"LINE1+1 SHOULD NOT BE INCLUDED - IT WAS COVERED")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",308,0)
2016-04-11 18:26:37 -04:00
D CHKEQ(1,$D(@GLOBT@("LINE1",2)),"LINE1+2 SHOULD BE INCLUDED - IT WAS NOT COVERED")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",309,0)
2016-04-11 18:26:37 -04:00
D CHKEQ(0,$D(@GLOBT@("LINE4",0)),"LINE4+0 SHOULD NOT BE INCLUDED - IT WAS COVERED")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",310,0)
2016-04-11 18:26:37 -04:00
D CHKEQ(0,$D(@GLOBT@("LINE4",1)),"LINE4+1 SHOULD NOT BE INCLUDED - IT IS A COMMENT")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",311,0)
2016-04-11 18:26:37 -04:00
D CHKEQ(0,$D(@GLOBT@("LINE4",2)),"LINE4+2 SHOULD NOT BE INCLUDED - IT WAS COVERED")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",312,0)
2016-04-11 18:26:37 -04:00
D CHKEQ(1,$D(@GLOBT@("LINE7",0)),"LINE7+0 SHOULD BE INCLUDED - IT IS NOT COVERED")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",313,0)
2016-04-11 18:26:37 -04:00
D CHKEQ(1,$D(@GLOBT@("LINE7",1)),"LINE7+1 SHOULD BE INCLUDED - IT IS NOT COVERED")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",314,0)
2016-04-11 18:26:37 -04:00
K @GLOB,@GLOBT
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",315,0)
2016-04-11 18:26:37 -04:00
Q
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",316,0)
2016-04-11 18:26:37 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",317,0)
2016-04-11 18:26:37 -04:00
CHKEQ(EXPECTED,SEEN,COMMENT) ;
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",318,0)
2016-04-11 18:26:37 -04:00
D CHKEQ^%ut(EXPECTED,SEEN,$G(COMMENT))
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",319,0)
2016-04-11 18:26:37 -04:00
Q
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",320,0)
2016-04-11 18:26:37 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",321,0)
2016-04-11 18:26:37 -04:00
CHKTF(VALUE,COMMENT) ;
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",322,0)
2016-04-11 18:26:37 -04:00
D CHKTF^%ut(VALUE,$G(COMMENT))
"RTN","uttcovr",323,0)
2015-03-25 15:05:25 -04:00
Q
"SEC","^DIC",17.9001,17.9001,0,"AUDIT")
@
"SEC","^DIC",17.9001,17.9001,0,"DD")
@
"SEC","^DIC",17.9001,17.9001,0,"DEL")
@
"SEC","^DIC",17.9001,17.9001,0,"LAYGO")
@
"SEC","^DIC",17.9001,17.9001,0,"RD")
@
"SEC","^DIC",17.9001,17.9001,0,"WR")
@
"VER")
8.0^22.0
"^DD",17.9001,17.9001,0)
FIELD^^2^3
"^DD",17.9001,17.9001,0,"DT")
3140812
"^DD",17.9001,17.9001,0,"IX","B",17.9001,.01)
"^DD",17.9001,17.9001,0,"NM","MUNIT TEST GROUP")
"^DD",17.9001,17.9001,0,"VRPK")
MASH
"^DD",17.9001,17.9001,.01,0)
NAME^RF^^0;1^K:$L(X)>30!(X?.N)!($L(X)<3)!'(X'?1P.E) X
"^DD",17.9001,17.9001,.01,1,0)
^.1
"^DD",17.9001,17.9001,.01,1,1,0)
17.9001^B
"^DD",17.9001,17.9001,.01,1,1,1)
S ^%ut(17.9001,"B",$E(X,1,30),DA)=""
"^DD",17.9001,17.9001,.01,1,1,2)
K ^%ut(17.9001,"B",$E(X,1,30),DA)
"^DD",17.9001,17.9001,.01,3)
NAME MUST BE 3-30 CHARACTERS, NOT NUMERIC OR STARTING WITH PUNCTUATION
"^DD",17.9001,17.9001,1,0)
TEST ROUTINE^17.90011^^1;0
"^DD",17.9001,17.9001,2,0)
DESCRIPTION FOR GROUP^17.90012^^2;0
"^DD",17.9001,17.9001,2,21,0)
^^3^3^3140812^
"^DD",17.9001,17.9001,2,21,1,0)
This word processing field provides a location for the developer to enter
"^DD",17.9001,17.9001,2,21,2,0)
a description of the purpose or function of the M-Unit Test Group,
"^DD",17.9001,17.9001,2,21,3,0)
including if desired comments on the various routines in the group.
"^DD",17.9001,17.9001,2,23,0)
^^3^3^3140812^
"^DD",17.9001,17.9001,2,23,1,0)
This word processing field provides a location for the developer to enter
"^DD",17.9001,17.9001,2,23,2,0)
a description of the purpose or function of the M-Unit Test Group,
"^DD",17.9001,17.9001,2,23,3,0)
including if desired comments on the various routines in the group.
"^DD",17.9001,17.9001,2,"DT")
3140812
"^DD",17.9001,17.90011,0)
TEST ROUTINE SUB-FIELD^^.01^1
"^DD",17.9001,17.90011,0,"DT")
3140731
"^DD",17.9001,17.90011,0,"IX","B",17.90011,.01)
"^DD",17.9001,17.90011,0,"NM","TEST ROUTINE")
"^DD",17.9001,17.90011,0,"UP")
17.9001
"^DD",17.9001,17.90011,.01,0)
TEST ROUTINE^MF^^0;1^K:$L(X)>8!($L(X)<3) X
"^DD",17.9001,17.90011,.01,1,0)
^.1
"^DD",17.9001,17.90011,.01,1,1,0)
17.90011^B
"^DD",17.9001,17.90011,.01,1,1,1)
S ^%ut(17.9001,DA(1),1,"B",$E(X,1,30),DA)=""
"^DD",17.9001,17.90011,.01,1,1,2)
K ^%ut(17.9001,DA(1),1,"B",$E(X,1,30),DA)
"^DD",17.9001,17.90011,.01,3)
This is a routine to be used for the MUnit Test Group. Answer must be 3-8 characters in length.
"^DD",17.9001,17.90011,.01,"DT")
3140731
"^DD",17.9001,17.90012,0)
DESCRIPTION FOR GROUP SUB-FIELD^^.01^1
"^DD",17.9001,17.90012,0,"DT")
3140812
"^DD",17.9001,17.90012,0,"NM","DESCRIPTION FOR GROUP")
"^DD",17.9001,17.90012,0,"UP")
17.9001
"^DD",17.9001,17.90012,.01,0)
DESCRIPTION FOR GROUP^W^^0;1^Q
"^DD",17.9001,17.90012,.01,3)
Enter a description for the Unit Test Group
"^DD",17.9001,17.90012,.01,21,0)
^.001^3^3^3140812^^
"^DD",17.9001,17.90012,.01,21,1,0)
This word processing field provides a location for the developer to enter
"^DD",17.9001,17.90012,.01,21,2,0)
a description of the purpose or function of the M-Unit Test Group,
"^DD",17.9001,17.90012,.01,21,3,0)
including if desired comments on the various routines in the group.
"^DD",17.9001,17.90012,.01,23,0)
^^3^3^3140812^
"^DD",17.9001,17.90012,.01,23,1,0)
This word processing field provides a location for the developer to enter
"^DD",17.9001,17.90012,.01,23,2,0)
a description of the purpose or function of the M-Unit Test Group,
"^DD",17.9001,17.90012,.01,23,3,0)
including if desired comments on the various routines in the group.
"^DD",17.9001,17.90012,.01,"DT")
3140812
"^DIC",17.9001,17.9001,0)
M-UNIT TEST GROUP^17.9001
"^DIC",17.9001,17.9001,0,"GL")
^%ut(17.9001,
"^DIC",17.9001,"B","M-UNIT TEST GROUP",17.9001)
2016-04-11 18:26:37 -04:00
$END KID MASH*1.4*0