# Test Set 2: Variables
#
# Assume nm_mgr is on ipn:1.1
# Assume nm_agent is on ipn:1.2

###############################################################################
# TC 1 Test Basic Variable Operations
###############################################################################
# Generate basic variables in the AMP.
#
###############################################################################

#------------------------------------------------------------------------------
# Step 1.1: Define UINT V1 as "2 + 2"
#------------------------------------------------------------------------------
#
# ARI: ari:/IANA:Amp.Agent/Ctrl.add_var(ari://var.v1, (UINT) 2 2 +, UINT)
#
#------------------------------------------------------------------------------
#
# V1 ARI: ari://var.v1
# V1 encoding: 0x0c427631
#
# CBOR breakout:
#
# CONTROL  TNVC    PARM TYPES       PARM1    PARM2                     PARM3
#          TYPE
# add_var   TV    (ARI,EXPR,BYTE)   (V1)     (UINT) 2, 2, +            UINT
# c1154100  05     03 24 26 11     0c427631 148343024302c51818410100   14
#------------------------------------------------------------------------------
c115410005032426110c427631148343024302c5181841010014
WAIT 1



#------------------------------------------------------------------------------
# Step 1.2: List VARs on the agent and confirm that V1 is listed.
#------------------------------------------------------------------------------
#
# V1 ARI: ari://var.v1
# V1 encoding: 0x0c427631
#
#------------------------------------------------------------------------------
#
# ARI: ari:/IANA:amp.agent/Ctrl.gen_tbls([ari:/IANA:amp.agent/Tblt.variables()],[])
#
#------------------------------------------------------------------------------
c115410605022523818a181b410100
WAIT 1


#------------------------------------------------------------------------------
# Step 1.3: Generate a report for V1 and confirm it has value UINT 4
#------------------------------------------------------------------------------
#
# ARI: ari:/IANA:amp.agent/Ctrl.gen_rpts([ari://var.v1],[])
#
#------------------------------------------------------------------------------
c115410505022523810c42763100
WAIT 1



#------------------------------------------------------------------------------
# Step 1.4: Restart the Agent.
#------------------------------------------------------------------------------


#------------------------------------------------------------------------------
# Step 1.5: List VARs on the agent and confirm that V1 is still listed.
#------------------------------------------------------------------------------
#
# ARI: ari:/IANA:amp.agent/Ctrl.gen_tbls([ari:/IANA:amp.agent/Tblt.variables()],[])
#
#------------------------------------------------------------------------------
c115410605022523818a181b410100
WAIT 1


#------------------------------------------------------------------------------
# Step 1.6: Generate a report for V1 and confirm it still has value UINT 4
#------------------------------------------------------------------------------
#
# ARI: ari:/IANA:amp.agent/Ctrl.gen_rpts([ari://var.v1],[])
#
#------------------------------------------------------------------------------
c115410505022523810c42763100
WAIT 1


#------------------------------------------------------------------------------
# Step 1.7 Delete V1
#------------------------------------------------------------------------------
#
# ARI: ari:/IANA:amp.agent/Ctrl.del_var([ari://var.v1])
#
#------------------------------------------------------------------------------
c1154101050125810c427631
WAIT 1


#------------------------------------------------------------------------------
# Step 1.8: List VARs on the agent and confirm that V1 is NOT listed.
#------------------------------------------------------------------------------
#
# ARI: ari:/IANA:amp.agent/Ctrl.gen_tbls([ari:/IANA:amp.agent/Tblt.variables()],[])
#
#------------------------------------------------------------------------------
c115410605022523818a181b410100
WAIT 1



#------------------------------------------------------------------------------
# Step 1.9: Generate a report for V1 and confirm it is not reported.
#------------------------------------------------------------------------------
#
# ARI: ari:/IANA:amp.agent/Ctrl.gen_rpts([ari://var.v1],[])
#
#------------------------------------------------------------------------------
c115410505022523810c42763100
WAIT 1



#------------------------------------------------------------------------------
# Step 1.10: Restart the Agent.
#------------------------------------------------------------------------------


#------------------------------------------------------------------------------
# Step 1.11: List VARs on the agent and confirm that V1 is NOT listed.
#------------------------------------------------------------------------------
#
# ARI: ari:/IANA:amp.agent/Ctrl.gen_tbls([ari:/IANA:amp.agent/Tblt.variables()],[])
#
#------------------------------------------------------------------------------
c115410605022523818a181b410100
WAIT 1



