11import {
22 CSSB ,
3- findPVInDashboard ,
43 findPVInGroups ,
54 getGroupsWithBlocksFromConfigOutput ,
65 RC_ENABLE ,
@@ -14,98 +13,23 @@ import {
1413} from "@/app/components/Instrument" ;
1514import {
1615 ConfigOutput ,
17- DashboardArr ,
1816 IfcBlock ,
19- IfcGroup ,
20- IfcPV ,
2117 IfcPVWSMessage ,
18+ tBlockMapping ,
19+ tGroups ,
2220} from "@/app/types" ;
2321
24- test ( "findPVinDashboard finds a pv in the dashboard and returns it" , ( ) => {
25- const prefix = "UNITTESTING" ;
26- const pvToTestFor : IfcPV = { pvaddress : `${ prefix } 1:1:LABEL` } ;
27- let dashboard : DashboardArr = [
28- //column 0
29- [
30- [ { pvaddress : "" , value : "Title:" } , { pvaddress : `${ prefix } DAE:TITLE` } ] ,
31- [
32- { pvaddress : "" , value : "Users:" } ,
33- { pvaddress : `${ prefix } DAE:_USERNAME` } ,
34- ] ,
35- ] ,
36- //column 1
37- [
38- [ pvToTestFor , { pvaddress : `${ prefix } 1:1:VALUE` } ] ,
39- [
40- { pvaddress : `${ prefix } 2:1:LABEL` } ,
41- { pvaddress : `${ prefix } 2:1:VALUE` } ,
42- ] ,
43- [
44- { pvaddress : `${ prefix } 3:1:LABEL` } ,
45- { pvaddress : `${ prefix } 3:1:VALUE` } ,
46- ] ,
47- ] ,
48- //column 2
49- [
50- [
51- { pvaddress : `${ prefix } 1:2:LABEL` } ,
52- { pvaddress : `${ prefix } 1:2:VALUE` } ,
53- ] ,
54- [
55- { pvaddress : `${ prefix } 2:2:LABEL` } ,
56- { pvaddress : `${ prefix } 2:2:VALUE` } ,
57- ] ,
58- [
59- { pvaddress : `${ prefix } 3:2:LABEL` } ,
60- { pvaddress : `${ prefix } 3:2:VALUE` } ,
61- ] ,
62- ] ,
63- ] ;
64-
65- const result = findPVInDashboard ( dashboard , pvToTestFor . pvaddress ) ;
66- expect ( result ) . toBe ( pvToTestFor ) ;
67- } ) ;
68-
69- test ( "findPVinDashboard does not find a PV in the dashboard and returns undefined" , ( ) => {
70- const prefix = "UNITTESTING" ;
71- const pvToTestFor : IfcPV = { pvaddress : `${ prefix } 1:4:LABEL` } ;
72- let dashboard : DashboardArr = [
73- [
74- [
75- { pvaddress : `${ prefix } 1:2:LABEL` } ,
76- { pvaddress : `${ prefix } 1:2:VALUE` } ,
77- ] ,
78- [
79- { pvaddress : `${ prefix } 2:2:LABEL` } ,
80- { pvaddress : `${ prefix } 2:2:VALUE` } ,
81- ] ,
82- [
83- { pvaddress : `${ prefix } 3:2:LABEL` } ,
84- { pvaddress : `${ prefix } 3:2:VALUE` } ,
85- ] ,
86- ] ,
87- ] ;
88-
89- const result = findPVInDashboard ( dashboard , pvToTestFor . pvaddress ) ;
90- expect ( result ) . toBe ( undefined ) ;
91- } ) ;
92-
9322test ( "findPVInGroups returns a block when it finds one" , ( ) => {
9423 const blockName = "blockName" ;
9524 const prefix = "IN:INSTRUMENT" ;
96- const groups : Array < IfcGroup > = [
97- {
98- name : "aGroup" ,
99- blocks : [
100- {
101- human_readable_name : blockName ,
102- pvaddress : "some:underlying:pv:name" ,
103- } ,
104- ] ,
105- } ,
106- ] ;
107-
108- findPVInGroups ( groups , prefix , prefix + CSSB + blockName ) ;
25+ let groups : tGroups = new Map ( ) ;
26+ let group1Blocks : tBlockMapping = new Map ( ) ;
27+ group1Blocks . set ( blockName , {
28+ human_readable_name : blockName ,
29+ pvaddress : "some:underlying:pv:name" ,
30+ } ) ;
31+ groups . set ( "aGroup" , group1Blocks ) ;
32+ findPVInGroups ( groups , prefix + CSSB + blockName ) ;
10933} ) ;
11034
11135test ( "toPrecision does nothing to string value " , ( ) => {
@@ -150,6 +74,7 @@ test("yesToBoolean works with NO as value", () => {
15074test ( "getGroupsWithBlocksFromConfigOutput gets blocks from blockserver groups" , ( ) => {
15175 const blockNameToTest = "aBlock" ;
15276 const groupNameToTest = "aGroup" ;
77+ const prefix = "TESTING:" ;
15378
15479 const configOutput : ConfigOutput = {
15580 groups : [ { blocks : [ blockNameToTest ] , name : groupNameToTest } ] ,
@@ -158,7 +83,7 @@ test("getGroupsWithBlocksFromConfigOutput gets blocks from blockserver groups",
15883 name : blockNameToTest ,
15984 component : "" ,
16085 local : true ,
161- pv : "A:BLOCK" ,
86+ pv : prefix + "A:BLOCK" ,
16287 set_block : false ,
16388 highlimit : 0 ,
16489 lowlimit : 0 ,
@@ -181,9 +106,11 @@ test("getGroupsWithBlocksFromConfigOutput gets blocks from blockserver groups",
181106 component_iocs : [ ] ,
182107 history : [ ] ,
183108 } ;
184- const groups = getGroupsWithBlocksFromConfigOutput ( configOutput ) ;
185- expect ( groups [ 0 ] . name ) . toBe ( groupNameToTest ) ;
186- expect ( groups [ 0 ] . blocks [ 0 ] . human_readable_name ) . toBe ( blockNameToTest ) ;
109+ const groups = getGroupsWithBlocksFromConfigOutput ( prefix , configOutput ) ;
110+ expect ( Array . from ( groups . keys ( ) ) [ 0 ] ) . toBe ( groupNameToTest ) ;
111+ expect (
112+ Array . from ( Array . from ( groups . values ( ) ) [ 0 ] . values ( ) ) [ 0 ] . human_readable_name ,
113+ ) . toBe ( blockNameToTest ) ;
187114} ) ;
188115
189116test ( "subscribeToBlockPVs subscribes to blocks, their run control and their SP:RBV PVs" , ( ) => {
@@ -211,47 +138,40 @@ test("storePrecision adds precision to a block if it is the first update", () =>
211138} ) ;
212139
213140test ( "getAllBlockPVs returns flat list of blocks, their RC and SPRBV pvs" , ( ) => {
214- const block1Name = "blockName" ;
215- const block2Name = "block2Name" ;
216141 const prefix = "IN:TEST:" ;
142+ const block1Name = prefix + CSSB + "blockName" ;
143+ const block2Name = prefix + CSSB + "block2Name" ;
217144
218145 let inst = new Instrument ( prefix ) ;
219146
220- inst . groups = [
221- {
222- name : "aGroup" ,
223- blocks : [
224- {
225- human_readable_name : block1Name ,
226- pvaddress : "some:underlying:pv:name" ,
227- } ,
228- ] ,
229- } ,
230- {
231- name : "aDifferentGroup" ,
232- blocks : [
233- {
234- human_readable_name : block2Name ,
235- pvaddress : "someother:underlying:pv:name" ,
236- } ,
237- ] ,
238- } ,
239- ] ;
147+ let group1Blocks : tBlockMapping = new Map ( ) ;
148+ group1Blocks . set ( block1Name , {
149+ human_readable_name : block1Name ,
150+ pvaddress : "some:underlying:pv:name" ,
151+ } ) ;
152+ inst . groups . set ( "aGroup" , group1Blocks ) ;
153+
154+ let group2Blocks : tBlockMapping = new Map ( ) ;
155+ group2Blocks . set ( block2Name , {
156+ human_readable_name : block2Name ,
157+ pvaddress : "someother:underlying:pv:name" ,
158+ } ) ;
159+ inst . groups . set ( "aDifferentGroup" , group2Blocks ) ;
240160
241161 const res = inst . getAllBlockPVs ( ) ;
242162
243163 expect ( res . length ) . toBe ( 2 * 4 ) ; // 2 blocks, which means 4 PVs to subscribe to
244164
245165 expect ( res ) . toEqual (
246166 expect . arrayContaining ( [
247- prefix + CSSB + block1Name ,
248- prefix + CSSB + block1Name + RC_ENABLE ,
249- prefix + CSSB + block1Name + RC_INRANGE ,
250- prefix + CSSB + block1Name + SP_RBV ,
251- prefix + CSSB + block2Name ,
252- prefix + CSSB + block2Name + RC_ENABLE ,
253- prefix + CSSB + block2Name + RC_INRANGE ,
254- prefix + CSSB + block2Name + SP_RBV ,
167+ block1Name ,
168+ block1Name + RC_ENABLE ,
169+ block1Name + RC_INRANGE ,
170+ block1Name + SP_RBV ,
171+ block2Name ,
172+ block2Name + RC_ENABLE ,
173+ block2Name + RC_INRANGE ,
174+ block2Name + SP_RBV ,
255175 ] ) ,
256176 ) ;
257177} ) ;
0 commit comments