From 41f797878825e60829ac1a8d17d50e5ebb4c77f6 Mon Sep 17 00:00:00 2001 From: "WQY\\qiong" Date: Thu, 9 Mar 2023 00:28:28 +0800 Subject: [PATCH] Update test_option_op case --- test_tjnetwork.py | 515 +++++++++++++++++++++++++++++++++++++++------- 1 file changed, 437 insertions(+), 78 deletions(-) diff --git a/test_tjnetwork.py b/test_tjnetwork.py index 42a5900..63dc91f 100644 --- a/test_tjnetwork.py +++ b/test_tjnetwork.py @@ -3487,122 +3487,481 @@ class TestApi: o = get_option(p) assert o['UNITS'] == OPTION_UNITS_GPM + assert o['PRESSURE'] == OPTION_PRESSURE_PSI assert o['HEADLOSS'] == OPTION_HEADLOSS_HW + assert o['QUALITY'] == OPTION_QUALITY_NONE + assert o['UNBALANCED'] == OPTION_UNBALANCED_STOP + assert o['PATTERN'] == '1' + assert o['DEMAND MODEL'] == OPTION_DEMAND_MODEL_DDA + assert o['DEMAND MULTIPLIER'] == '1.0' + assert o['EMITTER EXPONENT'] == '0.5' assert o['VISCOSITY'] == '1.0' + assert o['DIFFUSIVITY'] == '1.0' assert o['SPECIFIC GRAVITY'] == '1.0' assert o['TRIALS'] == '40' assert o['ACCURACY'] == '0.001' - assert o['FLOWCHANGE'] == '0' - assert o['HEADERROR'] == '0' - assert o['CHECKFREQ'] == '2' - assert o['MAXCHECK'] == '10' - assert o['DAMPLIMIT'] == '0' - assert o['UNBALANCED'] == OPTION_UNBALANCED_STOP - assert o['DEMAND MODEL'] == OPTION_DEMAND_MODEL_DDA - assert o['MINIMUM PRESSURE'] == '0' + assert o['HEADERROR'] == '0.0' + assert o['FLOWCHANGE'] == '0.0' + assert o['MINIMUM PRESSURE'] == '0.0' assert o['REQUIRED PRESSURE'] == '0.1' assert o['PRESSURE EXPONENT'] == '0.5' - assert o['PATTERN'] == '1' - assert o['DEMAND MULTIPLIER'] == '1.0' - assert o['EMITTER EXPONENT'] == '0.5' - assert o['QUALITY'] == OPTION_QUALITY_NONE - assert o['DIFFUSIVITY'] == '1.0' assert o['TOLERANCE'] == '0.01' - assert o['PRESSURE'] == OPTION_PRESSURE_PSI assert o['HTOL'] == '0.0005' assert o['QTOL'] == '0.0001' assert o['RQTOL'] == '0.0000001' + assert o['CHECKFREQ'] == '2' + assert o['MAXCHECK'] == '10' + assert o['DAMPLIMIT'] == '0' + + o3 = get_option_v3(p) + assert o3['FLOW_UNITS'] == OPTION_V3_FLOW_UNITS_GPM + assert o3['PRESSURE_UNITS'] == OPTION_V3_PRESSURE_UNITS_PSI + assert o3['HEADLOSS_MODEL'] == OPTION_V3_HEADLOSS_MODEL_HW + assert o3['SPECIFIC_GRAVITY'] == '1.0' + assert o3['SPECIFIC_VISCOSITY'] == '1.0' + assert o3['MAXIMUM_TRIALS'] == '40' + assert o3['HEAD_TOLERANCE'] == '0.0005' + assert o3['FLOW_TOLERANCE'] == '0.0001' + assert o3['FLOW_CHANGE_LIMIT'] == '0.0' + assert o3['RELATIVE_ACCURACY'] == '0.001' + assert o3['TIME_WEIGHT'] == '0.0' + assert o3['STEP_SIZING'] == OPTION_V3_STEP_SIZING_FULL + assert o3['IF_UNBALANCED'] == OPTION_V3_IF_UNBALANCED_STOP + assert o3['DEMAND_MODEL'] == OPTION_V3_DEMAND_MODEL_FIXED + assert o3['DEMAND_PATTERN'] == '1' + assert o3['DEMAND_MULTIPLIER'] == '1.0' + assert o3['MINIMUM_PRESSURE'] == '0.0' + assert o3['SERVICE_PRESSURE'] == '0.1' + assert o3['PRESSURE_EXPONENT'] == '0.5' + assert o3['LEAKAGE_MODEL'] == OPTION_V3_LEAKAGE_MODEL_NONE + assert o3['LEAKAGE_COEFF1'] == '0.0' + assert o3['LEAKAGE_COEFF2'] == '0.0' + assert o3['EMITTER_EXPONENT'] == '0.5' + assert o3['QUALITY_MODEL'] == OPTION_V3_QUALITY_MODEL_NONE + assert o3['QUALITY_NAME'] == OPTION_V3_QUALITY_MODEL_CHEMICAL + assert o3['QUALITY_UNITS'] == OPTION_V3_QUALITY_UNITS_MGL + assert o3['TRACE_NODE'] == '' + assert o3['SPECIFIC_DIFFUSIVITY'] == '1.0' + assert o3['QUALITY_TOLERANCE'] == '0.01' o['UNITS'] = OPTION_UNITS_LPS - cs = set_option(p, ChangeSet(o)).operations[0] - assert cs['operation'] == API_UPDATE - assert cs['type'] == 'option' - assert cs['UNITS'] == OPTION_UNITS_LPS - assert cs['HEADLOSS'] == OPTION_HEADLOSS_HW - assert cs['VISCOSITY'] == '1.0' - assert cs['SPECIFIC GRAVITY'] == '1.0' - assert cs['TRIALS'] == '40' - assert cs['ACCURACY'] == '0.001' - assert cs['FLOWCHANGE'] == '0' - assert cs['HEADERROR'] == '0' - assert cs['CHECKFREQ'] == '2' - assert cs['MAXCHECK'] == '10' - assert cs['DAMPLIMIT'] == '0' - assert cs['UNBALANCED'] == OPTION_UNBALANCED_STOP - assert cs['DEMAND MODEL'] == OPTION_DEMAND_MODEL_DDA - assert cs['MINIMUM PRESSURE'] == '0' - assert cs['REQUIRED PRESSURE'] == '0.1' - assert cs['PRESSURE EXPONENT'] == '0.5' - assert cs['PATTERN'] == '1' - assert cs['DEMAND MULTIPLIER'] == '1.0' - assert cs['EMITTER EXPONENT'] == '0.5' - assert cs['QUALITY'] == OPTION_QUALITY_NONE - assert cs['DIFFUSIVITY'] == '1.0' - assert cs['TOLERANCE'] == '0.01' - assert cs['PRESSURE'] == OPTION_PRESSURE_PSI - assert cs['HTOL'] == '0.0005' - assert cs['QTOL'] == '0.0001' - assert cs['RQTOL'] == '0.0000001' + o['PRESSURE'] = OPTION_PRESSURE_KPA + o['HEADLOSS'] = OPTION_HEADLOSS_DW + o['QUALITY'] = f'{OPTION_QUALITY_TRACE} 1' + o['UNBALANCED'] = OPTION_UNBALANCED_CONTINUE + o['PATTERN'] = '2' + o['DEMAND MODEL'] = OPTION_DEMAND_MODEL_PDA + o['DEMAND MULTIPLIER'] = '2.0' + o['EMITTER EXPONENT'] = '1.5' + o['VISCOSITY'] = '2.0' + o['DIFFUSIVITY'] = '2.0' + o['SPECIFIC GRAVITY'] = '2.0' + o['TRIALS'] = '50' + o['ACCURACY'] = '0.0001' + o['HEADERROR'] = '0.01' + o['FLOWCHANGE'] = '0.01' + o['MINIMUM PRESSURE'] = '0.01' + o['REQUIRED PRESSURE'] = '0.01' + o['PRESSURE EXPONENT'] = '0.05' + o['TOLERANCE'] = '0.001' + o['HTOL'] = '0.005' + o['QTOL'] = '0.001' + o['RQTOL'] = '0.000001' + o['CHECKFREQ'] = '1' + o['MAXCHECK'] = '15' + o['DAMPLIMIT'] = '1' - cs = execute_undo(p).operations[0] - assert cs['operation'] == API_UPDATE - assert cs['type'] == 'option' + css = set_option(p, ChangeSet(o)).operations + cs = css[0] + assert cs['UNITS'] == OPTION_UNITS_LPS + assert cs['PRESSURE'] == OPTION_PRESSURE_KPA + assert cs['HEADLOSS'] == OPTION_HEADLOSS_DW + assert cs['QUALITY'] == f'{OPTION_QUALITY_TRACE} 1' + assert cs['UNBALANCED'] == OPTION_UNBALANCED_CONTINUE + assert cs['PATTERN'] == '2' + assert cs['DEMAND MODEL'] == OPTION_DEMAND_MODEL_PDA + assert cs['DEMAND MULTIPLIER'] == '2.0' + assert cs['EMITTER EXPONENT'] == '1.5' + assert cs['VISCOSITY'] == '2.0' + assert cs['DIFFUSIVITY'] == '2.0' + assert cs['SPECIFIC GRAVITY'] == '2.0' + assert cs['TRIALS'] == '50' + assert cs['ACCURACY'] == '0.0001' + assert cs['HEADERROR'] == '0.01' + assert cs['FLOWCHANGE'] == '0.01' + assert cs['MINIMUM PRESSURE'] == '0.01' + assert cs['REQUIRED PRESSURE'] == '0.01' + assert cs['PRESSURE EXPONENT'] == '0.05' + assert cs['TOLERANCE'] == '0.001' + assert cs['HTOL'] == '0.005' + assert cs['QTOL'] == '0.001' + assert cs['RQTOL'] == '0.000001' + assert cs['CHECKFREQ'] == '1' + assert cs['MAXCHECK'] == '15' + assert cs['DAMPLIMIT'] == '1' + cs = css[1] + assert cs['FLOW_UNITS'] == OPTION_V3_FLOW_UNITS_LPS + assert cs['PRESSURE_UNITS'] == OPTION_V3_PRESSURE_UNITS_KPA + assert cs['HEADLOSS_MODEL'] == OPTION_V3_HEADLOSS_MODEL_DW + assert cs['SPECIFIC_GRAVITY'] == '2.0' + assert cs['SPECIFIC_VISCOSITY'] == '2.0' + assert cs['MAXIMUM_TRIALS'] == '50' + assert cs['HEAD_TOLERANCE'] == '0.005' + assert cs['FLOW_TOLERANCE'] == '0.001' + assert cs['FLOW_CHANGE_LIMIT'] == '0.01' + assert cs['RELATIVE_ACCURACY'] == '0.0001' + assert cs['IF_UNBALANCED'] == OPTION_V3_IF_UNBALANCED_CONTINUE + assert cs['DEMAND_MODEL'] == OPTION_V3_DEMAND_MODEL_POWER + assert cs['DEMAND_PATTERN'] == '2' + assert cs['DEMAND_MULTIPLIER'] == '2.0' + assert cs['MINIMUM_PRESSURE'] == '0.01' + assert cs['SERVICE_PRESSURE'] == '0.01' + assert cs['PRESSURE_EXPONENT'] == '0.05' + assert cs['EMITTER_EXPONENT'] == '1.5' + assert cs['QUALITY_MODEL'] == OPTION_V3_QUALITY_MODEL_TRACE + assert cs['TRACE_NODE'] == '1' + assert cs['SPECIFIC_DIFFUSIVITY'] == '2.0' + assert cs['QUALITY_TOLERANCE'] == '0.001' + + css = execute_undo(p).operations + cs = css[0] + assert cs['FLOW_UNITS'] == OPTION_V3_FLOW_UNITS_GPM + assert cs['PRESSURE_UNITS'] == OPTION_V3_PRESSURE_UNITS_PSI + assert cs['HEADLOSS_MODEL'] == OPTION_V3_HEADLOSS_MODEL_HW + assert cs['SPECIFIC_GRAVITY'] == '1.0' + assert cs['SPECIFIC_VISCOSITY'] == '1.0' + assert cs['MAXIMUM_TRIALS'] == '40' + assert cs['HEAD_TOLERANCE'] == '0.0005' + assert cs['FLOW_TOLERANCE'] == '0.0001' + assert cs['FLOW_CHANGE_LIMIT'] == '0.0' + assert cs['RELATIVE_ACCURACY'] == '0.001' + assert cs['IF_UNBALANCED'] == OPTION_V3_IF_UNBALANCED_STOP + assert cs['DEMAND_MODEL'] == OPTION_V3_DEMAND_MODEL_FIXED + assert cs['DEMAND_PATTERN'] == '1' + assert cs['DEMAND_MULTIPLIER'] == '1.0' + assert cs['MINIMUM_PRESSURE'] == '0.0' + assert cs['SERVICE_PRESSURE'] == '0.1' + assert cs['PRESSURE_EXPONENT'] == '0.5' + assert cs['EMITTER_EXPONENT'] == '0.5' + assert cs['QUALITY_MODEL'] == OPTION_V3_QUALITY_MODEL_NONE + assert cs['TRACE_NODE'] == '' + assert cs['SPECIFIC_DIFFUSIVITY'] == '1.0' + assert cs['QUALITY_TOLERANCE'] == '0.01' + cs = css[1] assert cs['UNITS'] == OPTION_UNITS_GPM + assert cs['PRESSURE'] == OPTION_PRESSURE_PSI assert cs['HEADLOSS'] == OPTION_HEADLOSS_HW + assert cs['QUALITY'] == OPTION_QUALITY_NONE + assert cs['UNBALANCED'] == OPTION_UNBALANCED_STOP + assert cs['PATTERN'] == '1' + assert cs['DEMAND MODEL'] == OPTION_DEMAND_MODEL_DDA + assert cs['DEMAND MULTIPLIER'] == '1.0' + assert cs['EMITTER EXPONENT'] == '0.5' assert cs['VISCOSITY'] == '1.0' + assert cs['DIFFUSIVITY'] == '1.0' assert cs['SPECIFIC GRAVITY'] == '1.0' assert cs['TRIALS'] == '40' assert cs['ACCURACY'] == '0.001' - assert cs['FLOWCHANGE'] == '0' - assert cs['HEADERROR'] == '0' - assert cs['CHECKFREQ'] == '2' - assert cs['MAXCHECK'] == '10' - assert cs['DAMPLIMIT'] == '0' - assert cs['UNBALANCED'] == OPTION_UNBALANCED_STOP - assert cs['DEMAND MODEL'] == OPTION_DEMAND_MODEL_DDA - assert cs['MINIMUM PRESSURE'] == '0' + assert cs['HEADERROR'] == '0.0' + assert cs['FLOWCHANGE'] == '0.0' + assert cs['MINIMUM PRESSURE'] == '0.0' assert cs['REQUIRED PRESSURE'] == '0.1' assert cs['PRESSURE EXPONENT'] == '0.5' - assert cs['PATTERN'] == '1' - assert cs['DEMAND MULTIPLIER'] == '1.0' - assert cs['EMITTER EXPONENT'] == '0.5' - assert cs['QUALITY'] == OPTION_QUALITY_NONE - assert cs['DIFFUSIVITY'] == '1.0' assert cs['TOLERANCE'] == '0.01' - assert cs['PRESSURE'] == OPTION_PRESSURE_PSI assert cs['HTOL'] == '0.0005' assert cs['QTOL'] == '0.0001' assert cs['RQTOL'] == '0.0000001' + assert cs['CHECKFREQ'] == '2' + assert cs['MAXCHECK'] == '10' + assert cs['DAMPLIMIT'] == '0' - cs = execute_redo(p).operations[0] - assert cs['operation'] == API_UPDATE - assert cs['type'] == 'option' + css = execute_redo(p).operations + cs = css[0] assert cs['UNITS'] == OPTION_UNITS_LPS + assert cs['PRESSURE'] == OPTION_PRESSURE_KPA + assert cs['HEADLOSS'] == OPTION_HEADLOSS_DW + assert cs['QUALITY'] == f'{OPTION_QUALITY_TRACE} 1' + assert cs['UNBALANCED'] == OPTION_UNBALANCED_CONTINUE + assert cs['PATTERN'] == '2' + assert cs['DEMAND MODEL'] == OPTION_DEMAND_MODEL_PDA + assert cs['DEMAND MULTIPLIER'] == '2.0' + assert cs['EMITTER EXPONENT'] == '1.5' + assert cs['VISCOSITY'] == '2.0' + assert cs['DIFFUSIVITY'] == '2.0' + assert cs['SPECIFIC GRAVITY'] == '2.0' + assert cs['TRIALS'] == '50' + assert cs['ACCURACY'] == '0.0001' + assert cs['HEADERROR'] == '0.01' + assert cs['FLOWCHANGE'] == '0.01' + assert cs['MINIMUM PRESSURE'] == '0.01' + assert cs['REQUIRED PRESSURE'] == '0.01' + assert cs['PRESSURE EXPONENT'] == '0.05' + assert cs['TOLERANCE'] == '0.001' + assert cs['HTOL'] == '0.005' + assert cs['QTOL'] == '0.001' + assert cs['RQTOL'] == '0.000001' + assert cs['CHECKFREQ'] == '1' + assert cs['MAXCHECK'] == '15' + assert cs['DAMPLIMIT'] == '1' + cs = css[1] + assert cs['FLOW_UNITS'] == OPTION_V3_FLOW_UNITS_LPS + assert cs['PRESSURE_UNITS'] == OPTION_V3_PRESSURE_UNITS_KPA + assert cs['HEADLOSS_MODEL'] == OPTION_V3_HEADLOSS_MODEL_DW + assert cs['SPECIFIC_GRAVITY'] == '2.0' + assert cs['SPECIFIC_VISCOSITY'] == '2.0' + assert cs['MAXIMUM_TRIALS'] == '50' + assert cs['HEAD_TOLERANCE'] == '0.005' + assert cs['FLOW_TOLERANCE'] == '0.001' + assert cs['FLOW_CHANGE_LIMIT'] == '0.01' + assert cs['RELATIVE_ACCURACY'] == '0.0001' + assert cs['IF_UNBALANCED'] == OPTION_V3_IF_UNBALANCED_CONTINUE + assert cs['DEMAND_MODEL'] == OPTION_V3_DEMAND_MODEL_POWER + assert cs['DEMAND_PATTERN'] == '2' + assert cs['DEMAND_MULTIPLIER'] == '2.0' + assert cs['MINIMUM_PRESSURE'] == '0.01' + assert cs['SERVICE_PRESSURE'] == '0.01' + assert cs['PRESSURE_EXPONENT'] == '0.05' + assert cs['EMITTER_EXPONENT'] == '1.5' + assert cs['QUALITY_MODEL'] == OPTION_V3_QUALITY_MODEL_TRACE + assert cs['TRACE_NODE'] == '1' + assert cs['SPECIFIC_DIFFUSIVITY'] == '2.0' + assert cs['QUALITY_TOLERANCE'] == '0.001' + + o3['FLOW_UNITS'] = OPTION_V3_FLOW_UNITS_GPM + o3['PRESSURE_UNITS'] = OPTION_V3_PRESSURE_UNITS_PSI + o3['HEADLOSS_MODEL'] = OPTION_V3_HEADLOSS_MODEL_HW + o3['SPECIFIC_GRAVITY'] = '1.0' + o3['SPECIFIC_VISCOSITY'] = '1.0' + o3['MAXIMUM_TRIALS'] = '40' + o3['HEAD_TOLERANCE'] = '0.0005' + o3['FLOW_TOLERANCE'] = '0.0001' + o3['FLOW_CHANGE_LIMIT'] = '0.0' + o3['RELATIVE_ACCURACY'] = '0.001' + o3['TIME_WEIGHT'] = '0.0' + o3['STEP_SIZING'] = OPTION_V3_STEP_SIZING_RELAXATION + o3['IF_UNBALANCED'] = OPTION_V3_IF_UNBALANCED_STOP + o3['DEMAND_MODEL'] = OPTION_V3_DEMAND_MODEL_FIXED + o3['DEMAND_PATTERN'] = '1' + o3['DEMAND_MULTIPLIER'] = '1.0' + o3['MINIMUM_PRESSURE'] = '0.0' + o3['SERVICE_PRESSURE'] = '0.1' + o3['PRESSURE_EXPONENT'] = '0.5' + o3['LEAKAGE_MODEL'] = OPTION_V3_LEAKAGE_MODEL_POWER + o3['LEAKAGE_COEFF1'] = '1.0' + o3['LEAKAGE_COEFF2'] = '2.0' + o3['EMITTER_EXPONENT'] = '0.5' + o3['QUALITY_MODEL'] = OPTION_V3_QUALITY_MODEL_TRACE + o3['QUALITY_NAME'] = OPTION_V3_QUALITY_MODEL_NONE + o3['QUALITY_UNITS'] = OPTION_V3_QUALITY_UNITS_HRS + o3['TRACE_NODE'] = '2' + o3['SPECIFIC_DIFFUSIVITY'] = '1.0' + o3['QUALITY_TOLERANCE'] = '0.01' + + css = set_option_v3(p, ChangeSet(o3)).operations + cs = css[0] + assert cs['FLOW_UNITS'] == OPTION_V3_FLOW_UNITS_GPM + assert cs['PRESSURE_UNITS'] == OPTION_V3_PRESSURE_UNITS_PSI + assert cs['HEADLOSS_MODEL'] == OPTION_V3_HEADLOSS_MODEL_HW + assert cs['SPECIFIC_GRAVITY'] == '1.0' + assert cs['SPECIFIC_VISCOSITY'] == '1.0' + assert cs['MAXIMUM_TRIALS'] == '40' + assert cs['HEAD_TOLERANCE'] == '0.0005' + assert cs['FLOW_TOLERANCE'] == '0.0001' + assert cs['FLOW_CHANGE_LIMIT'] == '0.0' + assert cs['RELATIVE_ACCURACY'] == '0.001' + assert cs['TIME_WEIGHT'] == '0.0' + assert cs['STEP_SIZING'] == OPTION_V3_STEP_SIZING_RELAXATION + assert cs['IF_UNBALANCED'] == OPTION_V3_IF_UNBALANCED_STOP + assert cs['DEMAND_MODEL'] == OPTION_V3_DEMAND_MODEL_FIXED + assert cs['DEMAND_PATTERN'] == '1' + assert cs['DEMAND_MULTIPLIER'] == '1.0' + assert cs['MINIMUM_PRESSURE'] == '0.0' + assert cs['SERVICE_PRESSURE'] == '0.1' + assert cs['PRESSURE_EXPONENT'] == '0.5' + assert cs['LEAKAGE_MODEL'] == OPTION_V3_LEAKAGE_MODEL_POWER + assert cs['LEAKAGE_COEFF1'] == '1.0' + assert cs['LEAKAGE_COEFF2'] == '2.0' + assert cs['EMITTER_EXPONENT'] == '0.5' + assert cs['QUALITY_MODEL'] == OPTION_V3_QUALITY_MODEL_TRACE + assert cs['QUALITY_NAME'] == OPTION_V3_QUALITY_MODEL_NONE + assert cs['QUALITY_UNITS'] == OPTION_V3_QUALITY_UNITS_HRS + assert cs['TRACE_NODE'] == '2' + assert cs['SPECIFIC_DIFFUSIVITY'] == '1.0' + assert cs['QUALITY_TOLERANCE'] == '0.01' + cs = css[1] + assert cs['UNITS'] == OPTION_UNITS_GPM + assert cs['PRESSURE'] == OPTION_PRESSURE_PSI assert cs['HEADLOSS'] == OPTION_HEADLOSS_HW + assert cs['QUALITY'] == f'{OPTION_QUALITY_TRACE} 2' + assert cs['UNBALANCED'] == OPTION_UNBALANCED_STOP + assert cs['PATTERN'] == '1' + assert cs['DEMAND MODEL'] == OPTION_DEMAND_MODEL_DDA + assert cs['DEMAND MULTIPLIER'] == '1.0' + assert cs['EMITTER EXPONENT'] == '0.5' assert cs['VISCOSITY'] == '1.0' + assert cs['DIFFUSIVITY'] == '1.0' assert cs['SPECIFIC GRAVITY'] == '1.0' assert cs['TRIALS'] == '40' assert cs['ACCURACY'] == '0.001' - assert cs['FLOWCHANGE'] == '0' - assert cs['HEADERROR'] == '0' - assert cs['CHECKFREQ'] == '2' - assert cs['MAXCHECK'] == '10' - assert cs['DAMPLIMIT'] == '0' - assert cs['UNBALANCED'] == OPTION_UNBALANCED_STOP - assert cs['DEMAND MODEL'] == OPTION_DEMAND_MODEL_DDA - assert cs['MINIMUM PRESSURE'] == '0' + assert cs['FLOWCHANGE'] == '0.0' + assert cs['MINIMUM PRESSURE'] == '0.0' assert cs['REQUIRED PRESSURE'] == '0.1' assert cs['PRESSURE EXPONENT'] == '0.5' - assert cs['PATTERN'] == '1' - assert cs['DEMAND MULTIPLIER'] == '1.0' - assert cs['EMITTER EXPONENT'] == '0.5' - assert cs['QUALITY'] == OPTION_QUALITY_NONE - assert cs['DIFFUSIVITY'] == '1.0' assert cs['TOLERANCE'] == '0.01' - assert cs['PRESSURE'] == OPTION_PRESSURE_PSI assert cs['HTOL'] == '0.0005' assert cs['QTOL'] == '0.0001' - assert cs['RQTOL'] == '0.0000001' + + css = execute_undo(p).operations + cs = css[0] + assert cs['UNITS'] == OPTION_UNITS_LPS + assert cs['PRESSURE'] == OPTION_PRESSURE_KPA + assert cs['HEADLOSS'] == OPTION_HEADLOSS_DW + assert cs['QUALITY'] == f'{OPTION_QUALITY_TRACE} 1' + assert cs['UNBALANCED'] == OPTION_UNBALANCED_CONTINUE + assert cs['PATTERN'] == '2' + assert cs['DEMAND MODEL'] == OPTION_DEMAND_MODEL_PDA + assert cs['DEMAND MULTIPLIER'] == '2.0' + assert cs['EMITTER EXPONENT'] == '1.5' + assert cs['VISCOSITY'] == '2.0' + assert cs['DIFFUSIVITY'] == '2.0' + assert cs['SPECIFIC GRAVITY'] == '2.0' + assert cs['TRIALS'] == '50' + assert cs['ACCURACY'] == '0.0001' + assert cs['FLOWCHANGE'] == '0.01' + assert cs['MINIMUM PRESSURE'] == '0.01' + assert cs['REQUIRED PRESSURE'] == '0.01' + assert cs['PRESSURE EXPONENT'] == '0.05' + assert cs['TOLERANCE'] == '0.001' + assert cs['HTOL'] == '0.005' + assert cs['QTOL'] == '0.001' + cs = css[1] + o3['FLOW_UNITS'] = OPTION_V3_FLOW_UNITS_GPM + o3['PRESSURE_UNITS'] = OPTION_V3_PRESSURE_UNITS_PSI + o3['HEADLOSS_MODEL'] = OPTION_V3_HEADLOSS_MODEL_HW + o3['SPECIFIC_GRAVITY'] = '1.0' + o3['SPECIFIC_VISCOSITY'] = '1.0' + o3['MAXIMUM_TRIALS'] = '40' + o3['HEAD_TOLERANCE'] = '0.0005' + o3['FLOW_TOLERANCE'] = '0.0001' + o3['FLOW_CHANGE_LIMIT'] = '0.0' + o3['RELATIVE_ACCURACY'] = '0.001' + o3['TIME_WEIGHT'] = '0.0' + o3['STEP_SIZING'] = OPTION_V3_STEP_SIZING_RELAXATION + o3['IF_UNBALANCED'] = OPTION_V3_IF_UNBALANCED_STOP + o3['DEMAND_MODEL'] = OPTION_V3_DEMAND_MODEL_FIXED + o3['DEMAND_PATTERN'] = '1' + o3['DEMAND_MULTIPLIER'] = '1.0' + o3['MINIMUM_PRESSURE'] = '0.0' + o3['SERVICE_PRESSURE'] = '0.1' + o3['PRESSURE_EXPONENT'] = '0.5' + o3['LEAKAGE_MODEL'] = OPTION_V3_LEAKAGE_MODEL_POWER + o3['LEAKAGE_COEFF1'] = '1.0' + o3['LEAKAGE_COEFF2'] = '2.0' + o3['EMITTER_EXPONENT'] = '0.5' + o3['QUALITY_MODEL'] = OPTION_V3_QUALITY_MODEL_TRACE + o3['QUALITY_NAME'] = OPTION_V3_QUALITY_MODEL_NONE + o3['QUALITY_UNITS'] = OPTION_V3_QUALITY_UNITS_HRS + o3['TRACE_NODE'] = '2' + o3['SPECIFIC_DIFFUSIVITY'] = '1.0' + o3['QUALITY_TOLERANCE'] = '0.01' + + css = execute_redo(p).operations + cs = css[0] + assert cs['FLOW_UNITS'] == OPTION_V3_FLOW_UNITS_GPM + assert cs['PRESSURE_UNITS'] == OPTION_V3_PRESSURE_UNITS_PSI + assert cs['HEADLOSS_MODEL'] == OPTION_V3_HEADLOSS_MODEL_HW + assert cs['SPECIFIC_GRAVITY'] == '1.0' + assert cs['SPECIFIC_VISCOSITY'] == '1.0' + assert cs['MAXIMUM_TRIALS'] == '40' + assert cs['HEAD_TOLERANCE'] == '0.0005' + assert cs['FLOW_TOLERANCE'] == '0.0001' + assert cs['FLOW_CHANGE_LIMIT'] == '0.0' + assert cs['RELATIVE_ACCURACY'] == '0.001' + assert cs['TIME_WEIGHT'] == '0.0' + assert cs['STEP_SIZING'] == OPTION_V3_STEP_SIZING_RELAXATION + assert cs['IF_UNBALANCED'] == OPTION_V3_IF_UNBALANCED_STOP + assert cs['DEMAND_MODEL'] == OPTION_V3_DEMAND_MODEL_FIXED + assert cs['DEMAND_PATTERN'] == '1' + assert cs['DEMAND_MULTIPLIER'] == '1.0' + assert cs['MINIMUM_PRESSURE'] == '0.0' + assert cs['SERVICE_PRESSURE'] == '0.1' + assert cs['PRESSURE_EXPONENT'] == '0.5' + assert cs['LEAKAGE_MODEL'] == OPTION_V3_LEAKAGE_MODEL_POWER + assert cs['LEAKAGE_COEFF1'] == '1.0' + assert cs['LEAKAGE_COEFF2'] == '2.0' + assert cs['EMITTER_EXPONENT'] == '0.5' + assert cs['QUALITY_MODEL'] == OPTION_V3_QUALITY_MODEL_TRACE + assert cs['QUALITY_NAME'] == OPTION_V3_QUALITY_MODEL_NONE + assert cs['QUALITY_UNITS'] == OPTION_V3_QUALITY_UNITS_HRS + assert cs['TRACE_NODE'] == '2' + assert cs['SPECIFIC_DIFFUSIVITY'] == '1.0' + assert cs['QUALITY_TOLERANCE'] == '0.01' + cs = css[1] + assert cs['UNITS'] == OPTION_UNITS_GPM + assert cs['PRESSURE'] == OPTION_PRESSURE_PSI + assert cs['HEADLOSS'] == OPTION_HEADLOSS_HW + assert cs['QUALITY'] == f'{OPTION_QUALITY_TRACE} 2' + assert cs['UNBALANCED'] == OPTION_UNBALANCED_STOP + assert cs['PATTERN'] == '1' + assert cs['DEMAND MODEL'] == OPTION_DEMAND_MODEL_DDA + assert cs['DEMAND MULTIPLIER'] == '1.0' + assert cs['EMITTER EXPONENT'] == '0.5' + assert cs['VISCOSITY'] == '1.0' + assert cs['DIFFUSIVITY'] == '1.0' + assert cs['SPECIFIC GRAVITY'] == '1.0' + assert cs['TRIALS'] == '40' + assert cs['ACCURACY'] == '0.001' + assert cs['FLOWCHANGE'] == '0.0' + assert cs['MINIMUM PRESSURE'] == '0.0' + assert cs['REQUIRED PRESSURE'] == '0.1' + assert cs['PRESSURE EXPONENT'] == '0.5' + assert cs['TOLERANCE'] == '0.01' + assert cs['HTOL'] == '0.0005' + assert cs['QTOL'] == '0.0001' + + o3 = get_option_v3(p) + + o3['DEMAND_MODEL'] = OPTION_V3_DEMAND_MODEL_CONSTRAINED + + css = set_option_v3(p, ChangeSet(o3)).operations + cs = css[0] + assert cs['DEMAND_MODEL'] == OPTION_V3_DEMAND_MODEL_CONSTRAINED + cs = css[1] + assert cs['DEMAND MODEL'] == OPTION_DEMAND_MODEL_PDA + + css = execute_undo(p).operations + cs = css[0] + assert cs['DEMAND MODEL'] == OPTION_DEMAND_MODEL_DDA + cs = css[1] + assert cs['DEMAND_MODEL'] == OPTION_V3_DEMAND_MODEL_FIXED + + css = execute_redo(p).operations + cs = css[0] + assert cs['DEMAND_MODEL'] == OPTION_V3_DEMAND_MODEL_CONSTRAINED + cs = css[1] + assert cs['DEMAND MODEL'] == OPTION_DEMAND_MODEL_PDA + + o3 = get_option_v3(p) + + o3['DEMAND_MODEL'] = OPTION_V3_DEMAND_MODEL_LOGISTIC + + css = set_option_v3(p, ChangeSet(o3)).operations + cs = css[0] + assert cs['DEMAND_MODEL'] == OPTION_V3_DEMAND_MODEL_LOGISTIC + cs = css[1] + assert cs['DEMAND MODEL'] == OPTION_DEMAND_MODEL_PDA + + css = execute_undo(p).operations + cs = css[0] + assert cs['DEMAND MODEL'] == OPTION_DEMAND_MODEL_PDA + cs = css[1] + assert cs['DEMAND_MODEL'] == OPTION_V3_DEMAND_MODEL_CONSTRAINED + + css = execute_redo(p).operations + cs = css[0] + assert cs['DEMAND_MODEL'] == OPTION_V3_DEMAND_MODEL_LOGISTIC + cs = css[1] + assert cs['DEMAND MODEL'] == OPTION_DEMAND_MODEL_PDA self.leave(p)