#------------------------------------------------------------------------------
# Step 1.12: Generate a report for V1 and confirm it is not reported.
#------------------------------------------------------------------------------
#
# ARI: ari:/IANA:amp.agent/Ctrl.gen_rpts([ari://var.v1],[])
#
#------------------------------------------------------------------------------
c115410505022523810c42763100
WAIT 1




###############################################################################
# Test Case 2.2: Complex Variables
###############################################################################
# uint V2 = 4;         // Test that V2 = 4.
# expr V3 = V2 + 1;
# uint V4 = eval(V3);  // Test that V4 = 5.
# V2 = V4;             // Test that V2 = 5.
# V4 = eval(V3);       // Test that V4 = 6.
#
# V2 ARI = 0x0c427632
# V3 ARI = 0x0c427633
# V4 ARI = 0x0c427634
###############################################################################

#------------------------------------------------------------------------------
# Step 2.2.1: Define UINT V2 as "4"
#------------------------------------------------------------------------------
#
# ARI: ari:/IANA:Amp.Agent/Ctrl.add_var(ari://var.v2, (UINT) 4, UINT)
#
#------------------------------------------------------------------------------
c115410005032426110c4276321481430414
WAIT 1


#------------------------------------------------------------------------------
# Step 2.2.2: Define EXPR V3 as "V2 + 1"
#------------------------------------------------------------------------------
#
# ARI: ari:/IANA:Amp.Agent/Ctrl.add_var(ari://var.v3, (UINT) ari://var.v2 1 +, EXPR)
#
#------------------------------------------------------------------------------
#
# CBOR breakout:
#
# CONTROL  TNVC    PARM TYPES       PARM1    PARM2                        PARM3
#          TYPE
# add_var   TV    (ARI,EXPR,BYTE)   (V3)     (UINT) v2, 1, +              EXPR
# c1154100  05     03 24 26 11    0c427633  14830c4276324301c51818410100   26
#------------------------------------------------------------------------------
c115410005032426110c42763314830c4276324301c5181841010026
WAIT 1


#------------------------------------------------------------------------------
# Step 2.2.3: Define UINT V4 as having an initializing expression of {V3}
#------------------------------------------------------------------------------
#
# ARI:  ari:/IANA:Amp.Agent/Ctrl.add_var(ari://var.v4, UINT ari://var.v3, UINT)
#
#------------------------------------------------------------------------------
c115410005032426110c42763414810c42763314
WAIT 1

#------------------------------------------------------------------------------
# Step 2.2.4: Define custom report R1 = {V2, V3, V4}
#------------------------------------------------------------------------------
#
# R1 ARI = 0x07427231
#
# ARI: ari:/IANA:Amp.Agent/Ctrl.add_rptt(ari://rptt.r1, [ari://var.v2, ari://var.v3, ari://var.v4])
#
#------------------------------------------------------------------------------
c11541020502242507427231830c4276320c4276330c427634
WAIT 1


#------------------------------------------------------------------------------
# Step 2.2.5: Generate Report R1 and verify values are {4,EXPR,5}
#------------------------------------------------------------------------------
#
# ARI: ari:/IANA:amp.agent/Ctrl.gen_rpts([ari://rptt.r1],[])
#
#------------------------------------------------------------------------------
c115410505022523810742723100
WAIT 1


#------------------------------------------------------------------------------
# Step 2.2.6: STORE(V2, V4)  - V2 = V4
#------------------------------------------------------------------------------
#
# ARI: ari:/IANA:amp.agent/Ctrl.store_var(ari://var.v2, (UINT) ari://var.v4)
#
#------------------------------------------------------------------------------
c115410e050224260c42763214810c427634
WAIT 1


#------------------------------------------------------------------------------
# Step 2.2.7: STORE(V4, V3) - V4 = expr_eval(V3)
#------------------------------------------------------------------------------
#
# ARI: ari:/IANA:amp.agent/Ctrl.store_var(ari://var.v4, ari://var.v3)
#
#------------------------------------------------------------------------------
c115410e050224260c42763414810c427633
WAIT 1


#------------------------------------------------------------------------------
# Step 2.2.8: Generate Report R1 and verify values are {5,EXPR,6}
#------------------------------------------------------------------------------
#
# ARI: ari:/IANA:amp.agent/Ctrl.gen_rpts([ari://rptt.r1],[])
#
#------------------------------------------------------------------------------
c115410505022523810742723100
WAIT 1
