@@ -48,7 +48,7 @@ describe('repair module', () => {
48
48
49
49
it ( '.startRepairingPrimarySystem(x), .stopRepairingPrimarySystem() affect side effects repair rate and the value of .repairing' , ( ) => {
50
50
repair . startRepairingPrimarySystem ( ESystem . JumpDrive ) ;
51
- expect ( sideEffects . setRepairRate ) . to . have . been . calledWith ( ESystem . JumpDrive , approx ( PrimarySystem . repairRate ) ) ;
51
+ expect ( sideEffects . setRepairRate ) . to . have . been . calledWith ( ESystem . JumpDrive , approx ( repair . getPrimarySystemStatus ( ESystem . JumpDrive ) . repairRate ) ) ;
52
52
expect ( repair . repairing ) . to . eql ( ESystem . JumpDrive ) ;
53
53
repair . stopRepairingPrimarySystem ( ) ;
54
54
expect ( sideEffects . setRepairRate ) . to . have . been . calledWith ( ESystem . JumpDrive , 0 ) ;
@@ -69,49 +69,51 @@ describe('repair module', () => {
69
69
expect ( sideEffects . setMaxPower ) . to . have . been . calledWith ( ESystem . Impulse , PrimarySystem . maxOverPower ) ;
70
70
sideEffects . setMaxPower . reset ( ) ;
71
71
repair . shutdownSwitchBoard ( ESwitchBoard . A2 ) ;
72
- expect ( sideEffects . setMaxPower ) . to . have . been . calledWith ( ESystem . Impulse , match . number . and ( match ( ( n : number ) => n <= PrimarySystem . maxSupportedPower ) ) ) ;
73
- expect ( sideEffects . setMaxPower ) . to . have . not . been . calledWith ( ESystem . Impulse , PrimarySystem . maxOverPower ) ;
72
+ const dependant = EcrModel . switchboardstMap [ ESwitchBoard . A2 ] [ 0 ] ;
73
+ expect ( sideEffects . setMaxPower ) . to . have . been . calledWith ( dependant , match . number . and ( match ( ( n : number ) => n <= PrimarySystem . maxSupportedPower ) ) ) ;
74
+ expect ( sideEffects . setMaxPower ) . to . have . not . been . calledWith ( dependant , PrimarySystem . maxOverPower ) ;
74
75
} ) ;
75
76
76
- it ( 'When a supporting system2 is offline, the maximum level of a system1’s power will be at most: ' +
77
- '100% * number of online supporting systems/ number of supporting systems' , ( ) => {
77
+ it ( 'When a supporting system2 is offline, the maximum level of a system1’s power will decrease' , ( ) => {
78
+ const dependant = EcrModel . switchboardstMap [ ESwitchBoard . A2 ] [ 0 ] ;
79
+ const dependantStatus = repair . getPrimarySystemStatus ( dependant ) ;
80
+ expect ( dependantStatus . maxPower ) . to . equal ( PrimarySystem . maxOverPower ) ;
81
+
78
82
sideEffects . setMaxPower . reset ( ) ;
79
83
repair . shutdownSwitchBoard ( ESwitchBoard . A2 ) ;
80
- expect ( sideEffects . setMaxPower ) . to . have . been . calledWith ( ESystem . Impulse , approx ( PrimarySystem . maxSupportedPower / 2 ) ) ;
81
- sideEffects . setMaxPower . reset ( ) ;
82
- repair . shutdownSwitchBoard ( ESwitchBoard . A3 ) ;
83
- expect ( sideEffects . setMaxPower ) . to . have . been . calledWith ( ESystem . Impulse , 0 ) ;
84
- sideEffects . setMaxPower . reset ( ) ;
85
- repair . startupSwitchBoard ( ESwitchBoard . A3 ) ;
86
- expect ( sideEffects . setMaxPower ) . to . have . been . calledWith ( ESystem . Impulse , approx ( PrimarySystem . maxSupportedPower / 2 ) ) ;
87
- sideEffects . setMaxPower . reset ( ) ;
88
- repair . startupSwitchBoard ( ESwitchBoard . A2 ) ;
89
- expect ( sideEffects . setMaxPower ) . to . have . been . calledWith ( ESystem . Impulse , PrimarySystem . maxOverPower ) ;
84
+ expect ( dependantStatus . maxPower ) . to . be . lessThan ( PrimarySystem . maxSupportedPower ) ;
85
+ expect ( sideEffects . setMaxPower ) . to . have . been . calledWith ( dependant , approx ( dependantStatus . maxPower ) ) ;
90
86
} ) ;
91
87
92
88
describe ( 'When a system1 is over-powered' , ( ) => {
93
89
let activeCollectorStatus : SwitchBoardStatus ;
90
+ const dependant = EcrModel . switchboardstMap [ ESwitchBoard . A2 ] [ 0 ] ;
91
+
94
92
beforeEach ( ( ) => {
95
93
activeCollectorStatus = repair . getSwitchBoardStatus ( ESwitchBoard . A2 ) ;
96
94
} ) ;
97
95
98
96
it ( 'its supporting system2s accumulate overload' , async ( ) => {
99
- sideEffects . powerInput . next ( { system : ESystem . Impulse , power : PrimarySystem . maxSupportedPower } ) ;
97
+ sideEffects . powerInput . next ( { system : dependant , power : PrimarySystem . maxSupportedPower } ) ;
100
98
expect ( await getLinearOverloadDeriviation ( activeCollectorStatus , graceFactor ) ) . to . eql ( 0 ) ;
101
- sideEffects . powerInput . next ( { system : ESystem . Impulse , power : PrimarySystem . maxSupportedPower * 2 } ) ;
99
+ sideEffects . powerInput . next ( { system : dependant , power : PrimarySystem . maxSupportedPower * 2 } ) ;
102
100
expect ( await getLinearOverloadDeriviation ( activeCollectorStatus , graceFactor ) ) . to . be . gt ( 0 ) ;
103
101
} ) . timeout ( 10 * 1000 ) ;
104
102
105
103
it ( 'The overload rate is linear to the level of extra energy' , async ( ) => {
106
- sideEffects . powerInput . next ( { system : ESystem . Impulse , power : PrimarySystem . maxSupportedPower * 1.5 } ) ;
107
- expect ( await getLinearOverloadDeriviation ( activeCollectorStatus , graceFactor ) , '1.5 power' ) . to . be . approximately ( SwitchBoard . overloadPerMillisecond * 0.5 , SwitchBoard . overloadPerMillisecond * graceFactor ) ;
108
- sideEffects . powerInput . next ( { system : ESystem . Impulse , power : PrimarySystem . maxSupportedPower * 2 } ) ;
104
+ sideEffects . powerInput . next ( { system : dependant , power : PrimarySystem . maxSupportedPower * 2 } ) ;
105
+ const overPower100Percent = await getLinearOverloadDeriviation ( activeCollectorStatus , graceFactor ) ;
106
+ expect ( overPower100Percent ) . to . be . greaterThan ( 0 ) ;
107
+
108
+ sideEffects . powerInput . next ( { system : dependant , power : PrimarySystem . maxSupportedPower * 1.5 } ) ;
109
+ expect ( await getLinearOverloadDeriviation ( activeCollectorStatus , graceFactor ) , '1.5 power' ) . to . be . approximately ( overPower100Percent * 0.5 , overPower100Percent * graceFactor ) ;
110
+ sideEffects . powerInput . next ( { system : dependant , power : PrimarySystem . maxSupportedPower * 2 } ) ;
109
111
await Promise . resolve ( ) ;
110
- expect ( await getLinearOverloadDeriviation ( activeCollectorStatus , graceFactor ) , '2 power' ) . to . be . approximately ( SwitchBoard . overloadPerMillisecond , SwitchBoard . overloadPerMillisecond * graceFactor ) ;
111
- sideEffects . powerInput . next ( { system : ESystem . Impulse , power : PrimarySystem . maxSupportedPower * 2.5 } ) ;
112
- expect ( await getLinearOverloadDeriviation ( activeCollectorStatus , graceFactor ) , '2.5 power' ) . to . be . approximately ( SwitchBoard . overloadPerMillisecond * 1.5 , SwitchBoard . overloadPerMillisecond * graceFactor ) ;
113
- sideEffects . powerInput . next ( { system : ESystem . Impulse , power : PrimarySystem . maxSupportedPower * 3 } ) ;
114
- expect ( await getLinearOverloadDeriviation ( activeCollectorStatus , graceFactor ) , '3 power' ) . to . be . approximately ( SwitchBoard . overloadPerMillisecond * 2 , SwitchBoard . overloadPerMillisecond * graceFactor ) ;
112
+ expect ( await getLinearOverloadDeriviation ( activeCollectorStatus , graceFactor ) , '2 power' ) . to . be . approximately ( overPower100Percent , overPower100Percent * graceFactor ) ;
113
+ sideEffects . powerInput . next ( { system : dependant , power : PrimarySystem . maxSupportedPower * 2.5 } ) ;
114
+ expect ( await getLinearOverloadDeriviation ( activeCollectorStatus , graceFactor ) , '2.5 power' ) . to . be . approximately ( overPower100Percent * 1.5 , overPower100Percent * graceFactor ) ;
115
+ sideEffects . powerInput . next ( { system : dependant , power : PrimarySystem . maxSupportedPower * 3 } ) ;
116
+ expect ( await getLinearOverloadDeriviation ( activeCollectorStatus , graceFactor ) , '3 power' ) . to . be . approximately ( overPower100Percent * 2 , overPower100Percent * graceFactor ) ;
115
117
} ) . timeout ( 20 * 1000 ) ;
116
118
} ) ;
117
119
@@ -125,30 +127,26 @@ describe('repair module', () => {
125
127
} ) ;
126
128
127
129
describe ( 'When one or more supporting system2 is in error state' , ( ) => {
130
+ const dependant = EcrModel . switchboardstMap [ ESwitchBoard . A2 ] [ 0 ] ;
128
131
129
132
it ( 'the supported system1 begins accumulating heat (the rate does not change according to the amount of systems in error)' , ( ) => {
130
133
repair . setError ( ESwitchBoard . A2 ) ;
131
- expect ( sideEffects . setHeatRate ) . to . have . been . calledWith ( ESystem . Impulse , approx ( PrimarySystem . heatOnErrorRate ) ) ;
134
+ expect ( sideEffects . setHeatRate ) . to . have . been . calledWith ( dependant , approx ( PrimarySystem . heatOnErrorRate ) ) ;
132
135
sideEffects . setRepairRate . reset ( ) ;
133
136
repair . setError ( ESwitchBoard . A3 ) ;
134
- expect ( sideEffects . setHeatRate ) . to . have . been . calledWith ( ESystem . Impulse , approx ( PrimarySystem . heatOnErrorRate ) ) ;
137
+ expect ( sideEffects . setHeatRate ) . to . have . been . calledWith ( dependant , approx ( PrimarySystem . heatOnErrorRate ) ) ;
135
138
sideEffects . setRepairRate . reset ( ) ;
136
139
repair . shutdownSwitchBoard ( ESwitchBoard . A2 ) ;
137
140
repair . shutdownSwitchBoard ( ESwitchBoard . A3 ) ;
138
- expect ( sideEffects . setHeatRate ) . to . have . been . calledWith ( ESystem . Impulse , 0 ) ;
141
+ expect ( sideEffects . setHeatRate ) . to . have . been . calledWith ( dependant , 0 ) ;
139
142
} ) ;
140
143
141
- it ( 'the repair rate of supported system1 is 50% the normal rate' , ( ) => {
142
- repair . startRepairingPrimarySystem ( ESystem . JumpDrive ) ;
143
- repair . setError ( ESwitchBoard . B3 ) ;
144
- expect ( sideEffects . setRepairRate , `after 1st error` ) . to . have . been . calledWith ( ESystem . JumpDrive , approx ( PrimarySystem . repairRate * 0.5 ) ) ;
145
- sideEffects . setRepairRate . reset ( ) ;
146
- repair . setError ( ESwitchBoard . A3 ) ;
147
- expect ( sideEffects . setRepairRate , `after 2nd error` ) . to . have . been . calledWith ( ESystem . JumpDrive , approx ( PrimarySystem . repairRate * 0.2 ) ) ;
148
- sideEffects . setRepairRate . reset ( ) ;
149
- repair . shutdownSwitchBoard ( ESwitchBoard . B3 ) ;
150
- repair . shutdownSwitchBoard ( ESwitchBoard . A3 ) ;
151
- expect ( sideEffects . setRepairRate , `after shutdowns` ) . to . have . been . calledWith ( ESystem . JumpDrive , approx ( PrimarySystem . repairRate ) ) ;
144
+ it ( 'the repair rate of supported system1 is lower than the normal rate' , ( ) => {
145
+ const depRepairRate = repair . getPrimarySystemStatus ( dependant ) . repairRate ;
146
+ repair . startRepairingPrimarySystem ( dependant ) ;
147
+ repair . setError ( ESwitchBoard . A2 ) ;
148
+ expect ( repair . getPrimarySystemStatus ( dependant ) . repairRate ) . to . be . lessThan ( depRepairRate ) ;
149
+ expect ( sideEffects . setRepairRate ) . to . have . been . calledWith ( dependant , approx ( repair . getPrimarySystemStatus ( dependant ) . repairRate ) ) ;
152
150
} ) ;
153
151
} ) ;
154
152
} ) ;
0 commit comments