2017-07-10 13:17:43 -04:00
KIDS Distribution saved on Jul 10, 2017@09:40:43
Updated M-Unit functionality
2017-02-12 23:15:29 -05:00
**KIDS**:MASH*1.5*0^
2015-03-25 15:05:25 -04:00
**INSTALL NAME**
2017-02-12 23:15:29 -05:00
MASH*1.5*0
"BLD",9540,0)
2017-07-10 13:17:43 -04:00
MASH*1.5*0^MASH UTILITIES^0^3170710^n
2017-02-12 23:15:29 -05:00
"BLD",9540,1,0)
^^6^6^3170206^
"BLD",9540,1,1,0)
2016-04-11 18:26:37 -04:00
Updated release of MASH UTILITIES package for running unit tests on MUMPS
2017-02-12 23:15:29 -05:00
"BLD",9540,1,2,0)
code fixing a few issues. Unit tests and coverage analysis may now be
"BLD",9540,1,3,0)
run in accounts without VistA packages installed. Cache systems with
"BLD",9540,1,4,0)
computer names beginning with a digit will now be recognized as Cache
"BLD",9540,1,5,0)
systems. If the Break option is used, it now identifies the error or
"BLD",9540,1,6,0)
type of failure that caused the break to happen.
"BLD",9540,4,0)
2015-03-25 15:05:25 -04:00
^9.64PA^17.9001^1
2017-02-12 23:15:29 -05:00
"BLD",9540,4,17.9001,0)
2015-03-25 15:05:25 -04:00
17.9001
2017-02-12 23:15:29 -05:00
"BLD",9540,4,17.9001,222)
2016-02-27 17:01:27 -05:00
y^y^f^^n^^y^m^n
2017-02-12 23:15:29 -05:00
"BLD",9540,4,"B",17.9001,17.9001)
2015-03-25 15:05:25 -04:00
2017-02-12 23:15:29 -05:00
"BLD",9540,6.3)
2017-07-10 13:17:43 -04:00
13
2017-02-12 23:15:29 -05:00
"BLD",9540,"INI")
2015-03-25 15:05:25 -04:00
ZZUTPRE
2017-02-12 23:15:29 -05:00
"BLD",9540,"INIT")
2015-03-25 15:05:25 -04:00
ZZUTPOST
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",0)
2016-02-27 17:01:27 -05:00
^9.67PA^779.2^20
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",.4,0)
2015-03-25 15:05:25 -04:00
.4
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",.401,0)
2015-03-25 15:05:25 -04:00
.401
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",.402,0)
2015-03-25 15:05:25 -04:00
.402
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",.403,0)
2015-03-25 15:05:25 -04:00
.403
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",.5,0)
2015-03-25 15:05:25 -04:00
.5
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",.84,0)
2015-03-25 15:05:25 -04:00
.84
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",3.6,0)
2015-03-25 15:05:25 -04:00
3.6
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",3.8,0)
2015-03-25 15:05:25 -04:00
3.8
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",9.2,0)
2015-03-25 15:05:25 -04:00
9.2
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",9.8,0)
2015-03-25 15:05:25 -04:00
9.8
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",9.8,"NM",0)
2017-07-10 13:17:43 -04:00
^9.68A^11^11
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",9.8,"NM",1,0)
2017-07-10 13:17:43 -04:00
ut1^^0^B259333727
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",9.8,"NM",2,0)
2017-07-10 13:17:43 -04:00
ut^^0^B259782146
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",9.8,"NM",3,0)
2017-07-10 13:17:43 -04:00
utcover^^0^B86708312
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",9.8,"NM",4,0)
2017-07-10 13:17:43 -04:00
utt1^^0^B47228039
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",9.8,"NM",5,0)
utt2^^0^B685355
"BLD",9540,"KRN",9.8,"NM",6,0)
2016-02-27 17:01:27 -05:00
utt3^^0^B1628564
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",9.8,"NM",7,0)
utt4^^0^B3071162
"BLD",9540,"KRN",9.8,"NM",8,0)
2017-07-10 13:17:43 -04:00
utt5^^0^B26349822
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",9.8,"NM",9,0)
2017-07-10 13:17:43 -04:00
utt6^^0^B41667626
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",9.8,"NM",10,0)
2017-07-10 13:17:43 -04:00
uttcovr^^0^B188096777
"BLD",9540,"KRN",9.8,"NM",11,0)
utt7^^0^B45754056
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",9.8,"NM","B","ut",2)
2015-03-25 15:05:25 -04:00
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",9.8,"NM","B","ut1",1)
2015-03-25 15:05:25 -04:00
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",9.8,"NM","B","utcover",3)
2015-03-25 15:05:25 -04:00
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",9.8,"NM","B","utt1",4)
2015-03-25 15:05:25 -04:00
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",9.8,"NM","B","utt2",5)
2015-03-25 15:05:25 -04:00
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",9.8,"NM","B","utt3",6)
2015-03-25 15:05:25 -04:00
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",9.8,"NM","B","utt4",7)
2015-03-25 15:05:25 -04:00
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",9.8,"NM","B","utt5",8)
2015-03-25 15:05:25 -04:00
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",9.8,"NM","B","utt6",9)
2015-03-25 15:05:25 -04:00
2017-07-10 13:17:43 -04:00
"BLD",9540,"KRN",9.8,"NM","B","utt7",11)
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",9.8,"NM","B","uttcovr",10)
2016-02-27 17:01:27 -05:00
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",19,0)
2015-03-25 15:05:25 -04:00
19
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",19,"NM",0)
2015-03-25 15:05:25 -04:00
^9.68A^3^3
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",19,"NM",1,0)
2015-03-25 15:05:25 -04:00
utMUNIT^^0
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",19,"NM",2,0)
2015-03-25 15:05:25 -04:00
utMUNIT GROUP EDIT^^0
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",19,"NM",3,0)
2015-03-25 15:05:25 -04:00
utMUNIT GROUP RUN^^0
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",19,"NM","B","utMUNIT",1)
2015-03-25 15:05:25 -04:00
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",19,"NM","B","utMUNIT GROUP EDIT",2)
2015-03-25 15:05:25 -04:00
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",19,"NM","B","utMUNIT GROUP RUN",3)
2015-03-25 15:05:25 -04:00
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",19.1,0)
2015-03-25 15:05:25 -04:00
19.1
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",101,0)
2015-03-25 15:05:25 -04:00
101
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",409.61,0)
2015-03-25 15:05:25 -04:00
409.61
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",771,0)
2015-03-25 15:05:25 -04:00
771
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",779.2,0)
2016-02-27 17:01:27 -05:00
779.2
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",870,0)
2015-03-25 15:05:25 -04:00
870
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",8989.51,0)
2015-03-25 15:05:25 -04:00
8989.51
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",8989.52,0)
2015-03-25 15:05:25 -04:00
8989.52
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",8994,0)
2015-03-25 15:05:25 -04:00
8994
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",8994,"NM",0)
2015-03-25 15:05:25 -04:00
^9.68A^3^3
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",8994,"NM",1,0)
2015-03-25 15:05:25 -04:00
utMUNIT-TEST GROUP LOAD^^0
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",8994,"NM",2,0)
2015-03-25 15:05:25 -04:00
utMUNIT-TEST LOAD^^0
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",8994,"NM",3,0)
2015-03-25 15:05:25 -04:00
utMUNIT-TEST NEXT^^0
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",8994,"NM","B","utMUNIT-TEST GROUP LOAD",1)
2016-02-27 17:01:27 -05:00
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",8994,"NM","B","utMUNIT-TEST LOAD",2)
2015-03-25 15:05:25 -04:00
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN",8994,"NM","B","utMUNIT-TEST NEXT",3)
2015-03-25 15:05:25 -04:00
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN","B",.4,.4)
2015-03-25 15:05:25 -04:00
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN","B",.401,.401)
2015-03-25 15:05:25 -04:00
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN","B",.402,.402)
2015-03-25 15:05:25 -04:00
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN","B",.403,.403)
2015-03-25 15:05:25 -04:00
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN","B",.5,.5)
2015-03-25 15:05:25 -04:00
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN","B",.84,.84)
2015-03-25 15:05:25 -04:00
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN","B",3.6,3.6)
2015-03-25 15:05:25 -04:00
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN","B",3.8,3.8)
2015-03-25 15:05:25 -04:00
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN","B",9.2,9.2)
2015-03-25 15:05:25 -04:00
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN","B",9.8,9.8)
2015-03-25 15:05:25 -04:00
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN","B",19,19)
2015-03-25 15:05:25 -04:00
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN","B",19.1,19.1)
2015-03-25 15:05:25 -04:00
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN","B",101,101)
2015-03-25 15:05:25 -04:00
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN","B",409.61,409.61)
2015-03-25 15:05:25 -04:00
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN","B",771,771)
2015-03-25 15:05:25 -04:00
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN","B",779.2,779.2)
2015-03-25 15:05:25 -04:00
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN","B",870,870)
2015-03-25 15:05:25 -04:00
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN","B",8989.51,8989.51)
2015-03-25 15:05:25 -04:00
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN","B",8989.52,8989.52)
2015-03-25 15:05:25 -04:00
2017-02-12 23:15:29 -05:00
"BLD",9540,"KRN","B",8994,8994)
2015-03-25 15:05:25 -04:00
2017-02-12 23:15:29 -05:00
"BLD",9540,"QDEF")
2016-02-27 17:01:27 -05:00
^^^^NO^^^^NO^^NO
2017-02-12 23:15:29 -05:00
"BLD",9540,"QUES",0)
2015-03-25 15:05:25 -04:00
^9.62^^
2017-02-12 23:15:29 -05:00
"BLD",9540,"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)
2017-02-12 23:15:29 -05:00
^17.90011^7^7
2015-03-25 15:05:25 -04:00
"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
2017-02-12 23:15:29 -05:00
"DATA",17.9001,1,1,6,0)
%utt6
"DATA",17.9001,1,1,7,0)
%uttcovr
2016-02-27 17:01:27 -05:00
"DATA",17.9001,1,2,0)
2017-02-12 23:15:29 -05:00
^17.90012^4^4^3170129^^
2016-02-27 17:01:27 -05:00
"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")
2017-02-12 23:15:29 -05:00
1.5^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)
2017-02-12 23:15:29 -05:00
1.5
2016-04-11 18:26:37 -04:00
"PKG",222,22,1,"PAH",1,0)
2017-07-10 13:17:43 -04:00
0^3170710^2802
2016-04-11 18:26:37 -04:00
"PKG",222,22,1,"PAH",1,1,0)
2017-07-10 13:17:43 -04:00
^^6^6^3170710
2016-04-11 18:26:37 -04:00
"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)
2017-02-12 23:15:29 -05:00
code fixing a few issues. Unit tests and coverage analysis may now be
2016-04-11 18:26:37 -04:00
"PKG",222,22,1,"PAH",1,1,3,0)
2017-02-12 23:15:29 -05:00
run in accounts without VistA packages installed. Cache systems with
"PKG",222,22,1,"PAH",1,1,4,0)
computer names beginning with a digit will now be recognized as Cache
"PKG",222,22,1,"PAH",1,1,5,0)
systems. If the Break option is used, it now identifies the error or
"PKG",222,22,1,"PAH",1,1,6,0)
type of failure that caused the break to happen.
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")
2017-07-10 13:17:43 -04:00
13
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST")
2017-07-10 13:17:43 -04:00
0^^B21060915
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",1,0)
2017-07-10 13:17:43 -04:00
%utPOST ;VEN-SMH/JLI - post install for M-Unit Test software ;07/04/17 12:50
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",2,0)
2017-07-10 13:17:43 -04:00
;;1.5;MASH UTILITIES;;Jul 8, 2017;Build 13
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",3,0)
2017-07-10 13:17:43 -04:00
; Submitted to OSEHRA Jul 8, 2017 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)
2017-07-10 13:17:43 -04:00
; Additions and Modifications made by Sam H. Habiel and Joel L. Ivey 02/2016-05/2017
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)
2017-07-10 13:17:43 -04:00
S %S="ut^ut1^utcover^utt1^utt2^utt3^utt4^utt5^utt6^utt7^uttcovr"
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",16,0)
2017-07-10 13:17:43 -04:00
S %D="%ut^%ut1^%utcover^%utt1^%utt2^%utt3^%utt4^%utt5^%utt6^%utt7^%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)
2017-07-10 13:17:43 -04:00
N XVAL,SYSTEM
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",34,0)
2017-07-10 13:17:43 -04:00
S SYSTEM=$S($P($SY,",",2)'="":+$SY,1:0) ; protect against Windows with system names beginning with digits in Cache
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",35,0)
2017-07-10 13:17:43 -04:00
I SYSTEM=0 S XVAL="ZL @FROM ZS @TO" X XVAL QUIT
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",36,0)
2017-07-10 13:17:43 -04:00
I SYSTEM=47 DO QUIT
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",37,0)
2017-07-10 13:17:43 -04:00
. S FROM=$$PATH(FROM)
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",38,0)
2017-07-10 13:17:43 -04:00
. S TO=$$PATH(TO,"WRITE")
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",39,0)
2017-07-10 13:17:43 -04:00
. N CMD S CMD="cp "_FROM_" "_TO
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",40,0)
2017-07-10 13:17:43 -04:00
. O "cp":(shell="/bin/sh":command=CMD:WRITEONLY)::"PIPE"
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",41,0)
2017-07-10 13:17:43 -04:00
. U "cp" C "cp"
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",42,0)
2017-07-10 13:17:43 -04:00
QUIT
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",43,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",44,0)
2017-07-10 13:17:43 -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",45,0)
2017-07-10 13:17:43 -04:00
;input: ROUTINE=Name of routine
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",46,0)
2017-07-10 13:17:43 -04:00
; MODE="READ" or "WRITE" defaults to READ
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",47,0)
2017-07-10 13:17:43 -04:00
;output: Full filename
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",48,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",49,0)
2017-07-10 13:17:43 -04:00
S MODE=$G(MODE,"READ") ;set MODE to default value
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",50,0)
2017-07-10 13:17:43 -04:00
N FILE S FILE=$TR(ROUTINE,"%","_")_".m" ;convert rtn name to filename
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",51,0)
2017-07-10 13:17:43 -04:00
N ZRO S ZRO=$ZRO
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",52,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",53,0)
2017-07-10 13:17:43 -04:00
; Get source routine
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",54,0)
2017-07-10 13:17:43 -04:00
N %ZR
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",55,0)
2017-07-10 13:17:43 -04:00
I MODE="READ" D SILENT^%RSEL(ROUTINE,"SRC") Q %ZR(ROUTINE)_FILE
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",56,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",57,0)
2017-07-10 13:17:43 -04:00
; We are writing. Parse directories and get 1st routine directory
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",58,0)
2017-07-10 13:17:43 -04:00
N DIRS
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",59,0)
2017-07-10 13:17:43 -04:00
D PARSEZRO(.DIRS,ZRO)
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",60,0)
2017-07-10 13:17:43 -04:00
N PATH S PATH=$$ZRO1ST(.DIRS)
2016-04-11 18:26:37 -04:00
"RTN","ZZUTPOST",61,0)
2016-02-27 17:01:27 -05:00
;
2017-07-10 13:17:43 -04:00
"RTN","ZZUTPOST",62,0)
QUIT PATH_FILE ;end of PATH return directory and filename
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)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",65,0)
2017-07-10 13:17:43 -04:00
PARSEZRO(DIRS,ZRO) ; Parse $zroutines properly into an array
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",66,0)
2017-07-10 13:17:43 -04:00
N PIECE
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",67,0)
2017-07-10 13:17:43 -04:00
N I
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",68,0)
2017-07-10 13:17:43 -04:00
F I=1:1:$L(ZRO," ") S PIECE(I)=$P(ZRO," ",I)
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",69,0)
2017-07-10 13:17:43 -04:00
N CNT S CNT=1
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",70,0)
2017-07-10 13:17:43 -04:00
F I=0:0 S I=$O(PIECE(I)) Q:'I D
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",71,0)
2017-07-10 13:17:43 -04:00
. S DIRS(CNT)=$G(DIRS(CNT))_PIECE(I)
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",72,0)
2017-07-10 13:17:43 -04:00
. I DIRS(CNT)["("&(DIRS(CNT)[")") S CNT=CNT+1 QUIT
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",73,0)
2017-07-10 13:17:43 -04:00
. I DIRS(CNT)'["("&(DIRS(CNT)'[")") S CNT=CNT+1 QUIT
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",74,0)
2017-07-10 13:17:43 -04:00
. S DIRS(CNT)=DIRS(CNT)_" " ; prep for next piece
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",75,0)
2017-07-10 13:17:43 -04:00
QUIT
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",76,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",77,0)
2017-07-10 13:17:43 -04:00
ZRO1ST(DIRS) ; $$ Get first routine directory
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",78,0)
2017-07-10 13:17:43 -04:00
N OUT ; $$ return
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",79,0)
2017-07-10 13:17:43 -04:00
N %1 S %1=DIRS(1) ; 1st directory
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",80,0)
2017-07-10 13:17:43 -04:00
; Parse with (...)
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",81,0)
2017-07-10 13:17:43 -04:00
I %1["(" DO
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",82,0)
2017-07-10 13:17:43 -04:00
. S OUT=$P(%1,"(",2)
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",83,0)
2017-07-10 13:17:43 -04:00
. I OUT[" " S OUT=$P(OUT," ")
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",84,0)
2017-07-10 13:17:43 -04:00
. E S OUT=$P(OUT,")")
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",85,0)
2017-07-10 13:17:43 -04:00
; no parens
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",86,0)
2017-07-10 13:17:43 -04:00
E S OUT=%1
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",87,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",88,0)
2017-07-10 13:17:43 -04:00
; Add trailing slash
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",89,0)
2017-07-10 13:17:43 -04:00
I $E(OUT,$L(OUT))'="/" S OUT=OUT_"/"
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",90,0)
2017-07-10 13:17:43 -04:00
QUIT OUT
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",91,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",92,0)
2017-07-10 13:17:43 -04:00
MES(T,B) ;Write message.
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",93,0)
2017-07-10 13:17:43 -04:00
S B=$G(B)
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",94,0)
2017-07-10 13:17:43 -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",95,0)
2017-07-10 13:17:43 -04:00
W:B ! W !,T
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",96,0)
2017-07-10 13:17:43 -04:00
Q
2016-04-11 18:26:37 -04:00
"RTN","ZZUTPOST",97,0)
;
2017-07-10 13:17:43 -04:00
"RTN","ZZUTPOST",98,0)
TEST ; @TEST - TESTING TESTING
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",99,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",100,0)
2017-07-10 13:17:43 -04:00
N FAIL S FAIL=0
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",101,0)
2017-07-10 13:17:43 -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",102,0)
2017-07-10 13:17:43 -04:00
N DIRS D PARSEZRO(.DIRS,ZR)
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",103,0)
2017-07-10 13:17:43 -04:00
N FIRSTDIR S FIRSTDIR=$$ZRO1ST(.DIRS)
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",104,0)
2017-07-10 13:17:43 -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",105,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",106,0)
2017-07-10 13:17:43 -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",107,0)
2017-07-10 13:17:43 -04:00
N DIRS D PARSEZRO(.DIRS,ZR)
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",108,0)
2017-07-10 13:17:43 -04:00
N FIRSTDIR S FIRSTDIR=$$ZRO1ST(.DIRS)
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",109,0)
2017-07-10 13:17:43 -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",110,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",111,0)
2017-07-10 13:17:43 -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",112,0)
2017-07-10 13:17:43 -04:00
N DIRS D PARSEZRO(.DIRS,ZR)
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",113,0)
2017-07-10 13:17:43 -04:00
N FIRSTDIR S FIRSTDIR=$$ZRO1ST(.DIRS)
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",114,0)
2017-07-10 13:17:43 -04:00
I FIRSTDIR'="/abc/def/" W !,"TEST 3 expected '/abc/def/', got '"_FIRSTDIR_"'" S FAIL=FAIL+1 ;S $EC=",U1,"
2016-04-11 18:26:37 -04:00
"RTN","ZZUTPOST",115,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",116,0)
2017-07-10 13:17:43 -04:00
I FAIL=0 WRITE "All tests have run successfully!",!
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",117,0)
2017-07-10 13:17:43 -04:00
I FAIL>0 WRITE !,"***** Failed "_FAIL_" tests out of 3 *****",!
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",118,0)
2017-07-10 13:17:43 -04:00
QUIT
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",119,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",120,0)
2017-07-10 13:17:43 -04:00
PREKIDS ; Ready for KIDS - Move % routines to non-percent version
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",121,0)
2017-07-10 13:17:43 -04:00
N %S,%D ; Source, destination
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPOST",122,0)
2017-07-10 13:17:43 -04:00
S U="^"
2016-02-27 17:01:27 -05:00
"RTN","ZZUTPOST",123,0)
2017-07-10 13:17:43 -04:00
S %D="ut^ut1^utcover^utt1^utt2^utt3^utt4^utt5^utt6^utt7^uttcovr"
2016-04-11 18:26:37 -04:00
"RTN","ZZUTPOST",124,0)
2017-07-10 13:17:43 -04:00
S %S="%ut^%ut1^%utcover^%utt1^%utt2^%utt3^%utt4^%utt5^%utt6^%utt7^%uttcovr"
2016-04-11 18:26:37 -04:00
"RTN","ZZUTPOST",125,0)
2017-07-10 13:17:43 -04:00
D MOVE
2016-04-11 18:26:37 -04:00
"RTN","ZZUTPOST",126,0)
2017-07-10 13:17:43 -04:00
QUIT
"RTN","ZZUTPOST",127,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)
2017-07-10 13:17:43 -04:00
;;1.5;MASH UTILITIES;;Jul 8, 2017;Build 13
2015-03-25 15:05:25 -04:00
"RTN","ZZUTPRE",3,0)
2017-07-10 13:17:43 -04:00
; Submitted to OSEHRA Jul 8, 2017 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")
2017-07-10 13:17:43 -04:00
0^2^B259782146
2015-03-25 15:05:25 -04:00
"RTN","ut",1,0)
2017-07-10 13:17:43 -04:00
%ut ;VEN-SMH/JLI - PRIMARY PROGRAM FOR M-UNIT TESTING ;04/26/17 21:08
2015-03-25 15:05:25 -04:00
"RTN","ut",2,0)
2017-07-10 13:17:43 -04:00
;;1.5;MASH UTILITIES;;Jul 8, 2017;Build 13
2015-03-25 15:05:25 -04:00
"RTN","ut",3,0)
2017-07-10 13:17:43 -04:00
; Submitted to OSEHRA Jul 8, 2017 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)
2017-02-12 23:15:29 -05:00
; Additions and modifications made by Sam H. Habiel and Joel L. Ivey 2013-02/2017 ;
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)
2017-02-12 23:15:29 -05:00
; Original by Dr. Joel Ivey (JLI)
2015-03-25 15:05:25 -04:00
"RTN","ut",13,0)
2017-02-12 23:15:29 -05:00
; Contributions by Dr. Sam Habiel (SMH)
2015-03-25 15:05:25 -04:00
"RTN","ut",14,0)
2017-02-12 23:15:29 -05:00
; older 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)
2017-02-12 23:15:29 -05:00
; For a list of changes in this version in this routine see tag %ut in routine %utt2
2015-03-25 15:05:25 -04:00
"RTN","ut",17,0)
2016-02-27 17:01:27 -05:00
;
2017-02-12 23:15:29 -05:00
"RTN","ut",18,0)
D ^%utt6 ; runs unit tests on all of it
2015-03-25 15:05:25 -04:00
"RTN","ut",19,0)
2017-02-12 23:15:29 -05:00
Q
2015-03-25 15:05:25 -04:00
"RTN","ut",20,0)
2017-02-12 23:15:29 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",21,0)
2017-02-12 23:15:29 -05:00
EN(%utRNAM,%utVERB,%utBREAK) ; .SR Entry point with primary test routine name
2015-03-25 15:05:25 -04:00
"RTN","ut",22,0)
2017-02-12 23:15:29 -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",23,0)
2017-02-12 23:15:29 -05:00
; %utVERB: (optional) 1 for verbose output or for verbose and timing info 2 (milliseconds) or 3 (microseconds).
2015-03-25 15:05:25 -04:00
"RTN","ut",24,0)
2017-02-12 23:15:29 -05:00
; %utBREAK:(optional) bool - Break upon error or upon failure
2015-03-25 15:05:25 -04:00
"RTN","ut",25,0)
2017-07-10 13:17:43 -04:00
N %utLIST,%utROU,%ut,%utIO
2015-03-25 15:05:25 -04:00
"RTN","ut",26,0)
2017-07-10 13:17:43 -04:00
S %utLIST=1,%utROU(%utLIST)=%utRNAM,%utIO=$S($D(IO)#2:IO,1:$PRINCIPAL)
2015-03-25 15:05:25 -04:00
"RTN","ut",27,0)
2017-07-10 13:17:43 -04:00
N IO S IO=%utIO
2015-03-25 15:05:25 -04:00
"RTN","ut",28,0)
2017-07-10 13:17:43 -04:00
K ^TMP("%ut",$J,"UTVALS")
2015-03-25 15:05:25 -04:00
"RTN","ut",29,0)
2017-07-10 13:17:43 -04:00
D SETUT
2015-03-25 15:05:25 -04:00
"RTN","ut",30,0)
2017-07-10 13:17:43 -04:00
D EN1(.%utROU,%utLIST)
2015-03-25 15:05:25 -04:00
"RTN","ut",31,0)
2017-07-10 13:17:43 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","ut",32,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",33,0)
2017-07-10 13:17:43 -04:00
GETSYS() ;.EF - returns numeric indicator of system value
2015-03-25 15:05:25 -04:00
"RTN","ut",34,0)
2017-07-10 13:17:43 -04:00
N VALUE
2015-03-25 15:05:25 -04:00
"RTN","ut",35,0)
2017-07-10 13:17:43 -04:00
; Cache uses name of system, and has no second comma piece (unless it is part of system name), so set value to zero if no second comma piece is present in case system name begins with a number
2015-03-25 15:05:25 -04:00
"RTN","ut",36,0)
2017-07-10 13:17:43 -04:00
S VALUE=$S($P($SY,",",2)'="":+$SY,1:0)
2015-03-25 15:05:25 -04:00
"RTN","ut",37,0)
2017-07-10 13:17:43 -04:00
Q VALUE
2015-03-25 15:05:25 -04:00
"RTN","ut",38,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",39,0)
2017-07-10 13:17:43 -04:00
SETUT ;
2015-03-25 15:05:25 -04:00
"RTN","ut",40,0)
2017-07-10 13:17:43 -04:00
; VEN/SMH 26JUL2013
2015-03-25 15:05:25 -04:00
"RTN","ut",41,0)
2017-07-10 13:17:43 -04:00
I '($D(IO)#2) S IO=$PRINCIPLE
2015-03-25 15:05:25 -04:00
"RTN","ut",42,0)
2017-07-10 13:17:43 -04:00
S U="^"
2016-02-27 17:01:27 -05:00
"RTN","ut",43,0)
2017-07-10 13:17:43 -04:00
; VEN/SMH 26JUL2013 END
2016-02-27 17:01:27 -05:00
"RTN","ut",44,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",45,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: %ut -- NEWED ON ENTRY
2015-03-25 15:05:25 -04:00
"RTN","ut",46,0)
2017-07-10 13:17:43 -04:00
S %ut("IO")=IO
2015-03-25 15:05:25 -04:00
"RTN","ut",47,0)
2017-07-10 13:17:43 -04: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",48,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",49,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: %utBREAK
2015-03-25 15:05:25 -04:00
"RTN","ut",50,0)
2017-07-10 13:17:43 -04:00
I $G(%utBREAK) S %ut("BREAK")=1
2015-03-25 15:05:25 -04:00
"RTN","ut",51,0)
2017-07-10 13:17:43 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","ut",52,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",53,0)
2017-07-10 13:17:43 -04:00
EN1(%utROU,%utLIST) ;
2015-03-25 15:05:25 -04:00
"RTN","ut",54,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: %utGUI -- CONDITIONALLY DEFINED BY GUINEXT
2015-03-25 15:05:25 -04:00
"RTN","ut",55,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: %ut -- NEWED IN EN
2015-03-25 15:05:25 -04:00
"RTN","ut",56,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: GetCPUTime,Process -- parts of Cache method names
2015-03-25 15:05:25 -04:00
"RTN","ut",57,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: IOM - if present margin width defined by Kernel
2015-03-25 15:05:25 -04:00
"RTN","ut",58,0)
2017-07-10 13:17:43 -04:00
N %utERRL,%utK,%utI,%utJ,%utSTRT,%utONLY,%utROU1
2015-03-25 15:05:25 -04:00
"RTN","ut",59,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: %utVERB -- ARGUMENT TO EN
2015-03-25 15:05:25 -04:00
"RTN","ut",60,0)
2017-07-10 13:17:43 -04:00
I '+$G(%utVERB) S %utVERB=0
2015-03-25 15:05:25 -04:00
"RTN","ut",61,0)
2017-07-10 13:17:43 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","ut",62,0)
2017-07-10 13:17:43 -04:00
; Structure map for %ut
2015-03-25 15:05:25 -04:00
"RTN","ut",63,0)
2017-07-10 13:17:43 -04:00
; -- CURR = Counter for routine number. Used as sub in %utROU
2015-03-25 15:05:25 -04:00
"RTN","ut",64,0)
2017-07-10 13:17:43 -04:00
; -- ECNT = Entry point count in loop (cf. NERT); VEN/SMH - Needed?
2015-03-25 15:05:25 -04:00
"RTN","ut",65,0)
2017-07-10 13:17:43 -04:00
; -- FAIL = Number of failures
2016-02-27 17:01:27 -05:00
"RTN","ut",66,0)
2017-07-10 13:17:43 -04:00
; -- CHK = Number of checks ran (TF/EQ/FAIL)
2015-03-25 15:05:25 -04:00
"RTN","ut",67,0)
2017-07-10 13:17:43 -04:00
; -- NENT = Number of entry points ran
2015-03-25 15:05:25 -04:00
"RTN","ut",68,0)
2017-07-10 13:17:43 -04:00
; -- ERRN = Number of errors
2015-03-25 15:05:25 -04:00
"RTN","ut",69,0)
2017-07-10 13:17:43 -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",70,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",71,0)
2017-07-10 13:17:43 -04:00
; -- GET LIST OF ROUTINES --
2015-03-25 15:05:25 -04:00
"RTN","ut",72,0)
2017-07-10 13:17:43 -04:00
; first get any tree of routines from this one
2015-03-25 15:05:25 -04:00
"RTN","ut",73,0)
2017-07-10 13:17:43 -04:00
D GETTREE^%ut1(.%utROU,.%utLIST)
2015-03-25 15:05:25 -04:00
"RTN","ut",74,0)
2017-07-10 13:17:43 -04:00
; identify whether any tests are marked with !test - as run only these tests
2015-03-25 15:05:25 -04:00
"RTN","ut",75,0)
2017-07-10 13:17:43 -04:00
S %utONLY=0
2015-03-25 15:05:25 -04:00
"RTN","ut",76,0)
2017-07-10 13:17:43 -04:00
F I=1:1 S %utROU1=$G(%utROU(I)) Q:%utROU1="" D CHEKTEST^%ut1(%utROU1,.%ut,.%utETRY,1) I %ut("ENTN")>0 S %utONLY=1 Q
2015-03-25 15:05:25 -04:00
"RTN","ut",77,0)
2017-07-10 13:17:43 -04:00
; Now process each routine that has been referenced
2015-03-25 15:05:25 -04:00
"RTN","ut",78,0)
2017-07-10 13:17:43 -04:00
N CURRROU
2015-03-25 15:05:25 -04:00
"RTN","ut",79,0)
2017-07-10 13:17:43 -04:00
S %ut("CURR")=0
2015-03-25 15:05:25 -04:00
"RTN","ut",80,0)
2017-07-10 13:17:43 -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",81,0)
2017-07-10 13:17:43 -04:00
. I $T(@("STARTUP^"_CURRROU))'="" D @("STARTUP^"_CURRROU)
2015-03-25 15:05:25 -04:00
"RTN","ut",82,0)
2017-07-10 13:17:43 -04:00
. N %utETRY ; Test list to run
2015-03-25 15:05:25 -04:00
"RTN","ut",83,0)
2017-07-10 13:17:43 -04:00
. ;
2015-03-25 15:05:25 -04:00
"RTN","ut",84,0)
2017-07-10 13:17:43 -04:00
. I %utVERB D ; JLI 161113 - if verbose, list routine name as header for following tags
2015-03-25 15:05:25 -04:00
"RTN","ut",85,0)
2017-07-10 13:17:43 -04:00
. . N LINEMARK,LENGTH
2015-03-25 15:05:25 -04:00
"RTN","ut",86,0)
2017-07-10 13:17:43 -04:00
. . S LENGTH=$S(($L(CURRROU)#2):($L(CURRROU)+3),1:($L(CURRROU)+2))
2015-03-25 15:05:25 -04:00
"RTN","ut",87,0)
2017-07-10 13:17:43 -04:00
. . N RM S RM=$G(IOM,80)-2 ; SMH
2015-03-25 15:05:25 -04:00
"RTN","ut",88,0)
2017-07-10 13:17:43 -04:00
. . S $P(LINEMARK,"-",(RM-LENGTH)/2)="-"
2015-03-25 15:05:25 -04:00
"RTN","ut",89,0)
2017-07-10 13:17:43 -04:00
. . W !!," ",LINEMARK," ",CURRROU," ",LINEMARK
2015-03-25 15:05:25 -04:00
"RTN","ut",90,0)
2017-07-10 13:17:43 -04:00
. . Q
2015-03-25 15:05:25 -04:00
"RTN","ut",91,0)
2017-07-10 13:17:43 -04:00
. ;
2015-03-25 15:05:25 -04:00
"RTN","ut",92,0)
2017-07-10 13:17:43 -04:00
. ; Collect Test list.
2015-03-25 15:05:25 -04:00
"RTN","ut",93,0)
2017-07-10 13:17:43 -04:00
. D CHEKTEST^%ut1(%utROU(%ut("CURR")),.%ut,.%utETRY,%utONLY)
2015-03-25 15:05:25 -04:00
"RTN","ut",94,0)
2017-02-12 23:15:29 -05:00
. ;
2017-07-10 13:17:43 -04:00
"RTN","ut",95,0)
. ; if a SETUP entry point exists, save it off in %ut
2015-03-25 15:05:25 -04:00
"RTN","ut",96,0)
2017-07-10 13:17:43 -04:00
. S %ut("SETUP")=""
2015-03-25 15:05:25 -04:00
"RTN","ut",97,0)
2017-07-10 13:17:43 -04:00
. N %utSETUP S %utSETUP="SETUP^"_%utROU(%ut("CURR"))
2015-03-25 15:05:25 -04:00
"RTN","ut",98,0)
2017-07-10 13:17:43 -04:00
. S %ut("LINE")=$T(@%utSETUP) I %ut("LINE")'="" S %ut("SETUP")=%utSETUP
2015-03-25 15:05:25 -04:00
"RTN","ut",99,0)
2017-07-10 13:17:43 -04:00
. K %utSETUP
2015-03-25 15:05:25 -04:00
"RTN","ut",100,0)
2017-02-12 23:15:29 -05:00
. ;
2017-07-10 13:17:43 -04:00
"RTN","ut",101,0)
. ; if a TEARDOWN entry point exists, ditto
2015-03-25 15:05:25 -04:00
"RTN","ut",102,0)
2017-07-10 13:17:43 -04:00
. S %ut("TEARDOWN")=""
2015-03-25 15:05:25 -04:00
"RTN","ut",103,0)
2017-07-10 13:17:43 -04:00
. N %utTEARDOWN S %utTEARDOWN="TEARDOWN^"_%utROU(%ut("CURR"))
2015-03-25 15:05:25 -04:00
"RTN","ut",104,0)
2017-07-10 13:17:43 -04:00
. S %ut("LINE")=$T(@%utTEARDOWN) I %ut("LINE")'="" S %ut("TEARDOWN")=%utTEARDOWN
2015-03-25 15:05:25 -04:00
"RTN","ut",105,0)
2017-07-10 13:17:43 -04:00
. K %utTEARDOWN
2015-03-25 15:05:25 -04:00
"RTN","ut",106,0)
2017-07-10 13:17:43 -04:00
. ;
2015-03-25 15:05:25 -04:00
"RTN","ut",107,0)
2017-07-10 13:17:43 -04:00
. ; == THIS FOR/DO BLOCK IS THE CENTRAL TEST RUNNER ==
2015-03-25 15:05:25 -04:00
"RTN","ut",108,0)
2017-07-10 13:17:43 -04:00
. S %utI=0
2015-03-25 15:05:25 -04:00
"RTN","ut",109,0)
2017-07-10 13:17:43 -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",110,0)
2017-07-10 13:17:43 -04:00
. . N $ETRAP S $ETRAP="D ERROR^%ut"
2015-03-25 15:05:25 -04:00
"RTN","ut",111,0)
2016-04-11 18:26:37 -04:00
. . ;
2017-02-12 23:15:29 -05:00
"RTN","ut",112,0)
2017-07-10 13:17:43 -04:00
. . ; Run Set-up Code (only if present)
2015-03-25 15:05:25 -04:00
"RTN","ut",113,0)
2017-07-10 13:17:43 -04:00
. . S %ut("ENT")=$G(%ut("SETUP")) ; Current entry
2015-03-25 15:05:25 -04:00
"RTN","ut",114,0)
2017-07-10 13:17:43 -04:00
. . S %ut("NAME")="Set-up Code"
2015-03-25 15:05:25 -04:00
"RTN","ut",115,0)
2017-07-10 13:17:43 -04:00
. . D:%ut("ENT")]"" @%ut("ENT")
2015-03-25 15:05:25 -04:00
"RTN","ut",116,0)
2017-02-12 23:15:29 -05:00
. . ;
2017-07-10 13:17:43 -04:00
"RTN","ut",117,0)
. . ; Run actual test
2015-03-25 15:05:25 -04:00
"RTN","ut",118,0)
2017-07-10 13:17:43 -04:00
. . S %ut("ECNT")=%ut("ECNT")+1
2015-03-25 15:05:25 -04:00
"RTN","ut",119,0)
2017-07-10 13:17:43 -04:00
. . S %ut("NAME")=%utETRY(%utI,"NAME")
2015-03-25 15:05:25 -04:00
"RTN","ut",120,0)
2017-07-10 13:17:43 -04:00
. . S %ut("ENT")=%utETRY(%utI)_"^"_%utROU(%ut("CURR"))
2015-03-25 15:05:25 -04:00
"RTN","ut",121,0)
2017-07-10 13:17:43 -04:00
. . I %utVERB,'$D(%utGUI) D VERBOSE1(.%utETRY,%utI)
2015-03-25 15:05:25 -04:00
"RTN","ut",122,0)
2017-02-12 23:15:29 -05:00
. . ;
2015-03-25 15:05:25 -04:00
"RTN","ut",123,0)
2017-07-10 13:17:43 -04:00
. . I $$GETSYS()=47,%utVERB=3,'($$GTMVER()>6.2) S %utVERB=2 ; give ms instead of zeros if not supported
2015-03-25 15:05:25 -04:00
"RTN","ut",124,0)
2017-07-10 13:17:43 -04:00
. . I %utVERB=2 N %utStart D ; Time Start
2015-03-25 15:05:25 -04:00
"RTN","ut",125,0)
2017-07-10 13:17:43 -04:00
. . . I $$GETSYS()=0 S %utStart=$P($SYSTEM.Process.GetCPUTime(),",")+$P($SYSTEM.Process.GetCPUTime(),",",2)
2015-03-25 15:05:25 -04:00
"RTN","ut",126,0)
2017-07-10 13:17:43 -04:00
. . . I $$GETSYS()=47 S %utStart=$ZGETJPI("","CPUTIM")*10
2015-03-25 15:05:25 -04:00
"RTN","ut",127,0)
2017-07-10 13:17:43 -04:00
. . ;
2015-03-25 15:05:25 -04:00
"RTN","ut",128,0)
2017-07-10 13:17:43 -04:00
. . I %utVERB=3 N %utStart D ; Time Start
2015-03-25 15:05:25 -04:00
"RTN","ut",129,0)
2017-07-10 13:17:43 -04:00
. . . I $$GETSYS()=0 S %utStart=$P($NOW(),",",2)
2015-03-25 15:05:25 -04:00
"RTN","ut",130,0)
2017-07-10 13:17:43 -04:00
. . . I $$GETSYS()=47 N V S V=$$GTMVER(0),%utStart=$s(V>6.2:$ZH,1:0)
2015-03-25 15:05:25 -04:00
"RTN","ut",131,0)
2017-07-10 13:17:43 -04:00
. . ;
2015-03-25 15:05:25 -04:00
"RTN","ut",132,0)
2017-07-10 13:17:43 -04:00
. . ; Run the test!
2015-03-25 15:05:25 -04:00
"RTN","ut",133,0)
2017-07-10 13:17:43 -04:00
. . D @%ut("ENT")
2015-03-25 15:05:25 -04:00
"RTN","ut",134,0)
2017-02-12 23:15:29 -05:00
. . ;
2015-03-25 15:05:25 -04:00
"RTN","ut",135,0)
2017-07-10 13:17:43 -04:00
. . I %utVERB=2 N %utEnd,%utElapsed D ; Time End
2015-03-25 15:05:25 -04:00
"RTN","ut",136,0)
2017-07-10 13:17:43 -04:00
. . . I $$GETSYS()=0 S %utEnd=$P($SYSTEM.Process.GetCPUTime(),",")+$P($SYSTEM.Process.GetCPUTime(),",",2)
2015-03-25 15:05:25 -04:00
"RTN","ut",137,0)
2017-07-10 13:17:43 -04:00
. . . I $$GETSYS()=47 S %utEnd=$ZGETJPI("","CPUTIM")*10
2015-03-25 15:05:25 -04:00
"RTN","ut",138,0)
2017-07-10 13:17:43 -04:00
. . . S %utElapsed=%utEnd-%utStart_"ms"
2015-03-25 15:05:25 -04:00
"RTN","ut",139,0)
2017-07-10 13:17:43 -04:00
. . ;
2015-03-25 15:05:25 -04:00
"RTN","ut",140,0)
2017-07-10 13:17:43 -04:00
. . I %utVERB=3 N %utEnd,%utElapsed D ; Time End
2015-03-25 15:05:25 -04:00
"RTN","ut",141,0)
2017-07-10 13:17:43 -04:00
. . . I $$GETSYS()=0 S %utEnd=$P($NOW(),",",2) S %utElapsed=(%utEnd-%utStart)*1000,%utElapsed=%utElapsed_"ms"
2015-03-25 15:05:25 -04:00
"RTN","ut",142,0)
2017-07-10 13:17:43 -04:00
. . . I $$GETSYS()=47 N V S V=$$GTMVER(0),%utEnd=$s(V>6.2:$ZH,1:0) S %utElapsed=$$ZHDIF(%utStart,%utEnd)
2015-03-25 15:05:25 -04:00
"RTN","ut",143,0)
2017-02-12 23:15:29 -05:00
. . ;
2015-03-25 15:05:25 -04:00
"RTN","ut",144,0)
2017-07-10 13:17:43 -04:00
. . ; Run Teardown Code (only if present)
2015-03-25 15:05:25 -04:00
"RTN","ut",145,0)
2017-07-10 13:17:43 -04:00
. . S %ut("ENT")=$G(%ut("TEARDOWN"))
2015-03-25 15:05:25 -04:00
"RTN","ut",146,0)
2017-07-10 13:17:43 -04:00
. . S %ut("NAME")="Teardown Code"
2015-03-25 15:05:25 -04:00
"RTN","ut",147,0)
2017-07-10 13:17:43 -04:00
. . D:%ut("ENT")]"" @%ut("ENT")
2015-03-25 15:05:25 -04:00
"RTN","ut",148,0)
2017-07-10 13:17:43 -04:00
. . ;
2015-03-25 15:05:25 -04:00
"RTN","ut",149,0)
2017-07-10 13:17:43 -04:00
. . ; ENUM = Number of errors + failures
2015-03-25 15:05:25 -04:00
"RTN","ut",150,0)
2017-07-10 13:17:43 -04:00
. . ; Only print out the success message [OK] If our error number remains
2015-03-25 15:05:25 -04:00
"RTN","ut",151,0)
2017-07-10 13:17:43 -04:00
. . ; the same as when we started the loop.
2015-03-25 15:05:25 -04:00
"RTN","ut",152,0)
2017-07-10 13:17:43 -04:00
. . I %utVERB,'$D(%utGUI) D
2015-03-25 15:05:25 -04:00
"RTN","ut",153,0)
2017-07-10 13:17:43 -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",154,0)
2017-07-10 13:17:43 -04:00
. . . E D VERBOSE(.%utETRY,0,%utVERB,$G(%utElapsed))
2015-03-25 15:05:25 -04:00
"RTN","ut",155,0)
2017-07-10 13:17:43 -04:00
. . . Q
2015-03-25 15:05:25 -04:00
"RTN","ut",156,0)
2017-07-10 13:17:43 -04:00
. . Q
2015-03-25 15:05:25 -04:00
"RTN","ut",157,0)
2017-07-10 13:17:43 -04:00
. ; keep a %utCNT of number of entry points executed across all routines
2015-03-25 15:05:25 -04:00
"RTN","ut",158,0)
2017-07-10 13:17:43 -04:00
. S %ut("NENT")=%ut("NENT")+%ut("ENTN")
2015-03-25 15:05:25 -04:00
"RTN","ut",159,0)
2017-07-10 13:17:43 -04:00
. Q
2015-03-25 15:05:25 -04:00
"RTN","ut",160,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",161,0)
2017-07-10 13:17:43 -04:00
; -- SHUTDOWN --
2015-03-25 15:05:25 -04:00
"RTN","ut",162,0)
2017-07-10 13:17:43 -04:00
D SETIO^%ut1
2015-03-25 15:05:25 -04:00
"RTN","ut",163,0)
2017-07-10 13:17:43 -04:00
W !!,"Ran ",%utLIST," Routine",$S(%utLIST>1:"s",1:""),", ",%ut("NENT")," Entry Tag",$S(%ut("NENT")>1:"s",1:"")
2016-02-27 17:01:27 -05:00
"RTN","ut",164,0)
2017-07-10 13:17:43 -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",165,0)
2017-07-10 13:17:43 -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",166,0)
2017-07-10 13:17:43 -04:00
D RESETIO^%ut1
2015-03-25 15:05:25 -04:00
"RTN","ut",167,0)
2017-07-10 13:17:43 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","ut",168,0)
2017-07-10 13:17:43 -04:00
; -- end EN1
2015-03-25 15:05:25 -04:00
"RTN","ut",169,0)
2017-07-10 13:17:43 -04:00
VERBOSE(%utETRY,SUCCESS,%utVERB,%utElapsed) ; Say whether we succeeded or failed.
2015-03-25 15:05:25 -04:00
"RTN","ut",170,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: %ut - NEWED IN EN
2015-03-25 15:05:25 -04:00
"RTN","ut",171,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: IOM - if present - margin width defined by Kernel
2015-03-25 15:05:25 -04:00
"RTN","ut",172,0)
2017-07-10 13:17:43 -04:00
D SETIO^%ut1
2015-03-25 15:05:25 -04:00
"RTN","ut",173,0)
2017-07-10 13:17:43 -04:00
N RM S RM=$G(IOM,80)-7 ; Right Margin
2015-03-25 15:05:25 -04:00
"RTN","ut",174,0)
2017-07-10 13:17:43 -04:00
I 23[%utVERB,$G(%utElapsed)]"" S RM=RM-9
2015-03-25 15:05:25 -04:00
"RTN","ut",175,0)
2017-07-10 13:17:43 -04:00
I $X>RM W !," "
2015-03-25 15:05:25 -04:00
"RTN","ut",176,0)
2017-07-10 13:17:43 -04:00
N I F I=$X+3:1:RM W "-"
2015-03-25 15:05:25 -04:00
"RTN","ut",177,0)
2017-07-10 13:17:43 -04:00
W ?RM
2015-03-25 15:05:25 -04:00
"RTN","ut",178,0)
2017-07-10 13:17:43 -04:00
I $G(SUCCESS) W "[OK]"
2015-03-25 15:05:25 -04:00
"RTN","ut",179,0)
2017-07-10 13:17:43 -04:00
E W "[FAIL]"
2015-03-25 15:05:25 -04:00
"RTN","ut",180,0)
2017-07-10 13:17:43 -04:00
;I 23[%utVERB,$G(%utElapsed)]"" W " ",%utElapsed
2015-03-25 15:05:25 -04:00
"RTN","ut",181,0)
2017-07-10 13:17:43 -04:00
I 23[%utVERB,$G(%utElapsed)]"" W " ",$J(%utElapsed,8,3),"ms"
2015-03-25 15:05:25 -04:00
"RTN","ut",182,0)
2017-07-10 13:17:43 -04:00
D RESETIO^%ut1
2017-02-12 23:15:29 -05:00
"RTN","ut",183,0)
2017-07-10 13:17:43 -04:00
Q
2017-02-12 23:15:29 -05:00
"RTN","ut",184,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",185,0)
2017-07-10 13:17:43 -04:00
VERBOSE1(%utETRY,%utI) ; Print out the entry point info
2015-03-25 15:05:25 -04:00
"RTN","ut",186,0)
2017-02-12 23:15:29 -05:00
; ZEXCEPT: %ut - NEWED IN EN
2015-03-25 15:05:25 -04:00
"RTN","ut",187,0)
2017-07-10 13:17:43 -04:00
D SETIO^%ut1
2015-03-25 15:05:25 -04:00
"RTN","ut",188,0)
2017-07-10 13:17:43 -04:00
W !,%utETRY(%utI) I $G(%utETRY(%utI,"NAME"))'="" W " - ",%utETRY(%utI,"NAME")
2015-03-25 15:05:25 -04:00
"RTN","ut",189,0)
2017-07-10 13:17:43 -04:00
D RESETIO^%ut1
2015-03-25 15:05:25 -04:00
"RTN","ut",190,0)
2017-07-10 13:17:43 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","ut",191,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",192,0)
2017-07-10 13:17:43 -04:00
CHKTF(XTSTVAL,XTERMSG) ; Entry point for checking True or False values
2015-03-25 15:05:25 -04:00
"RTN","ut",193,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: %utERRL,%utGUI - CREATED IN SETUP, KILLED IN END
2015-03-25 15:05:25 -04:00
"RTN","ut",194,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: %ut - NEWED IN EN
2015-03-25 15:05:25 -04:00
"RTN","ut",195,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: XTGUISEP - newed in GUINEXT
2015-03-25 15:05:25 -04:00
"RTN","ut",196,0)
2017-07-10 13:17:43 -04:00
I '$D(XTSTVAL) D NVLDARG^%ut1("CHKTF") Q
2015-03-25 15:05:25 -04:00
"RTN","ut",197,0)
2017-07-10 13:17:43 -04:00
I $G(XTERMSG)="" S XTERMSG="no failure message provided"
2015-03-25 15:05:25 -04:00
"RTN","ut",198,0)
2017-07-10 13:17:43 -04:00
S %ut("CHK")=$G(%ut("CHK"))+1
2015-03-25 15:05:25 -04:00
"RTN","ut",199,0)
2017-07-10 13:17:43 -04:00
I '$D(%utGUI) D
2015-03-25 15:05:25 -04:00
"RTN","ut",200,0)
2017-07-10 13:17:43 -04:00
. D SETIO^%ut1
2015-03-25 15:05:25 -04:00
"RTN","ut",201,0)
2017-07-10 13:17:43 -04:00
. I 'XTSTVAL W !,%ut("ENT")," - " W:%ut("NAME")'="" %ut("NAME")," - " D
2015-03-25 15:05:25 -04:00
"RTN","ut",202,0)
2017-07-10 13:17:43 -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",203,0)
2017-07-10 13:17:43 -04:00
. . I $G(%ut("BREAK")) W !,"Breaking on False value"
2015-03-25 15:05:25 -04:00
"RTN","ut",204,0)
2017-07-10 13:17:43 -04:00
. . I $G(%ut("BREAK")) BREAK ; Break upon False value
2015-03-25 15:05:25 -04:00
"RTN","ut",205,0)
2017-07-10 13:17:43 -04:00
. . Q
2015-03-25 15:05:25 -04:00
"RTN","ut",206,0)
2017-07-10 13:17:43 -04:00
. I XTSTVAL W "."
2015-03-25 15:05:25 -04:00
"RTN","ut",207,0)
2017-07-10 13:17:43 -04:00
. D RESETIO^%ut1
2015-03-25 15:05:25 -04:00
"RTN","ut",208,0)
2017-07-10 13:17:43 -04:00
. Q
2015-03-25 15:05:25 -04:00
"RTN","ut",209,0)
2017-07-10 13:17:43 -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",210,0)
2017-07-10 13:17:43 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","ut",211,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",212,0)
2017-07-10 13:17:43 -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",213,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: %utERRL,%utGUI -CREATED IN SETUP, KILLED IN END
2015-03-25 15:05:25 -04:00
"RTN","ut",214,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: %ut -- NEWED IN EN
2017-02-12 23:15:29 -05:00
"RTN","ut",215,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: XTGUISEP - newed in GUINEXT
2017-02-12 23:15:29 -05:00
"RTN","ut",216,0)
2017-07-10 13:17:43 -04:00
N FAILMSG
2015-03-25 15:05:25 -04:00
"RTN","ut",217,0)
2017-07-10 13:17:43 -04:00
I '$D(XTEXPECT)!'$D(XTACTUAL) D NVLDARG^%ut1("CHKEQ") Q
2015-03-25 15:05:25 -04:00
"RTN","ut",218,0)
2017-07-10 13:17:43 -04:00
S XTACTUAL=$G(XTACTUAL),XTEXPECT=$G(XTEXPECT)
2015-03-25 15:05:25 -04:00
"RTN","ut",219,0)
2017-07-10 13:17:43 -04:00
I $G(XTERMSG)="" S XTERMSG="no failure message provided"
2015-03-25 15:05:25 -04:00
"RTN","ut",220,0)
2017-07-10 13:17:43 -04:00
S %ut("CHK")=%ut("CHK")+1
2015-03-25 15:05:25 -04:00
"RTN","ut",221,0)
2017-07-10 13:17:43 -04:00
I XTEXPECT'=XTACTUAL S FAILMSG="<"_XTEXPECT_"> vs <"_XTACTUAL_"> - "
2015-03-25 15:05:25 -04:00
"RTN","ut",222,0)
2017-07-10 13:17:43 -04:00
I '$D(%utGUI) D
2015-03-25 15:05:25 -04:00
"RTN","ut",223,0)
2017-07-10 13:17:43 -04:00
. D SETIO^%ut1
2015-03-25 15:05:25 -04:00
"RTN","ut",224,0)
2017-07-10 13:17:43 -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",225,0)
2017-07-10 13:17:43 -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",226,0)
2017-07-10 13:17:43 -04:00
. . I $D(%ut("BREAK")) W !,"Breaking on non-equal values"
2015-03-25 15:05:25 -04:00
"RTN","ut",227,0)
2017-07-10 13:17:43 -04:00
. . I $D(%ut("BREAK")) BREAK ; Break upon non-equal values
2015-03-25 15:05:25 -04:00
"RTN","ut",228,0)
2017-07-10 13:17:43 -04:00
. . Q
2015-03-25 15:05:25 -04:00
"RTN","ut",229,0)
2017-07-10 13:17:43 -04:00
. E W "."
2015-03-25 15:05:25 -04:00
"RTN","ut",230,0)
2017-07-10 13:17:43 -04:00
. D RESETIO^%ut1
2015-03-25 15:05:25 -04:00
"RTN","ut",231,0)
2017-07-10 13:17:43 -04:00
. Q
2015-03-25 15:05:25 -04:00
"RTN","ut",232,0)
2017-07-10 13:17:43 -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",233,0)
2017-07-10 13:17:43 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","ut",234,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",235,0)
2017-07-10 13:17:43 -04:00
FAIL(XTERMSG) ; Entry point for generating a failure message
2015-03-25 15:05:25 -04:00
"RTN","ut",236,0)
2017-07-10 13:17:43 -04:00
D FAIL^%ut1($G(XTERMSG))
2015-03-25 15:05:25 -04:00
"RTN","ut",237,0)
2017-07-10 13:17:43 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","ut",238,0)
2017-02-12 23:15:29 -05:00
;
2017-07-10 13:17:43 -04:00
"RTN","ut",239,0)
SUCCEED ; Entry point for forcing a success (Thx David Whitten)
2015-03-25 15:05:25 -04:00
"RTN","ut",240,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: %utERRL,%utGUI - CREATED IN SETUP, KILLED IN END
2015-03-25 15:05:25 -04:00
"RTN","ut",241,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: %ut - NEWED IN EN
2015-03-25 15:05:25 -04:00
"RTN","ut",242,0)
2017-07-10 13:17:43 -04:00
; Switch IO and write out the dot for activity
2015-03-25 15:05:25 -04:00
"RTN","ut",243,0)
2017-07-10 13:17:43 -04:00
I '$D(%utGUI) D
2017-02-12 23:15:29 -05:00
"RTN","ut",244,0)
2017-07-10 13:17:43 -04:00
. D SETIO^%ut1
2015-03-25 15:05:25 -04:00
"RTN","ut",245,0)
2017-07-10 13:17:43 -04:00
. W "."
2015-03-25 15:05:25 -04:00
"RTN","ut",246,0)
2017-07-10 13:17:43 -04:00
. D RESETIO^%ut1
2015-03-25 15:05:25 -04:00
"RTN","ut",247,0)
2016-04-11 18:26:37 -04:00
;
2017-07-10 13:17:43 -04:00
"RTN","ut",248,0)
; Increment test counter
2015-03-25 15:05:25 -04:00
"RTN","ut",249,0)
2017-07-10 13:17:43 -04:00
S %ut("CHK")=%ut("CHK")+1
2015-03-25 15:05:25 -04:00
"RTN","ut",250,0)
2017-07-10 13:17:43 -04:00
QUIT
2015-03-25 15:05:25 -04:00
"RTN","ut",251,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",252,0)
2017-07-10 13:17:43 -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",253,0)
2017-07-10 13:17:43 -04:00
; see CHKLEAKS^%utcover for description of arguments
2015-03-25 15:05:25 -04:00
"RTN","ut",254,0)
2017-07-10 13:17:43 -04:00
D CHKLEAKS^%utcover(%utCODE,%utLOC,.%utINPT)
2015-03-25 15:05:25 -04:00
"RTN","ut",255,0)
2017-07-10 13:17:43 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","ut",256,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",257,0)
2017-07-10 13:17:43 -04:00
ERROR ; record errors
2015-03-25 15:05:25 -04:00
"RTN","ut",258,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: %utERRL,%utGUI,%utERR -CREATED IN SETUP, KILLED IN END
2015-03-25 15:05:25 -04:00
"RTN","ut",259,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: %ut -- NEWED ON ENTRY
2017-02-12 23:15:29 -05:00
"RTN","ut",260,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: XTGUISEP - newed in GUINEXT
2015-03-25 15:05:25 -04:00
"RTN","ut",261,0)
2017-07-10 13:17:43 -04:00
S %ut("CHK")=%ut("CHK")+1
2015-03-25 15:05:25 -04:00
"RTN","ut",262,0)
2017-07-10 13:17:43 -04:00
I '$D(%utGUI) D ERROR1
2015-03-25 15:05:25 -04:00
"RTN","ut",263,0)
2017-07-10 13:17:43 -04:00
I $D(%utGUI) D
2015-03-25 15:05:25 -04:00
"RTN","ut",264,0)
2017-07-10 13:17:43 -04:00
. S %ut("CNT")=%ut("CNT")+1
2015-03-25 15:05:25 -04:00
"RTN","ut",265,0)
2017-07-10 13:17:43 -04:00
. S %utERR=%utERR+1
2015-03-25 15:05:25 -04:00
"RTN","ut",266,0)
2017-07-10 13:17:43 -04:00
. S @%ut("RSLT")@(%ut("CNT"))=%ut("LOC")_XTGUISEP_"ERROR"_XTGUISEP_$S($$GETSYS()=47:$ZS,1:$ZE)
2015-03-25 15:05:25 -04:00
"RTN","ut",267,0)
2017-07-10 13:17:43 -04:00
. Q
2015-03-25 15:05:25 -04:00
"RTN","ut",268,0)
2017-07-10 13:17:43 -04:00
S @($S($$GETSYS()=47:"$ZS",1:"$ZE")_"="_""""""),$EC=""
2015-03-25 15:05:25 -04:00
"RTN","ut",269,0)
2017-07-10 13:17:43 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","ut",270,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",271,0)
2017-07-10 13:17:43 -04:00
ERROR1 ;
2015-03-25 15:05:25 -04:00
"RTN","ut",272,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: %utERRL -CREATED IN SETUP, KILLED IN END
2017-02-12 23:15:29 -05:00
"RTN","ut",273,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: %ut -- NEWED ON ENTRY
2015-03-25 15:05:25 -04:00
"RTN","ut",274,0)
2017-07-10 13:17:43 -04:00
I $G(%ut("BREAK")) W !,"Breaking on ERROR recorded: ",$S($$GETSYS()=47:$ZS,1:$ZE)
2017-02-12 23:15:29 -05:00
"RTN","ut",275,0)
2017-07-10 13:17:43 -04:00
I $G(%ut("BREAK")) S @($S($$GETSYS()=47:"$ZS",1:"$ZE")_"="_""""""),$EC="" ; output for break added JLI 161020
2017-02-12 23:15:29 -05:00
"RTN","ut",276,0)
2017-07-10 13:17:43 -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",277,0)
2017-07-10 13:17:43 -04:00
D SETIO^%ut1
2015-03-25 15:05:25 -04:00
"RTN","ut",278,0)
2017-07-10 13:17:43 -04:00
W !,%ut("ENT")," - " W:%ut("NAME")'="" %ut("NAME")," - Error: " W $S($$GETSYS()=47:$ZS,1:$ZE),! D
2015-03-25 15:05:25 -04:00
"RTN","ut",279,0)
2017-07-10 13:17:43 -04:00
. S %ut("ERRN")=%ut("ERRN")+1,%utERRL(%ut("ERRN"))=%ut("NAME"),%utERRL(%ut("FAIL"),"MSG")=$S($$GETSYS()=47:$ZS,1:$ZE),%utERRL(%ut("FAIL"),"ENTRY")=%ut("ENT")
2015-03-25 15:05:25 -04:00
"RTN","ut",280,0)
2017-07-10 13:17:43 -04:00
. Q
2015-03-25 15:05:25 -04:00
"RTN","ut",281,0)
2017-07-10 13:17:43 -04:00
D RESETIO^%ut1
2015-03-25 15:05:25 -04:00
"RTN","ut",282,0)
2017-02-12 23:15:29 -05:00
Q
2017-07-10 13:17:43 -04:00
"RTN","ut",283,0)
2017-02-12 23:15:29 -05:00
;
2017-07-10 13:17:43 -04:00
"RTN","ut",284,0)
ISUTEST() ; .SUPPORTED API TO DETERMINE IF CURRENTLY IN UNIT TEST
2015-03-25 15:05:25 -04:00
"RTN","ut",285,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: %ut -- NEWED ON ENTRY
2015-03-25 15:05:25 -04:00
"RTN","ut",286,0)
2017-07-10 13:17:43 -04:00
Q $G(%ut)=1
2015-03-25 15:05:25 -04:00
"RTN","ut",287,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",288,0)
2017-07-10 13:17:43 -04:00
PICKSET ; .OPT Interactive selection of MUnit Test Group
2015-03-25 15:05:25 -04:00
"RTN","ut",289,0)
2017-07-10 13:17:43 -04:00
N DIC,Y,%utROU,%utLIST,DIR
2015-03-25 15:05:25 -04:00
"RTN","ut",290,0)
2017-07-10 13:17:43 -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",291,0)
2017-07-10 13:17:43 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","ut",292,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",293,0)
2017-07-10 13:17:43 -04:00
RUNSET(SETNAME,VERBOSE) ; .SR Run with Specified Selection of MUnit Test Group
2015-03-25 15:05:25 -04:00
"RTN","ut",294,0)
2017-07-10 13:17:43 -04:00
N Y,%utROU,%utLIST,%utVERB
2017-02-12 23:15:29 -05:00
"RTN","ut",295,0)
2017-07-10 13:17:43 -04:00
Q:$G(SETNAME)=""
2017-02-12 23:15:29 -05:00
"RTN","ut",296,0)
2017-07-10 13:17:43 -04:00
S %utVERB=$G(VERBOSE,0)
2015-03-25 15:05:25 -04:00
"RTN","ut",297,0)
2017-07-10 13:17:43 -04:00
S Y=+$$FIND1^DIC(17.9001,"","X",SETNAME) Q:Y'>0
2015-03-25 15:05:25 -04:00
"RTN","ut",298,0)
2017-07-10 13:17:43 -04:00
D GETSET(Y,.%utROU,.%utLIST)
2015-03-25 15:05:25 -04:00
"RTN","ut",299,0)
2017-07-10 13:17:43 -04:00
N Y,SETNAME,%ut
2015-03-25 15:05:25 -04:00
"RTN","ut",300,0)
2017-07-10 13:17:43 -04:00
D SETUT
2015-03-25 15:05:25 -04:00
"RTN","ut",301,0)
2017-07-10 13:17:43 -04:00
D EN1(.%utROU,%utLIST)
2015-03-25 15:05:25 -04:00
"RTN","ut",302,0)
2017-07-10 13:17:43 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","ut",303,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",304,0)
2017-07-10 13:17:43 -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",305,0)
2017-07-10 13:17:43 -04:00
DOSET(IEN,%utVERB) ; 140731 JLI added %utVERB as a second argument
2015-03-25 15:05:25 -04:00
"RTN","ut",306,0)
2017-07-10 13:17:43 -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",307,0)
2017-07-10 13:17:43 -04:00
; %utVERB - optional input that indicates verbose output is permitted
2015-03-25 15:05:25 -04:00
"RTN","ut",308,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",309,0)
2017-07-10 13:17:43 -04:00
N %utROU,%utLIST
2015-03-25 15:05:25 -04:00
"RTN","ut",310,0)
2017-07-10 13:17:43 -04:00
I '$D(%utVERB) S %utVERB=0
2015-03-25 15:05:25 -04:00
"RTN","ut",311,0)
2017-07-10 13:17:43 -04:00
S %utLIST=0
2015-03-25 15:05:25 -04:00
"RTN","ut",312,0)
2017-07-10 13:17:43 -04:00
D GETSET($G(IEN),.%utROU,.%utLIST)
2015-03-25 15:05:25 -04:00
"RTN","ut",313,0)
2017-07-10 13:17:43 -04:00
I %utLIST>0 N IEN,%ut D SETUT,EN1(.%utROU,%utLIST)
2015-03-25 15:05:25 -04:00
"RTN","ut",314,0)
2017-07-10 13:17:43 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","ut",315,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",316,0)
2017-07-10 13:17:43 -04:00
GETSET(IEN,%utROU,%utLIST) ; JLI 140731 - called from PICKSET, RUNSET, DOSET, GUISET
2015-03-25 15:05:25 -04:00
"RTN","ut",317,0)
2017-07-10 13:17:43 -04:00
N IENS,%utROOT
2017-02-12 23:15:29 -05:00
"RTN","ut",318,0)
2017-07-10 13:17:43 -04:00
;I $T(+1^DIQ)="" QUIT ; not in a VA KERNEL or VA FILEMAN environment
2017-02-12 23:15:29 -05:00
"RTN","ut",319,0)
2017-07-10 13:17:43 -04:00
S IENS=IEN_"," D GETS^DIQ(17.9001,IENS,"1*","","%utROOT")
2015-03-25 15:05:25 -04:00
"RTN","ut",320,0)
2017-07-10 13:17:43 -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",321,0)
2017-07-10 13:17:43 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","ut",322,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",323,0)
2017-07-10 13:17:43 -04:00
COV(NMSP,COVCODE,VERBOSITY) ; simply make it callable from %ut1 as well (along with other APIs) JLI 150101
2017-02-12 23:15:29 -05:00
"RTN","ut",324,0)
2017-07-10 13:17:43 -04:00
D COV^%ut1(.NMSP,COVCODE,+$G(VERBOSITY)) ; see COV^%ut1 for description of arguments
2017-02-12 23:15:29 -05:00
"RTN","ut",325,0)
2017-07-10 13:17:43 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","ut",326,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",327,0)
2017-07-10 13:17:43 -04:00
MULTAPIS(TESTROUS) ; .SR - RUN TESTS FOR SPECIFIED ROUTINES AND ENTRY POINTS
2015-03-25 15:05:25 -04:00
"RTN","ut",328,0)
2017-07-10 13:17:43 -04:00
; input - TESTROUS - passed by reference
2015-03-25 15:05:25 -04:00
"RTN","ut",329,0)
2017-07-10 13:17:43 -04:00
; see TESTONLY in routine %utcover for full description of TESTROUS argument
2015-03-25 15:05:25 -04:00
"RTN","ut",330,0)
2017-07-10 13:17:43 -04:00
D MULTAPIS^%utcover(.TESTROUS) ; RUN TESTS FOR SPECIFIED ROUTINES AND ENTRY POINTS
2015-03-25 15:05:25 -04:00
"RTN","ut",331,0)
2017-02-12 23:15:29 -05:00
Q
2017-07-10 13:17:43 -04:00
"RTN","ut",332,0)
2017-02-12 23:15:29 -05:00
;
2017-07-10 13:17:43 -04:00
"RTN","ut",333,0)
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",334,0)
2017-07-10 13:17:43 -04:00
; input ROUNMSP - may be passed by reference
2016-02-27 17:01:27 -05:00
"RTN","ut",335,0)
2017-07-10 13:17:43 -04:00
; input TESTROUS - passed by reference
2015-03-25 15:05:25 -04:00
"RTN","ut",336,0)
2017-07-10 13:17:43 -04:00
; input XCLDROUS - passed by reference
2015-03-25 15:05:25 -04:00
"RTN","ut",337,0)
2017-07-10 13:17:43 -04:00
; input RESLTLVL
2015-03-25 15:05:25 -04:00
"RTN","ut",338,0)
2017-07-10 13:17:43 -04:00
; see COVERAGE in routine %utcover for full description of arguments
2015-03-25 15:05:25 -04:00
"RTN","ut",339,0)
2017-07-10 13:17:43 -04:00
D COVERAGE^%utcover(.ROUNMSP,.TESTROUS,.XCLDROUS,+$G(RESLTLVL))
2015-03-25 15:05:25 -04:00
"RTN","ut",340,0)
2017-07-10 13:17:43 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","ut",341,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",342,0)
2017-07-10 13:17:43 -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",343,0)
2017-07-10 13:17:43 -04:00
; usage D GETUTVAL^%ut(.UTDATA)
2016-02-27 17:01:27 -05:00
"RTN","ut",344,0)
2017-07-10 13:17:43 -04:00
; input - UTDATA - passed by reference
2015-03-25 15:05:25 -04:00
"RTN","ut",345,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",346,0)
2017-07-10 13:17:43 -04:00
; subscripted values returned:
2015-03-25 15:05:25 -04:00
"RTN","ut",347,0)
2017-07-10 13:17:43 -04:00
; 1) cumulative number of routines run; 2) cumulative number of entry tags;
2017-02-12 23:15:29 -05:00
"RTN","ut",348,0)
2017-07-10 13:17:43 -04:00
; 3) cumulative number of tests; 4) cummulative number of failures;
2015-03-25 15:05:25 -04:00
"RTN","ut",349,0)
2017-07-10 13:17:43 -04:00
; 5) cumulative number of errors
2015-03-25 15:05:25 -04:00
"RTN","ut",350,0)
2017-07-10 13:17:43 -04:00
N VALS,I,VAL
2015-03-25 15:05:25 -04:00
"RTN","ut",351,0)
2017-07-10 13:17:43 -04:00
S VALS=$G(^TMP("%ut",$J,"UTVALS")) I VALS="" Q
2015-03-25 15:05:25 -04:00
"RTN","ut",352,0)
2017-07-10 13:17:43 -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",353,0)
2017-07-10 13:17:43 -04:00
K ^TMP("%ut",$J,"UTVALS")
2015-03-25 15:05:25 -04:00
"RTN","ut",354,0)
2017-02-12 23:15:29 -05:00
Q
2015-03-25 15:05:25 -04:00
"RTN","ut",355,0)
2017-02-12 23:15:29 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",356,0)
2017-07-10 13:17:43 -04:00
LSTUTVAL(UTDATA) ; .SR - lists cumulative totals in UTDATA array
2015-03-25 15:05:25 -04:00
"RTN","ut",357,0)
2017-07-10 13:17:43 -04:00
; usage D LSTUTVAL^%ut(.UTDATA)
2015-03-25 15:05:25 -04:00
"RTN","ut",358,0)
2017-07-10 13:17:43 -04:00
; input - UTDATA - passed by reference
2015-03-25 15:05:25 -04:00
"RTN","ut",359,0)
2017-07-10 13:17:43 -04:00
W !!!,"------------ SUMMARY ------------"
2015-03-25 15:05:25 -04:00
"RTN","ut",360,0)
2017-07-10 13:17:43 -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",361,0)
2017-07-10 13:17:43 -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",362,0)
2017-07-10 13:17:43 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","ut",363,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",364,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",365,0)
2017-07-10 13:17:43 -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",366,0)
2017-07-10 13:17:43 -04:00
N %utROU,%utLIST,%ut
2015-03-25 15:05:25 -04:00
"RTN","ut",367,0)
2017-07-10 13:17:43 -04:00
D SETUT
2015-03-25 15:05:25 -04:00
"RTN","ut",368,0)
2017-07-10 13:17:43 -04:00
S %ut("RSLT")=$NA(^TMP("MUNIT-%utRSLT",$J)) K @%ut("RSLT")
2015-03-25 15:05:25 -04:00
"RTN","ut",369,0)
2017-07-10 13:17:43 -04:00
D GETSET(XTSET,.%utROU,.%utLIST)
2017-02-12 23:15:29 -05:00
"RTN","ut",370,0)
2017-07-10 13:17:43 -04:00
D GETLIST(.%utROU,%utLIST,%ut("RSLT"))
2017-02-12 23:15:29 -05:00
"RTN","ut",371,0)
2017-07-10 13:17:43 -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",372,0)
2017-07-10 13:17:43 -04:00
S %utRSLT=%ut("RSLT")
2015-03-25 15:05:25 -04:00
"RTN","ut",373,0)
2017-07-10 13:17:43 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","ut",374,0)
2017-07-10 13:17:43 -04:00
;
2017-02-12 23:15:29 -05:00
"RTN","ut",375,0)
2017-07-10 13:17:43 -04:00
GUILOAD(%utRSLT,%utROUN) ; Entry point for GUI start with %utROUN containing primary routine name - called by %ut-TEST LOAD rpc
2017-02-12 23:15:29 -05:00
"RTN","ut",376,0)
2017-07-10 13:17:43 -04:00
N %utROU,%ut
2017-02-12 23:15:29 -05:00
"RTN","ut",377,0)
2017-07-10 13:17:43 -04:00
D SETUT
2015-03-25 15:05:25 -04:00
"RTN","ut",378,0)
2017-07-10 13:17:43 -04:00
S %ut("RSLT")=$NA(^TMP("MUNIT-%utRSLT",$J)) K @%ut("RSLT")
2015-03-25 15:05:25 -04:00
"RTN","ut",379,0)
2017-07-10 13:17:43 -04:00
S %utROU(1)=%utROUN
2015-03-25 15:05:25 -04:00
"RTN","ut",380,0)
2017-07-10 13:17:43 -04:00
D GETLIST(.%utROU,1,%ut("RSLT"))
2015-03-25 15:05:25 -04:00
"RTN","ut",381,0)
2017-07-10 13:17:43 -04:00
S @%ut("RSLT")@(1)=(@%ut("RSLT")@(1))_"^1"
2015-03-25 15:05:25 -04:00
"RTN","ut",382,0)
2017-07-10 13:17:43 -04:00
S %utRSLT=%ut("RSLT")
2015-03-25 15:05:25 -04:00
"RTN","ut",383,0)
2017-07-10 13:17:43 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","ut",384,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",385,0)
2017-07-10 13:17:43 -04:00
GETLIST(%utROU,%utLIST,%utRSLT) ; called from GUISET, GUILOAD
2015-03-25 15:05:25 -04:00
"RTN","ut",386,0)
2017-07-10 13:17:43 -04:00
N I,%utROUL,%utROUN,%ut,XTCOMNT,XTVALUE,%utCNT
2015-03-25 15:05:25 -04:00
"RTN","ut",387,0)
2017-07-10 13:17:43 -04:00
S XTVALUE=$NA(^TMP("GUI-MUNIT",$J)) K @XTVALUE
2015-03-25 15:05:25 -04:00
"RTN","ut",388,0)
2017-07-10 13:17:43 -04:00
S %utCNT=0,XTCOMNT=""
2015-03-25 15:05:25 -04:00
"RTN","ut",389,0)
2017-07-10 13:17:43 -04:00
D GETTREE^%ut1(.%utROU,%utLIST)
2015-03-25 15:05:25 -04:00
"RTN","ut",390,0)
2017-07-10 13:17:43 -04:00
F I=1:1 Q:'$D(%utROU(I)) S %utROUL(%utROU(I))=""
2015-03-25 15:05:25 -04:00
"RTN","ut",391,0)
2017-07-10 13:17:43 -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",392,0)
2017-07-10 13:17:43 -04:00
M @%utRSLT=@XTVALUE
2015-03-25 15:05:25 -04:00
"RTN","ut",393,0)
2017-07-10 13:17:43 -04:00
K @%utRSLT@("SHUTDOWN")
2015-03-25 15:05:25 -04:00
"RTN","ut",394,0)
2017-07-10 13:17:43 -04:00
K @%utRSLT@("STARTUP")
2015-03-25 15:05:25 -04:00
"RTN","ut",395,0)
2017-07-10 13:17:43 -04:00
S @XTVALUE@("LASTROU")=""
2015-03-25 15:05:25 -04:00
"RTN","ut",396,0)
2017-07-10 13:17:43 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","ut",397,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",398,0)
2017-07-10 13:17:43 -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",399,0)
2017-07-10 13:17:43 -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",400,0)
2017-07-10 13:17:43 -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",401,0)
2017-07-10 13:17:43 -04:00
S %utNCNT=%utNCNT+1,@XTVALUE@(%utNCNT)=%utROUN_U_U_XTCOMNT
2015-03-25 15:05:25 -04:00
"RTN","ut",402,0)
2017-07-10 13:17:43 -04:00
N %utI,XTX1,XTX2,LINE,LIST,I
2015-03-25 15:05:25 -04:00
"RTN","ut",403,0)
2017-07-10 13:17:43 -04:00
I $T(@("STARTUP^"_%utROUN))'="",'$D(@XTVALUE@("STARTUP")) S @XTVALUE@("STARTUP")="STARTUP^"_%utROUN
2015-03-25 15:05:25 -04:00
"RTN","ut",404,0)
2017-07-10 13:17:43 -04:00
I $T(@("SHUTDOWN^"_%utROUN))'="",'$D(@XTVALUE@("SHUTDOWN")) S @XTVALUE@("SHUTDOWN")="SHUTDOWN^"_%utROUN
2015-03-25 15:05:25 -04:00
"RTN","ut",405,0)
2017-07-10 13:17:43 -04:00
D NEWSTYLE^%ut1(.LIST,%utROUN)
2015-03-25 15:05:25 -04:00
"RTN","ut",406,0)
2017-07-10 13:17:43 -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",407,0)
2017-07-10 13:17:43 -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",408,0)
2017-07-10 13:17:43 -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",409,0)
2017-07-10 13:17:43 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","ut",410,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",411,0)
2017-07-10 13:17:43 -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",412,0)
2017-07-10 13:17:43 -04:00
; XTGUISEP - added 110719 to provide for changing separator for GUI
2015-03-25 15:05:25 -04:00
"RTN","ut",413,0)
2017-07-10 13:17:43 -04:00
; return from ^ to another value ~~^~~ so that data returned
2015-03-25 15:05:25 -04:00
"RTN","ut",414,0)
2017-07-10 13:17:43 -04:00
; is not affected by ^ values in the data - if not present
2015-03-25 15:05:25 -04:00
"RTN","ut",415,0)
2017-07-10 13:17:43 -04:00
; sets value to default ^
2015-03-25 15:05:25 -04:00
"RTN","ut",416,0)
2017-07-10 13:17:43 -04:00
N %utETRY,%utROUT,XTOLROU,XTVALUE,%utERR,%utGUI
2015-03-25 15:05:25 -04:00
"RTN","ut",417,0)
2017-07-10 13:17:43 -04:00
N %ut
2015-03-25 15:05:25 -04:00
"RTN","ut",418,0)
2017-07-10 13:17:43 -04:00
I $G(XTGUISEP)="" S XTGUISEP="^"
2015-03-25 15:05:25 -04:00
"RTN","ut",419,0)
2017-07-10 13:17:43 -04:00
D SETUT
2015-03-25 15:05:25 -04:00
"RTN","ut",420,0)
2017-07-10 13:17:43 -04:00
S %ut("LOC")=%utLOC
2015-03-25 15:05:25 -04:00
"RTN","ut",421,0)
2017-07-10 13:17:43 -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",422,0)
2017-07-10 13:17:43 -04:00
S XTVALUE=$NA(^TMP("GUI-MUNIT",$J))
2015-03-25 15:05:25 -04:00
"RTN","ut",423,0)
2017-07-10 13:17:43 -04:00
S %ut("RSLT")=$NA(^TMP("GUINEXT",$J)) K @%ut("RSLT")
2015-03-25 15:05:25 -04:00
"RTN","ut",424,0)
2017-07-10 13:17:43 -04:00
S %utRSLT=%ut("RSLT")
2015-03-25 15:05:25 -04:00
"RTN","ut",425,0)
2017-07-10 13:17:43 -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",426,0)
2017-07-10 13:17:43 -04:00
S %utGUI=1
2015-03-25 15:05:25 -04:00
"RTN","ut",427,0)
2017-07-10 13:17:43 -04:00
S %ut("CHK")=0,%ut("CNT")=1,%utERR=0
2015-03-25 15:05:25 -04:00
"RTN","ut",428,0)
2017-07-10 13:17:43 -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",429,0)
2017-07-10 13:17:43 -04:00
. I XTOLROU="",$D(@XTVALUE@("STARTUP")) D
2015-03-25 15:05:25 -04:00
"RTN","ut",430,0)
2017-07-10 13:17:43 -04:00
. . S %ut("LOC")=@XTVALUE@("STARTUP")
2015-03-25 15:05:25 -04:00
"RTN","ut",431,0)
2017-07-10 13:17:43 -04:00
. . N $ETRAP S $ETRAP="D ERROR^%ut"
2015-03-25 15:05:25 -04:00
"RTN","ut",432,0)
2017-07-10 13:17:43 -04:00
. . D @(@XTVALUE@("STARTUP"))
2015-03-25 15:05:25 -04:00
"RTN","ut",433,0)
2017-07-10 13:17:43 -04:00
. . Q
2015-03-25 15:05:25 -04:00
"RTN","ut",434,0)
2017-07-10 13:17:43 -04:00
. S @XTVALUE@("LASTROU")=%utROUT I %utROUT'="",$T(@("SETUP^"_%utROUT))'="" D
2015-03-25 15:05:25 -04:00
"RTN","ut",435,0)
2017-07-10 13:17:43 -04:00
. . S %ut("LOC")="SETUP^"_%utROUT
2015-03-25 15:05:25 -04:00
"RTN","ut",436,0)
2017-07-10 13:17:43 -04:00
. . N $ETRAP S $ETRAP="D ERROR^%ut"
2015-03-25 15:05:25 -04:00
"RTN","ut",437,0)
2017-07-10 13:17:43 -04:00
. . D @("SETUP^"_%utROUT)
2015-03-25 15:05:25 -04:00
"RTN","ut",438,0)
2017-07-10 13:17:43 -04:00
. . Q
2015-03-25 15:05:25 -04:00
"RTN","ut",439,0)
2017-07-10 13:17:43 -04:00
. I %utROUT="",$D(@XTVALUE@("SHUTDOWN")) D
2015-03-25 15:05:25 -04:00
"RTN","ut",440,0)
2017-07-10 13:17:43 -04:00
. . S %ut("LOC")=@XTVALUE@("SHUTDOWN")
2015-03-25 15:05:25 -04:00
"RTN","ut",441,0)
2017-07-10 13:17:43 -04:00
. . N $ETRAP S $ETRAP="D ERROR^%ut"
2015-03-25 15:05:25 -04:00
"RTN","ut",442,0)
2017-07-10 13:17:43 -04:00
. . D @(@XTVALUE@("SHUTDOWN"))
2015-03-25 15:05:25 -04:00
"RTN","ut",443,0)
2017-07-10 13:17:43 -04:00
. . Q
2015-03-25 15:05:25 -04:00
"RTN","ut",444,0)
2017-07-10 13:17:43 -04:00
. Q
2015-03-25 15:05:25 -04:00
"RTN","ut",445,0)
2017-07-10 13:17:43 -04:00
S %ut("LOC")=%utLOC
2015-03-25 15:05:25 -04:00
"RTN","ut",446,0)
2017-07-10 13:17:43 -04:00
S %ut("CHK")=0,%ut("CNT")=1,%utERR=0
2015-03-25 15:05:25 -04:00
"RTN","ut",447,0)
2017-07-10 13:17:43 -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",448,0)
2017-07-10 13:17:43 -04:00
. N $ETRAP S $ETRAP="D ERROR^%ut"
2015-03-25 15:05:25 -04:00
"RTN","ut",449,0)
2017-07-10 13:17:43 -04:00
. D @%ut("LOC")
2015-03-25 15:05:25 -04:00
"RTN","ut",450,0)
2017-07-10 13:17:43 -04:00
. Q
2015-03-25 15:05:25 -04:00
"RTN","ut",451,0)
2017-07-10 13:17:43 -04:00
I $T(@("TEARDOWN^"_%utROUT))'="" D
2015-03-25 15:05:25 -04:00
"RTN","ut",452,0)
2017-07-10 13:17:43 -04:00
. S %ut("LOC")="TEARDOWN^"_%utROUT
2015-03-25 15:05:25 -04:00
"RTN","ut",453,0)
2017-07-10 13:17:43 -04:00
. N $ETRAP S $ETRAP="D ERROR^%ut"
2015-03-25 15:05:25 -04:00
"RTN","ut",454,0)
2017-07-10 13:17:43 -04:00
. D @("TEARDOWN^"_%utROUT)
2015-03-25 15:05:25 -04:00
"RTN","ut",455,0)
2017-07-10 13:17:43 -04:00
. Q
2015-03-25 15:05:25 -04:00
"RTN","ut",456,0)
2017-07-10 13:17:43 -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",457,0)
2017-07-10 13:17:43 -04:00
K ^TMP("%ut",$J,"UTVALS")
2015-03-25 15:05:25 -04:00
"RTN","ut",458,0)
2017-07-10 13:17:43 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","ut",459,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",460,0)
2017-07-10 13:17:43 -04:00
GTMVER(X) ;return OS version, X=1 - return OS
2015-03-25 15:05:25 -04:00
"RTN","ut",461,0)
2017-07-10 13:17:43 -04:00
Q $S($G(X):$P($ZV," ",3,99),1:$P($P($ZV," V",2)," "))
2015-03-25 15:05:25 -04:00
"RTN","ut",462,0)
2017-02-12 23:15:29 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut",463,0)
2017-07-10 13:17:43 -04:00
ZHDIF(%ZH0,%ZH1) ;Display dif of two $ZH's
2015-03-25 15:05:25 -04:00
"RTN","ut",464,0)
2017-07-10 13:17:43 -04:00
N SC0 S SC0=$P(%ZH0,",",2)
2015-03-25 15:05:25 -04:00
"RTN","ut",465,0)
2017-07-10 13:17:43 -04:00
N SC1 S SC1=$P(%ZH1,",",2)
2015-03-25 15:05:25 -04:00
"RTN","ut",466,0)
2017-07-10 13:17:43 -04:00
N DC0 S DC0=$P(%ZH0,",")*86400
2016-02-27 17:01:27 -05:00
"RTN","ut",467,0)
2017-07-10 13:17:43 -04:00
N DC1 S DC1=$P(%ZH1,",")*86400
"RTN","ut",468,0)
N MCS0 S MCS0=$P(%ZH0,",",3)/1000000
"RTN","ut",469,0)
N MCS1 S MCS1=$P(%ZH1,",",3)/1000000
"RTN","ut",470,0)
;
"RTN","ut",471,0)
N T0 S T0=SC0+DC0+MCS0
"RTN","ut",472,0)
N T1 S T1=SC1+DC1+MCS1
"RTN","ut",473,0)
;
"RTN","ut",474,0)
N %ZH2 S %ZH2=T1-T0*1000
"RTN","ut",475,0)
QUIT %ZH2
2015-03-25 15:05:25 -04:00
"RTN","ut1")
2017-07-10 13:17:43 -04:00
0^1^B259333727
2015-03-25 15:05:25 -04:00
"RTN","ut1",1,0)
2017-07-10 13:17:43 -04:00
%ut1 ;VEN/SMH/JLI - CONTINUATION OF M-UNIT PROCESSING ;04/26/17 21:10
2015-03-25 15:05:25 -04:00
"RTN","ut1",2,0)
2017-07-10 13:17:43 -04:00
;;1.5;MASH UTILITIES;;Jul 8, 2017;Build 13
2015-03-25 15:05:25 -04:00
"RTN","ut1",3,0)
2017-07-10 13:17:43 -04:00
; Submitted to OSEHRA Jul 8, 2017 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)
2017-02-12 23:15:29 -05:00
; Original by Dr. Joel Ivey
2015-03-25 15:05:25 -04:00
"RTN","ut1",7,0)
2017-02-12 23:15:29 -05:00
; Major contributions by Dr. Sam Habiel
2015-03-25 15:05:25 -04:00
"RTN","ut1",8,0)
2017-02-12 23:15:29 -05:00
; Additions and modifications made by Joel L. Ivey 05/2014-12/2015
2015-03-25 15:05:25 -04:00
"RTN","ut1",9,0)
2017-02-12 23:15:29 -05:00
; Additions and modifications made by Sam H. Habiel and Joel L. Ivey 12/2015-02/2017
2015-03-25 15:05:25 -04:00
"RTN","ut1",10,0)
2017-02-12 23:15:29 -05:00
;
2016-02-27 17:01:27 -05:00
"RTN","ut1",11,0)
2017-02-12 23:15:29 -05:00
; older comments moved to %utcover due to space requirements
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)
2017-02-12 23:15:29 -05:00
; For a list of changes in this version in this routine see tag %ut1 in routine %utt2
2015-03-25 15:05:25 -04:00
"RTN","ut1",14,0)
2017-02-12 23:15:29 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut1",15,0)
2017-02-12 23:15:29 -05:00
D ^%utt6 ; runs unit tests from several perspectives
2015-03-25 15:05:25 -04:00
"RTN","ut1",16,0)
2017-02-12 23:15:29 -05:00
Q
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)
2017-02-12 23:15:29 -05: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",19,0)
2017-02-12 23:15:29 -05: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",20,0)
2017-02-12 23:15:29 -05:00
;;7.3;TOOLKIT;**81**;APR 25 1995;Build 24
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)
2017-07-10 13:17:43 -04:00
CHEKTEST(%utROU,%ut,%utUETRY,FLAG) ; 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)
2017-07-10 13:17:43 -04:00
; FLAG - optional - if present and true, select only !TEST entries to run
2015-03-25 15:05:25 -04:00
"RTN","ut1",27,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut1",28,0)
2017-07-10 13:17:43 -04:00
; Test list collected in two ways:
2015-03-25 15:05:25 -04:00
"RTN","ut1",29,0)
2017-07-10 13:17:43 -04:00
; - @TEST on labellines
2015-03-25 15:05:25 -04:00
"RTN","ut1",30,0)
2017-07-10 13:17:43 -04:00
; - Offsets of XTENT
2015-03-25 15:05:25 -04:00
"RTN","ut1",31,0)
2016-04-11 18:26:37 -04:00
;
2017-07-10 13:17:43 -04:00
"RTN","ut1",32,0)
S %ut("ENTN")=0 ; Number of test, sub to %utUETRY.
2015-03-25 15:05:25 -04:00
"RTN","ut1",33,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut1",34,0)
2017-07-10 13:17:43 -04:00
; This stanza and everything below is for collecting @TEST.
2017-02-12 23:15:29 -05:00
"RTN","ut1",35,0)
2017-07-10 13:17:43 -04:00
N I,LIST
2017-02-12 23:15:29 -05:00
"RTN","ut1",36,0)
2017-07-10 13:17:43 -04:00
S FLAG=$G(FLAG,0)
2017-02-12 23:15:29 -05:00
"RTN","ut1",37,0)
2017-07-10 13:17:43 -04:00
S I=$L($T(@(U_%utROU))) I I<0 Q "-1^Invalid Routine Name"
2017-02-12 23:15:29 -05:00
"RTN","ut1",38,0)
2017-07-10 13:17:43 -04:00
D NEWSTYLE(.LIST,%utROU)
2017-02-12 23:15:29 -05:00
"RTN","ut1",39,0)
2017-07-10 13:17:43 -04:00
I FLAG D
2017-02-12 23:15:29 -05:00
"RTN","ut1",40,0)
2017-07-10 13:17:43 -04:00
. F I=1:1:LIST Q:'$D(LIST(I)) Q:LIST'>0 I $P(LIST(I),U)'="!" S LIST=LIST-1,I=I-1 F J=I+1:1:LIST S LIST(J)=LIST(J+1) I J=LIST K LIST(J+1)
2017-02-12 23:15:29 -05:00
"RTN","ut1",41,0)
2017-07-10 13:17:43 -04:00
. F I=LIST+1:1 Q:'$D(LIST(I)) K LIST(I)
2017-02-12 23:15:29 -05:00
"RTN","ut1",42,0)
2016-04-11 18:26:37 -04:00
. Q
2017-02-12 23:15:29 -05:00
"RTN","ut1",43,0)
2017-07-10 13:17:43 -04:00
F I=1:1:LIST S %ut("ENTN")=%ut("ENTN")+1,%utUETRY(%ut("ENTN"))=$P(LIST(I),U,2),%utUETRY(%ut("ENTN"),"NAME")=$P(LIST(I),U,3,99)
2017-02-12 23:15:29 -05:00
"RTN","ut1",44,0)
2016-04-11 18:26:37 -04:00
;
2017-07-10 13:17:43 -04:00
"RTN","ut1",45,0)
I FLAG Q ; don't check if only !TEST entries are selected
2017-02-12 23:15:29 -05:00
"RTN","ut1",46,0)
2017-07-10 13:17:43 -04:00
; This Stanza is to collect XTENT offsets
2015-03-25 15:05:25 -04:00
"RTN","ut1",47,0)
2017-07-10 13:17:43 -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",48,0)
2017-07-10 13:17:43 -04:00
. N TAGNAME,FOUND S FOUND=0,TAGNAME=$P(%ut("ELIN"),";",3)
2015-03-25 15:05:25 -04:00
"RTN","ut1",49,0)
2017-07-10 13:17:43 -04:00
. F I=1:1:%ut("ENTN") I %utUETRY(I)=TAGNAME S FOUND=1 Q ; skip if already under NEW STYLE as well
2015-03-25 15:05:25 -04:00
"RTN","ut1",50,0)
2017-07-10 13:17:43 -04:00
. I 'FOUND 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",51,0)
2017-07-10 13:17:43 -04:00
. Q
2015-03-25 15:05:25 -04:00
"RTN","ut1",52,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut1",53,0)
2017-07-10 13:17:43 -04:00
QUIT
2015-03-25 15:05:25 -04:00
"RTN","ut1",54,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut1",55,0)
2017-07-10 13:17:43 -04:00
GETTREE(%utROU,%utULIST) ;
2015-03-25 15:05:25 -04:00
"RTN","ut1",56,0)
2017-07-10 13:17:43 -04:00
; first get any other routines this one references for running subsequently
2015-03-25 15:05:25 -04:00
"RTN","ut1",57,0)
2017-07-10 13:17:43 -04:00
; then any that they refer to as well
2015-03-25 15:05:25 -04:00
"RTN","ut1",58,0)
2017-07-10 13:17:43 -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",59,0)
2017-07-10 13:17:43 -04:00
N %utUK,%utUI,%utUJ,%utURNAM,%utURLIN
2015-03-25 15:05:25 -04:00
"RTN","ut1",60,0)
2017-07-10 13:17:43 -04:00
F %utUK=1:1 Q:'$D(%utROU(%utUK)) D
2015-03-25 15:05:25 -04:00
"RTN","ut1",61,0)
2017-07-10 13:17:43 -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",62,0)
2017-07-10 13:17:43 -04:00
. . F %utUJ=1:1:%utULIST I %utROU(%utUJ)=%utURNAM S %utURNAM="" Q
2015-03-25 15:05:25 -04:00
"RTN","ut1",63,0)
2017-07-10 13:17:43 -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",64,0)
2017-07-10 13:17:43 -04:00
. . S:%utURNAM'="" %utULIST=%utULIST+1,%utROU(%utULIST)=%utURNAM
2015-03-25 15:05:25 -04:00
"RTN","ut1",65,0)
2017-07-10 13:17:43 -04:00
QUIT
2015-03-25 15:05:25 -04:00
"RTN","ut1",66,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut1",67,0)
2017-07-10 13:17:43 -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",68,0)
2017-07-10 13:17:43 -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",69,0)
2017-07-10 13:17:43 -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",70,0)
2017-07-10 13:17:43 -04:00
; ROUNAME - input - routine name in which tests should be identified
2015-03-25 15:05:25 -04:00
"RTN","ut1",71,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut1",72,0)
2017-07-10 13:17:43 -04:00
N I,VALUE,LINE
2015-03-25 15:05:25 -04:00
"RTN","ut1",73,0)
2017-07-10 13:17:43 -04:00
K LIST S LIST=0
2015-03-25 15:05:25 -04:00
"RTN","ut1",74,0)
2017-07-10 13:17:43 -04:00
; search routine by line for a tag and @TEST declaration
2015-03-25 15:05:25 -04:00
"RTN","ut1",75,0)
2017-07-10 13:17:43 -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",76,0)
2017-07-10 13:17:43 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","ut1",77,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut1",78,0)
2017-07-10 13:17:43 -04:00
CHECKTAG(LINE) ; JLI 170426 modified to add !TEST to checks check line to determine @test TAG
2015-03-25 15:05:25 -04:00
"RTN","ut1",79,0)
2017-07-10 13:17:43 -04:00
; LINE - input - Line of code to be checked
2015-03-25 15:05:25 -04:00
"RTN","ut1",80,0)
2017-07-10 13:17:43 -04:00
; returns null line if not @TEST line or !TEST line, otherwise TAG^NOTE
2015-03-25 15:05:25 -04:00
"RTN","ut1",81,0)
2017-07-10 13:17:43 -04:00
N TAG
2015-03-25 15:05:25 -04:00
"RTN","ut1",82,0)
2017-07-10 13:17:43 -04:00
S TAG=$$CHKTAGS(LINE,"@TEST") I TAG'="" Q "@"_U_TAG
2015-03-25 15:05:25 -04:00
"RTN","ut1",83,0)
2017-07-10 13:17:43 -04:00
S TAG=$$CHKTAGS(LINE,"!TEST")
2015-03-25 15:05:25 -04:00
"RTN","ut1",84,0)
2017-07-10 13:17:43 -04:00
I TAG'="" S TAG="!"_U_TAG
2015-03-25 15:05:25 -04:00
"RTN","ut1",85,0)
2017-07-10 13:17:43 -04:00
Q TAG
2015-03-25 15:05:25 -04:00
"RTN","ut1",86,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut1",87,0)
2017-07-10 13:17:43 -04:00
CHKTAGS(LINE,TEST) ; check input LINE for TAG line, containing TEST as first test after comment
2015-03-25 15:05:25 -04:00
"RTN","ut1",88,0)
2017-07-10 13:17:43 -04:00
N TAG,NOTE,CHAR
2015-03-25 15:05:25 -04:00
"RTN","ut1",89,0)
2017-07-10 13:17:43 -04:00
I $E(LINE)=" " Q "" ; test entry must have a tag
2015-03-25 15:05:25 -04:00
"RTN","ut1",90,0)
2017-07-10 13:17:43 -04:00
I $$UP(LINE)'[TEST Q "" ; must have TEST declaration
2015-03-25 15:05:25 -04:00
"RTN","ut1",91,0)
2017-07-10 13:17:43 -04:00
I $P($$UP(LINE),"TEST")["(" Q "" ; can't have an argument
2015-03-25 15:05:25 -04:00
"RTN","ut1",92,0)
2017-07-10 13:17:43 -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",93,0)
2017-07-10 13:17:43 -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",94,0)
2017-07-10 13:17:43 -04:00
I $L(NOTE)'=0 Q "" ; @TEST must be first text on line
2015-03-25 15:05:25 -04:00
"RTN","ut1",95,0)
2017-07-10 13:17:43 -04:00
F Q:$E(LINE)'=" " S LINE=$E(LINE,2,$L(LINE)) ; remove leading spaces from test info
2017-02-12 23:15:29 -05:00
"RTN","ut1",96,0)
2017-07-10 13:17:43 -04:00
S TAG=TAG_U_LINE
2017-02-12 23:15:29 -05:00
"RTN","ut1",97,0)
2017-07-10 13:17:43 -04:00
Q TAG
2017-02-12 23:15:29 -05:00
"RTN","ut1",98,0)
2017-07-10 13:17:43 -04:00
;
2017-02-12 23:15:29 -05:00
"RTN","ut1",99,0)
2017-07-10 13:17:43 -04:00
FAIL(XTERMSG) ; Entry point for generating a failure message
2017-02-12 23:15:29 -05:00
"RTN","ut1",100,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: %utERRL,%utGUI -CREATED IN SETUP, KILLED IN END
2017-02-12 23:15:29 -05:00
"RTN","ut1",101,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: %ut -- NEWED ON ENTRY
2017-02-12 23:15:29 -05:00
"RTN","ut1",102,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: XTGUISEP - newed in GUINEXT
2017-02-12 23:15:29 -05:00
"RTN","ut1",103,0)
2017-07-10 13:17:43 -04:00
I $G(XTERMSG)="" S XTERMSG="no failure message provided"
2017-02-12 23:15:29 -05:00
"RTN","ut1",104,0)
2017-07-10 13:17:43 -04:00
S %ut("CHK")=%ut("CHK")+1
2017-02-12 23:15:29 -05:00
"RTN","ut1",105,0)
2017-07-10 13:17:43 -04:00
I '$D(%utGUI) D
2017-02-12 23:15:29 -05:00
"RTN","ut1",106,0)
2017-07-10 13:17:43 -04:00
. D SETIO
2017-02-12 23:15:29 -05:00
"RTN","ut1",107,0)
2017-07-10 13:17:43 -04:00
. W !,%ut("ENT")," - " W:%ut("NAME")'="" %ut("NAME")," - " W XTERMSG,! D
2017-02-12 23:15:29 -05:00
"RTN","ut1",108,0)
2017-07-10 13:17:43 -04:00
. . S %ut("FAIL")=%ut("FAIL")+1,%utERRL(%ut("FAIL"))=%ut("NAME"),%utERRL(%ut("FAIL"),"MSG")=XTERMSG,%utERRL(%ut("FAIL"),"ENTRY")=%ut("ENT")
2017-02-12 23:15:29 -05:00
"RTN","ut1",109,0)
2017-07-10 13:17:43 -04:00
. . I $D(%ut("BREAK")) W !,"Breaking on Failure" BREAK ;
2017-02-12 23:15:29 -05:00
"RTN","ut1",110,0)
2016-04-11 18:26:37 -04:00
. . Q
2017-07-10 13:17:43 -04:00
"RTN","ut1",111,0)
2016-04-11 18:26:37 -04:00
. D RESETIO
2017-07-10 13:17:43 -04:00
"RTN","ut1",112,0)
2016-04-11 18:26:37 -04:00
. Q
2017-07-10 13:17:43 -04:00
"RTN","ut1",113,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
2017-07-10 13:17:43 -04:00
"RTN","ut1",114,0)
2016-04-11 18:26:37 -04:00
Q
2017-07-10 13:17:43 -04:00
"RTN","ut1",115,0)
2016-04-11 18:26:37 -04:00
;
2017-07-10 13:17:43 -04:00
"RTN","ut1",116,0)
NVLDARG(API) ; generate message for invalid arguments to test
2017-02-12 23:15:29 -05:00
"RTN","ut1",117,0)
2017-07-10 13:17:43 -04:00
N XTERMSG
2017-02-12 23:15:29 -05:00
"RTN","ut1",118,0)
2016-04-11 18:26:37 -04:00
; ZEXCEPT: %ut -- NEWED ON ENTRY
2017-02-12 23:15:29 -05:00
"RTN","ut1",119,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: %utERRL,%utGUI -CREATED IN SETUP, KILLED IN END
2017-02-12 23:15:29 -05:00
"RTN","ut1",120,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: XTGUISEP - newed in GUINEXT
2017-02-12 23:15:29 -05:00
"RTN","ut1",121,0)
2017-07-10 13:17:43 -04:00
S XTERMSG="NO VALUES INPUT TO "_API_"^%ut - no evaluation possible"
2017-02-12 23:15:29 -05:00
"RTN","ut1",122,0)
2017-07-10 13:17:43 -04:00
I '$D(%utGUI) D
2017-02-12 23:15:29 -05:00
"RTN","ut1",123,0)
2017-07-10 13:17:43 -04:00
. D SETIO
2017-02-12 23:15:29 -05:00
"RTN","ut1",124,0)
2017-07-10 13:17:43 -04:00
. W !,%ut("ENT")," - " W:%ut("NAME")'="" %ut("NAME")," - " W XTERMSG,! D
2017-02-12 23:15:29 -05:00
"RTN","ut1",125,0)
2017-07-10 13:17:43 -04:00
. . S %ut("FAIL")=%ut("FAIL")+1,%utERRL(%ut("FAIL"))=%ut("NAME"),%utERRL(%ut("FAIL"),"MSG")=XTERMSG,%utERRL(%ut("FAIL"),"ENTRY")=%ut("ENT")
2017-02-12 23:15:29 -05:00
"RTN","ut1",126,0)
2017-07-10 13:17:43 -04:00
. . Q
2017-02-12 23:15:29 -05:00
"RTN","ut1",127,0)
2017-07-10 13:17:43 -04:00
. D RESETIO
2017-02-12 23:15:29 -05:00
"RTN","ut1",128,0)
2017-07-10 13:17:43 -04:00
. Q
2017-02-12 23:15:29 -05:00
"RTN","ut1",129,0)
2017-07-10 13:17:43 -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
2017-02-12 23:15:29 -05:00
"RTN","ut1",130,0)
2017-07-10 13:17:43 -04:00
Q
2017-02-12 23:15:29 -05:00
"RTN","ut1",131,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut1",132,0)
2017-07-10 13:17:43 -04:00
SETIO ; Set M-Unit Device to write the results to...
2015-03-25 15:05:25 -04:00
"RTN","ut1",133,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: %ut -- NEWED ON ENTRY
2015-03-25 15:05:25 -04:00
"RTN","ut1",134,0)
2017-07-10 13:17:43 -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",135,0)
2017-07-10 13:17:43 -04:00
QUIT
2015-03-25 15:05:25 -04:00
"RTN","ut1",136,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut1",137,0)
2017-07-10 13:17:43 -04:00
RESETIO ; Reset $IO back to the original device if we changed it.
2015-03-25 15:05:25 -04:00
"RTN","ut1",138,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: %ut -- NEWED ON ENTRY
2015-03-25 15:05:25 -04:00
"RTN","ut1",139,0)
2017-07-10 13:17:43 -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",140,0)
2017-07-10 13:17:43 -04:00
QUIT
2015-03-25 15:05:25 -04:00
"RTN","ut1",141,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut1",142,0)
2017-07-10 13:17:43 -04:00
; VEN/SMH 17DEC2013 - Remove dependence on VISTA - Uppercase here instead of XLFSTR.
2015-03-25 15:05:25 -04:00
"RTN","ut1",143,0)
2017-07-10 13:17:43 -04:00
UP(X) ;
2015-03-25 15:05:25 -04:00
"RTN","ut1",144,0)
2017-07-10 13:17:43 -04:00
Q $TR(X,"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")
2015-03-25 15:05:25 -04:00
"RTN","ut1",145,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut1",146,0)
2017-07-10 13:17:43 -04:00
; COV modified to support handling more than one namespace for analyzing coverage in one run
2015-03-25 15:05:25 -04:00
"RTN","ut1",147,0)
2017-07-10 13:17:43 -04:00
COV(NMSPS,COVCODE,VERBOSITY) ; VEN/SMH - PUBLIC ENTRY POINT; Coverage calculations
2015-03-25 15:05:25 -04:00
"RTN","ut1",148,0)
2017-07-10 13:17:43 -04:00
; [.]NMSPS: Namespace of the routines to analyze. End with * to include all routines.
2015-03-25 15:05:25 -04:00
"RTN","ut1",149,0)
2017-07-10 13:17:43 -04:00
; Not using * will only include the routine with NMSP name.
2015-03-25 15:05:25 -04:00
"RTN","ut1",150,0)
2017-07-10 13:17:43 -04:00
; e.g. PSOM* will include all routines starting with PSOM
2015-03-25 15:05:25 -04:00
"RTN","ut1",151,0)
2017-07-10 13:17:43 -04:00
; PSOM will only include PSOM.
2015-03-25 15:05:25 -04:00
"RTN","ut1",152,0)
2017-07-10 13:17:43 -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",153,0)
2017-07-10 13:17:43 -04:00
; VERBOSITY (optional): Scalar from -1 to 3.
2015-03-25 15:05:25 -04:00
"RTN","ut1",154,0)
2017-07-10 13:17:43 -04:00
; - -1 = Global output in ^TMP("%utCOVREPORT",$J)
2015-03-25 15:05:25 -04:00
"RTN","ut1",155,0)
2017-07-10 13:17:43 -04:00
; - 0 = Print only total coverage
2015-03-25 15:05:25 -04:00
"RTN","ut1",156,0)
2017-07-10 13:17:43 -04:00
; - 1 = Break down by routine
2015-03-25 15:05:25 -04:00
"RTN","ut1",157,0)
2017-07-10 13:17:43 -04:00
; - 2 = Break down by routine and tag
2015-03-25 15:05:25 -04:00
"RTN","ut1",158,0)
2017-07-10 13:17:43 -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",159,0)
2017-07-10 13:17:43 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","ut1",160,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: %utcovxx - SET and KILLED in this code at top level
2015-03-25 15:05:25 -04:00
"RTN","ut1",161,0)
2017-07-10 13:17:43 -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",162,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: %utIO - NEWed and set in EN^%ut
2015-03-25 15:05:25 -04:00
"RTN","ut1",163,0)
2017-07-10 13:17:43 -04:00
N COVER,COVERSAV,I,NMSP1,RTN,RTNS,ERR,STATUS
2016-04-11 18:26:37 -04:00
"RTN","ut1",164,0)
2017-07-10 13:17:43 -04:00
W !,"Loading routines to test coverage...",!
2016-04-11 18:26:37 -04:00
"RTN","ut1",165,0)
2017-07-10 13:17:43 -04:00
I ($$GETSYS^%ut()=47) D ; GT.M only!
2015-03-25 15:05:25 -04:00
"RTN","ut1",166,0)
2017-02-12 23:15:29 -05:00
. N NMSP S NMSP=$G(NMSPS)
2017-07-10 13:17:43 -04:00
"RTN","ut1",167,0)
2017-02-12 23:15:29 -05:00
. D:NMSP]"" S NMSP="" F S NMSP=$O(NMSPS(NMSP)) Q:NMSP="" D
2017-07-10 13:17:43 -04:00
"RTN","ut1",168,0)
.. N %ZR ; GT.M specific
2015-03-25 15:05:25 -04:00
"RTN","ut1",169,0)
2017-07-10 13:17:43 -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",170,0)
2017-07-10 13:17:43 -04:00
.. N RN S RN=""
2015-03-25 15:05:25 -04:00
"RTN","ut1",171,0)
2017-07-10 13:17:43 -04:00
.. F S RN=$O(%ZR(RN)) Q:RN="" W RN," " D
2015-03-25 15:05:25 -04:00
"RTN","ut1",172,0)
2017-07-10 13:17:43 -04:00
... N L2 S L2=$T(+2^@RN)
2015-03-25 15:05:25 -04:00
"RTN","ut1",173,0)
2017-07-10 13:17:43 -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",174,0)
2017-07-10 13:17:43 -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 format",!
2015-03-25 15:05:25 -04:00
"RTN","ut1",175,0)
2017-07-10 13:17:43 -04:00
.. M RTNS=%ZR
2015-03-25 15:05:25 -04:00
"RTN","ut1",176,0)
2017-07-10 13:17:43 -04:00
.. K %ZR
2015-03-25 15:05:25 -04:00
"RTN","ut1",177,0)
2017-07-10 13:17:43 -04:00
. Q
2015-03-25 15:05:25 -04:00
"RTN","ut1",178,0)
2017-02-12 23:15:29 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut1",179,0)
2017-07-10 13:17:43 -04:00
I ($$GETSYS^%ut()=0) D ; CACHE SPECIFIC
2015-03-25 15:05:25 -04:00
"RTN","ut1",180,0)
2017-07-10 13:17:43 -04:00
. N NMSP S NMSP=$G(NMSPS)
2015-03-25 15:05:25 -04:00
"RTN","ut1",181,0)
2017-07-10 13:17:43 -04:00
. D:NMSP]"" S NMSP="" F S NMSP=$O(NMSPS(NMSP)) Q:NMSP="" D
2015-03-25 15:05:25 -04:00
"RTN","ut1",182,0)
2017-07-10 13:17:43 -04:00
. . S NMSP1=NMSP I NMSP["*" S NMSP1=$P(NMSP,"*")
2015-03-25 15:05:25 -04:00
"RTN","ut1",183,0)
2017-07-10 13:17:43 -04:00
. . I $D(^$R(NMSP1)) S RTNS(NMSP1)=""
2015-03-25 15:05:25 -04:00
"RTN","ut1",184,0)
2017-07-10 13:17:43 -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",185,0)
2017-07-10 13:17:43 -04:00
. . Q
2015-03-25 15:05:25 -04:00
"RTN","ut1",186,0)
2017-07-10 13:17:43 -04:00
. Q
2015-03-25 15:05:25 -04:00
"RTN","ut1",187,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut1",188,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: CTRAP - not really a variable
2015-03-25 15:05:25 -04:00
"RTN","ut1",189,0)
2017-07-10 13:17:43 -04:00
S VERBOSITY=+$G(VERBOSITY) ; Get 0 if not passed.
2015-03-25 15:05:25 -04:00
"RTN","ut1",190,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut1",191,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut1",192,0)
2017-07-10 13:17:43 -04:00
N GL
2015-03-25 15:05:25 -04:00
"RTN","ut1",193,0)
2017-07-10 13:17:43 -04:00
S GL=$NA(^TMP("%utCOVCOHORT",$J))
2015-03-25 15:05:25 -04:00
"RTN","ut1",194,0)
2017-07-10 13:17:43 -04:00
I '$D(^TMP("%utcovrunning",$J)) K @GL
2015-03-25 15:05:25 -04:00
"RTN","ut1",195,0)
2017-07-10 13:17:43 -04:00
D RTNANAL(.RTNS,GL) ; save off any current coverage data
2015-03-25 15:05:25 -04:00
"RTN","ut1",196,0)
2017-07-10 13:17:43 -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",197,0)
2017-07-10 13:17:43 -04:00
. K ^TMP("%utCOVCOHORTSAV",$J)
2017-02-12 23:15:29 -05:00
"RTN","ut1",198,0)
2017-07-10 13:17:43 -04:00
. M ^TMP("%utCOVCOHORTSAV",$J)=^TMP("%utCOVCOHORT",$J)
2015-03-25 15:05:25 -04:00
"RTN","ut1",199,0)
2017-07-10 13:17:43 -04:00
. K ^TMP("%utCOVRESULT",$J)
2015-03-25 15:05:25 -04:00
"RTN","ut1",200,0)
2017-07-10 13:17:43 -04:00
. S ^TMP("%utcovrunning",$J)=1,%utcovxx=1
2015-03-25 15:05:25 -04:00
"RTN","ut1",201,0)
2017-07-10 13:17:43 -04:00
. ;
2016-04-11 18:26:37 -04:00
"RTN","ut1",202,0)
2017-07-10 13:17:43 -04:00
. I ($$GETSYS^%ut()=47) VIEW "TRACE":1:$NA(^TMP("%utCOVRESULT",$J)) ; GT.M START PROFILING
2015-03-25 15:05:25 -04:00
"RTN","ut1",203,0)
2017-07-10 13:17:43 -04:00
. ;
2015-03-25 15:05:25 -04:00
"RTN","ut1",204,0)
2017-07-10 13:17:43 -04:00
. I ($$GETSYS^%ut()=0) D ; CACHE CODE TO START PROFILING
2015-03-25 15:05:25 -04:00
"RTN","ut1",205,0)
2017-07-10 13:17:43 -04:00
. . N NMSP,NMSPV S NMSP="",NMSPV="" F S NMSPV=$O(RTNS(NMSPV)) Q:NMSPV="" S NMSP=NMSP_NMSPV_","
2015-03-25 15:05:25 -04:00
"RTN","ut1",206,0)
2017-07-10 13:17:43 -04:00
. . S NMSP=$E(NMSP,1,$L(NMSP)-1)
2015-03-25 15:05:25 -04:00
"RTN","ut1",207,0)
2017-07-10 13:17:43 -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",208,0)
2017-07-10 13:17:43 -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",209,0)
2017-07-10 13:17:43 -04:00
. . I +STATUS'=1 K ERR S EXIT=1
2015-03-25 15:05:25 -04:00
"RTN","ut1",210,0)
2017-07-10 13:17:43 -04:00
. . Q
2015-03-25 15:05:25 -04:00
"RTN","ut1",211,0)
2017-07-10 13:17:43 -04:00
. Q
2015-03-25 15:05:25 -04:00
"RTN","ut1",212,0)
2017-07-10 13:17:43 -04:00
DO ; Run the code, but keep our variables to ourselves.
2015-03-25 15:05:25 -04:00
"RTN","ut1",213,0)
2017-07-10 13:17:43 -04:00
. NEW $ETRAP,$ESTACK
2015-03-25 15:05:25 -04:00
"RTN","ut1",214,0)
2017-07-10 13:17:43 -04:00
. I ($$GETSYS^%ut()=47) D ; GT.M SPECIFIC
2015-03-25 15:05:25 -04:00
"RTN","ut1",215,0)
2017-07-10 13:17:43 -04:00
. . SET $ETRAP="Q:($ES&$Q) -9 Q:$ES W ""CTRL-C ENTERED"""
2015-03-25 15:05:25 -04:00
"RTN","ut1",216,0)
2017-07-10 13:17:43 -04:00
. . ;USE $PRINCIPAL:(CTRAP=$C(3)) ; JLI 170403
2016-04-11 18:26:37 -04:00
"RTN","ut1",217,0)
2017-07-10 13:17:43 -04:00
. . USE %utIO:(CTRAP=$C(3)) ; JLI 170403
2015-03-25 15:05:25 -04:00
"RTN","ut1",218,0)
2017-07-10 13:17:43 -04:00
. . Q
2015-03-25 15:05:25 -04:00
"RTN","ut1",219,0)
2017-07-10 13:17:43 -04:00
. NEW (DUZ,IO,COVCODE,U,DILOCKTM,DISYS,DT,DTIME,IOBS,IOF,IOM,ION,IOS,IOSL,IOST,IOT,IOXY,%utIO)
2015-03-25 15:05:25 -04:00
"RTN","ut1",220,0)
2017-07-10 13:17:43 -04:00
. XECUTE COVCODE
2015-03-25 15:05:25 -04:00
"RTN","ut1",221,0)
2017-07-10 13:17:43 -04:00
. Q
2015-03-25 15:05:25 -04:00
"RTN","ut1",222,0)
2017-07-10 13:17:43 -04:00
; GT.M STOP PROFILING if this is the original level that started it
2015-03-25 15:05:25 -04:00
"RTN","ut1",223,0)
2017-07-10 13:17:43 -04:00
I $D(^TMP("%utcovrunning",$J)),$D(%utcovxx) D
2015-03-25 15:05:25 -04:00
"RTN","ut1",224,0)
2017-07-10 13:17:43 -04:00
. I ($$GETSYS^%ut()=47) VIEW "TRACE":0:$NA(^TMP("%utCOVRESULT",$J)) ; GT.M SPECIFIC
2015-03-25 15:05:25 -04:00
"RTN","ut1",225,0)
2017-07-10 13:17:43 -04:00
. I ($$GETSYS^%ut()=0) ; CACHE SPECIFIC
2015-03-25 15:05:25 -04:00
"RTN","ut1",226,0)
2017-07-10 13:17:43 -04:00
. K %utcovxx,^TMP("%utcovrunning",$J)
2015-03-25 15:05:25 -04:00
"RTN","ut1",227,0)
2017-07-10 13:17:43 -04:00
. Q
2015-03-25 15:05:25 -04:00
"RTN","ut1",228,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut1",229,0)
2017-07-10 13:17:43 -04:00
I '$D(^TMP("%utcovrunning",$J)) D
2015-03-25 15:05:25 -04:00
"RTN","ut1",230,0)
2017-07-10 13:17:43 -04:00
. I ($$GETSYS^%ut()=0) D ; CACHE SPECIFIC CODE
2015-03-25 15:05:25 -04:00
"RTN","ut1",231,0)
2017-07-10 13:17:43 -04:00
. . S COVERSAV=$NA(^TMP("%utCOVCOHORTSAV",$J)) K @COVERSAV
2015-03-25 15:05:25 -04:00
"RTN","ut1",232,0)
2017-07-10 13:17:43 -04:00
. . S COVER=$NA(^TMP("%utCOVCOHORT",$J)) K @COVER
2015-03-25 15:05:25 -04:00
"RTN","ut1",233,0)
2017-07-10 13:17:43 -04:00
. . D CACHECOV(COVERSAV,COVER)
2015-03-25 15:05:25 -04:00
"RTN","ut1",234,0)
2017-07-10 13:17:43 -04:00
. . D TOTAGS(COVERSAV,0),TOTAGS(COVER,1)
2015-03-25 15:05:25 -04:00
"RTN","ut1",235,0)
2017-07-10 13:17:43 -04:00
. . D ##class(%Monitor.System.LineByLine).Stop()
2015-03-25 15:05:25 -04:00
"RTN","ut1",236,0)
2017-07-10 13:17:43 -04:00
. . Q
2015-03-25 15:05:25 -04:00
"RTN","ut1",237,0)
2017-07-10 13:17:43 -04:00
. 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",238,0)
2017-07-10 13:17:43 -04:00
. ; Report
2015-03-25 15:05:25 -04:00
"RTN","ut1",239,0)
2017-07-10 13:17:43 -04:00
. I VERBOSITY=-1 D
2015-03-25 15:05:25 -04:00
"RTN","ut1",240,0)
2017-07-10 13:17:43 -04:00
. . K ^TMP("%utCOVREPORT",$J)
2015-03-25 15:05:25 -04:00
"RTN","ut1",241,0)
2017-07-10 13:17:43 -04:00
. . D COVRPTGL^%utcover($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",242,0)
2017-07-10 13:17:43 -04:00
. . K ^TMP("%utCOVCOHORTSAV",$J),^TMP("%utCOVCOHORT",$J),^TMP("%utCOVRESULT",$J) ; %utCOVREPORT contains the data for the user
2015-03-25 15:05:25 -04:00
"RTN","ut1",243,0)
2017-07-10 13:17:43 -04:00
. . Q
2015-03-25 15:05:25 -04:00
"RTN","ut1",244,0)
2017-07-10 13:17:43 -04:00
. E D
2015-03-25 15:05:25 -04:00
"RTN","ut1",245,0)
2017-07-10 13:17:43 -04:00
. . 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",246,0)
2017-07-10 13:17:43 -04:00
. . K ^TMP("%utCOVCOHORTSAV",$J),^TMP("%utCOVCOHORT",$J),^TMP("%utCOVRESULT",$J),^TMP("%utCOVREPORT",$J)
2015-03-25 15:05:25 -04:00
"RTN","ut1",247,0)
2017-02-12 23:15:29 -05:00
. . Q
2017-07-10 13:17:43 -04:00
"RTN","ut1",248,0)
. Q
2015-03-25 15:05:25 -04:00
"RTN","ut1",249,0)
2017-07-10 13:17:43 -04:00
QUIT
2015-03-25 15:05:25 -04:00
"RTN","ut1",250,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut1",251,0)
2017-07-10 13:17:43 -04:00
CACHECOV(GLOBSAV,GLOB) ;
2015-03-25 15:05:25 -04:00
"RTN","ut1",252,0)
2017-07-10 13:17:43 -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",253,0)
2017-07-10 13:17:43 -04:00
N %N,DIF,I,METRIC,METRICNT,METRICS,MTRICNUM,ROUNAME,ROUNUM,X,XCNP,XXX
2015-03-25 15:05:25 -04:00
"RTN","ut1",254,0)
2017-07-10 13:17:43 -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",255,0)
2017-07-10 13:17:43 -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",256,0)
2017-07-10 13:17:43 -04:00
; if only running to do coverage, should be 1
2015-03-25 15:05:25 -04:00
"RTN","ut1",257,0)
2017-07-10 13:17:43 -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",258,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","ut1",259,0)
2017-07-10 13:17:43 -04:00
F I=1:1:ROUNUM D
2015-03-25 15:05:25 -04:00
"RTN","ut1",260,0)
2017-07-10 13:17:43 -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",261,0)
2017-07-10 13:17:43 -04:00
. ; get routine loaded into location
2015-03-25 15:05:25 -04:00
"RTN","ut1",262,0)
2017-07-10 13:17:43 -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",263,0)
2017-07-10 13:17:43 -04:00
. ;X ^%ZOSF("LOAD") ; JLI 160912 see 160701 note in comments at top
2015-03-25 15:05:25 -04:00
"RTN","ut1",264,0)
2017-07-10 13:17:43 -04:00
. I $$GETSYS^%ut()=0 D
2015-03-25 15:05:25 -04:00
"RTN","ut1",265,0)
2017-07-10 13:17:43 -04:00
. . X "N %,%N S %N=0 X ""ZL @X F XCNP=XCNP+1:1 S %N=%N+1,%=$T(+%N) Q:$L(%)=0 S @(DIF_XCNP_"""",0)"""")=%""" ; JLI see 160701 note in comments at top
2015-03-25 15:05:25 -04:00
"RTN","ut1",266,0)
2017-07-10 13:17:43 -04:00
. . Q
2015-03-25 15:05:25 -04:00
"RTN","ut1",267,0)
2017-07-10 13:17:43 -04:00
. I $$GETSYS^%ut()=47 D
2016-02-27 17:01:27 -05:00
"RTN","ut1",268,0)
2017-07-10 13:17:43 -04:00
. . N % S %N=0 F XCNP=XCNP+1:1 S %N=%N+1,%=$T(+%N^@X) Q:$L(%)=0 S @(DIF_XCNP_",0)")=%
2016-02-27 17:01:27 -05:00
"RTN","ut1",269,0)
2017-07-10 13:17:43 -04:00
. . Q
2016-02-27 17:01:27 -05:00
"RTN","ut1",270,0)
2017-07-10 13:17:43 -04:00
. M @GLOB@(ROUNAME)=@GLOBSAV@(ROUNAME)
2016-02-27 17:01:27 -05:00
"RTN","ut1",271,0)
2017-07-10 13:17:43 -04:00
. Q
2016-02-27 17:01:27 -05:00
"RTN","ut1",272,0)
2017-02-12 23:15:29 -05:00
;
2016-02-27 17:01:27 -05:00
"RTN","ut1",273,0)
2017-07-10 13:17:43 -04:00
I $D(^TMP("%utt4val",$J))!'$$ISUTEST() F XXX=1:1:ROUNUM D GETVALS(XXX,GLOB,MTRICNUM)
2016-02-27 17:01:27 -05:00
"RTN","ut1",274,0)
2017-07-10 13:17:43 -04:00
Q
2016-02-27 17:01:27 -05:00
"RTN","ut1",275,0)
2017-07-10 13:17:43 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","ut1",276,0)
2017-07-10 13:17:43 -04:00
GETVALS(ROUNUM,GLOB,MTRICNUM) ; get data on number of times a line seen (set into VAL)
2016-02-27 17:01:27 -05:00
"RTN","ut1",277,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: %Monitor,%New,%ResultSet,Execute,GetData,GetRoutineName,LineByLine,Next,System,class - not variables parts of Cache classes
2016-02-27 17:01:27 -05:00
"RTN","ut1",278,0)
2017-07-10 13:17:43 -04:00
N LINE,MORE,ROUNAME,RSET,VAL,X
2016-02-27 17:01:27 -05:00
"RTN","ut1",279,0)
2017-07-10 13:17:43 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","ut1",280,0)
2017-07-10 13:17:43 -04:00
S RSET=##class(%ResultSet).%New("%Monitor.System.LineByLine:Result")
2016-02-27 17:01:27 -05:00
"RTN","ut1",281,0)
2017-07-10 13:17:43 -04:00
S ROUNAME=##class(%Monitor.System.LineByLine).GetRoutineName(ROUNUM)
2016-02-27 17:01:27 -05:00
"RTN","ut1",282,0)
2017-07-10 13:17:43 -04:00
S LINE=RSET.Execute(ROUNAME)
2016-02-27 17:01:27 -05:00
"RTN","ut1",283,0)
2017-07-10 13:17:43 -04:00
F LINE=1:1 S MORE=RSET.Next() Q:'MORE D
2016-02-27 17:01:27 -05:00
"RTN","ut1",284,0)
2017-07-10 13:17:43 -04:00
. S X=RSET.GetData(1)
2016-02-27 17:01:27 -05:00
"RTN","ut1",285,0)
2017-07-10 13:17:43 -04:00
. S VAL=$LI(X,MTRICNUM)
2016-02-27 17:01:27 -05:00
"RTN","ut1",286,0)
2017-07-10 13:17:43 -04:00
. S @GLOB@(ROUNAME,LINE,"C")=+VAL ; values are 0 if not seen, otherwises positive number
2016-02-27 17:01:27 -05:00
"RTN","ut1",287,0)
2017-07-10 13:17:43 -04:00
. Q
2016-02-27 17:01:27 -05:00
"RTN","ut1",288,0)
2017-07-10 13:17:43 -04:00
D RSET.Close()
2016-02-27 17:01:27 -05:00
"RTN","ut1",289,0)
2017-07-10 13:17:43 -04:00
Q
2016-04-11 18:26:37 -04:00
"RTN","ut1",290,0)
2017-07-10 13:17:43 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","ut1",291,0)
2017-07-10 13:17:43 -04:00
TOTAGS(GLOBAL,ACTIVE) ; convert to lines from tags and set value only if not seen
2016-02-27 17:01:27 -05:00
"RTN","ut1",292,0)
2017-07-10 13:17:43 -04:00
N ACTIVCOD,LINE,LINENUM,ROU,ROUCODE
2016-02-27 17:01:27 -05:00
"RTN","ut1",293,0)
2017-07-10 13:17:43 -04:00
S ROU="" F S ROU=$O(@GLOBAL@(ROU)) Q:ROU="" D
2016-02-27 17:01:27 -05:00
"RTN","ut1",294,0)
2017-07-10 13:17:43 -04:00
. M ROUCODE(ROU)=@GLOBAL@(ROU) K @GLOBAL@(ROU)
2016-02-27 17:01:27 -05:00
"RTN","ut1",295,0)
2017-07-10 13:17:43 -04:00
. N TAG,OFFSET,OLDTAG S TAG="",OFFSET=0,OLDTAG=""
2016-02-27 17:01:27 -05:00
"RTN","ut1",296,0)
2017-07-10 13:17:43 -04:00
. F LINENUM=1:1 Q:'$D(ROUCODE(ROU,LINENUM,0)) D
2016-02-27 17:01:27 -05:00
"RTN","ut1",297,0)
2017-07-10 13:17:43 -04:00
. . S LINE=ROUCODE(ROU,LINENUM,0)
2016-02-27 17:01:27 -05:00
"RTN","ut1",298,0)
2017-07-10 13:17:43 -04:00
. . S ACTIVCOD=$$LINEDATA(LINE,.TAG,.OFFSET)
2016-02-27 17:01:27 -05:00
"RTN","ut1",299,0)
2017-07-10 13:17:43 -04:00
. . I TAG'=OLDTAG S @GLOBAL@(ROU,TAG)=TAG
2016-02-27 17:01:27 -05:00
"RTN","ut1",300,0)
2017-07-10 13:17:43 -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",301,0)
2017-07-10 13:17:43 -04:00
. . I 'ACTIVE,ACTIVCOD S @GLOBAL@(ROU,TAG,OFFSET)=LINE
2016-02-27 17:01:27 -05:00
"RTN","ut1",302,0)
2017-07-10 13:17:43 -04:00
. . Q
2016-02-27 17:01:27 -05:00
"RTN","ut1",303,0)
2017-07-10 13:17:43 -04:00
. Q
2016-02-27 17:01:27 -05:00
"RTN","ut1",304,0)
2017-07-10 13:17:43 -04:00
Q
2016-02-27 17:01:27 -05:00
"RTN","ut1",305,0)
2017-07-10 13:17:43 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","ut1",306,0)
2017-07-10 13:17:43 -04:00
LINEDATA(LINE,TAG,OFFSET) ;
2016-02-27 17:01:27 -05:00
"RTN","ut1",307,0)
2017-07-10 13:17:43 -04:00
; LINE - input - the line of code
2016-02-27 17:01:27 -05:00
"RTN","ut1",308,0)
2017-07-10 13:17:43 -04:00
; TAG - passed by reference -
2016-02-27 17:01:27 -05:00
"RTN","ut1",309,0)
2017-07-10 13:17:43 -04:00
; OFFSET - passed by reference
2016-02-27 17:01:27 -05:00
"RTN","ut1",310,0)
2017-07-10 13:17:43 -04:00
N CODE,NEWTAG
2016-02-27 17:01:27 -05:00
"RTN","ut1",311,0)
2017-07-10 13:17:43 -04:00
S NEWTAG=""
2016-02-27 17:01:27 -05:00
"RTN","ut1",312,0)
2017-07-10 13:17:43 -04:00
S OFFSET=$G(OFFSET)+1
2016-02-27 17:01:27 -05:00
"RTN","ut1",313,0)
2017-07-10 13:17:43 -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",314,0)
2017-07-10 13:17:43 -04:00
S NEWTAG=$P(NEWTAG,"(")
2016-02-27 17:01:27 -05:00
"RTN","ut1",315,0)
2017-07-10 13:17:43 -04:00
I NEWTAG'="" S TAG=NEWTAG,OFFSET=0
2016-02-27 17:01:27 -05:00
"RTN","ut1",316,0)
2017-07-10 13:17:43 -04:00
S CODE=1
2016-02-27 17:01:27 -05:00
"RTN","ut1",317,0)
2017-07-10 13:17:43 -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",318,0)
2017-07-10 13:17:43 -04:00
Q CODE
2016-02-27 17:01:27 -05:00
"RTN","ut1",319,0)
2017-07-10 13:17:43 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","ut1",320,0)
2017-07-10 13:17:43 -04:00
RTNANAL(RTNS,GL) ; [Private] - Routine Analysis
2016-02-27 17:01:27 -05:00
"RTN","ut1",321,0)
2017-07-10 13:17:43 -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",322,0)
2017-07-10 13:17:43 -04:00
; Only non-comment lines are stored.
2016-02-27 17:01:27 -05:00
"RTN","ut1",323,0)
2017-07-10 13:17:43 -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",324,0)
2017-07-10 13:17:43 -04:00
; tags with no code don't count toward the total.
2016-02-27 17:01:27 -05:00
"RTN","ut1",325,0)
2017-07-10 13:17:43 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","ut1",326,0)
2017-07-10 13:17:43 -04:00
N RTN S RTN=""
2016-02-27 17:01:27 -05:00
"RTN","ut1",327,0)
2017-07-10 13:17:43 -04:00
F S RTN=$O(RTNS(RTN)) Q:RTN="" D ; for each routine
2016-02-27 17:01:27 -05:00
"RTN","ut1",328,0)
2017-07-10 13:17:43 -04:00
. N TAG,LN,T
2016-02-27 17:01:27 -05:00
"RTN","ut1",329,0)
2017-07-10 13:17:43 -04:00
. S LN=$T(+1^@RTN)
2016-02-27 17:01:27 -05:00
"RTN","ut1",330,0)
2017-07-10 13:17:43 -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",331,0)
2017-07-10 13:17:43 -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",332,0)
2017-07-10 13:17:43 -04:00
. . I $E(LN)?1A D QUIT ; formal line
2016-02-27 17:01:27 -05:00
"RTN","ut1",333,0)
2017-07-10 13:17:43 -04:00
. . . S TAG=$$GETTAG(.T,LN)
2016-02-27 17:01:27 -05:00
"RTN","ut1",334,0)
2017-07-10 13:17:43 -04:00
. . . S @GL@(RTN,TAG)=TAG ; store line
2016-02-27 17:01:27 -05:00
"RTN","ut1",335,0)
2017-07-10 13:17:43 -04:00
. . . I T="(" D ; formal list
2016-02-27 17:01:27 -05:00
"RTN","ut1",336,0)
2017-07-10 13:17:43 -04:00
. . . . N PCNT,STR,CHR S PCNT=0,STR=$P(LN,"(",2,99)
2016-02-27 17:01:27 -05:00
"RTN","ut1",337,0)
2017-07-10 13:17:43 -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",338,0)
2017-07-10 13:17:43 -04:00
. . . . . I CHR="(" S PCNT=PCNT+1
2016-02-27 17:01:27 -05:00
"RTN","ut1",339,0)
2017-07-10 13:17:43 -04:00
. . . . . I CHR=")" S PCNT=PCNT-1
2016-02-27 17:01:27 -05:00
"RTN","ut1",340,0)
2017-07-10 13:17:43 -04:00
. . . . . Q
2016-02-27 17:01:27 -05:00
"RTN","ut1",341,0)
2017-07-10 13:17:43 -04:00
. . . . S STR=$TR(STR,$C(9,32))
2016-02-27 17:01:27 -05:00
"RTN","ut1",342,0)
2017-07-10 13:17:43 -04:00
. . . . I $E(STR)=";" QUIT ; comment line - no code
2016-02-27 17:01:27 -05:00
"RTN","ut1",343,0)
2017-07-10 13:17:43 -04:00
. . . . S @GL@(RTN,TAG,0)=LN
2016-02-27 17:01:27 -05:00
"RTN","ut1",344,0)
2017-07-10 13:17:43 -04:00
. . . . Q
2016-02-27 17:01:27 -05:00
"RTN","ut1",345,0)
2017-07-10 13:17:43 -04:00
. . . E D ; No formal list
2016-02-27 17:01:27 -05:00
"RTN","ut1",346,0)
2017-07-10 13:17:43 -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",347,0)
2017-07-10 13:17:43 -04:00
. . . . I $E(LNTR)=";" QUIT ; Comment
2016-02-27 17:01:27 -05:00
"RTN","ut1",348,0)
2017-07-10 13:17:43 -04:00
. . . . S @GL@(RTN,TAG,0)=LN ; Otherwise, store for testing
2016-02-27 17:01:27 -05:00
"RTN","ut1",349,0)
2017-07-10 13:17:43 -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",350,0)
2017-07-10 13:17:43 -04:00
. . I $C(32,9)[$E(LN) D QUIT ; Regular line
2016-02-27 17:01:27 -05:00
"RTN","ut1",351,0)
2017-07-10 13:17:43 -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",352,0)
2017-07-10 13:17:43 -04:00
. . . I $E(LNTR)=";" QUIT ; Comment line -- don't want.
2016-02-27 17:01:27 -05:00
"RTN","ut1",353,0)
2017-07-10 13:17:43 -04:00
. . . S @GL@(RTN,TAG,I)=LN ; Record line
2016-02-27 17:01:27 -05:00
"RTN","ut1",354,0)
2017-07-10 13:17:43 -04:00
QUIT
2016-02-27 17:01:27 -05:00
"RTN","ut1",355,0)
2017-07-10 13:17:43 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","ut1",356,0)
2017-07-10 13:17:43 -04:00
GETTAG(TERMINTR,LN) ;.EF - get TAG for line, if any
2016-02-27 17:01:27 -05:00
"RTN","ut1",357,0)
2017-07-10 13:17:43 -04:00
; TERMINTR - passed by reference - contains terminator of tag on return
2016-02-27 17:01:27 -05:00
"RTN","ut1",358,0)
2017-07-10 13:17:43 -04:00
; LN - input - text of line
2016-02-27 17:01:27 -05:00
"RTN","ut1",359,0)
2017-07-10 13:17:43 -04:00
N J,TAG
2016-02-27 17:01:27 -05:00
"RTN","ut1",360,0)
2017-07-10 13:17:43 -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",361,0)
2017-07-10 13:17:43 -04:00
S TAG=$E(LN,1,J-1) ; Get tag
2016-02-27 17:01:27 -05:00
"RTN","ut1",362,0)
2017-07-10 13:17:43 -04:00
Q TAG
2016-02-27 17:01:27 -05:00
"RTN","ut1",363,0)
2017-07-10 13:17:43 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","ut1",364,0)
2017-07-10 13:17:43 -04:00
ACTLINES(GL) ; [Private] $$ ; Count active lines
2016-02-27 17:01:27 -05:00
"RTN","ut1",365,0)
2017-07-10 13:17:43 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","ut1",366,0)
2017-07-10 13:17:43 -04:00
N CNT S CNT=0
2016-02-27 17:01:27 -05:00
"RTN","ut1",367,0)
2017-07-10 13:17:43 -04:00
N REF S REF=GL
2016-02-27 17:01:27 -05:00
"RTN","ut1",368,0)
2017-07-10 13:17:43 -04:00
N GLQL S GLQL=$QL(GL)
2016-02-27 17:01:27 -05:00
"RTN","ut1",369,0)
2017-07-10 13:17:43 -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",370,0)
2017-07-10 13:17:43 -04:00
. N REFQL S REFQL=$QL(REF)
2016-02-27 17:01:27 -05:00
"RTN","ut1",371,0)
2017-07-10 13:17:43 -04:00
. N LASTSUB S LASTSUB=$QS(REF,REFQL)
2016-02-27 17:01:27 -05:00
"RTN","ut1",372,0)
2017-07-10 13:17:43 -04:00
. ;I LASTSUB?1.N S CNT=CNT+1 ; JLI 160315 commented out
2016-02-27 17:01:27 -05:00
"RTN","ut1",373,0)
2017-07-10 13:17:43 -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",374,0)
2017-07-10 13:17:43 -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",375,0)
2017-07-10 13:17:43 -04:00
QUIT CNT
2016-02-27 17:01:27 -05:00
"RTN","ut1",376,0)
2017-07-10 13:17:43 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","ut1",377,0)
2017-07-10 13:17:43 -04:00
COVCOV(C,R) ; [Private] - Analyze coverage Cohort vs Result
2016-02-27 17:01:27 -05:00
"RTN","ut1",378,0)
2017-07-10 13:17:43 -04:00
N RTN S RTN=""
2016-02-27 17:01:27 -05:00
"RTN","ut1",379,0)
2017-07-10 13:17:43 -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",380,0)
2017-07-10 13:17:43 -04:00
. I '$D(@R@(RTN)) QUIT ; Not present in result set
2016-02-27 17:01:27 -05:00
"RTN","ut1",381,0)
2017-07-10 13:17:43 -04:00
. N TAG S TAG=""
2016-02-27 17:01:27 -05:00
"RTN","ut1",382,0)
2017-07-10 13:17:43 -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",383,0)
2017-07-10 13:17:43 -04:00
. . N LN S LN=""
2016-02-27 17:01:27 -05:00
"RTN","ut1",384,0)
2017-07-10 13:17:43 -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",385,0)
2017-07-10 13:17:43 -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",386,0)
2017-07-10 13:17:43 -04:00
QUIT
2016-02-27 17:01:27 -05:00
"RTN","ut1",387,0)
2017-07-10 13:17:43 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","ut1",388,0)
2017-07-10 13:17:43 -04:00
COVRPT(C,S,R,V) ; [Private] - Coverage Report
2016-02-27 17:01:27 -05:00
"RTN","ut1",389,0)
2017-07-10 13:17:43 -04:00
; C = COHORT - Global name
2016-02-27 17:01:27 -05:00
"RTN","ut1",390,0)
2017-07-10 13:17:43 -04:00
; S = SURVIVORS - Global name
2016-02-27 17:01:27 -05:00
"RTN","ut1",391,0)
2017-07-10 13:17:43 -04:00
; R = RESULT - Global name
2016-02-27 17:01:27 -05:00
"RTN","ut1",392,0)
2017-07-10 13:17:43 -04:00
; V = Verbosity - Scalar from -1 to 3
2016-02-27 17:01:27 -05:00
"RTN","ut1",393,0)
2017-07-10 13:17:43 -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",394,0)
2017-07-10 13:17:43 -04:00
N X,I
2016-02-27 17:01:27 -05:00
"RTN","ut1",395,0)
2017-07-10 13:17:43 -04:00
S X=$NA(^TMP("%ut1-covrpt",$J)) K @X
2016-02-27 17:01:27 -05:00
"RTN","ut1",396,0)
2017-07-10 13:17:43 -04:00
D COVRPTLS(C,S,R,V,X)
2016-02-27 17:01:27 -05:00
"RTN","ut1",397,0)
2017-07-10 13:17:43 -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",398,0)
2017-07-10 13:17:43 -04:00
Q
2016-02-27 17:01:27 -05:00
"RTN","ut1",399,0)
2017-07-10 13:17:43 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","ut1",400,0)
2017-07-10 13:17:43 -04:00
COVRPTLS(C,S,R,V,X) ;
2016-02-27 17:01:27 -05:00
"RTN","ut1",401,0)
2017-07-10 13:17:43 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","ut1",402,0)
2017-07-10 13:17:43 -04:00
N LINNUM S LINNUM=0
2016-02-27 17:01:27 -05:00
"RTN","ut1",403,0)
2017-07-10 13:17:43 -04:00
N ORIGLINES S ORIGLINES=$$ACTLINES(C)
2016-02-27 17:01:27 -05:00
"RTN","ut1",404,0)
2017-07-10 13:17:43 -04:00
N LEFTLINES S LEFTLINES=$$ACTLINES(S)
2016-02-27 17:01:27 -05:00
"RTN","ut1",405,0)
2017-07-10 13:17:43 -04:00
S LINNUM=LINNUM+1,@X@(LINNUM)="",LINNUM=LINNUM+1,@X@(LINNUM)=""
2016-02-27 17:01:27 -05:00
"RTN","ut1",406,0)
2017-07-10 13:17:43 -04:00
S LINNUM=LINNUM+1,@X@(LINNUM)="ORIG: "_ORIGLINES
2016-02-27 17:01:27 -05:00
"RTN","ut1",407,0)
2017-07-10 13:17:43 -04:00
S LINNUM=LINNUM+1,@X@(LINNUM)="LEFT: "_LEFTLINES
2016-02-27 17:01:27 -05:00
"RTN","ut1",408,0)
2017-07-10 13:17:43 -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",409,0)
2017-07-10 13:17:43 -04:00
S LINNUM=LINNUM+1,@X@(LINNUM)="",LINNUM=LINNUM+1,@X@(LINNUM)=""
2016-02-27 17:01:27 -05:00
"RTN","ut1",410,0)
2017-07-10 13:17:43 -04:00
S LINNUM=LINNUM+1,@X@(LINNUM)="BY ROUTINE:"
2016-02-27 17:01:27 -05:00
"RTN","ut1",411,0)
2017-07-10 13:17:43 -04:00
I V=0 QUIT ; No verbosity. Don't print routine detail
2016-02-27 17:01:27 -05:00
"RTN","ut1",412,0)
2017-07-10 13:17:43 -04:00
N RTN S RTN=""
2016-02-27 17:01:27 -05:00
"RTN","ut1",413,0)
2017-07-10 13:17:43 -04:00
F S RTN=$O(@C@(RTN)) Q:RTN="" D
2016-02-27 17:01:27 -05:00
"RTN","ut1",414,0)
2017-07-10 13:17:43 -04:00
. N O S O=$$ACTLINES($NA(@C@(RTN)))
2016-02-27 17:01:27 -05:00
"RTN","ut1",415,0)
2017-07-10 13:17:43 -04:00
. N L S L=$$ACTLINES($NA(@S@(RTN)))
2016-02-27 17:01:27 -05:00
"RTN","ut1",416,0)
2017-07-10 13:17:43 -04:00
. N XX,XY S XX=" "_RTN_" ",XX=$E(XX,1,12)
2017-02-12 23:15:29 -05:00
"RTN","ut1",417,0)
2017-07-10 13:17:43 -04:00
. S XY=" "_$S(O:$J((O-L)/O*100,"",2)_"%",1:"------"),XY=$E(XY,$L(XY)-11,$L(XY))
"RTN","ut1",418,0)
. I O>0 S LINNUM=LINNUM+1,@X@(LINNUM)=XX_XY_" "_(O-L)_" out of "_O
"RTN","ut1",419,0)
. I V=1 QUIT ; Just print the routine coverage for V=1
"RTN","ut1",420,0)
. N TAG S TAG=""
"RTN","ut1",421,0)
. F S TAG=$O(@C@(RTN,TAG)) Q:TAG="" D
"RTN","ut1",422,0)
. . N O S O=$$ACTLINES($NA(@C@(RTN,TAG)))
"RTN","ut1",423,0)
. . N L S L=$$ACTLINES($NA(@S@(RTN,TAG)))
"RTN","ut1",424,0)
. . S XX=" "_TAG_" ",XX=$E(XX,1,20)
"RTN","ut1",425,0)
. . S XY=" "_$S(O:$J((O-L)/O*100,"",2)_"%",1:"------"),XY=$E(XY,$L(XY)-7,$L(XY))
"RTN","ut1",426,0)
. . I O>0 S LINNUM=LINNUM+1,@X@(LINNUM)=XX_XY_" "_(O-L)_" out of "_O
"RTN","ut1",427,0)
. . I V=2 QUIT ; Just print routine/tags coverage for V=2; V=3 print uncovered lines
"RTN","ut1",428,0)
. . N LN S LN=""
"RTN","ut1",429,0)
. . F S LN=$O(@S@(RTN,TAG,LN)) Q:LN="" S LINNUM=LINNUM+1,@X@(LINNUM)=TAG_"+"_LN_": "_^(LN)
"RTN","ut1",430,0)
. . Q
"RTN","ut1",431,0)
. Q
"RTN","ut1",432,0)
QUIT
"RTN","ut1",433,0)
;
"RTN","ut1",434,0)
ISUTEST() ;
"RTN","ut1",435,0)
2016-02-27 17:01:27 -05:00
Q $$ISUTEST^%ut()
"RTN","utcover")
2017-07-10 13:17:43 -04:00
0^3^B86708312
2016-02-27 17:01:27 -05:00
"RTN","utcover",1,0)
2017-07-10 13:17:43 -04:00
%utcover ;JLI - generic coverage and unit test runner ;04/29/17 15:29
2016-02-27 17:01:27 -05:00
"RTN","utcover",2,0)
2017-07-10 13:17:43 -04:00
;;1.5;MASH UTILITIES;;Jul 8, 2017;Build 13
2016-02-27 17:01:27 -05:00
"RTN","utcover",3,0)
2017-07-10 13:17:43 -04:00
; Submitted to OSEHRA Jul 8, 2017 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)
2017-02-12 23:15:29 -05:00
; Original routine authored by Joel L. Ivey 08/15. Additional work 08/15-02/17.
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)
2017-02-12 23:15:29 -05:00
; comments for this routine %utcover
2016-02-27 17:01:27 -05:00
"RTN","utcover",61,0)
2017-02-12 23:15:29 -05:00
; 160701 Christopher Edwards (CE) in COVENTRY to remove VistA dependence add U as NEWed variable and set U to '^'
2016-02-27 17:01:27 -05:00
"RTN","utcover",62,0)
2017-02-12 23:15:29 -05:00
; 160713 JLI - changed reference to JUSTTEST to MULTAPIS in description of TESTROUS variable for tag COVERAGE
2016-02-27 17:01:27 -05:00
"RTN","utcover",63,0)
2017-02-12 23:15:29 -05:00
; 170130 JLI - modified to permit COVERAGE to be called with ROUNMSP passed by reference to be able to use multiple namespaces (or to specify expicity those to be tested, so XCLDROUS can be null)
2016-02-27 17:01:27 -05:00
"RTN","utcover",64,0)
2017-02-12 23:15:29 -05:00
;
2016-02-27 17:01:27 -05:00
"RTN","utcover",65,0)
2017-02-12 23:15:29 -05:00
D EN^%ut("%uttcovr") ; unit tests
2016-02-27 17:01:27 -05:00
"RTN","utcover",66,0)
2017-02-12 23:15:29 -05:00
Q
2016-02-27 17:01:27 -05:00
"RTN","utcover",67,0)
2017-02-12 23:15:29 -05:00
;
2016-02-27 17:01:27 -05:00
"RTN","utcover",68,0)
2017-02-12 23:15:29 -05:00
MULTAPIS(TESTROUS) ; RUN TESTS FOR SPECIFIED ROUTINES AND ENTRY POINTS
2016-02-27 17:01:27 -05:00
"RTN","utcover",69,0)
2017-02-12 23:15:29 -05:00
; can be run from %ut using D MULTAPIS^%ut(.TESTROUS)
2016-02-27 17:01:27 -05:00
"RTN","utcover",70,0)
2017-02-12 23:15:29 -05:00
; input TESTROUS - passed by reference - array of routine names to run tests for
2016-02-27 17:01:27 -05:00
"RTN","utcover",71,0)
2017-02-12 23:15:29 -05:00
; specify those to be called directly by including ^ as part of
2016-02-27 17:01:27 -05:00
"RTN","utcover",72,0)
2017-02-12 23:15:29 -05:00
; TAG^ROUTINE or ^ROUTINE.
2016-02-27 17:01:27 -05:00
"RTN","utcover",73,0)
2017-02-12 23:15:29 -05:00
; ROUTINE names without a ^ will be called as EN^%ut("ROUTINE")
2016-02-27 17:01:27 -05:00
"RTN","utcover",74,0)
2017-02-12 23:15:29 -05:00
; Sometimes to get complete coverage, different entry points may
2016-02-27 17:01:27 -05:00
"RTN","utcover",75,0)
2017-02-12 23:15:29 -05:00
; need to be called (e.g., at top and for VERBOSE), these should each
2016-02-27 17:01:27 -05:00
"RTN","utcover",76,0)
2017-02-12 23:15:29 -05:00
; be included.
2016-02-27 17:01:27 -05:00
"RTN","utcover",77,0)
2017-02-12 23:15:29 -05:00
; If the subscript is a number, it will take the list of comma separated
2016-02-27 17:01:27 -05:00
"RTN","utcover",78,0)
2017-02-12 23:15:29 -05:00
; values as the routines. If the the subscript is not a number, it will
2016-02-27 17:01:27 -05:00
"RTN","utcover",79,0)
2017-02-12 23:15:29 -05:00
; take it as a routine to be added to the list, then if the value of the
2016-02-27 17:01:27 -05:00
"RTN","utcover",80,0)
2017-02-12 23:15:29 -05:00
; contains a comma separated list of routines, they will be added as well.
2016-02-27 17:01:27 -05:00
"RTN","utcover",81,0)
2017-02-12 23:15:29 -05:00
; Thus a value of
2016-02-27 17:01:27 -05:00
"RTN","utcover",82,0)
2017-02-12 23:15:29 -05:00
; TESTROUS(1)="A^ROU1,^ROU1,^ROU2,ROU3"
2016-02-27 17:01:27 -05:00
"RTN","utcover",83,0)
2017-02-12 23:15:29 -05:00
; or a value of
2016-02-27 17:01:27 -05:00
"RTN","utcover",84,0)
2017-02-12 23:15:29 -05:00
; TESTROUS("A^ROU1")="^ROU1,^ROU2,ROU3"
2016-02-27 17:01:27 -05:00
"RTN","utcover",85,0)
2017-02-12 23:15:29 -05:00
; will both result in tests for
2016-02-27 17:01:27 -05:00
"RTN","utcover",86,0)
2017-02-12 23:15:29 -05:00
; D A^ROU1,^ROU1,^ROU2,EN^%ut("ROU3")
2016-02-27 17:01:27 -05:00
"RTN","utcover",87,0)
2017-02-12 23:15:29 -05:00
K ^TMP("%utcover",$J,"TESTROUS")
2016-02-27 17:01:27 -05:00
"RTN","utcover",88,0)
2017-02-12 23:15:29 -05:00
M ^TMP("%utcover",$J,"TESTROUS")=TESTROUS
2016-02-27 17:01:27 -05:00
"RTN","utcover",89,0)
2017-02-12 23:15:29 -05:00
D COVENTRY
2016-02-27 17:01:27 -05:00
"RTN","utcover",90,0)
2017-02-12 23:15:29 -05:00
K ^TMP("%utcover",$J,"TESTROUS")
2016-02-27 17:01:27 -05:00
"RTN","utcover",91,0)
2017-02-12 23:15:29 -05:00
Q
2016-02-27 17:01:27 -05:00
"RTN","utcover",92,0)
2017-02-12 23:15:29 -05:00
;
2016-02-27 17:01:27 -05:00
"RTN","utcover",93,0)
2017-02-12 23:15:29 -05:00
COVENTRY ; setup of COVERAGE NEWs most variables, so TESTROUS passed by global
2016-02-27 17:01:27 -05:00
"RTN","utcover",94,0)
2017-02-12 23:15:29 -05:00
;
2016-02-27 17:01:27 -05:00
"RTN","utcover",95,0)
2017-02-12 23:15:29 -05:00
N I,ROU,VAL,VALS,UTDATA,TESTS,TESTROUS,U ; CE 160701 add U as newed variable to remove VistA dependence
2016-02-27 17:01:27 -05:00
"RTN","utcover",96,0)
2017-02-12 23:15:29 -05:00
S U="^" ; CE 160701 set U to remove VistA dependence
2016-02-27 17:01:27 -05:00
"RTN","utcover",97,0)
2017-02-12 23:15:29 -05:00
M TESTROUS=^TMP("%utcover",$J,"TESTROUS")
2016-02-27 17:01:27 -05:00
"RTN","utcover",98,0)
2017-02-12 23:15:29 -05:00
S ROU="" F S ROU=$O(TESTROUS(ROU)) Q:ROU="" D
2016-02-27 17:01:27 -05:00
"RTN","utcover",99,0)
2017-02-12 23:15:29 -05:00
. I ROU'=+ROU S TESTS(ROU)=""
2016-02-27 17:01:27 -05:00
"RTN","utcover",100,0)
2017-02-12 23:15:29 -05:00
. F I=1:1 S VAL=$P(TESTROUS(ROU),",",I) Q:VAL="" S TESTS(VAL)=""
2016-02-27 17:01:27 -05:00
"RTN","utcover",101,0)
. Q
2017-02-12 23:15:29 -05:00
"RTN","utcover",102,0)
2017-07-10 13:17:43 -04:00
;W !,"COVENTRY^%utcover TESTS:",! ZW TESTS
2016-02-27 17:01:27 -05:00
"RTN","utcover",103,0)
2017-07-10 13:17:43 -04:00
S ROU="" F S ROU=$O(TESTS(ROU)) Q:ROU="" D W !,"Coventry ROU=",ROU
2016-02-27 17:01:27 -05:00
"RTN","utcover",104,0)
2017-07-10 13:17:43 -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",105,0)
2017-07-10 13:17:43 -04:00
. I ROU[U D @ROU
2016-02-27 17:01:27 -05:00
"RTN","utcover",106,0)
2017-07-10 13:17:43 -04:00
. I ROU'[U D @("EN^%ut("""_ROU_""")")
2016-02-27 17:01:27 -05:00
"RTN","utcover",107,0)
2017-07-10 13:17:43 -04:00
. D GETUTVAL^%ut(.UTDATA)
2016-02-27 17:01:27 -05:00
"RTN","utcover",108,0)
2017-07-10 13:17:43 -04:00
. Q
2016-02-27 17:01:27 -05:00
"RTN","utcover",109,0)
2017-07-10 13:17:43 -04:00
I $D(UTDATA) D LSTUTVAL^%ut(.UTDATA)
2016-02-27 17:01:27 -05:00
"RTN","utcover",110,0)
2017-07-10 13:17:43 -04:00
Q
2016-02-27 17:01:27 -05:00
"RTN","utcover",111,0)
2017-07-10 13:17:43 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","utcover",112,0)
2017-07-10 13:17:43 -04:00
COVERAGE(ROUNMSP,TESTROUS,XCLDROUS,RESLTLVL) ; run coverage analysis for multiple routines and entry points
2016-02-27 17:01:27 -05:00
"RTN","utcover",113,0)
2017-07-10 13:17:43 -04:00
; can be run from %ut using D COVERAGE^%ut(.ROUNMSP,.TESTROUS,.XCLDROUS,RESLTLVL)
2016-02-27 17:01:27 -05:00
"RTN","utcover",114,0)
2017-07-10 13:17:43 -04:00
; input ROUNMSP - Namespace for routine(s) to be analyzed
2016-02-27 17:01:27 -05:00
"RTN","utcover",115,0)
2017-07-10 13:17:43 -04:00
; ROUNAME will result in only the routine ROUNAME being analyzed
2016-02-27 17:01:27 -05:00
"RTN","utcover",116,0)
2017-07-10 13:17:43 -04:00
; ROUN* will result in all routines beginning with ROUN being analyzed
2016-02-27 17:01:27 -05:00
"RTN","utcover",117,0)
2017-07-10 13:17:43 -04:00
; updated -- May be passed by reference, e.g. .NMSPCS
2016-02-27 17:01:27 -05:00
"RTN","utcover",118,0)
2017-07-10 13:17:43 -04:00
; where:
2016-02-27 17:01:27 -05:00
"RTN","utcover",119,0)
2017-07-10 13:17:43 -04:00
; NMSPCS="AAAA*" could be the only input and include all routines beginning AAAA
2016-02-27 17:01:27 -05:00
"RTN","utcover",120,0)
2017-07-10 13:17:43 -04:00
; NMSPCS("BBBC")="" would include only routine BBBC
2016-02-27 17:01:27 -05:00
"RTN","utcover",121,0)
2017-07-10 13:17:43 -04:00
; NMSPCS("BBBD*")="" would include all routines beginning BBBD
2016-02-27 17:01:27 -05:00
"RTN","utcover",122,0)
2017-07-10 13:17:43 -04:00
; input TESTROUS - passed by reference - see TESTROUS description for MULTAPIS ; 160713 JUSTTEST changed to MULTAPIS
2016-02-27 17:01:27 -05:00
"RTN","utcover",123,0)
2017-07-10 13:17:43 -04:00
; input XCLDROUS - passed by reference - routines passed in a manner similar to TESTROUS,
2016-02-27 17:01:27 -05:00
"RTN","utcover",124,0)
2017-07-10 13:17:43 -04:00
; but only the routine names, whether as arguments or a comma separated
2016-02-27 17:01:27 -05:00
"RTN","utcover",125,0)
2017-07-10 13:17:43 -04:00
; list of routines, will be excluded from the analysis of coverage. These
2016-02-27 17:01:27 -05:00
"RTN","utcover",126,0)
2017-07-10 13:17:43 -04:00
; would normally be names of routines which are only for unit tests, or
2016-02-27 17:01:27 -05:00
"RTN","utcover",127,0)
2017-07-10 13:17:43 -04:00
; others which should not be included in the analysis for some reason.
2016-02-27 17:01:27 -05:00
"RTN","utcover",128,0)
2017-07-10 13:17:43 -04:00
; input RESLTLVL - This value determines the amount of information to be generated for the
2016-02-27 17:01:27 -05:00
"RTN","utcover",129,0)
2017-07-10 13:17:43 -04:00
; analysis. A missing or null value will be considered to be level 1
2016-02-27 17:01:27 -05:00
"RTN","utcover",130,0)
2017-07-10 13:17:43 -04:00
; 1 - Listing of analysis only for routine overall
2016-02-27 17:01:27 -05:00
"RTN","utcover",131,0)
2017-07-10 13:17:43 -04:00
; 2 - Listing of analysis for routine overall and for each TAG
2016-02-27 17:01:27 -05:00
"RTN","utcover",132,0)
2017-07-10 13:17:43 -04:00
; 3 - Full analysis for each tag, and lists out those lines which were
2016-02-27 17:01:27 -05:00
"RTN","utcover",133,0)
2017-07-10 13:17:43 -04:00
; not executed during the analysis
2016-02-27 17:01:27 -05:00
"RTN","utcover",134,0)
2017-07-10 13:17:43 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","utcover",135,0)
2017-07-10 13:17:43 -04:00
;W !,"ENTERING COVERAGE^%utcover" H 1 ; DEBUG
2016-02-27 17:01:27 -05:00
"RTN","utcover",136,0)
2017-07-10 13:17:43 -04:00
N I,ROU,TYPE,XCLUDE,%utIO
2016-02-27 17:01:27 -05:00
"RTN","utcover",137,0)
2017-07-10 13:17:43 -04:00
S %utIO=$I
2016-02-27 17:01:27 -05:00
"RTN","utcover",138,0)
2017-07-10 13:17:43 -04:00
S RESLTLVL=$G(RESLTLVL,1)
2016-02-27 17:01:27 -05:00
"RTN","utcover",139,0)
2017-07-10 13:17:43 -04:00
I (RESLTLVL<1) S RESLTLVL=1
2016-02-27 17:01:27 -05:00
"RTN","utcover",140,0)
2017-07-10 13:17:43 -04:00
I (RESLTLVL>3) S RESLTLVL=3
2016-02-27 17:01:27 -05:00
"RTN","utcover",141,0)
2017-07-10 13:17:43 -04:00
M ^TMP("%utcover",$J,"TESTROUS")=TESTROUS ;
2016-02-27 17:01:27 -05:00
"RTN","utcover",142,0)
2017-07-10 13:17:43 -04:00
D COV^%ut1(.ROUNMSP,"D COVENTRY^%utcover",-1)
2016-02-27 17:01:27 -05:00
"RTN","utcover",143,0)
2017-07-10 13:17:43 -04:00
K ^TMP("%utcover",$J,"TESTROUS")
2016-02-27 17:01:27 -05:00
"RTN","utcover",144,0)
2017-07-10 13:17:43 -04:00
S ROU="" F S ROU=$O(XCLDROUS(ROU)) Q:ROU="" D SETROUS(.XCLUDE,.XCLDROUS,ROU)
2017-02-12 23:15:29 -05:00
"RTN","utcover",145,0)
2017-07-10 13:17:43 -04:00
N TEXTGLOB S TEXTGLOB=$NA(^TMP("%utcover-text",$J)) K @TEXTGLOB
2017-02-12 23:15:29 -05:00
"RTN","utcover",146,0)
2017-07-10 13:17:43 -04:00
D LIST(.XCLUDE,RESLTLVL,TEXTGLOB)
2017-02-12 23:15:29 -05:00
"RTN","utcover",147,0)
2017-07-10 13:17:43 -04:00
F I=1:1 Q:'$D(@TEXTGLOB@(I)) W !,@TEXTGLOB@(I)
2017-02-12 23:15:29 -05:00
"RTN","utcover",148,0)
2017-07-10 13:17:43 -04:00
K @TEXTGLOB
2017-02-12 23:15:29 -05:00
"RTN","utcover",149,0)
2017-07-10 13:17:43 -04:00
Q
2017-02-12 23:15:29 -05:00
"RTN","utcover",150,0)
2017-07-10 13:17:43 -04:00
;
2017-02-12 23:15:29 -05:00
"RTN","utcover",151,0)
2017-07-10 13:17:43 -04:00
SETROUS(XCLUDE,XCLDROUS,ROU) ;
2017-02-12 23:15:29 -05:00
"RTN","utcover",152,0)
2017-07-10 13:17:43 -04:00
; XCLUDE - passed by reference - on return contains array with indices as routines to exclude from analysis
2017-02-12 23:15:29 -05:00
"RTN","utcover",153,0)
2017-07-10 13:17:43 -04:00
; XCLDROUS - passed by referenc - array may contain a comma-delimited list of routines to exclude from analysis
2017-02-12 23:15:29 -05:00
"RTN","utcover",154,0)
2017-07-10 13:17:43 -04:00
; ROU - input - if non-numberic is name of routine to exclude from analysis
2017-02-12 23:15:29 -05:00
"RTN","utcover",155,0)
2017-07-10 13:17:43 -04:00
N I,VAL
2017-02-12 23:15:29 -05:00
"RTN","utcover",156,0)
2017-07-10 13:17:43 -04:00
I ROU'=+ROU S XCLUDE(ROU)=""
2017-02-12 23:15:29 -05:00
"RTN","utcover",157,0)
2017-07-10 13:17:43 -04:00
F I=1:1 S VAL=$P(XCLDROUS(ROU),",",I) Q:VAL="" S XCLUDE(VAL)=""
2017-02-12 23:15:29 -05:00
"RTN","utcover",158,0)
2017-07-10 13:17:43 -04:00
Q
2017-02-12 23:15:29 -05:00
"RTN","utcover",159,0)
2017-07-10 13:17:43 -04:00
;
2017-02-12 23:15:29 -05:00
"RTN","utcover",160,0)
2017-07-10 13:17:43 -04:00
LIST(XCLDROUS,TYPE,TEXTGLOB,GLOB,LINNUM) ;
2017-02-12 23:15:29 -05:00
"RTN","utcover",161,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: TYPE1 - NEWed and set below for recursion
2017-02-12 23:15:29 -05:00
"RTN","utcover",162,0)
2017-07-10 13:17:43 -04:00
; input - XCLDROUS - a comma separated list of routine names that will
2017-02-12 23:15:29 -05:00
"RTN","utcover",163,0)
2017-07-10 13:17:43 -04:00
; be used to identify desired routines. Any name
2017-02-12 23:15:29 -05:00
"RTN","utcover",164,0)
2017-07-10 13:17:43 -04:00
; that begins with one of the specified values will
2017-02-12 23:15:29 -05:00
"RTN","utcover",165,0)
2017-07-10 13:17:43 -04:00
; be included
2017-02-12 23:15:29 -05:00
"RTN","utcover",166,0)
2017-07-10 13:17:43 -04:00
; input - TYPE - value indicating amount of detail desired
2017-02-12 23:15:29 -05:00
"RTN","utcover",167,0)
2017-07-10 13:17:43 -04:00
; 3=full with listing of untouched lines
2017-02-12 23:15:29 -05:00
"RTN","utcover",168,0)
2017-07-10 13:17:43 -04:00
; 2=moderated with listing by tags
2017-02-12 23:15:29 -05:00
"RTN","utcover",169,0)
2017-07-10 13:17:43 -04:00
; 1=summary with listing by routine
2017-02-12 23:15:29 -05:00
"RTN","utcover",170,0)
2017-07-10 13:17:43 -04:00
; input - TEXTGLOB - closed global location in which text is returned
2017-02-12 23:15:29 -05:00
"RTN","utcover",171,0)
2017-07-10 13:17:43 -04:00
; input - GLOB - used for unit tests - specifies global to work with
2017-02-12 23:15:29 -05:00
"RTN","utcover",172,0)
2017-07-10 13:17:43 -04:00
; so that coverage data is not impacted
2017-02-12 23:15:29 -05:00
"RTN","utcover",173,0)
2017-07-10 13:17:43 -04:00
;
2017-02-12 23:15:29 -05:00
"RTN","utcover",174,0)
2017-07-10 13:17:43 -04:00
N CURRCOV,CURRLIN,LINCOV,LINE,LINTOT,ROULIST,ROUNAME,TAG,TOTCOV,TOTLIN,XVAL
2017-02-12 23:15:29 -05:00
"RTN","utcover",175,0)
2016-02-27 17:01:27 -05:00
;
2017-07-10 13:17:43 -04:00
"RTN","utcover",176,0)
I '$D(LINNUM) S LINNUM=0 ; initialize on first entry
2017-02-12 23:15:29 -05:00
"RTN","utcover",177,0)
2017-07-10 13:17:43 -04:00
I '$D(GLOB) N GLOB S GLOB=$NA(^TMP("%utCOVREPORT",$J))
2017-02-12 23:15:29 -05:00
"RTN","utcover",178,0)
2017-07-10 13:17:43 -04:00
D TRIMDATA(.XCLDROUS,GLOB) ; remove undesired routines from data
2017-02-12 23:15:29 -05:00
"RTN","utcover",179,0)
2017-07-10 13:17:43 -04:00
;
2017-02-12 23:15:29 -05:00
"RTN","utcover",180,0)
2017-07-10 13:17:43 -04:00
N JOB,NAME,BASE,TEXT,VAL
2017-02-12 23:15:29 -05:00
"RTN","utcover",181,0)
2017-07-10 13:17:43 -04:00
S TOTCOV=0,TOTLIN=0
2017-02-12 23:15:29 -05:00
"RTN","utcover",182,0)
2017-07-10 13:17:43 -04:00
; F NAME="%utCOVREPORT","%utCOVRESULT","%utCOVCOHORT","%utCOVCOHORTSAV" D
2017-02-12 23:15:29 -05:00
"RTN","utcover",183,0)
2017-07-10 13:17:43 -04:00
I TYPE>1 S ROUNAME="" F S ROUNAME=$O(@GLOB@(ROUNAME)) Q:ROUNAME="" S XVAL=^(ROUNAME) D
2017-02-12 23:15:29 -05:00
"RTN","utcover",184,0)
2017-07-10 13:17:43 -04:00
. S CURRCOV=$P(XVAL,"/"),CURRLIN=$P(XVAL,"/",2)
2017-02-12 23:15:29 -05:00
"RTN","utcover",185,0)
2017-07-10 13:17:43 -04:00
. S LINNUM=LINNUM+1,@TEXTGLOB@(LINNUM)="",LINNUM=LINNUM+1,@TEXTGLOB@(LINNUM)=""
2017-02-12 23:15:29 -05:00
"RTN","utcover",186,0)
2017-07-10 13:17:43 -04:00
. S TEXT="Routine "_ROUNAME_" ",TEXT=$E(TEXT,1,20)
2017-02-12 23:15:29 -05:00
"RTN","utcover",187,0)
2017-07-10 13:17:43 -04:00
. I CURRLIN>0 S VAL=" ("_$J((100*CURRCOV)/CURRLIN,"",2),VAL=$E(VAL,$L(VAL)-6,$L(VAL))
2017-02-12 23:15:29 -05:00
"RTN","utcover",188,0)
2017-07-10 13:17:43 -04:00
. S LINNUM=LINNUM+1,@TEXTGLOB@(LINNUM)=TEXT_" "_$S(CURRLIN>0:VAL_"%)",1:" ------ ")_" "_CURRCOV_" out of "_CURRLIN_" lines covered"
2017-02-12 23:15:29 -05:00
"RTN","utcover",189,0)
2017-07-10 13:17:43 -04:00
. I TYPE>1 S LINNUM=LINNUM+1,@TEXTGLOB@(LINNUM)=" - "_$S(TYPE=2:"Summary",1:"Detailed Breakdown")
2017-02-12 23:15:29 -05:00
"RTN","utcover",190,0)
2017-07-10 13:17:43 -04:00
. S TAG="" F S TAG=$O(@GLOB@(ROUNAME,TAG)) Q:TAG="" S XVAL=^(TAG) D
2017-02-12 23:15:29 -05:00
"RTN","utcover",191,0)
2017-07-10 13:17:43 -04:00
. . S LINCOV=$P(XVAL,"/"),LINTOT=$P(XVAL,"/",2)
2017-02-12 23:15:29 -05:00
"RTN","utcover",192,0)
2017-07-10 13:17:43 -04:00
. . S TEXT=" Tag "_TAG_"^"_ROUNAME_" ",TEXT=$E(TEXT,1,26)
2017-02-12 23:15:29 -05:00
"RTN","utcover",193,0)
2017-07-10 13:17:43 -04:00
. . I LINTOT>0 S VAL=" ("_$J((100*LINCOV)/LINTOT,"",2),VAL=$E(VAL,$L(VAL)-6,$L(VAL))
2017-02-12 23:15:29 -05:00
"RTN","utcover",194,0)
2017-07-10 13:17:43 -04:00
. . S LINNUM=LINNUM+1,@TEXTGLOB@(LINNUM)=TEXT_$S(LINTOT>0:VAL_"%)",1:" ------ ")_" "_LINCOV_" out of "_LINTOT_" lines covered"
2017-02-12 23:15:29 -05:00
"RTN","utcover",195,0)
2017-07-10 13:17:43 -04:00
. . I TYPE=2 Q
2017-02-12 23:15:29 -05:00
"RTN","utcover",196,0)
2017-07-10 13:17:43 -04:00
. . I LINCOV=LINTOT Q
2017-02-12 23:15:29 -05:00
"RTN","utcover",197,0)
2017-07-10 13:17:43 -04:00
. . S LINNUM=LINNUM+1,@TEXTGLOB@(LINNUM)=" the following is a list of the lines **NOT** covered"
2017-02-12 23:15:29 -05:00
"RTN","utcover",198,0)
2017-07-10 13:17:43 -04:00
. . S LINE="" F S LINE=$O(@GLOB@(ROUNAME,TAG,LINE)) Q:LINE="" D
2017-02-12 23:15:29 -05:00
"RTN","utcover",199,0)
2017-07-10 13:17:43 -04:00
. . . I LINE=0 S LINNUM=LINNUM+1,@TEXTGLOB@(LINNUM)=" "_TAG_" "_@GLOB@(ROUNAME,TAG,LINE) Q
2017-02-12 23:15:29 -05:00
"RTN","utcover",200,0)
2017-07-10 13:17:43 -04:00
. . . S LINNUM=LINNUM+1,@TEXTGLOB@(LINNUM)=" "_TAG_"+"_LINE_" "_@GLOB@(ROUNAME,TAG,LINE)
2017-02-12 23:15:29 -05:00
"RTN","utcover",201,0)
2017-07-10 13:17:43 -04:00
. . . Q
2017-02-12 23:15:29 -05:00
"RTN","utcover",202,0)
2017-07-10 13:17:43 -04:00
. . Q
2017-02-12 23:15:29 -05:00
"RTN","utcover",203,0)
2017-07-10 13:17:43 -04:00
. Q
2017-02-12 23:15:29 -05:00
"RTN","utcover",204,0)
2017-07-10 13:17:43 -04:00
; for type=3 generate a summary at bottom after detail
2017-02-12 23:15:29 -05:00
"RTN","utcover",205,0)
2017-07-10 13:17:43 -04:00
I TYPE=3 N TYPE1 S TYPE1=2 D LIST(.XCLDROUS,2,TEXTGLOB,GLOB,.LINNUM) K TYPE1
2017-02-12 23:15:29 -05:00
"RTN","utcover",206,0)
2017-07-10 13:17:43 -04:00
I TYPE=2,$G(TYPE1) Q ; CAME IN FROM ABOVE LINE
2017-02-12 23:15:29 -05:00
"RTN","utcover",207,0)
2017-07-10 13:17:43 -04:00
; summarize by just routine name
2017-02-12 23:15:29 -05:00
"RTN","utcover",208,0)
2017-07-10 13:17:43 -04:00
S LINNUM=LINNUM+1,@TEXTGLOB@(LINNUM)="",LINNUM=LINNUM+1,@TEXTGLOB@(LINNUM)=""
2017-02-12 23:15:29 -05:00
"RTN","utcover",209,0)
2017-07-10 13:17:43 -04:00
S ROUNAME="" F S ROUNAME=$O(@GLOB@(ROUNAME)) Q:ROUNAME="" S XVAL=^(ROUNAME) D
2017-02-12 23:15:29 -05:00
"RTN","utcover",210,0)
2017-07-10 13:17:43 -04:00
. S CURRCOV=$P(XVAL,"/"),CURRLIN=$P(XVAL,"/",2)
2017-02-12 23:15:29 -05:00
"RTN","utcover",211,0)
2017-07-10 13:17:43 -04:00
. S TOTCOV=TOTCOV+CURRCOV,TOTLIN=TOTLIN+CURRLIN
2017-02-12 23:15:29 -05:00
"RTN","utcover",212,0)
2017-07-10 13:17:43 -04:00
. I CURRLIN>0 S VAL=" ("_$J((100*CURRCOV)/CURRLIN,"",2),VAL=$E(VAL,$L(VAL)-6,$L(VAL))
2017-02-12 23:15:29 -05:00
"RTN","utcover",213,0)
2017-07-10 13:17:43 -04:00
. S LINNUM=LINNUM+1,@TEXTGLOB@(LINNUM)="Routine "_ROUNAME_" "_$S(CURRLIN>0:VAL_"%)",1:" ------ ")_" "_CURRCOV_" out of "_CURRLIN_" lines covered"
2017-02-12 23:15:29 -05:00
"RTN","utcover",214,0)
2017-07-10 13:17:43 -04:00
S LINNUM=LINNUM+1,@TEXTGLOB@(LINNUM)="",LINNUM=LINNUM+1,@TEXTGLOB@(LINNUM)=""
2017-02-12 23:15:29 -05:00
"RTN","utcover",215,0)
2017-07-10 13:17:43 -04:00
S LINNUM=LINNUM+1,@TEXTGLOB@(LINNUM)="Overall Analysis "_TOTCOV_" out of "_TOTLIN_" lines covered"_$S(TOTLIN>0:" ("_$P((100*TOTCOV)/TOTLIN,".")_"% coverage)",1:"")
2017-02-12 23:15:29 -05:00
"RTN","utcover",216,0)
2017-07-10 13:17:43 -04:00
Q
2017-02-12 23:15:29 -05:00
"RTN","utcover",217,0)
2017-07-10 13:17:43 -04:00
;
2017-02-12 23:15:29 -05:00
"RTN","utcover",218,0)
2017-07-10 13:17:43 -04:00
TRIMDATA(ROULIST,GLOB) ;
2017-02-12 23:15:29 -05:00
"RTN","utcover",219,0)
2017-07-10 13:17:43 -04:00
N ROUNAME
2017-02-12 23:15:29 -05:00
"RTN","utcover",220,0)
2017-07-10 13:17:43 -04:00
S ROUNAME="" F S ROUNAME=$O(ROULIST(ROUNAME)) Q:ROUNAME="" K @GLOB@(ROUNAME)
2017-02-12 23:15:29 -05:00
"RTN","utcover",221,0)
2017-07-10 13:17:43 -04:00
Q
2017-02-12 23:15:29 -05:00
"RTN","utcover",222,0)
2017-07-10 13:17:43 -04:00
;
2017-02-12 23:15:29 -05:00
"RTN","utcover",223,0)
2017-07-10 13:17:43 -04:00
CHKLEAKS(%utCODE,%utLOC,%utINPT) ; functionality to check for variable leaks on executing a section of code
2017-02-12 23:15:29 -05:00
"RTN","utcover",224,0)
2017-07-10 13:17:43 -04:00
; %utCODE - A string that specifies the code that is to be XECUTED and checked for leaks.
2017-02-12 23:15:29 -05:00
"RTN","utcover",225,0)
2017-07-10 13:17:43 -04:00
; this should be a complete piece of code (e.g., "S X=$$NOW^XLFDT()" or "D EN^%ut(""ROUNAME"")")
2017-02-12 23:15:29 -05:00
"RTN","utcover",226,0)
2017-07-10 13:17:43 -04:00
; %utLOC - A string that is used to indicate the code tested for variable leaks
2017-02-12 23:15:29 -05:00
"RTN","utcover",227,0)
2017-07-10 13:17:43 -04:00
; %utINPT - An optional variable which may be passed by reference. This may
2017-02-12 23:15:29 -05:00
"RTN","utcover",228,0)
2017-07-10 13:17:43 -04:00
; be used to pass any variable values, etc. into the code to be
2017-02-12 23:15:29 -05:00
"RTN","utcover",229,0)
2017-07-10 13:17:43 -04:00
; XECUTED. In this case, set the subscript to the variable name and the
2017-02-12 23:15:29 -05:00
"RTN","utcover",230,0)
2017-07-10 13:17:43 -04:00
; value of the subscripted variable to the desired value of the subscript.
2017-02-12 23:15:29 -05:00
"RTN","utcover",231,0)
2017-07-10 13:17:43 -04:00
; e.g., (using NAME as my current namespace)
2017-02-12 23:15:29 -05:00
"RTN","utcover",232,0)
2017-07-10 13:17:43 -04:00
; S CODE="S %utINPT=$$ENTRY^ROUTINE(ZZVALUE1,ZZVALUE2)"
2017-02-12 23:15:29 -05:00
"RTN","utcover",233,0)
2017-07-10 13:17:43 -04:00
; S NAMELOC="ENTRY^ROUTINE leak test" (or simply "ENTRY^ROUTINE")
2017-02-12 23:15:29 -05:00
"RTN","utcover",234,0)
2017-07-10 13:17:43 -04:00
; S NAMEINPT("ZZVALUE1")=ZZVALUE1
2017-02-12 23:15:29 -05:00
"RTN","utcover",235,0)
2017-07-10 13:17:43 -04:00
; S NAMEINPT("ZZVALUE2")=ZZVALUE2
2017-02-12 23:15:29 -05:00
"RTN","utcover",236,0)
2017-07-10 13:17:43 -04:00
; D CHKLEAKS^%ut(CODE,NAMELOC,.NAMEINPT)
2017-02-12 23:15:29 -05:00
"RTN","utcover",237,0)
;
"RTN","utcover",238,0)
2017-07-10 13:17:43 -04:00
; If part of a unit test, any leaked variables in ENTRY^ROUTINE which result
2017-02-12 23:15:29 -05:00
"RTN","utcover",239,0)
2017-07-10 13:17:43 -04:00
; from running the code with the variables indicated will be shown as FAILUREs.
2017-02-12 23:15:29 -05:00
"RTN","utcover",240,0)
;
"RTN","utcover",241,0)
2017-07-10 13:17:43 -04:00
; If called outside of a unit test, any leaked variables will be printed to the
2017-02-12 23:15:29 -05:00
"RTN","utcover",242,0)
2017-07-10 13:17:43 -04:00
; current device.
2017-02-12 23:15:29 -05:00
"RTN","utcover",243,0)
;
2017-07-10 13:17:43 -04:00
"RTN","utcover",244,0)
N (%utCODE,%utLOC,%utINPT,DUZ,IO,U,%utERRL,%ut,%utGUI,%utERR,%utI,%utJ,%utK,%utLIST,%utROU,%utSTRT,XTGUISEP)
2017-02-12 23:15:29 -05:00
"RTN","utcover",245,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: %ut - part of exclusive NEW TESTS FOR EXISTENCE ONLY
2017-02-12 23:15:29 -05:00
"RTN","utcover",246,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: %utVAR - handled by exclusive NEW
2017-02-12 23:15:29 -05:00
"RTN","utcover",247,0)
2017-07-10 13:17:43 -04:00
;
2017-02-12 23:15:29 -05:00
"RTN","utcover",248,0)
2017-07-10 13:17:43 -04:00
; ACTIVATE ANY VARIABLES PASSED AS SUBSCRIPTS TO %utINPT TO THEIR VALUES
2017-02-12 23:15:29 -05:00
"RTN","utcover",249,0)
2017-07-10 13:17:43 -04:00
S %utVAR=" " F S %utVAR=$O(%utINPT(%utVAR)) Q:%utVAR="" S (@%utVAR)=%utINPT(%utVAR)
2017-02-12 23:15:29 -05:00
"RTN","utcover",250,0)
2017-07-10 13:17:43 -04:00
X %utCODE
2017-02-12 23:15:29 -05:00
"RTN","utcover",251,0)
2017-07-10 13:17:43 -04:00
N ZZUTVAR S ZZUTVAR="%"
2017-02-12 23:15:29 -05:00
"RTN","utcover",252,0)
2017-07-10 13:17:43 -04:00
I $G(%ut)=1 D
2017-02-12 23:15:29 -05:00
"RTN","utcover",253,0)
2017-07-10 13:17:43 -04:00
. I $D(@ZZUTVAR),'$D(%utINPT(ZZUTVAR)) D FAIL^%ut(%utLOC_" VARIABLE LEAK: "_ZZUTVAR)
2017-02-12 23:15:29 -05:00
"RTN","utcover",254,0)
2017-07-10 13:17:43 -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)
2017-02-12 23:15:29 -05:00
"RTN","utcover",255,0)
. Q
2017-07-10 13:17:43 -04:00
"RTN","utcover",256,0)
I '($G(%ut)=1) D
2017-02-12 23:15:29 -05:00
"RTN","utcover",257,0)
2017-07-10 13:17:43 -04:00
. I $D(@ZZUTVAR),'$D(%utINPT(ZZUTVAR)) W !,%utLOC_" VARIABLE LEAK: "_ZZUTVAR
2017-02-12 23:15:29 -05:00
"RTN","utcover",258,0)
2017-07-10 13:17:43 -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
2017-02-12 23:15:29 -05:00
"RTN","utcover",259,0)
2017-07-10 13:17:43 -04:00
. Q
2017-02-12 23:15:29 -05:00
"RTN","utcover",260,0)
2017-07-10 13:17:43 -04:00
Q
2017-02-12 23:15:29 -05:00
"RTN","utcover",261,0)
2017-07-10 13:17:43 -04:00
;
2017-02-12 23:15:29 -05:00
"RTN","utcover",262,0)
2017-07-10 13:17:43 -04:00
; MOVED FROM %ut1 due to size requirements
2017-02-12 23:15:29 -05:00
"RTN","utcover",263,0)
2017-07-10 13:17:43 -04:00
COVRPTGL(C,S,R,OUT) ; [Private] - Coverage Global for silent invokers
2017-02-12 23:15:29 -05:00
"RTN","utcover",264,0)
2017-07-10 13:17:43 -04:00
; C = COHORT - Global name
2017-02-12 23:15:29 -05:00
"RTN","utcover",265,0)
2017-07-10 13:17:43 -04:00
; S = SURVIVORS - Global name
2017-02-12 23:15:29 -05:00
"RTN","utcover",266,0)
2017-07-10 13:17:43 -04:00
; R = RESULT - Global name
2017-02-12 23:15:29 -05:00
"RTN","utcover",267,0)
2017-07-10 13:17:43 -04:00
; OUT = OUTPUT - Global name
2017-02-12 23:15:29 -05:00
"RTN","utcover",268,0)
2017-07-10 13:17:43 -04:00
;
2017-02-12 23:15:29 -05:00
"RTN","utcover",269,0)
2017-07-10 13:17:43 -04:00
N O S O=$$ACTLINES^%ut1(C)
2017-02-12 23:15:29 -05:00
"RTN","utcover",270,0)
2017-07-10 13:17:43 -04:00
N L S L=$$ACTLINES^%ut1(S)
2017-02-12 23:15:29 -05:00
"RTN","utcover",271,0)
2017-07-10 13:17:43 -04:00
S @OUT=(O-L)_"/"_O
2017-02-12 23:15:29 -05:00
"RTN","utcover",272,0)
2017-07-10 13:17:43 -04:00
N RTN,TAG,LN S (RTN,TAG,LN)=""
2017-02-12 23:15:29 -05:00
"RTN","utcover",273,0)
2017-07-10 13:17:43 -04:00
F S RTN=$O(@C@(RTN)) Q:RTN="" D
2017-02-12 23:15:29 -05:00
"RTN","utcover",274,0)
2017-07-10 13:17:43 -04:00
. N O S O=$$ACTLINES^%ut1($NA(@C@(RTN)))
2017-02-12 23:15:29 -05:00
"RTN","utcover",275,0)
2017-07-10 13:17:43 -04:00
. N L S L=$$ACTLINES^%ut1($NA(@S@(RTN)))
2017-02-12 23:15:29 -05:00
"RTN","utcover",276,0)
2017-07-10 13:17:43 -04:00
. S @OUT@(RTN)=(O-L)_"/"_O
2017-02-12 23:15:29 -05:00
"RTN","utcover",277,0)
2017-07-10 13:17:43 -04:00
. F S TAG=$O(@C@(RTN,TAG)) Q:TAG="" D
2017-02-12 23:15:29 -05:00
"RTN","utcover",278,0)
2017-07-10 13:17:43 -04:00
. . N O S O=$$ACTLINES^%ut1($NA(@C@(RTN,TAG)))
2017-02-12 23:15:29 -05:00
"RTN","utcover",279,0)
2017-07-10 13:17:43 -04:00
. . N L S L=$$ACTLINES^%ut1($NA(@S@(RTN,TAG)))
2017-02-12 23:15:29 -05:00
"RTN","utcover",280,0)
2017-07-10 13:17:43 -04:00
. . S @OUT@(RTN,TAG)=(O-L)_"/"_O
"RTN","utcover",281,0)
. . F S LN=$O(@S@(RTN,TAG,LN)) Q:LN="" S @OUT@(RTN,TAG,LN)=@S@(RTN,TAG,LN)
"RTN","utcover",282,0)
QUIT
"RTN","utcover",283,0)
2016-02-27 17:01:27 -05:00
;
"RTN","utt1")
2017-07-10 13:17:43 -04:00
0^4^B47228039
2016-02-27 17:01:27 -05:00
"RTN","utt1",1,0)
2017-07-10 13:17:43 -04:00
%utt1 ; VEN/SMH-JLI - Testing routines for M-Unit;04/26/17 21:41
2016-02-27 17:01:27 -05:00
"RTN","utt1",2,0)
2017-07-10 13:17:43 -04:00
;;1.5;MASH UTILITIES;;Jul 8, 2017;Build 13
2016-02-27 17:01:27 -05:00
"RTN","utt1",3,0)
2017-07-10 13:17:43 -04:00
; Submitted to OSEHRA Jul 8, 2017 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)
2017-02-12 23:15:29 -05:00
W !,"Running tests in NON-VERBOSE mode",!,"For Verbose mode use DO VERBOSE^%utt1(ARG) where ARG is an integer 1 to 3"
2016-02-27 17:01:27 -05:00
"RTN","utt1",20,0)
2017-02-12 23:15:29 -05:00
N X R !,"ENTER RETURN TO CONTINUE: ",X:3
2015-03-25 15:05:25 -04:00
"RTN","utt1",21,0)
2017-02-12 23:15:29 -05:00
D EN^%ut($T(+0)) ; Run tests here, be non-verbose.
2015-03-25 15:05:25 -04:00
"RTN","utt1",22,0)
2017-02-12 23:15:29 -05:00
Q
2015-03-25 15:05:25 -04:00
"RTN","utt1",23,0)
2017-02-12 23:15:29 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt1",24,0)
2017-02-12 23:15:29 -05:00
VERBOSE(VERBSITY) ;
2015-03-25 15:05:25 -04:00
"RTN","utt1",25,0)
2017-07-10 13:17:43 -04:00
I (+$G(VERBSITY)<1)!($G(VERBSITY)>3) N VERBSITY S VERBSITY=3
2015-03-25 15:05:25 -04:00
"RTN","utt1",26,0)
2017-02-12 23:15:29 -05:00
W !!,"Running tests in VERBOSE mode with "_$S(VERBSITY=1:"no timing",VERBSITY=2:"whole millisecond timing",3:"fractional millisecond timing"),!
2015-03-25 15:05:25 -04:00
"RTN","utt1",27,0)
2017-02-12 23:15:29 -05:00
D EN^%ut($T(+0),VERBSITY) ; Run tests here, be verbose.
2015-03-25 15:05:25 -04:00
"RTN","utt1",28,0)
2017-02-12 23:15:29 -05:00
QUIT
2015-03-25 15:05:25 -04:00
"RTN","utt1",29,0)
2017-02-12 23:15:29 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt1",30,0)
2017-02-12 23:15:29 -05:00
STARTUP ; M-Unit Start-Up - This runs before anything else.
2015-03-25 15:05:25 -04:00
"RTN","utt1",31,0)
2017-02-12 23:15:29 -05:00
; ZEXCEPT: KBANCOUNT - created here, removed in SHUTDOWN
2015-03-25 15:05:25 -04:00
"RTN","utt1",32,0)
2017-02-12 23:15:29 -05:00
S ^TMP($J,"%ut","STARTUP")=""
2015-03-25 15:05:25 -04:00
"RTN","utt1",33,0)
2017-02-12 23:15:29 -05:00
S KBANCOUNT=1
2015-03-25 15:05:25 -04:00
"RTN","utt1",34,0)
2017-02-12 23:15:29 -05:00
QUIT
2015-03-25 15:05:25 -04:00
"RTN","utt1",35,0)
2017-02-12 23:15:29 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt1",36,0)
2017-02-12 23:15:29 -05:00
SHUTDOWN ; M-Unit Shutdown - This runs after everything else is done.
2015-03-25 15:05:25 -04:00
"RTN","utt1",37,0)
2017-02-12 23:15:29 -05:00
; ZEXCEPT: KBANCOUNT - created in STARTUP, removed here
2015-03-25 15:05:25 -04:00
"RTN","utt1",38,0)
2017-02-12 23:15:29 -05:00
K ^TMP($J,"%ut","STARTUP")
2015-03-25 15:05:25 -04:00
"RTN","utt1",39,0)
2017-02-12 23:15:29 -05:00
K KBANCOUNT
2015-03-25 15:05:25 -04:00
"RTN","utt1",40,0)
2017-02-12 23:15:29 -05:00
QUIT
2015-03-25 15:05:25 -04:00
"RTN","utt1",41,0)
2017-02-12 23:15:29 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt1",42,0)
2017-02-12 23:15:29 -05:00
;
2016-02-27 17:01:27 -05:00
"RTN","utt1",43,0)
2016-04-11 18:26:37 -04:00
;
2017-02-12 23:15:29 -05:00
"RTN","utt1",44,0)
SETUP ; This runs before every test.
2015-03-25 15:05:25 -04:00
"RTN","utt1",45,0)
2016-04-11 18:26:37 -04:00
; ZEXCEPT: KBANCOUNT - created in STARTUP, removed in SHUTDOWN
2017-02-12 23:15:29 -05:00
"RTN","utt1",46,0)
S KBANCOUNT=KBANCOUNT+1
2015-03-25 15:05:25 -04:00
"RTN","utt1",47,0)
2016-04-11 18:26:37 -04:00
QUIT
2017-02-12 23:15:29 -05:00
"RTN","utt1",48,0)
2016-02-27 17:01:27 -05:00
;
2017-02-12 23:15:29 -05:00
"RTN","utt1",49,0)
TEARDOWN ; This runs after every test
2015-03-25 15:05:25 -04:00
"RTN","utt1",50,0)
2017-02-12 23:15:29 -05:00
; ZEXCEPT: KBANCOUNT - created in STARTUP, removed in SHUTDOWN
2015-03-25 15:05:25 -04:00
"RTN","utt1",51,0)
2017-02-12 23:15:29 -05:00
S KBANCOUNT=KBANCOUNT-1
2015-03-25 15:05:25 -04:00
"RTN","utt1",52,0)
2017-02-12 23:15:29 -05:00
QUIT
2015-03-25 15:05:25 -04:00
"RTN","utt1",53,0)
2017-02-12 23:15:29 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt1",54,0)
2017-02-12 23:15:29 -05:00
;
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)
2017-02-12 23:15:29 -05:00
T1 ; @TEST - Make sure Start-up Ran
2015-03-25 15:05:25 -04:00
"RTN","utt1",57,0)
2017-02-12 23:15:29 -05: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",58,0)
2016-04-11 18:26:37 -04:00
QUIT
2017-02-12 23:15:29 -05:00
"RTN","utt1",59,0)
2016-04-11 18:26:37 -04:00
;
2017-02-12 23:15:29 -05:00
"RTN","utt1",60,0)
T2 ; @TEST - Make sure Set-up runs
2015-03-25 15:05:25 -04:00
"RTN","utt1",61,0)
2016-04-11 18:26:37 -04:00
; ZEXCEPT: KBANCOUNT - created in STARTUP, removed in SHUTDOWN
2017-02-12 23:15:29 -05:00
"RTN","utt1",62,0)
D CHKEQ(KBANCOUNT,2,"KBANCount not incremented properly at SETUP")
2015-03-25 15:05:25 -04:00
"RTN","utt1",63,0)
2016-04-11 18:26:37 -04:00
QUIT
2017-02-12 23:15:29 -05:00
"RTN","utt1",64,0)
2016-04-11 18:26:37 -04:00
;
2017-02-12 23:15:29 -05:00
"RTN","utt1",65,0)
T3 ; @TEST - Make sure Teardown runs
2015-03-25 15:05:25 -04:00
"RTN","utt1",66,0)
2017-02-12 23:15:29 -05:00
; ZEXCEPT: KBANCOUNT - created in STARTUP, removed in SHUTDOWN
2015-03-25 15:05:25 -04:00
"RTN","utt1",67,0)
2017-02-12 23:15:29 -05:00
D CHKEQ(KBANCOUNT,2,"KBANCount not decremented properly at TEARDOWN")
2015-03-25 15:05:25 -04:00
"RTN","utt1",68,0)
2017-02-12 23:15:29 -05:00
QUIT
2015-03-25 15:05:25 -04:00
"RTN","utt1",69,0)
2017-02-12 23:15:29 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt1",70,0)
2017-02-12 23:15:29 -05:00
T4 ; Specified in XTMTAG
2015-03-25 15:05:25 -04:00
"RTN","utt1",71,0)
2017-02-12 23:15:29 -05:00
; 140731 JLI - note that this will fail when run from the GUI runner, since it calls each tag separately
2016-02-27 17:01:27 -05:00
"RTN","utt1",72,0)
2017-02-12 23:15:29 -05:00
; ZEXCEPT: %utETRY - newed and created in EN1^%ut
2016-02-27 17:01:27 -05:00
"RTN","utt1",73,0)
2017-02-12 23:15:29 -05:00
; ZEXCEPT: %utGUI -- CONDITIONALLY DEFINED BY GUINEXT^%ut
2015-03-25 15:05:25 -04:00
"RTN","utt1",74,0)
2017-02-12 23:15:29 -05: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",75,0)
2017-02-12 23:15:29 -05:00
I '$G(%utGUI) D CHKEQ(%utETRY(4),"T4","T4 should be the collected as the fourth entry in %utETRY")
2015-03-25 15:05:25 -04:00
"RTN","utt1",76,0)
2017-02-12 23:15:29 -05:00
QUIT
2015-03-25 15:05:25 -04:00
"RTN","utt1",77,0)
2017-02-12 23:15:29 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt1",78,0)
2017-02-12 23:15:29 -05:00
T5 ; ditto
2015-03-25 15:05:25 -04:00
"RTN","utt1",79,0)
2017-02-12 23:15:29 -05:00
; ZEXCEPT: %ut - NEWed and created in EN1^%ut
2015-03-25 15:05:25 -04:00
"RTN","utt1",80,0)
2017-07-10 13:17:43 -04:00
D CHKTF(0,"This is an intentional failure")
2015-03-25 15:05:25 -04:00
"RTN","utt1",81,0)
2017-02-12 23:15:29 -05: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",82,0)
2017-02-12 23:15:29 -05:00
D FAIL^%ut("Intentionally throwing a failure")
2015-03-25 15:05:25 -04:00
"RTN","utt1",83,0)
2017-02-12 23:15:29 -05: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",84,0)
2017-02-12 23:15:29 -05: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",85,0)
2017-02-12 23:15:29 -05:00
QUIT
2015-03-25 15:05:25 -04:00
"RTN","utt1",86,0)
2017-02-12 23:15:29 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt1",87,0)
2017-02-12 23:15:29 -05:00
T6 ; ditto
2015-03-25 15:05:25 -04:00
"RTN","utt1",88,0)
2017-02-12 23:15:29 -05:00
; ZEXCEPT: %ut - NEWed and created in EN1^%ut
2015-03-25 15:05:25 -04:00
"RTN","utt1",89,0)
2017-02-12 23:15:29 -05:00
N TESTCOUNT S TESTCOUNT=%ut("CHK")
2016-02-27 17:01:27 -05:00
"RTN","utt1",90,0)
2017-02-12 23:15:29 -05:00
D SUCCEED^%ut
2015-03-25 15:05:25 -04:00
"RTN","utt1",91,0)
2017-02-12 23:15:29 -05:00
D SUCCEED^%ut
2015-03-25 15:05:25 -04:00
"RTN","utt1",92,0)
2017-02-12 23:15:29 -05:00
D CHKEQ(%ut("CHK"),TESTCOUNT+2,"Succeed should increment the number of tests")
2015-03-25 15:05:25 -04:00
"RTN","utt1",93,0)
2017-02-12 23:15:29 -05:00
QUIT
2015-03-25 15:05:25 -04:00
"RTN","utt1",94,0)
2017-02-12 23:15:29 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt1",95,0)
2017-02-12 23:15:29 -05: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",96,0)
2017-02-12 23:15:29 -05: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",97,0)
2017-02-12 23:15:29 -05:00
; ZEXCEPT: GetEnviron,Util,delete,newversion,readonly - not really variables
2015-03-25 15:05:25 -04:00
"RTN","utt1",98,0)
2017-02-12 23:15:29 -05:00
N D
2015-03-25 15:05:25 -04:00
"RTN","utt1",99,0)
2017-02-12 23:15:29 -05:00
I $$GETSYS^%ut()=47 S D="/tmp/test.txt" ; All GT.M ; VMS not supported.
2015-03-25 15:05:25 -04:00
"RTN","utt1",100,0)
2017-02-12 23:15:29 -05:00
I $$GETSYS^%ut()=0 D ; All Cache
2015-03-25 15:05:25 -04:00
"RTN","utt1",101,0)
2017-02-12 23:15:29 -05: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",102,0)
2017-02-12 23:15:29 -05:00
. E S D="/tmp/test.txt" ; not windows; VMS not supported.
2015-03-25 15:05:25 -04:00
"RTN","utt1",103,0)
2017-02-12 23:15:29 -05:00
I $$GETSYS^%ut()=0 O D:"NWS" ; Cache new file
2015-03-25 15:05:25 -04:00
"RTN","utt1",104,0)
2017-02-12 23:15:29 -05:00
I $$GETSYS^%ut()=47 O D:(newversion) ; GT.M new file
2015-03-25 15:05:25 -04:00
"RTN","utt1",105,0)
2017-02-12 23:15:29 -05:00
U D
2015-03-25 15:05:25 -04:00
"RTN","utt1",106,0)
2017-02-12 23:15:29 -05:00
WRITE "HELLO",!
2015-03-25 15:05:25 -04:00
"RTN","utt1",107,0)
2017-02-12 23:15:29 -05:00
WRITE "HELLO",!
2015-03-25 15:05:25 -04:00
"RTN","utt1",108,0)
2017-02-12 23:15:29 -05:00
C D
2015-03-25 15:05:25 -04:00
"RTN","utt1",109,0)
2017-02-12 23:15:29 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt1",110,0)
2017-02-12 23:15:29 -05: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",111,0)
2017-02-12 23:15:29 -05:00
; M-Unit will error out if it will write something out there.
2015-03-25 15:05:25 -04:00
"RTN","utt1",112,0)
2017-02-12 23:15:29 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt1",113,0)
2017-02-12 23:15:29 -05:00
I $$GETSYS^%ut()=0 O D:"R"
2015-03-25 15:05:25 -04:00
"RTN","utt1",114,0)
2017-02-12 23:15:29 -05:00
I $$GETSYS^%ut()=47 O D:(readonly)
2015-03-25 15:05:25 -04:00
"RTN","utt1",115,0)
2017-02-12 23:15:29 -05:00
U D
2015-03-25 15:05:25 -04:00
"RTN","utt1",116,0)
2017-02-12 23:15:29 -05:00
N X READ X:1
2015-03-25 15:05:25 -04:00
"RTN","utt1",117,0)
2017-02-12 23:15:29 -05: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",118,0)
2017-02-12 23:15:29 -05: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",119,0)
2017-02-12 23:15:29 -05:00
I $$GETSYS^%ut()=0 C D:"D"
2015-03-25 15:05:25 -04:00
"RTN","utt1",120,0)
2017-02-12 23:15:29 -05:00
I $$GETSYS^%ut()=47 C D:(delete)
2015-03-25 15:05:25 -04:00
"RTN","utt1",121,0)
2017-02-12 23:15:29 -05:00
U $P
2015-03-25 15:05:25 -04:00
"RTN","utt1",122,0)
2017-02-12 23:15:29 -05:00
S IO=$IO
2015-03-25 15:05:25 -04:00
"RTN","utt1",123,0)
2017-02-12 23:15:29 -05:00
QUIT
2015-03-25 15:05:25 -04:00
"RTN","utt1",124,0)
2017-02-12 23:15:29 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt1",125,0)
2017-02-12 23:15:29 -05:00
; At the moment T8^%utt1 throws a fail, with no message
2015-03-25 15:05:25 -04:00
"RTN","utt1",126,0)
2017-02-12 23:15:29 -05:00
; in the GUI runner. For some reason, both X and Y
2015-03-25 15:05:25 -04:00
"RTN","utt1",127,0)
2017-02-12 23:15:29 -05:00
; variables are returned as null strings, while in the
2015-03-25 15:05:25 -04:00
"RTN","utt1",128,0)
2017-02-12 23:15:29 -05:00
; command line runner, Y has a value containing the
2015-03-25 15:05:25 -04:00
"RTN","utt1",129,0)
2017-02-12 23:15:29 -05:00
; word being sought
2015-03-25 15:05:25 -04:00
"RTN","utt1",130,0)
2017-02-12 23:15:29 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt1",131,0)
2017-02-12 23:15:29 -05: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",132,0)
2017-02-12 23:15:29 -05:00
; ZEXCEPT: GetEnviron,Util,delete,newversion,readonly - not really variables
2015-03-25 15:05:25 -04:00
"RTN","utt1",133,0)
2017-02-12 23:15:29 -05:00
; ZEXCEPT: %utGUI - if present, defined and killed elsewhere
2015-03-25 15:05:25 -04:00
"RTN","utt1",134,0)
2017-02-12 23:15:29 -05:00
I $D(%utGUI) Q ; GUI doesn't run verbose
2015-03-25 15:05:25 -04:00
"RTN","utt1",135,0)
2017-02-12 23:15:29 -05:00
N D
2015-03-25 15:05:25 -04:00
"RTN","utt1",136,0)
2017-02-12 23:15:29 -05:00
I $$GETSYS^%ut()=47 S D="/tmp/test.txt" ; All GT.M ; VMS not supported.
2015-03-25 15:05:25 -04:00
"RTN","utt1",137,0)
2017-02-12 23:15:29 -05:00
I $$GETSYS^%ut()=0 D ; All Cache
2015-03-25 15:05:25 -04:00
"RTN","utt1",138,0)
2017-02-12 23:15:29 -05: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",139,0)
2017-02-12 23:15:29 -05:00
. E S D="/tmp/test.txt" ; not windows; VMS not supported.
2015-03-25 15:05:25 -04:00
"RTN","utt1",140,0)
2017-02-12 23:15:29 -05:00
I $$GETSYS^%ut()=0 O D:"NWS" ; Cache new file
2015-03-25 15:05:25 -04:00
"RTN","utt1",141,0)
2017-02-12 23:15:29 -05:00
I $$GETSYS^%ut()=47 O D:(newversion) ; GT.M new file
2015-03-25 15:05:25 -04:00
"RTN","utt1",142,0)
2017-02-12 23:15:29 -05:00
S IO=D
2015-03-25 15:05:25 -04:00
"RTN","utt1",143,0)
2017-02-12 23:15:29 -05:00
U D
2015-03-25 15:05:25 -04:00
"RTN","utt1",144,0)
2017-02-12 23:15:29 -05:00
D ^%utt4 ; Run some Unit Tests
2015-03-25 15:05:25 -04:00
"RTN","utt1",145,0)
2017-02-12 23:15:29 -05:00
C D
2015-03-25 15:05:25 -04:00
"RTN","utt1",146,0)
2017-02-12 23:15:29 -05:00
I $$GETSYS^%ut()=0 O D:"R" ; Cache read only
2015-03-25 15:05:25 -04:00
"RTN","utt1",147,0)
2017-02-12 23:15:29 -05:00
I $$GETSYS^%ut()=47 O D:(readonly) ; GT.M read only
2015-03-25 15:05:25 -04:00
"RTN","utt1",148,0)
2017-02-12 23:15:29 -05:00
U D
2015-03-25 15:05:25 -04:00
"RTN","utt1",149,0)
2017-02-12 23:15:29 -05:00
N X,Y,Z,Z1,Z2,Z3,Z4 R X:1,Y:1,Z:1,Z1:1,Z2:1,Z3:1,Z4:1
2015-03-25 15:05:25 -04:00
"RTN","utt1",150,0)
2017-02-12 23:15:29 -05:00
I $$GETSYS^%ut()=0 C D:"D"
2016-02-27 17:01:27 -05:00
"RTN","utt1",151,0)
2017-02-12 23:15:29 -05:00
I $$GETSYS^%ut()=47 C D:(delete)
2016-02-27 17:01:27 -05:00
"RTN","utt1",152,0)
2017-02-12 23:15:29 -05:00
D CHKTF(Z1["MAIN","Write to system during test didn't work")
2016-02-27 17:01:27 -05:00
"RTN","utt1",153,0)
2017-02-12 23:15:29 -05:00
S IO=$P,IO(0)=IO
2016-02-27 17:01:27 -05:00
"RTN","utt1",154,0)
2017-02-12 23:15:29 -05:00
QUIT
2016-02-27 17:01:27 -05:00
"RTN","utt1",155,0)
2017-02-12 23:15:29 -05:00
;
2016-02-27 17:01:27 -05:00
"RTN","utt1",156,0)
2017-02-12 23:15:29 -05:00
COVRPTGL ;
2016-02-27 17:01:27 -05:00
"RTN","utt1",157,0)
2017-02-12 23:15:29 -05:00
N GL1,GL2,GL3,GL4
2016-02-27 17:01:27 -05:00
"RTN","utt1",158,0)
2017-02-12 23:15:29 -05:00
S GL1=$NA(^TMP("%utCOVCOHORTSAVx",$J)) K @GL1
2016-02-27 17:01:27 -05:00
"RTN","utt1",159,0)
2017-02-12 23:15:29 -05:00
S GL2=$NA(^TMP("%utCOVCOHORTx",$J)) K @GL2
2016-02-27 17:01:27 -05:00
"RTN","utt1",160,0)
2017-02-12 23:15:29 -05:00
S GL3=$NA(^TMP("%utCOVRESULTx",$J)) K @GL3
2016-02-27 17:01:27 -05:00
"RTN","utt1",161,0)
2017-02-12 23:15:29 -05:00
S GL4=$NA(^TMP("%utCOVREPORTx",$J)) K @GL4
2016-02-27 17:01:27 -05:00
"RTN","utt1",162,0)
2017-02-12 23:15:29 -05:00
D SETGLOBS^%uttcovr(GL1,GL2)
2016-02-27 17:01:27 -05:00
"RTN","utt1",163,0)
2017-02-12 23:15:29 -05:00
D COVRPTGL^%utcover(GL1,GL2,GL3,GL4)
2016-02-27 17:01:27 -05:00
"RTN","utt1",164,0)
2017-02-12 23:15:29 -05: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",165,0)
2017-02-12 23:15:29 -05: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",166,0)
2017-02-12 23:15:29 -05: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",167,0)
2017-02-12 23:15:29 -05: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",168,0)
2017-02-12 23:15:29 -05:00
K @GL1,@GL2,@GL3,@GL4
2016-02-27 17:01:27 -05:00
"RTN","utt1",169,0)
2017-02-12 23:15:29 -05:00
Q
2016-02-27 17:01:27 -05:00
"RTN","utt1",170,0)
2016-04-11 18:26:37 -04:00
;
2017-02-12 23:15:29 -05:00
"RTN","utt1",171,0)
LO(X) Q $TR(X,"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz")
2016-02-27 17:01:27 -05:00
"RTN","utt1",172,0)
2017-02-12 23:15:29 -05:00
; Shortcut methods for M-Unit
2016-02-27 17:01:27 -05:00
"RTN","utt1",173,0)
2017-02-12 23:15:29 -05:00
CHKTF(X,Y) ;
2016-02-27 17:01:27 -05:00
"RTN","utt1",174,0)
2017-02-12 23:15:29 -05:00
D CHKTF^%ut(X,$G(Y))
2016-02-27 17:01:27 -05:00
"RTN","utt1",175,0)
2017-02-12 23:15:29 -05:00
QUIT
2016-02-27 17:01:27 -05:00
"RTN","utt1",176,0)
2017-02-12 23:15:29 -05:00
;
2016-02-27 17:01:27 -05:00
"RTN","utt1",177,0)
2017-02-12 23:15:29 -05:00
CHKEQ(A,B,M) ;
2016-02-27 17:01:27 -05:00
"RTN","utt1",178,0)
2017-02-12 23:15:29 -05:00
D CHKEQ^%ut(A,B,$G(M))
2016-02-27 17:01:27 -05:00
"RTN","utt1",179,0)
2017-02-12 23:15:29 -05:00
QUIT
2016-02-27 17:01:27 -05:00
"RTN","utt1",180,0)
2017-02-12 23:15:29 -05:00
;
2016-02-27 17:01:27 -05:00
"RTN","utt1",181,0)
2017-02-12 23:15:29 -05:00
XTENT ; Entry points
2016-02-27 17:01:27 -05:00
"RTN","utt1",182,0)
2017-02-12 23:15:29 -05:00
;;T4;Entry point using XTMENT
2016-02-27 17:01:27 -05:00
"RTN","utt1",183,0)
2017-02-12 23:15:29 -05:00
;;T5;Error count check
2016-02-27 17:01:27 -05:00
"RTN","utt1",184,0)
2017-02-12 23:15:29 -05:00
;;T6;Succeed Entry Point
2016-02-27 17:01:27 -05:00
"RTN","utt1",185,0)
2017-02-12 23:15:29 -05: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",186,0)
2017-02-12 23:15:29 -05: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",187,0)
2017-02-12 23:15:29 -05:00
;;COVRPTGL;coverage report returning global
2016-02-27 17:01:27 -05:00
"RTN","utt1",188,0)
2017-02-12 23:15:29 -05:00
;
2016-04-11 18:26:37 -04:00
"RTN","utt1",189,0)
2017-02-12 23:15:29 -05:00
XTROU ; Routines containing additional tests
"RTN","utt1",190,0)
;;%utt2; old %utNITU
"RTN","utt1",191,0)
;;%utt4; old %utNITW
"RTN","utt1",192,0)
;;%utt5;
"RTN","utt1",193,0)
;;%utt6;
"RTN","utt1",194,0)
2016-02-27 17:01:27 -05:00
;;%uttcovr;coverage related tests
2015-03-25 15:05:25 -04:00
"RTN","utt2")
2017-02-12 23:15:29 -05:00
0^5^B685355
2015-03-25 15:05:25 -04:00
"RTN","utt2",1,0)
2017-02-12 23:15:29 -05:00
%utt2 ; VEN/SMH - Bad Ass Continuation of Unit Tests;02/06/17 13:48
2015-03-25 15:05:25 -04:00
"RTN","utt2",2,0)
2017-07-10 13:17:43 -04:00
;;1.5;MASH UTILITIES;;Jul 8, 2017;Build 13
2015-03-25 15:05:25 -04:00
"RTN","utt2",3,0)
2017-07-10 13:17:43 -04:00
; Submitted to OSEHRA Jul 8, 2017 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)
2017-02-12 23:15:29 -05:00
%ut ; List of changes in routine %ut in version 1.5
2015-03-25 15:05:25 -04:00
"RTN","utt2",8,0)
2017-02-12 23:15:29 -05:00
; 160713 JLI in ERROR1 moved actual BREAK on error, if BREAK option is specified from first executable line so actual error is listed before BREAK occurs
2015-03-25 15:05:25 -04:00
"RTN","utt2",9,0)
2017-02-12 23:15:29 -05:00
; 161020 JLI when BREAKing due to use of BREAK option, added code to indicate breaking on a false or nonequal value, or if breaking on an error the type of error causing the break
2015-03-25 15:05:25 -04:00
"RTN","utt2",10,0)
2017-02-12 23:15:29 -05:00
; 161113 JLI in EN1 added code to insert routine names before list of tags executed in verbose mode
2015-03-25 15:05:25 -04:00
"RTN","utt2",11,0)
2017-02-12 23:15:29 -05:00
; 161204 SMH added verbosity options for executions timing for tests to verbose output vaue 2 gives milliseconds or 3 gives microseconds expressed as fractional milliseconds
2015-03-25 15:05:25 -04:00
"RTN","utt2",12,0)
2017-02-12 23:15:29 -05:00
; 161204 SMH added tags GTMVER and ZHDIF related to execution timing
2016-02-27 17:01:27 -05:00
"RTN","utt2",13,0)
2017-02-12 23:15:29 -05:00
; 161206 JLI added tag GETSYS to handle cases where in Cache Windows systems with a computer name beginning with a digit are not correctly identified - originally reported by Steve Graham
2016-02-27 17:01:27 -05:00
"RTN","utt2",14,0)
2017-02-12 23:15:29 -05:00
; 161206 JLI changed all references to +$SY to calls to $$GETSYS in this routine
2016-02-27 17:01:27 -05:00
"RTN","utt2",15,0)
2017-02-12 23:15:29 -05:00
; 170111 JLI added code to work with SMH changes to %ut1 to permit single or multiple namespaces be passed for coverage analysis
"RTN","utt2",16,0)
;
"RTN","utt2",17,0)
%ut1 ; List of changes made in routine %ut1 in version 1.5
"RTN","utt2",18,0)
; 160316 JLI Modified checks that prevented some routines from being included in tests (e.g., name on line 1 doesn't match) or excluding, but notifying user if a routine looks like computer generated (no ;; 2nd line)
"RTN","utt2",19,0)
; 160701 Christopher Edwards (CE) suggested removing VistA dependence in CACHECOV+12 replaced ^%ZOSF("LOAD") with its code
"RTN","utt2",20,0)
; 161020 JLI on FAIL if BREAK was active added message indicating breaking on failure before actual BREAK
"RTN","utt2",21,0)
; 161206 JLI changed all references to +$SY to calls to $$GETSYS in %ut
"RTN","utt2",22,0)
; 161226 SMH added code to permit single or multiple namespaces be passed for coverage analysis
"RTN","utt2",23,0)
;
"RTN","utt2",24,0)
T11 ; @TEST An @TEST Entry point in Another Routine invoked through XTROU offsets
"RTN","utt2",25,0)
D CHKTF^%ut(1)
"RTN","utt2",26,0)
QUIT
"RTN","utt2",27,0)
T12 ;
"RTN","utt2",28,0)
D CHKTF^%ut(1)
"RTN","utt2",29,0)
QUIT
"RTN","utt2",30,0)
XTENT ;
"RTN","utt2",31,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)
2017-07-10 13:17:43 -04:00
;;1.5;MASH UTILITIES;;Jul 8, 2017;Build 13
2015-03-25 15:05:25 -04:00
"RTN","utt3",3,0)
2017-07-10 13:17:43 -04:00
; Submitted to OSEHRA Jul 8, 2017 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")
2017-02-12 23:15:29 -05:00
0^7^B3071162
2015-03-25 15:05:25 -04:00
"RTN","utt4",1,0)
2017-02-12 23:15:29 -05:00
%utt4 ; VEN/SMH/JLI - Coverage Test Runner;01/30/17 11:46
2015-03-25 15:05:25 -04:00
"RTN","utt4",2,0)
2017-07-10 13:17:43 -04:00
;;1.5;MASH UTILITIES;;Jul 8, 2017;Build 13
2015-03-25 15:05:25 -04:00
"RTN","utt4",3,0)
2017-07-10 13:17:43 -04:00
; Submitted to OSEHRA Jul 8, 2017 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)
2017-02-12 23:15:29 -05:00
D EN^%ut($T(+0),1)
2015-03-25 15:05:25 -04:00
"RTN","utt4",12,0)
2017-02-12 23:15:29 -05:00
QUIT
2015-03-25 15:05:25 -04:00
"RTN","utt4",13,0)
2017-02-12 23:15:29 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt4",14,0)
2017-02-12 23:15:29 -05:00
MAIN ; @TEST - Test coverage calculations
2015-03-25 15:05:25 -04:00
"RTN","utt4",15,0)
2017-02-12 23:15:29 -05:00
Q:$D(^TMP("%uttcovr",$J)) ; already running coverage analysis from %uttcovr
2015-03-25 15:05:25 -04:00
"RTN","utt4",16,0)
2017-02-12 23:15:29 -05:00
Q:$D(^TMP("%utCOVREPORT",$J)) ; another coverage already running
2015-03-25 15:05:25 -04:00
"RTN","utt4",17,0)
2017-02-12 23:15:29 -05:00
S ^TMP("%utt4val",$J)=1
2015-03-25 15:05:25 -04:00
"RTN","utt4",18,0)
2017-02-12 23:15:29 -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",19,0)
2017-02-12 23:15:29 -05:00
D CHKEQ^%ut("14/19",^TMP("%utCOVREPORT",$J))
2015-03-25 15:05:25 -04:00
"RTN","utt4",20,0)
2017-02-12 23:15:29 -05:00
D CHKEQ^%ut("2/5",^TMP("%utCOVREPORT",$J,"%utt3","INTERNAL"))
2015-03-25 15:05:25 -04:00
"RTN","utt4",21,0)
2017-02-12 23:15:29 -05:00
D CHKTF^%ut($D(^TMP("%utCOVREPORT",$J,"%utt3","T2",4)))
2016-02-27 17:01:27 -05:00
"RTN","utt4",22,0)
2017-02-12 23:15:29 -05:00
D CHKEQ^%ut("1/1",^TMP("%utCOVREPORT",$J,"%utt3","SETUP"))
"RTN","utt4",23,0)
K ^TMP("%utt4val",$J)
"RTN","utt4",24,0)
2015-03-25 15:05:25 -04:00
QUIT
2017-02-12 23:15:29 -05:00
"RTN","utt4",25,0)
;
"RTN","utt4",26,0)
; The following code was copied from the routine XLFDT so that unit tests for LEAKSOK
"RTN","utt4",27,0)
; and LEAKSBAD in %utt5 could be independent of VA KERNEL code'
"RTN","utt4",28,0)
;
"RTN","utt4",29,0)
HTFM(%H,%F) ;$H to FM, %F=1 for date only
"RTN","utt4",30,0)
N X,%,%T,%Y,%M,%D S:'$D(%F) %F=0
"RTN","utt4",31,0)
I $$HR(%H) Q -1 ;Check Range
"RTN","utt4",32,0)
I '%F,%H[",0" S %H=(%H-1)_",86400"
"RTN","utt4",33,0)
D YMD S:%T&('%F) X=X_%T
"RTN","utt4",34,0)
Q X
"RTN","utt4",35,0)
;
"RTN","utt4",36,0)
YMD ;21608 = 28 feb 1900, 94657 = 28 feb 2100, 141 $H base year
"RTN","utt4",37,0)
S %=(%H>21608)+(%H>94657)+%H-.1,%Y=%\365.25+141,%=%#365.25\1
"RTN","utt4",38,0)
S %D=%+306#(%Y#4=0+365)#153#61#31+1,%M=%-%D\29+1
"RTN","utt4",39,0)
S X=%Y_"00"+%M_"00"+%D,%=$P(%H,",",2)
"RTN","utt4",40,0)
S %T=%#60/100+(%#3600\60)/100+(%\3600)/100 S:'%T %T=".0"
"RTN","utt4",41,0)
Q
"RTN","utt4",42,0)
;
"RTN","utt4",43,0)
NOW() ;Current Date/time in FM.
"RTN","utt4",44,0)
Q $$HTFM($H)
"RTN","utt4",45,0)
;
"RTN","utt4",46,0)
HR(%V) ;Check $H in valid range
"RTN","utt4",47,0)
Q (%V<2)!(%V>99999)
"RTN","utt4",48,0)
;
2015-03-25 15:05:25 -04:00
"RTN","utt5")
2017-07-10 13:17:43 -04:00
0^8^B26349822
2015-03-25 15:05:25 -04:00
"RTN","utt5",1,0)
2017-07-10 13:17:43 -04:00
%utt5 ;JLI - test for aspects of MUnit functionality ;04/05/17 15:36
2015-03-25 15:05:25 -04:00
"RTN","utt5",2,0)
2017-07-10 13:17:43 -04:00
;;1.5;MASH UTILITIES;;Jul 8, 2017;Build 13
2015-03-25 15:05:25 -04:00
"RTN","utt5",3,0)
2017-07-10 13:17:43 -04:00
; Submitted to OSEHRA Jul 8, 2017 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)
2017-07-10 13:17:43 -04:00
D ^%utt1
2015-03-25 15:05:25 -04:00
"RTN","utt5",7,0)
2017-07-10 13:17:43 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","utt5",8,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt5",9,0)
2017-07-10 13:17:43 -04:00
OLDSTYLE ;
2015-03-25 15:05:25 -04:00
"RTN","utt5",10,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: %ut - Newed in EN^%zu
2015-03-25 15:05:25 -04:00
"RTN","utt5",11,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: %utt6cnt,%utt6var - if present, NEWED following top entry of routine %utt6
2015-03-25 15:05:25 -04:00
"RTN","utt5",12,0)
2017-07-10 13:17:43 -04: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",13,0)
2017-07-10 13:17:43 -04:00
D CHKEQ^%ut(5,5,"SET EQUAL ON PURPOSE - OLDSTYLE DONE")
2015-03-25 15:05:25 -04:00
"RTN","utt5",14,0)
2017-07-10 13:17:43 -04:00
D CHKTF^%ut(4=4,"MY EQUAL VALUE")
2015-03-25 15:05:25 -04:00
"RTN","utt5",15,0)
2017-07-10 13:17:43 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","utt5",16,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt5",17,0)
2017-07-10 13:17:43 -04:00
OLDSTYL1 ;
2015-03-25 15:05:25 -04:00
"RTN","utt5",18,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: %ut - Newed in EN^%zu
2015-03-25 15:05:25 -04:00
"RTN","utt5",19,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: %utt6cnt,%utt6var - if present, NEWED following top entry of routine %utt6
2015-03-25 15:05:25 -04:00
"RTN","utt5",20,0)
2017-07-10 13:17:43 -04: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",21,0)
2017-07-10 13:17:43 -04:00
D CHKEQ^%ut(4,4,"SET EQUAL ON PURPOSE - OLDSTYL1 DONE")
2015-03-25 15:05:25 -04:00
"RTN","utt5",22,0)
2017-07-10 13:17:43 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","utt5",23,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt5",24,0)
2017-07-10 13:17:43 -04:00
NEWSTYLE ; @TEST identify new style test indicator functionality
2015-03-25 15:05:25 -04:00
"RTN","utt5",25,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: %ut - Newed in EN^%zu
2015-03-25 15:05:25 -04:00
"RTN","utt5",26,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: %utt6cnt,%utt6var - if present, NEWED following top entry of routine %utt6
2015-03-25 15:05:25 -04:00
"RTN","utt5",27,0)
2017-07-10 13:17:43 -04: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",28,0)
2017-07-10 13:17:43 -04:00
D CHKEQ^%ut(4,4,"SET EQUAL ON PURPOSE - NEWSTYLE DONE")
2015-03-25 15:05:25 -04:00
"RTN","utt5",29,0)
2017-07-10 13:17:43 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","utt5",30,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt5",31,0)
2017-07-10 13:17:43 -04:00
BADCHKEQ ;
2015-03-25 15:05:25 -04:00
"RTN","utt5",32,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: %ut - Newed in EN^%zu
2015-03-25 15:05:25 -04:00
"RTN","utt5",33,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: %utt6cnt,%utt6var - if present, NEWED following top entry of routine %utt6
2015-03-25 15:05:25 -04:00
"RTN","utt5",34,0)
2017-07-10 13:17:43 -04: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",35,0)
2017-07-10 13:17:43 -04:00
D CHKEQ^%ut(4,3,"SET UNEQUAL ON PURPOSE - SHOULD FAIL")
2015-03-25 15:05:25 -04:00
"RTN","utt5",36,0)
2017-07-10 13:17:43 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","utt5",37,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt5",38,0)
2017-07-10 13:17:43 -04:00
BADCHKTF ;
2015-03-25 15:05:25 -04:00
"RTN","utt5",39,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: %ut - Newed in EN^%zu
2015-03-25 15:05:25 -04:00
"RTN","utt5",40,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: %utt6cnt,%utt6var - if present, NEWED following top entry of routine %utt6
2015-03-25 15:05:25 -04:00
"RTN","utt5",41,0)
2017-07-10 13:17:43 -04: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",42,0)
2017-07-10 13:17:43 -04:00
D CHKTF^%ut(0,"SET FALSE (0) ON PURPOSE - SHOULD FAIL")
2015-03-25 15:05:25 -04:00
"RTN","utt5",43,0)
2017-07-10 13:17:43 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","utt5",44,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt5",45,0)
2017-07-10 13:17:43 -04:00
BADERROR ;
2015-03-25 15:05:25 -04:00
"RTN","utt5",46,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: %ut - Newed in EN^%zu
2015-03-25 15:05:25 -04:00
"RTN","utt5",47,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: %utt6cnt,%utt6var - if present, NEWED following top entry of routine %utt6
2015-03-25 15:05:25 -04:00
"RTN","utt5",48,0)
2017-07-10 13:17:43 -04:00
N X
2015-03-25 15:05:25 -04:00
"RTN","utt5",49,0)
2017-07-10 13:17:43 -04: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",50,0)
2017-07-10 13:17:43 -04:00
; following syntax error is on purpose to throw an error
2015-03-25 15:05:25 -04:00
"RTN","utt5",51,0)
2017-07-10 13:17:43 -04:00
S X= ; syntax error on purpose
2015-03-25 15:05:25 -04:00
"RTN","utt5",52,0)
2017-07-10 13:17:43 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","utt5",53,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt5",54,0)
2017-07-10 13:17:43 -04:00
CALLFAIL ;
2015-03-25 15:05:25 -04:00
"RTN","utt5",55,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: %ut - Newed in EN^%zu
2015-03-25 15:05:25 -04:00
"RTN","utt5",56,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: %utt6cnt,%utt6var - if present, NEWED following top entry of routine %utt6
2015-03-25 15:05:25 -04:00
"RTN","utt5",57,0)
2017-07-10 13:17:43 -04:00
N X
2015-03-25 15:05:25 -04:00
"RTN","utt5",58,0)
2017-07-10 13:17:43 -04: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",59,0)
2017-07-10 13:17:43 -04:00
D FAIL^%ut("Called FAIL to test it")
2015-03-25 15:05:25 -04:00
"RTN","utt5",60,0)
2017-07-10 13:17:43 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","utt5",61,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt5",62,0)
2017-07-10 13:17:43 -04:00
LEAKSOK ;
2015-03-25 15:05:25 -04:00
"RTN","utt5",63,0)
2017-07-10 13:17:43 -04:00
N CODE,LOCATN,MYVALS,X
2015-03-25 15:05:25 -04:00
"RTN","utt5",64,0)
2017-07-10 13:17:43 -04:00
;S CODE="S X=$$NOW^XLFDT()",LOCATN="LEAKSOK TEST",MYVALS("X")="" ; JLI 160912 replaced by code in next line so it is independent of VA KERNEL
2015-03-25 15:05:25 -04:00
"RTN","utt5",65,0)
2017-07-10 13:17:43 -04:00
S CODE="S X=$$NOW^%utt4()",LOCATN="LEAKSOK TEST",MYVALS("X")="" ; JLI 160912 replaced call to XLFDT with same code in %utt4 so it is independent of VA KERNEL
2015-03-25 15:05:25 -04:00
"RTN","utt5",66,0)
2017-07-10 13:17:43 -04:00
D CHKLEAKS^%ut(CODE,LOCATN,.MYVALS) ; should find no leaks
2015-03-25 15:05:25 -04:00
"RTN","utt5",67,0)
2017-07-10 13:17:43 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","utt5",68,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt5",69,0)
2017-07-10 13:17:43 -04:00
LEAKSBAD ;
2015-03-25 15:05:25 -04:00
"RTN","utt5",70,0)
2017-07-10 13:17:43 -04:00
N CODE,LOCATN,MYVALS,X
2015-03-25 15:05:25 -04:00
"RTN","utt5",71,0)
2017-07-10 13:17:43 -04:00
;S CODE="S X=$$NOW^XLFDT()",LOCATN="LEAKSBAD TEST - X NOT SPECIFIED" ; JLI 160912 replaced by code in next line so it is independent of VA KERNEL
2016-02-27 17:01:27 -05:00
"RTN","utt5",72,0)
2017-07-10 13:17:43 -04:00
S CODE="S X=$$NOW^%utt4()",LOCATN="LEAKSBAD TEST - X NOT SPECIFIED" ; JLI 160912 replaced call to XLFDT with same code in %utt4 so it is independent of VA KERNEL
2016-02-27 17:01:27 -05:00
"RTN","utt5",73,0)
2017-07-10 13:17:43 -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","utt5",74,0)
2017-07-10 13:17:43 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","utt5",75,0)
2017-07-10 13:17:43 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","utt5",76,0)
2017-07-10 13:17:43 -04:00
NVLDARG1 ;
2016-02-27 17:01:27 -05:00
"RTN","utt5",77,0)
2017-07-10 13:17:43 -04:00
D CHKEQ^%ut(1)
2015-03-25 15:05:25 -04:00
"RTN","utt5",78,0)
2017-07-10 13:17:43 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","utt5",79,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt5",80,0)
2017-07-10 13:17:43 -04:00
ISUTEST ;
2015-03-25 15:05:25 -04:00
"RTN","utt5",81,0)
2017-07-10 13:17:43 -04:00
D CHKTF^%ut($$ISUTEST^%ut,"ISUTEST returned FALSE!")
2015-03-25 15:05:25 -04:00
"RTN","utt5",82,0)
2017-07-10 13:17:43 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","utt5",83,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt5",84,0)
2017-07-10 13:17:43 -04:00
BADFORM1(X) ; @TEST should not be selected - arguments
2015-03-25 15:05:25 -04:00
"RTN","utt5",85,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: %ut - Newed in EN^%zu
2015-03-25 15:05:25 -04:00
"RTN","utt5",86,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: %utt6cnt,%utt6var - if present, NEWED following top entry of routine %utt6
2015-03-25 15:05:25 -04:00
"RTN","utt5",87,0)
2017-07-10 13:17:43 -04: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",88,0)
2017-07-10 13:17:43 -04:00
D CHKEQ^%ut(4,3,"SHOULD NOT BE SELECTED - ARGUMENTS - BADFORM1")
2015-03-25 15:05:25 -04:00
"RTN","utt5",89,0)
2017-07-10 13:17:43 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","utt5",90,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt5",91,0)
2017-07-10 13:17:43 -04:00
BADFORM2 ; ABC @TEST should not be selected - @TEST NOT FIRST
2015-03-25 15:05:25 -04:00
"RTN","utt5",92,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: %ut - Newed in EN^%zu
2015-03-25 15:05:25 -04:00
"RTN","utt5",93,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: %utt6cnt,%utt6var - if present, NEWED following top entry of routine %utt6
2015-03-25 15:05:25 -04:00
"RTN","utt5",94,0)
2017-07-10 13:17:43 -04:00
I $D(%utt6var) S %utt6cnt=$G(%utt6cnt)+1,^TMP("%utt5",$J,%utt6cnt,"BADFORM2")=""
2015-03-25 15:05:25 -04:00
"RTN","utt5",95,0)
2017-07-10 13:17:43 -04:00
D CHKEQ^%ut(4,3,"SHOULD NOT BE SELECTED - @TEST NOT FIRST - BADFORM2")
2015-03-25 15:05:25 -04:00
"RTN","utt5",96,0)
2017-07-10 13:17:43 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","utt5",97,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt5",98,0)
2017-07-10 13:17:43 -04:00
STARTUP ;
2015-03-25 15:05:25 -04:00
"RTN","utt5",99,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: %utt6cnt,%utt6var - if present, NEWED following top entry of routine %utt6
2015-03-25 15:05:25 -04:00
"RTN","utt5",100,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: KBANCOUNT created here, killed in SHUTDOWN
2015-03-25 15:05:25 -04:00
"RTN","utt5",101,0)
2017-07-10 13:17:43 -04:00
I $D(%utt6var),$D(^TMP("%utt5",$J)) K ^TMP("%utt5",$J)
2015-03-25 15:05:25 -04:00
"RTN","utt5",102,0)
2017-07-10 13:17:43 -04:00
I $D(%utt6var) S %utt6cnt=$G(%utt6cnt)+1,^TMP("%utt5",$J,%utt6cnt,"STARTUP")=""
2015-03-25 15:05:25 -04:00
"RTN","utt5",103,0)
2017-07-10 13:17:43 -04:00
; following brought from %utt1, since only one STARTUP can RUN in a set
2015-03-25 15:05:25 -04:00
"RTN","utt5",104,0)
2017-07-10 13:17:43 -04:00
I '$D(%utt6var) D
2015-03-25 15:05:25 -04:00
"RTN","utt5",105,0)
2017-07-10 13:17:43 -04:00
. S ^TMP($J,"%ut","STARTUP")=""
2015-03-25 15:05:25 -04:00
"RTN","utt5",106,0)
2017-07-10 13:17:43 -04:00
. S KBANCOUNT=1
2015-03-25 15:05:25 -04:00
"RTN","utt5",107,0)
2017-07-10 13:17:43 -04:00
. Q
2015-03-25 15:05:25 -04:00
"RTN","utt5",108,0)
2017-07-10 13:17:43 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","utt5",109,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt5",110,0)
2017-07-10 13:17:43 -04:00
SHUTDOWN ;
2015-03-25 15:05:25 -04:00
"RTN","utt5",111,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: %utt6cnt,%utt6var - if present, NEWED following top entry of routine %utt6
2015-03-25 15:05:25 -04:00
"RTN","utt5",112,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: KBANCOUNT created in STARTUP, killed here
2015-03-25 15:05:25 -04:00
"RTN","utt5",113,0)
2017-07-10 13:17:43 -04:00
I $D(%utt6var) S %utt6cnt=$G(%utt6cnt)+1,^TMP("%utt5",$J,%utt6cnt,"SHUTDOWN")=""
2015-03-25 15:05:25 -04:00
"RTN","utt5",114,0)
2017-07-10 13:17:43 -04:00
; following brought from %utt1, since only one SHUTDOWN can RUN in a set
2015-03-25 15:05:25 -04:00
"RTN","utt5",115,0)
2017-07-10 13:17:43 -04:00
I '$D(%utt6var) D
2015-03-25 15:05:25 -04:00
"RTN","utt5",116,0)
2017-07-10 13:17:43 -04:00
. K ^TMP($J,"%ut","STARTUP")
2015-03-25 15:05:25 -04:00
"RTN","utt5",117,0)
2017-07-10 13:17:43 -04:00
. K KBANCOUNT
2015-03-25 15:05:25 -04:00
"RTN","utt5",118,0)
2017-07-10 13:17:43 -04:00
. Q
2015-03-25 15:05:25 -04:00
"RTN","utt5",119,0)
2017-07-10 13:17:43 -04:00
Q
2015-03-25 15:05:25 -04:00
"RTN","utt5",120,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt5",121,0)
2017-07-10 13:17:43 -04:00
SETUP ;
2016-02-27 17:01:27 -05:00
"RTN","utt5",122,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: %utt6cnt,%utt6var - if present, NEWED following top entry of routine %utt6
2016-02-27 17:01:27 -05:00
"RTN","utt5",123,0)
2017-07-10 13:17:43 -04:00
I $D(%utt6var) S %utt6cnt=$G(%utt6cnt)+1,^TMP("%utt5",$J,%utt6cnt,"SETUP")=""
2016-02-27 17:01:27 -05:00
"RTN","utt5",124,0)
2017-07-10 13:17:43 -04:00
Q
2016-02-27 17:01:27 -05:00
"RTN","utt5",125,0)
2017-07-10 13:17:43 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","utt5",126,0)
2017-07-10 13:17:43 -04:00
TEARDOWN ;
2016-02-27 17:01:27 -05:00
"RTN","utt5",127,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: %utt6cnt,%utt6var - if present, NEWED following top entry of routine %utt6
2016-02-27 17:01:27 -05:00
"RTN","utt5",128,0)
2017-07-10 13:17:43 -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",129,0)
2017-07-10 13:17:43 -04:00
Q
2016-02-27 17:01:27 -05:00
"RTN","utt5",130,0)
2017-07-10 13:17:43 -04:00
;
2016-02-27 17:01:27 -05:00
"RTN","utt5",131,0)
2017-07-10 13:17:43 -04:00
XTENT ;
2016-02-27 17:01:27 -05:00
"RTN","utt5",132,0)
2017-07-10 13:17:43 -04:00
;;OLDSTYLE; identify old style test indicator functionality
2016-02-27 17:01:27 -05:00
"RTN","utt5",133,0)
2017-07-10 13:17:43 -04:00
;;OLDSTYL1; identify old style test indicator 2
2016-02-27 17:01:27 -05:00
"RTN","utt5",134,0)
2017-07-10 13:17:43 -04:00
;;BADCHKEQ; CHKEQ should fail on unequal value
2016-02-27 17:01:27 -05:00
"RTN","utt5",135,0)
2017-07-10 13:17:43 -04:00
;;BADCHKTF; CHKTF should fail on false value
2016-02-27 17:01:27 -05:00
"RTN","utt5",136,0)
2017-07-10 13:17:43 -04:00
;;BADERROR; throws an error on purpose
2016-02-27 17:01:27 -05:00
"RTN","utt5",137,0)
2017-07-10 13:17:43 -04:00
;;CALLFAIL; called FAIL to test it
2016-02-27 17:01:27 -05:00
"RTN","utt5",138,0)
2017-07-10 13:17:43 -04:00
;;LEAKSOK;check leaks should be ok
2017-02-12 23:15:29 -05:00
"RTN","utt5",139,0)
2017-07-10 13:17:43 -04:00
;;LEAKSBAD;check leaks with leak
2017-02-12 23:15:29 -05:00
"RTN","utt5",140,0)
2017-07-10 13:17:43 -04:00
;;NVLDARG1;check invalid arg in CHKEQ
"RTN","utt5",141,0)
2015-03-25 15:05:25 -04:00
;;ISUTEST;check ISUTEST inside unit test
"RTN","utt6")
2017-07-10 13:17:43 -04:00
0^9^B41667626
2015-03-25 15:05:25 -04:00
"RTN","utt6",1,0)
2017-07-10 13:17:43 -04:00
%utt6 ;JLI - Unit tests for MUnit functionality ;04/26/17 16:26
2015-03-25 15:05:25 -04:00
"RTN","utt6",2,0)
2017-07-10 13:17:43 -04:00
;;1.5;MASH UTILITIES;;Jul 8, 2017;Build 13
2015-03-25 15:05:25 -04:00
"RTN","utt6",3,0)
2017-07-10 13:17:43 -04:00
; Submitted to OSEHRA Jul 8, 2017 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)
2017-02-12 23:15:29 -05:00
D VERBOSE
2015-03-25 15:05:25 -04:00
"RTN","utt6",15,0)
2017-02-12 23:15:29 -05:00
Q
2016-02-27 17:01:27 -05:00
"RTN","utt6",16,0)
2017-02-12 23:15:29 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt6",17,0)
2017-02-12 23:15:29 -05:00
VERBOSE3 ;
2015-03-25 15:05:25 -04:00
"RTN","utt6",18,0)
2017-02-12 23:15:29 -05:00
N VERBOSE
2015-03-25 15:05:25 -04:00
"RTN","utt6",19,0)
2017-02-12 23:15:29 -05:00
S VERBOSE=3
2016-02-27 17:01:27 -05:00
"RTN","utt6",20,0)
2017-02-12 23:15:29 -05:00
D VERBOSE
2015-03-25 15:05:25 -04:00
"RTN","utt6",21,0)
2017-02-12 23:15:29 -05:00
Q
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)
2017-02-12 23:15:29 -05:00
VERBOSE2 ;
2015-03-25 15:05:25 -04:00
"RTN","utt6",24,0)
2017-02-12 23:15:29 -05:00
N VERBOSE
2015-03-25 15:05:25 -04:00
"RTN","utt6",25,0)
2017-02-12 23:15:29 -05:00
S VERBOSE=2
2015-03-25 15:05:25 -04:00
"RTN","utt6",26,0)
2017-02-12 23:15:29 -05:00
D VERBOSE
2015-03-25 15:05:25 -04:00
"RTN","utt6",27,0)
2017-02-12 23:15:29 -05:00
Q
2015-03-25 15:05:25 -04:00
"RTN","utt6",28,0)
2017-02-12 23:15:29 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt6",29,0)
2017-02-12 23:15:29 -05:00
VERBOSE ;
2015-03-25 15:05:25 -04:00
"RTN","utt6",30,0)
2017-02-12 23:15:29 -05:00
I '$D(VERBOSE) N VERBOSE S VERBOSE=1
2015-03-25 15:05:25 -04:00
"RTN","utt6",31,0)
2017-02-12 23:15:29 -05:00
N ZZUTCNT,UTTCNT,UTTEXPCT,UTTI,UTTX,ZZUTRSLT,%utt5,%utt6,%utt6var
2015-03-25 15:05:25 -04:00
"RTN","utt6",32,0)
2017-02-12 23:15:29 -05:00
I $T(+1^DIC)'="" D CMNDLINE
2015-03-25 15:05:25 -04:00
"RTN","utt6",33,0)
2017-02-12 23:15:29 -05:00
W !!,"NOW RUNNING UNIT TESTS FOR %uttcovr",!!
2015-03-25 15:05:25 -04:00
"RTN","utt6",34,0)
2017-02-12 23:15:29 -05:00
D EN^%ut("%uttcovr",VERBOSE)
2016-04-11 18:26:37 -04:00
"RTN","utt6",35,0)
2017-02-12 23:15:29 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt6",36,0)
2017-02-12 23:15:29 -05:00
; now run the unit tests in this routine
2015-03-25 15:05:25 -04:00
"RTN","utt6",37,0)
2017-02-12 23:15:29 -05:00
W !!,"NOW RUNNING UNIT TESTS FOR %utt6",!!
2015-03-25 15:05:25 -04:00
"RTN","utt6",38,0)
2017-02-12 23:15:29 -05:00
D EN^%ut("%utt6",VERBOSE)
2015-03-25 15:05:25 -04:00
"RTN","utt6",39,0)
2017-02-12 23:15:29 -05: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",40,0)
2017-02-12 23:15:29 -05:00
; clean up after GUI calls as well
2015-03-25 15:05:25 -04:00
"RTN","utt6",41,0)
2017-02-12 23:15:29 -05:00
K ^TMP("GUI-MUNIT",$J),^TMP("GUINEXT",$J),^TMP("MUNIT-%utRSLT",$J)
2015-03-25 15:05:25 -04:00
"RTN","utt6",42,0)
2017-02-12 23:15:29 -05:00
Q
2015-03-25 15:05:25 -04:00
"RTN","utt6",43,0)
2017-02-12 23:15:29 -05:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt6",44,0)
2017-02-12 23:15:29 -05:00
CMNDLINE ;
2015-03-25 15:05:25 -04:00
"RTN","utt6",45,0)
2017-07-10 13:17:43 -04:00
N %utt6
2015-03-25 15:05:25 -04:00
"RTN","utt6",46,0)
2017-07-10 13:17:43 -04:00
I '$D(VERBOSE) N VERBOSE S VERBOSE=1
2015-03-25 15:05:25 -04:00
"RTN","utt6",47,0)
2017-07-10 13:17:43 -04:00
W !!,"RUNNING COMMAND LINE TESTS VIA DOSET^%ut",!
2015-03-25 15:05:25 -04:00
"RTN","utt6",48,0)
2017-07-10 13:17:43 -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",49,0)
2017-02-12 23:15:29 -05:00
;
2017-07-10 13:17:43 -04:00
"RTN","utt6",50,0)
W !!!,"Running command line tests by RUNSET^%ut",!
2015-03-25 15:05:25 -04:00
"RTN","utt6",51,0)
2017-07-10 13:17:43 -04:00
D RUNSET^%ut("TESTS FOR UNIT TEST ROUTINES")
2015-03-25 15:05:25 -04:00
"RTN","utt6",52,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt6",53,0)
2017-07-10 13:17:43 -04:00
; 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",54,0)
2017-07-10 13:17:43 -04:00
; silent to the user
2015-03-25 15:05:25 -04:00
"RTN","utt6",55,0)
2017-07-10 13:17:43 -04:00
D GUISET^%ut(.%utt6,1)
2015-03-25 15:05:25 -04:00
"RTN","utt6",56,0)
2017-07-10 13:17:43 -04:00
K ^TMP("%utt6_GUISET",$J) M ^TMP("%utt6_GUISET",$J)=@%utt6
2015-03-25 15:05:25 -04:00
"RTN","utt6",57,0)
2017-07-10 13:17:43 -04:00
;
2015-03-25 15:05:25 -04:00
"RTN","utt6",58,0)
2017-07-10 13:17:43 -04:00
W !!!,"RUNNING COMMAND LINE UNIT TESTS FOR %utt5",!
2015-03-25 15:05:25 -04:00
"RTN","utt6",59,0)
2017-07-10 13:17:43 -04:00
N ZZUTCNT,UTTCNT,UTTEXPCT,UTTI,UTTX,ZZUTRSLT
2015-03-25 15:05:25 -04:00
"RTN","utt6",60,0)
2017-07-10 13:17:43 -04:00
S ZZUTCNT=0
2015-03-25 15:05:25 -04:00
"RTN","utt6",61,0)
2017-07-10 13:17:43 -04:00
K ^TMP("%utt5",$J) ; kill any contents of data storage
2016-04-11 18:26:37 -04:00
"RTN","utt6",62,0)
2017-07-10 13:17:43 -04:00
D EN^%ut("%utt5",VERBOSE) ; should do STARTUP(1x), then SETUP, test, TEARDOWN (each together 3x) and SHUTDOWN (1x)
2017-02-12 23:15:29 -05:00
"RTN","utt6",63,0)
2017-07-10 13:17:43 -04:00
K ^TMP("%utt5_C",$J) M ^TMP("%utt5_C",$J)=^TMP("%utt5",$J)
2017-02-12 23:15:29 -05:00
"RTN","utt6",64,0)
2017-07-10 13:17:43 -04:00
;
2017-02-12 23:15:29 -05:00
"RTN","utt6",65,0)
2017-07-10 13:17:43 -04:00
; now run unit tests by GUI - first determines unit test tags
2017-02-12 23:15:29 -05:00
"RTN","utt6",66,0)
2017-07-10 13:17:43 -04:00
W !!!,"RUNNING UNIT TESTS FOR %utt5 VIA GUI CALLS - Silent",!
2017-02-12 23:15:29 -05:00
"RTN","utt6",67,0)
2017-07-10 13:17:43 -04:00
S ZZUTCNT=0
2017-02-12 23:15:29 -05:00
"RTN","utt6",68,0)
2017-07-10 13:17:43 -04:00
K ^TMP("%utt5",$J),^TMP("%utt6",$J)
2017-02-12 23:15:29 -05:00
"RTN","utt6",69,0)
2017-07-10 13:17:43 -04:00
D GUILOAD^%ut(.%utt6,"%utt5")
2017-02-12 23:15:29 -05:00
"RTN","utt6",70,0)
2017-07-10 13:17:43 -04:00
M ^TMP("%utt6",$J)=@%utt6
2017-02-12 23:15:29 -05:00
"RTN","utt6",71,0)
2017-07-10 13:17:43 -04:00
S %utt6=$NA(^TMP("%utt6",$J))
2017-02-12 23:15:29 -05:00
"RTN","utt6",72,0)
2017-07-10 13:17:43 -04:00
; then run each tag separately
2017-02-12 23:15:29 -05:00
"RTN","utt6",73,0)
2017-07-10 13:17:43 -04:00
; UTTCNT is count of unit test tags, which can be determined for GUI call for each unit test tag
2017-02-12 23:15:29 -05:00
"RTN","utt6",74,0)
2017-07-10 13:17:43 -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))
2017-02-12 23:15:29 -05:00
"RTN","utt6",75,0)
2017-07-10 13:17:43 -04:00
; and close it with a null routine name
2017-02-12 23:15:29 -05:00
"RTN","utt6",76,0)
2017-07-10 13:17:43 -04:00
D GUINEXT^%ut(.ZZUTRSLT,"")
2017-02-12 23:15:29 -05:00
"RTN","utt6",77,0)
2017-07-10 13:17:43 -04:00
K ^TMP("%utt5_G",$J) M ^TMP("%utt5_G",$J)=^TMP("%utt5",$J)
2017-02-12 23:15:29 -05:00
"RTN","utt6",78,0)
2017-07-10 13:17:43 -04:00
S UTTEXPCT=2+(3*UTTCNT) ; number of lines that should be in the global nodes for command line and GUI
2017-02-12 23:15:29 -05:00
"RTN","utt6",79,0)
2017-07-10 13:17:43 -04:00
Q
2017-02-12 23:15:29 -05:00
"RTN","utt6",80,0)
2017-07-10 13:17:43 -04:00
;
2017-02-12 23:15:29 -05:00
"RTN","utt6",81,0)
2017-07-10 13:17:43 -04:00
; WARNING -- WARNING -- WARNING
2017-02-12 23:15:29 -05:00
"RTN","utt6",82,0)
2017-07-10 13:17:43 -04:00
; If the number of NEW STYLE tests in %utt5 is increased (it is currently 1), then the following
2017-02-12 23:15:29 -05:00
"RTN","utt6",83,0)
2017-07-10 13:17:43 -04:00
; test will need to be updated to reflect the change(s)
2017-02-12 23:15:29 -05:00
"RTN","utt6",84,0)
2017-07-10 13:17:43 -04:00
; END OF WARNING -- END OF WARNING -- END OF WARNING
2017-02-12 23:15:29 -05:00
"RTN","utt6",85,0)
2017-07-10 13:17:43 -04:00
;
2017-02-12 23:15:29 -05:00
"RTN","utt6",86,0)
2017-07-10 13:17:43 -04:00
SETROUS ; @TEST - generate array with indices of routines to exclude
2017-02-12 23:15:29 -05:00
"RTN","utt6",87,0)
2017-07-10 13:17:43 -04:00
N ROU,XCLDROUS,ROULIST
2017-02-12 23:15:29 -05:00
"RTN","utt6",88,0)
2017-07-10 13:17:43 -04:00
S XCLDROUS(1)="ROU1NAME,ROU2NAME"
2017-02-12 23:15:29 -05:00
"RTN","utt6",89,0)
2017-07-10 13:17:43 -04:00
S XCLDROUS("ROUNAME3")="ROUNAME4,ROUNAME5"
2017-02-12 23:15:29 -05:00
"RTN","utt6",90,0)
2017-07-10 13:17:43 -04:00
D SETROUS^%utcover(.ROULIST,.XCLDROUS,1)
2017-02-12 23:15:29 -05:00
"RTN","utt6",91,0)
2017-07-10 13:17:43 -04:00
D CHKTF('$D(ROULIST(1)),"SETROUS returned number for routine")
2017-02-12 23:15:29 -05:00
"RTN","utt6",92,0)
2017-07-10 13:17:43 -04:00
D CHKTF($D(ROULIST("ROU1NAME")),"Didn't get first name on numeric subscript")
2017-02-12 23:15:29 -05:00
"RTN","utt6",93,0)
2017-07-10 13:17:43 -04:00
D CHKTF($D(ROULIST("ROU2NAME")),"Didn't get second name on numeric subscript")
2017-02-12 23:15:29 -05:00
"RTN","utt6",94,0)
2017-07-10 13:17:43 -04:00
D SETROUS^%utcover(.ROULIST,.XCLDROUS,"ROUNAME3")
2017-02-12 23:15:29 -05:00
"RTN","utt6",95,0)
2017-07-10 13:17:43 -04:00
D CHKTF($D(ROULIST("ROUNAME3")),"Didn't get name for routine argument")
2017-02-12 23:15:29 -05:00
"RTN","utt6",96,0)
2017-07-10 13:17:43 -04:00
D CHKTF($D(ROULIST("ROUNAME4")),"Didn't get first name on routine subscript")
2017-02-12 23:15:29 -05:00
"RTN","utt6",97,0)
2017-07-10 13:17:43 -04:00
D CHKTF($D(ROULIST("ROUNAME5")),"Didn't get second name on routine subscript")
2017-02-12 23:15:29 -05:00
"RTN","utt6",98,0)
2017-07-10 13:17:43 -04:00
Q
2017-02-12 23:15:29 -05:00
"RTN","utt6",99,0)
2017-07-10 13:17:43 -04:00
;
2017-02-12 23:15:29 -05:00
"RTN","utt6",100,0)
2017-07-10 13:17:43 -04:00
NEWSTYLE ; tests return of valid new style or @TEST indicators
2017-02-12 23:15:29 -05:00
"RTN","utt6",101,0)
2017-07-10 13:17:43 -04:00
N LIST
2017-02-12 23:15:29 -05:00
"RTN","utt6",102,0)
2017-07-10 13:17:43 -04:00
D NEWSTYLE^%ut1(.LIST,"%utt5")
2017-02-12 23:15:29 -05:00
"RTN","utt6",103,0)
2017-07-10 13:17:43 -04:00
D CHKEQ^%ut(LIST,1,"Returned an incorrect number ("_LIST_") of New Style indicators - should be one")
2017-02-12 23:15:29 -05:00
"RTN","utt6",104,0)
2017-07-10 13:17:43 -04:00
I LIST>0 D CHKEQ^%ut(LIST(1),"@^NEWSTYLE^identify new style test indicator functionality","Returned incorrect TAG^reason "_LIST(1))
2017-02-12 23:15:29 -05:00
"RTN","utt6",105,0)
2017-07-10 13:17:43 -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)")
2017-02-12 23:15:29 -05:00
"RTN","utt6",106,0)
2017-07-10 13:17:43 -04:00
; the following is basically just for coverage
2017-02-12 23:15:29 -05:00
"RTN","utt6",107,0)
2017-07-10 13:17:43 -04:00
D PICKSET^%ut
2017-02-12 23:15:29 -05:00
"RTN","utt6",108,0)
2017-07-10 13:17:43 -04:00
Q
2017-02-12 23:15:29 -05:00
"RTN","utt6",109,0)
2017-07-10 13:17:43 -04:00
;
2017-02-12 23:15:29 -05:00
"RTN","utt6",110,0)
2017-07-10 13:17:43 -04:00
CKGUISET ;
2017-02-12 23:15:29 -05:00
"RTN","utt6",111,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: %utt6var - if present, is NEWed and created in code following VERBOSE
2017-02-12 23:15:29 -05:00
"RTN","utt6",112,0)
2017-07-10 13:17:43 -04:00
I '$D(%utt6var) Q
2017-02-12 23:15:29 -05:00
"RTN","utt6",113,0)
2017-07-10 13:17:43 -04:00
N MAX
2017-02-12 23:15:29 -05:00
"RTN","utt6",114,0)
2017-07-10 13:17:43 -04:00
S MAX=$O(^TMP("%utt6_GUISET",$J,""),-1)
2017-02-12 23:15:29 -05:00
"RTN","utt6",115,0)
2017-07-10 13:17:43 -04:00
D CHKTF(^TMP("%utt6_GUISET",$J,MAX)["%utt6^NEWSTYLE","GUISET returned incorrect list")
2017-02-12 23:15:29 -05:00
"RTN","utt6",116,0)
2017-07-10 13:17:43 -04:00
Q
2017-02-12 23:15:29 -05:00
"RTN","utt6",117,0)
2017-07-10 13:17:43 -04:00
;
2017-02-12 23:15:29 -05:00
"RTN","utt6",118,0)
2017-07-10 13:17:43 -04:00
CHKCMDLN ; check command line processing of %utt5
2017-02-12 23:15:29 -05:00
"RTN","utt6",119,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: UTTEXPCT,%utt6var - if present NEWed and created in code following VERBOSE tag
2017-02-12 23:15:29 -05:00
"RTN","utt6",120,0)
2017-07-10 13:17:43 -04:00
I '$D(%utt6var) Q
2017-02-12 23:15:29 -05:00
"RTN","utt6",121,0)
2017-07-10 13:17:43 -04:00
D CHKTF($D(^TMP("%utt5_C",$J,UTTEXPCT))=10,"Not enough entries in %utt5 expected "_UTTEXPCT)
2017-02-12 23:15:29 -05:00
"RTN","utt6",122,0)
2017-07-10 13:17:43 -04:00
D CHKTF($D(^TMP("%utt5_C",$J,UTTEXPCT+1))=0,"Too many entries in %utt5 expected "_UTTEXPCT)
2017-02-12 23:15:29 -05:00
"RTN","utt6",123,0)
2017-07-10 13:17:43 -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'")
2017-02-12 23:15:29 -05:00
"RTN","utt6",124,0)
2017-07-10 13:17:43 -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'")
2017-02-12 23:15:29 -05:00
"RTN","utt6",125,0)
2017-07-10 13:17:43 -04:00
Q
2017-02-12 23:15:29 -05:00
"RTN","utt6",126,0)
2017-07-10 13:17:43 -04:00
;
2017-02-12 23:15:29 -05:00
"RTN","utt6",127,0)
2017-07-10 13:17:43 -04:00
CHKGUI ; check GUI processing of %utt5
2017-02-12 23:15:29 -05:00
"RTN","utt6",128,0)
2017-07-10 13:17:43 -04:00
; ZEXCEPT: UTTEXPCT,%utt6var - if present NEWed and created in code following VERBOSE tag
2017-02-12 23:15:29 -05:00
"RTN","utt6",129,0)
2017-07-10 13:17:43 -04:00
I '$D(%utt6var) Q
2017-02-12 23:15:29 -05:00
"RTN","utt6",130,0)
2017-07-10 13:17:43 -04:00
D CHKTF($D(^TMP("%utt5_G",$J,UTTEXPCT))=10,"Not enough entries in %utt5 expected "_UTTEXPCT)
2017-02-12 23:15:29 -05:00
"RTN","utt6",131,0)
2017-07-10 13:17:43 -04:00
D CHKTF($D(^TMP("%utt5_G",$J,UTTEXPCT+1))=0,"Too many entries in %utt5 expected "_UTTEXPCT)
2017-02-12 23:15:29 -05:00
"RTN","utt6",132,0)
2017-07-10 13:17:43 -04:00
D CHKTF($O(^TMP("%utt5_G",$J,1,""))="STARTUP","Incorrect function for entry 1,'"_$O(^TMP("%utt5Z_G",1,""))_"' should be 'STARTUP'")
2017-02-12 23:15:29 -05:00
"RTN","utt6",133,0)
2017-07-10 13:17:43 -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'")
2017-02-12 23:15:29 -05:00
"RTN","utt6",134,0)
2017-07-10 13:17:43 -04:00
Q
2017-02-12 23:15:29 -05:00
"RTN","utt6",135,0)
2017-07-10 13:17:43 -04:00
;
2017-02-12 23:15:29 -05:00
"RTN","utt6",136,0)
2017-07-10 13:17:43 -04:00
CHKTF(VALUE,MESSAGE) ;
2017-02-12 23:15:29 -05:00
"RTN","utt6",137,0)
2017-07-10 13:17:43 -04:00
D CHKTF^%ut($G(VALUE),$G(MESSAGE))
2017-02-12 23:15:29 -05:00
"RTN","utt6",138,0)
2017-07-10 13:17:43 -04:00
Q
2017-02-12 23:15:29 -05:00
"RTN","utt6",139,0)
2017-07-10 13:17:43 -04:00
;
2017-02-12 23:15:29 -05:00
"RTN","utt6",140,0)
2017-07-10 13:17:43 -04:00
XTENT ;
2017-02-12 23:15:29 -05:00
"RTN","utt6",141,0)
2017-07-10 13:17:43 -04:00
;;CHKCMDLN;check command line processing of %utt5
2017-02-12 23:15:29 -05:00
"RTN","utt6",142,0)
2017-07-10 13:17:43 -04:00
;;CHKGUI;check GUI processing of %utt5
"RTN","utt6",143,0)
;;CKGUISET;check list of tests returned by GUISET
"RTN","utt6",144,0)
2015-03-25 15:05:25 -04:00
;;NEWSTYLE;test return of valid new style or @TEST indicators
2017-07-10 13:17:43 -04:00
"RTN","utt7")
0^11^B45754056
"RTN","utt7",1,0)
%utt7 ;JLI/JIVEY@JIVEYSOFT.COM - Unit tests for MUnit !TEST functionality ;04/26/17 21:41
"RTN","utt7",2,0)
;;1.5;MASH UTILITIES;;Jul 8, 2017;Build 13
"RTN","utt7",3,0)
; Submitted to OSEHRA Jul 8, 2017 by Joel L. Ivey under the Apache 2 license (http://www.apache.org/licenses/LICENSE-2.0.html)
"RTN","utt7",4,0)
; Original routine authored by Joel L. Ivey 04/2017
"RTN","utt7",5,0)
;
"RTN","utt7",6,0)
; This routine is a copy of %utt1 modified by changing tag T1 to !TEST instead of @Test and adding !TEST to tag T5 to test
"RTN","utt7",7,0)
; the handling of !TEST functionality, so that only only those tags are run while tags marked @TEST or under XTENT are ignored
"RTN","utt7",8,0)
;
"RTN","utt7",9,0)
W !,"Running tests in VERBOSE mode"
"RTN","utt7",10,0)
N X R !,"ENTER RETURN TO CONTINUE: ",X:3
"RTN","utt7",11,0)
D EN^%ut($T(+0),3) ; Run tests here.
"RTN","utt7",12,0)
I $G(^TMP("%ut",$J,"UTVALS"))'="7^2^5^2^0" W !!,"The test of !TEST failed, since expected results were:",!,"Ran 7 Routines, 2 Entry Tags",!,"Checked 5 tests, with 2 failures and encountered 0 errors."
"RTN","utt7",13,0)
Q
"RTN","utt7",14,0)
;
"RTN","utt7",15,0)
VERBOSE(VERBSITY) ;
"RTN","utt7",16,0)
I (+$G(VERBSITY)<1)!($G(VERBSITY)>3) N VERBSITY S VERBSITY=3
"RTN","utt7",17,0)
W !!,"Running tests in VERBOSE mode with "_$S(VERBSITY=1:"no timing",VERBSITY=2:"whole millisecond timing",3:"fractional millisecond timing"),!
"RTN","utt7",18,0)
D EN^%ut($T(+0),VERBSITY) ; Run tests here, be verbose.
"RTN","utt7",19,0)
QUIT
"RTN","utt7",20,0)
;
"RTN","utt7",21,0)
STARTUP ; M-Unit Start-Up - This runs before anything else.
"RTN","utt7",22,0)
; ZEXCEPT: KBANCOUNT - created here, removed in SHUTDOWN
"RTN","utt7",23,0)
S ^TMP($J,"%ut","STARTUP")=""
"RTN","utt7",24,0)
S KBANCOUNT=1
"RTN","utt7",25,0)
QUIT
"RTN","utt7",26,0)
;
"RTN","utt7",27,0)
SHUTDOWN ; M-Unit Shutdown - This runs after everything else is done.
"RTN","utt7",28,0)
; ZEXCEPT: KBANCOUNT - created in STARTUP, removed here
"RTN","utt7",29,0)
K ^TMP($J,"%ut","STARTUP")
"RTN","utt7",30,0)
K KBANCOUNT
"RTN","utt7",31,0)
QUIT
"RTN","utt7",32,0)
;
"RTN","utt7",33,0)
;
"RTN","utt7",34,0)
;
"RTN","utt7",35,0)
SETUP ; This runs before every test.
"RTN","utt7",36,0)
; ZEXCEPT: KBANCOUNT - created in STARTUP, removed in SHUTDOWN
"RTN","utt7",37,0)
S KBANCOUNT=KBANCOUNT+1
"RTN","utt7",38,0)
QUIT
"RTN","utt7",39,0)
;
"RTN","utt7",40,0)
TEARDOWN ; This runs after every test
"RTN","utt7",41,0)
; ZEXCEPT: KBANCOUNT - created in STARTUP, removed in SHUTDOWN
"RTN","utt7",42,0)
S KBANCOUNT=KBANCOUNT-1
"RTN","utt7",43,0)
QUIT
"RTN","utt7",44,0)
;
"RTN","utt7",45,0)
;
"RTN","utt7",46,0)
;
"RTN","utt7",47,0)
T1 ; !TEST - Make sure Start-up Ran
"RTN","utt7",48,0)
D CHKTF($D(^TMP($J,"%ut","STARTUP")),"Start-up node on ^TMP must exist")
"RTN","utt7",49,0)
QUIT
"RTN","utt7",50,0)
;
"RTN","utt7",51,0)
T2 ; @TEST - Make sure Set-up runs
"RTN","utt7",52,0)
; ZEXCEPT: KBANCOUNT - created in STARTUP, removed in SHUTDOWN
"RTN","utt7",53,0)
D CHKEQ(KBANCOUNT,2,"KBANCount not incremented properly at SETUP")
"RTN","utt7",54,0)
QUIT
"RTN","utt7",55,0)
;
"RTN","utt7",56,0)
T3 ; @TEST - Make sure Teardown runs
"RTN","utt7",57,0)
; ZEXCEPT: KBANCOUNT - created in STARTUP, removed in SHUTDOWN
"RTN","utt7",58,0)
D CHKEQ(KBANCOUNT,2,"KBANCount not decremented properly at TEARDOWN")
"RTN","utt7",59,0)
QUIT
"RTN","utt7",60,0)
;
"RTN","utt7",61,0)
T4 ; Specified in XTMTAG
"RTN","utt7",62,0)
; 140731 JLI - note that this will fail when run from the GUI runner, since it calls each tag separately
"RTN","utt7",63,0)
; ZEXCEPT: %utETRY - newed and created in EN1^%ut
"RTN","utt7",64,0)
; ZEXCEPT: %utGUI -- CONDITIONALLY DEFINED BY GUINEXT^%ut
"RTN","utt7",65,0)
I $G(%utGUI) D CHKEQ(%utETRY,"T4","T4 should be the value for %utETRY in the GUI Runner")
"RTN","utt7",66,0)
I '$G(%utGUI) D CHKEQ(%utETRY(4),"T4","T4 should be the collected as the fourth entry in %utETRY")
"RTN","utt7",67,0)
QUIT
"RTN","utt7",68,0)
;
"RTN","utt7",69,0)
T5 ; !test - ditto
"RTN","utt7",70,0)
; ZEXCEPT: %ut - NEWed and created in EN1^%ut
"RTN","utt7",71,0)
D CHKTF(0,"This is an intentional failure")
"RTN","utt7",72,0)
D CHKEQ(%ut("FAIL"),1,"By this point, we should have failed one test")
"RTN","utt7",73,0)
D FAIL^%ut("Intentionally throwing a failure")
"RTN","utt7",74,0)
D CHKEQ(%ut("FAIL"),2,"By this point, we should have failed two tests")
"RTN","utt7",75,0)
; S %ut("FAIL")=0 ; Okay... Boy's and Girls... as the developer I can do that.
"RTN","utt7",76,0)
QUIT
"RTN","utt7",77,0)
;
"RTN","utt7",78,0)
T6 ; ditto
"RTN","utt7",79,0)
; ZEXCEPT: %ut - NEWed and created in EN1^%ut
"RTN","utt7",80,0)
N TESTCOUNT S TESTCOUNT=%ut("CHK")
"RTN","utt7",81,0)
D SUCCEED^%ut
"RTN","utt7",82,0)
D SUCCEED^%ut
"RTN","utt7",83,0)
D CHKEQ(%ut("CHK"),TESTCOUNT+2,"Succeed should increment the number of tests")
"RTN","utt7",84,0)
QUIT
"RTN","utt7",85,0)
;
"RTN","utt7",86,0)
T7 ; Make sure we write to principal even though we are on another device
"RTN","utt7",87,0)
; This is a rather difficult test to carry out for GT.M and Cache...
"RTN","utt7",88,0)
; ZEXCEPT: GetEnviron,Util,delete,newversion,readonly - not really variables
"RTN","utt7",89,0)
N D
"RTN","utt7",90,0)
I $$GETSYS^%ut()=47 S D="/tmp/test.txt" ; All GT.M ; VMS not supported.
"RTN","utt7",91,0)
I $$GETSYS^%ut()=0 D ; All Cache
"RTN","utt7",92,0)
. I $ZVERSION(1)=2 S D=$SYSTEM.Util.GetEnviron("temp")_"\test.txt" I 1 ; Windows
"RTN","utt7",93,0)
. E S D="/tmp/test.txt" ; not windows; VMS not supported.
"RTN","utt7",94,0)
I $$GETSYS^%ut()=0 O D:"NWS" ; Cache new file
"RTN","utt7",95,0)
I $$GETSYS^%ut()=47 O D:(newversion) ; GT.M new file
"RTN","utt7",96,0)
U D
"RTN","utt7",97,0)
WRITE "HELLO",!
"RTN","utt7",98,0)
WRITE "HELLO",!
"RTN","utt7",99,0)
C D
"RTN","utt7",100,0)
;
"RTN","utt7",101,0)
; Now open back the file, and read the hello, but open in read only so
"RTN","utt7",102,0)
; M-Unit will error out if it will write something out there.
"RTN","utt7",103,0)
;
"RTN","utt7",104,0)
I $$GETSYS^%ut()=0 O D:"R"
"RTN","utt7",105,0)
I $$GETSYS^%ut()=47 O D:(readonly)
"RTN","utt7",106,0)
U D
"RTN","utt7",107,0)
N X READ X:1
"RTN","utt7",108,0)
D CHKTF(X="HELLO") ; This should write to the screen the dot not to the file.
"RTN","utt7",109,0)
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.
"RTN","utt7",110,0)
I $$GETSYS^%ut()=0 C D:"D"
"RTN","utt7",111,0)
I $$GETSYS^%ut()=47 C D:(delete)
"RTN","utt7",112,0)
U $P
"RTN","utt7",113,0)
S IO=$IO
"RTN","utt7",114,0)
QUIT
"RTN","utt7",115,0)
;
"RTN","utt7",116,0)
; At the moment T8^%utt1 throws a fail, with no message
"RTN","utt7",117,0)
; in the GUI runner. For some reason, both X and Y
"RTN","utt7",118,0)
; variables are returned as null strings, while in the
"RTN","utt7",119,0)
; command line runner, Y has a value containing the
"RTN","utt7",120,0)
; word being sought
"RTN","utt7",121,0)
;
"RTN","utt7",122,0)
T8 ; If IO starts with another device, write to that device as if it's the pricipal device
"RTN","utt7",123,0)
; ZEXCEPT: GetEnviron,Util,delete,newversion,readonly - not really variables
"RTN","utt7",124,0)
; ZEXCEPT: %utGUI - if present, defined and killed elsewhere
"RTN","utt7",125,0)
I $D(%utGUI) Q ; GUI doesn't run verbose
"RTN","utt7",126,0)
N D
"RTN","utt7",127,0)
I $$GETSYS^%ut()=47 S D="/tmp/test.txt" ; All GT.M ; VMS not supported.
"RTN","utt7",128,0)
I $$GETSYS^%ut()=0 D ; All Cache
"RTN","utt7",129,0)
. I $ZVERSION(1)=2 S D=$SYSTEM.Util.GetEnviron("temp")_"\test.txt" I 1 ; Windows
"RTN","utt7",130,0)
. E S D="/tmp/test.txt" ; not windows; VMS not supported.
"RTN","utt7",131,0)
I $$GETSYS^%ut()=0 O D:"NWS" ; Cache new file
"RTN","utt7",132,0)
I $$GETSYS^%ut()=47 O D:(newversion) ; GT.M new file
"RTN","utt7",133,0)
S IO=D
"RTN","utt7",134,0)
U D
"RTN","utt7",135,0)
D ^%utt4 ; Run some Unit Tests
"RTN","utt7",136,0)
C D
"RTN","utt7",137,0)
I $$GETSYS^%ut()=0 O D:"R" ; Cache read only
"RTN","utt7",138,0)
I $$GETSYS^%ut()=47 O D:(readonly) ; GT.M read only
"RTN","utt7",139,0)
U D
"RTN","utt7",140,0)
N X,Y,Z,Z1,Z2,Z3,Z4 R X:1,Y:1,Z:1,Z1:1,Z2:1,Z3:1,Z4:1
"RTN","utt7",141,0)
I $$GETSYS^%ut()=0 C D:"D"
"RTN","utt7",142,0)
I $$GETSYS^%ut()=47 C D:(delete)
"RTN","utt7",143,0)
D CHKTF(Z1["MAIN","Write to system during test didn't work")
"RTN","utt7",144,0)
S IO=$P,IO(0)=IO
"RTN","utt7",145,0)
QUIT
"RTN","utt7",146,0)
;
"RTN","utt7",147,0)
COVRPTGL ;
"RTN","utt7",148,0)
N GL1,GL2,GL3,GL4
"RTN","utt7",149,0)
S GL1=$NA(^TMP("%utCOVCOHORTSAVx",$J)) K @GL1
"RTN","utt7",150,0)
S GL2=$NA(^TMP("%utCOVCOHORTx",$J)) K @GL2
"RTN","utt7",151,0)
S GL3=$NA(^TMP("%utCOVRESULTx",$J)) K @GL3
"RTN","utt7",152,0)
S GL4=$NA(^TMP("%utCOVREPORTx",$J)) K @GL4
"RTN","utt7",153,0)
D SETGLOBS^%uttcovr(GL1,GL2)
"RTN","utt7",154,0)
D COVRPTGL^%utcover(GL1,GL2,GL3,GL4)
"RTN","utt7",155,0)
D CHKEQ($G(@GL4@("%ut1","ACTLINES")),"0/9","Wrong number of lines covered f>>or ACTLINES")
"RTN","utt7",156,0)
D CHKEQ($G(@GL4@("%ut1","ACTLINES",9))," QUIT CNT","Wrong result for last l>>ine not covered for ACTLINES")
"RTN","utt7",157,0)
D CHKEQ($G(@GL4@("%ut1","CHEKTEST")),"8/10","Wrong number of lines covered >>for CHEKTEST")
"RTN","utt7",158,0)
D CHKEQ($G(@GL4@("%ut1","CHEKTEST",39))," . Q","Wrong result for last line >>not covered for CHEKTEST")
"RTN","utt7",159,0)
K @GL1,@GL2,@GL3,@GL4
"RTN","utt7",160,0)
Q
"RTN","utt7",161,0)
;
"RTN","utt7",162,0)
LO(X) Q $TR(X,"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz")
"RTN","utt7",163,0)
; Shortcut methods for M-Unit
"RTN","utt7",164,0)
CHKTF(X,Y) ;
"RTN","utt7",165,0)
D CHKTF^%ut(X,$G(Y))
"RTN","utt7",166,0)
QUIT
"RTN","utt7",167,0)
;
"RTN","utt7",168,0)
CHKEQ(A,B,M) ;
"RTN","utt7",169,0)
D CHKEQ^%ut(A,B,$G(M))
"RTN","utt7",170,0)
QUIT
"RTN","utt7",171,0)
;
"RTN","utt7",172,0)
XTENT ; Entry points
"RTN","utt7",173,0)
;;T4;Entry point using XTMENT
"RTN","utt7",174,0)
;;T5;Error count check
"RTN","utt7",175,0)
;;T6;Succeed Entry Point
"RTN","utt7",176,0)
;;T7;Make sure we write to principal even though we are on another device
"RTN","utt7",177,0)
;;T8;If IO starts with another device, write to that device as if it's the pricipal device
"RTN","utt7",178,0)
;;COVRPTGL;coverage report returning global
"RTN","utt7",179,0)
;
"RTN","utt7",180,0)
XTROU ; Routines containing additional tests
"RTN","utt7",181,0)
;;%utt1;
"RTN","utt7",182,0)
;;%utt2; old %utNITU
"RTN","utt7",183,0)
;;%utt4; old %utNITW
"RTN","utt7",184,0)
;;%utt5;
"RTN","utt7",185,0)
;;%utt6;
"RTN","utt7",186,0)
;;%uttcovr;coverage related tests
2015-03-25 15:05:25 -04:00
"RTN","uttcovr")
2017-07-10 13:17:43 -04:00
0^10^B188096777
2015-03-25 15:05:25 -04:00
"RTN","uttcovr",1,0)
2017-07-10 13:17:43 -04:00
%uttcovr ;JIVEYSOFT/JLI - runs coverage tests on %ut and %ut1 routines via unit tests ;06/16/17 15:37
2015-03-25 15:05:25 -04:00
"RTN","uttcovr",2,0)
2017-07-10 13:17:43 -04:00
;;1.5;MASH UTILITIES;;Jul 8, 2017;Build 13
2015-03-25 15:05:25 -04:00
"RTN","uttcovr",3,0)
2017-07-10 13:17:43 -04:00
; Submitted to OSEHRA Jul 8, 2017 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)
2017-07-10 13:17:43 -04:00
S RUNCODE(1)="^%utt1,%utt1,VERBOSE^%utt1(3),^%utt6,VERBOSE^%utt6,VERBOSE3^%utt6,VERBOSE2^%utt6,%uttcovr,^%ut,^%ut1,^%utcover,^%utt7,VERBOSE^%utt7"
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)
2017-07-10 13:17:43 -04:00
S XCLUDE(1)="%utt1,%utt2,%utt3,%utt4,%utt5,%utt6,%uttcovr,%utt7"
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)
2017-02-12 23:15:29 -05:00
S CODE="S X=4",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)
2017-02-12 23:15:29 -05:00
S CODE="S X=4",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)
2017-02-12 23:15:29 -05:00
D CHKTF($G(@GLB@("%utt4","MAIN",4))["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)
2017-02-12 23:15:29 -05:00
D CHKTF($G(@GLB@("%utt4","MAIN",10))=" 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)
2017-02-12 23:15:29 -05:00
K ^TMP("%utt4val",$J)
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",251,0)
2017-02-12 23:15:29 -05:00
D CACHECOV^%ut1(GLOB,GLOBT)
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",252,0)
2017-02-12 23:15:29 -05: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",253,0)
2017-02-12 23:15:29 -05: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",254,0)
2017-02-12 23:15:29 -05:00
K @GLOB,@GLOBT
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",255,0)
2017-02-12 23:15:29 -05:00
Q
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",256,0)
2017-02-12 23:15:29 -05:00
;
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",257,0)
2017-02-12 23:15:29 -05:00
GETVALS ; no test - primarily calls to Cache classes
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",258,0)
2017-02-12 23:15:29 -05:00
Q
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",259,0)
2017-02-12 23:15:29 -05:00
;
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",260,0)
2017-02-12 23:15:29 -05: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",261,0)
2017-02-12 23:15:29 -05:00
N CODE,LINE,OFFSET,TAG
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",262,0)
2017-02-12 23:15:29 -05:00
S LINE="TEST1 ; COMMENT ON TAG",TAG="",OFFSET=0
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",263,0)
2017-02-12 23:15:29 -05:00
S CODE=$$LINEDATA^%ut1(LINE,.TAG,.OFFSET) ;
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",264,0)
2017-02-12 23:15:29 -05:00
D CHKEQ(0,CODE,"Tag with comment identified as active code")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",265,0)
2017-02-12 23:15:29 -05:00
D CHKEQ("TEST1",TAG,"Bad tag returned for TEST1")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",266,0)
2017-02-12 23:15:29 -05:00
D CHKEQ(0,OFFSET,"Bad OFFSET returned for TEST1")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",267,0)
2017-02-12 23:15:29 -05:00
;
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",268,0)
2017-02-12 23:15:29 -05:00
S LINE=" ; COMMENT ONLY"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",269,0)
2017-02-12 23:15:29 -05:00
S CODE=$$LINEDATA^%ut1(LINE,.TAG,.OFFSET) ;
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",270,0)
2017-02-12 23:15:29 -05:00
D CHKEQ(0,CODE,"Comment line identified as active code")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",271,0)
2017-02-12 23:15:29 -05:00
D CHKEQ("TEST1",TAG,"Bad tag returned for TEST1+1")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",272,0)
2017-02-12 23:15:29 -05:00
D CHKEQ(1,OFFSET,"Bad OFFSET returned for TEST1+1")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",273,0)
2017-02-12 23:15:29 -05:00
;
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",274,0)
2017-02-12 23:15:29 -05:00
S LINE=" S X=VALUE"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",275,0)
2017-02-12 23:15:29 -05:00
S CODE=$$LINEDATA^%ut1(LINE,.TAG,.OFFSET) ;
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",276,0)
2017-02-12 23:15:29 -05:00
D CHKEQ(1,CODE,"Code line NOT identified as active code")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",277,0)
2017-02-12 23:15:29 -05:00
D CHKEQ("TEST1",TAG,"Bad tag returned for TEST1+2")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",278,0)
2017-02-12 23:15:29 -05:00
D CHKEQ(2,OFFSET,"Bad OFFSET returned for TEST1+2")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",279,0)
2017-02-12 23:15:29 -05:00
;
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",280,0)
2017-02-12 23:15:29 -05:00
S LINE="TEST2 S X=VALUE"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",281,0)
2017-02-12 23:15:29 -05:00
S CODE=$$LINEDATA^%ut1(LINE,.TAG,.OFFSET) ;
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",282,0)
2017-02-12 23:15:29 -05:00
D CHKEQ(1,CODE,"Tag line with code NOT identified as active code")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",283,0)
2017-02-12 23:15:29 -05:00
D CHKEQ("TEST2",TAG,"Bad tag returned for TEST2")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",284,0)
2017-02-12 23:15:29 -05:00
D CHKEQ(0,OFFSET,"Bad OFFSET returned for TEST2")
2016-04-11 18:26:37 -04:00
"RTN","uttcovr",285,0)
;
2017-02-12 23:15:29 -05:00
"RTN","uttcovr",286,0)
Q
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",287,0)
2017-02-12 23:15:29 -05:00
;
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",288,0)
2017-02-12 23:15:29 -05: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",289,0)
2017-02-12 23:15:29 -05:00
N ACTIVE,GLOB,GLOBT,X1,X0
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",290,0)
2017-02-12 23:15:29 -05:00
S GLOB=$NA(^TMP("%uttcovr",$J)),GLOBT=$NA(@GLOB@("TEST1")) K @GLOB
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",291,0)
2017-02-12 23:15:29 -05:00
S @GLOBT@(1,0)="LINE1 ; CODE1 LINE1+0 NOT ACTIVE"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",292,0)
2017-02-12 23:15:29 -05:00
S @GLOBT@(2,0)=" CODE2 LINE+1 SEEN"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",293,0)
2017-02-12 23:15:29 -05:00
S @GLOBT@(2,"C")=2
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",294,0)
2017-02-12 23:15:29 -05:00
S @GLOBT@(3,0)=" CODE3 LINE1+2 NOT SEEN"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",295,0)
2017-02-12 23:15:29 -05:00
S @GLOBT@(4,0)="LINE4 CODE4 LINE4+0 SEEN"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",296,0)
2017-02-12 23:15:29 -05:00
S @GLOBT@(4,"C")=5
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",297,0)
2017-02-12 23:15:29 -05:00
S @GLOBT@(5,0)=" ; CODE5 LINE4+1 NOT ACTIVE"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",298,0)
2017-02-12 23:15:29 -05:00
S @GLOBT@(6,0)=" CODE6 LINE4+2 COVERED"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",299,0)
2017-02-12 23:15:29 -05:00
S @GLOBT@(6,"C")=2
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",300,0)
2017-02-12 23:15:29 -05:00
S @GLOBT@(7,0)="LINE7 CODE7 LINE7+0 NOT COVERED"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",301,0)
2017-02-12 23:15:29 -05:00
S @GLOBT@(8,0)=" CODE8 LINE7+1 NOT COVERED"
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",302,0)
2017-02-12 23:15:29 -05:00
S ACTIVE=1
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",303,0)
2017-02-12 23:15:29 -05:00
D TOTAGS^%ut1(GLOB,ACTIVE)
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",304,0)
2017-02-12 23:15:29 -05:00
D CHKEQ(1,($D(@GLOBT@("LINE1"))#2),"LINE1 TAG NOT IDENTIFIED")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",305,0)
2017-02-12 23:15:29 -05:00
D CHKEQ(1,($D(@GLOBT@("LINE4"))#2),"LINE4 TAG NOT IDENTIFIED")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",306,0)
2017-02-12 23:15:29 -05:00
D CHKEQ(1,($D(@GLOBT@("LINE7"))#2),"LINE7 TAG NOT IDENTIFIED")
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",307,0)
2017-02-12 23:15:29 -05: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",308,0)
2017-02-12 23:15:29 -05: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",309,0)
2017-02-12 23:15:29 -05: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",310,0)
2017-02-12 23:15:29 -05: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",311,0)
2017-02-12 23:15:29 -05: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",312,0)
2017-02-12 23:15:29 -05: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",313,0)
2017-02-12 23:15:29 -05: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",314,0)
2017-02-12 23:15:29 -05: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",315,0)
2017-02-12 23:15:29 -05:00
K @GLOB,@GLOBT
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",316,0)
2017-02-12 23:15:29 -05:00
Q
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",317,0)
2017-02-12 23:15:29 -05:00
;
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",318,0)
2017-02-12 23:15:29 -05:00
CHKEQ(EXPECTED,SEEN,COMMENT) ;
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",319,0)
2017-02-12 23:15:29 -05:00
D CHKEQ^%ut(EXPECTED,SEEN,$G(COMMENT))
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",320,0)
2017-02-12 23:15:29 -05:00
Q
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",321,0)
2017-02-12 23:15:29 -05:00
;
2016-02-27 17:01:27 -05:00
"RTN","uttcovr",322,0)
2017-02-12 23:15:29 -05:00
CHKTF(VALUE,COMMENT) ;
2016-04-11 18:26:37 -04:00
"RTN","uttcovr",323,0)
2017-02-12 23:15:29 -05:00
D CHKTF^%ut(VALUE,$G(COMMENT))
"RTN","uttcovr",324,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)
**END**
**END**