Skip to content

Commit e6ab41c

Browse files
committed
fix broken tests from last game changes
add new libraries as dependencies
1 parent 4ba49af commit e6ab41c

File tree

7 files changed

+81
-56
lines changed

7 files changed

+81
-56
lines changed

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,13 +61,15 @@
6161
"cli": "^1.0.1",
6262
"daedalus-fugazi-webclient": "0.1.0",
6363
"eventemitter3": "2.0.2",
64+
"empty-epsilon-js": "1.0.2",
6465
"front-matter": "^2.2.0",
6566
"json-rpc2": "1.0.2",
6667
"jsonschema": "^1.1.1",
6768
"kissfs": "^0.3.0",
6869
"lodash": "4.17.4",
6970
"naming": "^1.0.6",
7071
"osc": "^2.2.0",
72+
"open-epsilon": "1.0.0",
7173
"resolve": "^1.4.0",
7274
"rxjs": "^5.5.2",
7375
"socket.io-client": "1.7.3",

src/ecr/driver.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,8 @@ import {ESystem, ESystemNames} from "../empty-epsilon/model";
33
import {Observable} from "rxjs";
44
import {EEDriverWithHooks} from "../empty-epsilon/driver";
55

6-
export const heat_sanity_factor = 0.28;
76
export const repair_per_second = 0.007;
8-
export const heat_per_second = 0.05;
7+
export const heat_per_second = 0.05 * /* heat_sanity_factor */ 0.28;
98
export const damage_per_second_on_overheat = 0.08;
109
export const min_reactor_health = -0.89;
1110

@@ -87,7 +86,7 @@ end
8786
}
8887

8988
setHeatRate(system: ESystem, heatRate: number): Promise<null> {
90-
return this.eeDriver.command(`getPlayerShip(-1):setSystemHeatRate('${ESystem[system]}', {0})`, [(heat_sanity_factor * heatRate).toFixed(4)]);
89+
return this.eeDriver.command(`getPlayerShip(-1):setSystemHeatRate('${ESystem[system]}', {0})`, [heatRate.toFixed(4)]);
9190
}
9291

9392
setMaxPower(system: ESystem, maxPower: number): Promise<null> {

src/ecr/model.ts

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -156,22 +156,22 @@ export class SwitchBoard implements SwitchBoardStatus {
156156
}
157157
}
158158

159-
const switchboardstMap: { [switchId: number]: ESystem[] } = {
160-
[ESwitchBoard.A1]: [ESystem.MissileSystem, ESystem.FrontShield, ESystem.Reactor],
161-
[ESwitchBoard.A2]: [ESystem.BeamWeapons, ESystem.Warp, ESystem.Reactor],
162-
[ESwitchBoard.A3]: [ESystem.Maneuver, ESystem.Impulse, ESystem.RearShield, ESystem.Reactor],
163-
[ESwitchBoard.B1]: [ESystem.FrontShield, ESystem.Impulse, ESystem.BeamWeapons, ESystem.RearShield],
164-
[ESwitchBoard.B2]: [],
165-
[ESwitchBoard.B3]: [ESystem.MissileSystem, ESystem.Maneuver, ESystem.Warp, ESystem.Reactor],
166-
};
167-
168159
export interface EcrState {
169160
repairing: ESystem | null;
170161
switchBoards: Array<SwitchBoardState>;
171162
}
172163

173164
export class EcrModel {
174165

166+
static readonly switchboardstMap: { [switchId: number]: ESystem[] } = {
167+
[ESwitchBoard.A1]: [ESystem.MissileSystem, ESystem.FrontShield, ESystem.Reactor],
168+
[ESwitchBoard.A2]: [ESystem.BeamWeapons, ESystem.Warp, ESystem.Reactor],
169+
[ESwitchBoard.A3]: [ESystem.Maneuver, ESystem.Impulse, ESystem.RearShield, ESystem.Reactor],
170+
[ESwitchBoard.B1]: [ESystem.FrontShield, ESystem.Impulse, ESystem.BeamWeapons, ESystem.RearShield],
171+
[ESwitchBoard.B2]: [],
172+
[ESwitchBoard.B3]: [ESystem.MissileSystem, ESystem.Maneuver, ESystem.Warp, ESystem.Reactor],
173+
};
174+
175175
readonly primarySystems: { [systemName: number]: PrimarySystem } = {};
176176
readonly switchBoards: { [systemName: number]: SwitchBoard } = {};
177177
repairing: ESystem | null = null;
@@ -184,7 +184,7 @@ export class EcrModel {
184184
}
185185
for (let s2 = 0; s2 < ESwitchBoard.COUNT; s2++) {
186186
let sys2 = new SwitchBoard(s2);
187-
for (let s1 of switchboardstMap[s2]) {
187+
for (let s1 of EcrModel.switchboardstMap[s2]) {
188188
const system1 = this.primarySystems[s1];
189189
connections[s1].push(sys2);
190190
sys2.supportedSystems.push(system1);

test/excalibur/excalibur.spec.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ describe('excalibur module', () => {
8080
await fs.saveFile('entries/foo4.md', makeEntryFile(Status.ENTRY, ExcaliburSecClass.SECRET, 'foo4', 'bar'));
8181

8282
const result = entries.list();
83-
expect(result.map(s => s.trim()).sort()).to.eql(['foo3', 'foo4']);
83+
expect(result.map(s => s.trim()).sort()).to.eql(['Foo3', 'Foo4']);
8484
});
8585
});
8686
});
@@ -174,9 +174,9 @@ describe('excalibur module', () => {
174174
expect(entryInEntries.content).to.eql(entry.content);
175175
});
176176

177-
it('entry immediately appears in list, opens in open', async () => {
177+
it('entry immediately appears in list', async () => {
178178
const result = entries.list();
179-
expect(result).to.eql('foo (CONFIDENTIAL)');
179+
expect(result).to.eql(['Foo']);
180180
});
181181

182182
});

test/osc-bridge/e2e-osc-ee-bridge.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ const addresses = [
6262
"/ee/player-ship/-1/system-coolant/Rear-shield"
6363
];
6464

65-
xdescribe('monitorByAddress e2e', function(){
65+
describe('monitorByAddress e2e', function(){
6666
this.timeout(4 * 1000);
6767
eeTestServerLifecycle(config);
6868
let httpDriver = new HttpDriver(config.serverAddress);

test/repair-module/logic.spec.ts

Lines changed: 37 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ describe('repair module', () => {
4848

4949
it('.startRepairingPrimarySystem(x), .stopRepairingPrimarySystem() affect side effects repair rate and the value of .repairing', () => {
5050
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));
5252
expect(repair.repairing).to.eql(ESystem.JumpDrive);
5353
repair.stopRepairingPrimarySystem();
5454
expect(sideEffects.setRepairRate).to.have.been.calledWith(ESystem.JumpDrive, 0);
@@ -69,49 +69,51 @@ describe('repair module', () => {
6969
expect(sideEffects.setMaxPower).to.have.been.calledWith(ESystem.Impulse, PrimarySystem.maxOverPower);
7070
sideEffects.setMaxPower.reset();
7171
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);
7475
});
7576

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+
7882
sideEffects.setMaxPower.reset();
7983
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));
9086
});
9187

9288
describe('When a system1 is over-powered', () => {
9389
let activeCollectorStatus: SwitchBoardStatus;
90+
const dependant = EcrModel.switchboardstMap[ESwitchBoard.A2][0];
91+
9492
beforeEach(() => {
9593
activeCollectorStatus = repair.getSwitchBoardStatus(ESwitchBoard.A2);
9694
});
9795

9896
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});
10098
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});
102100
expect(await getLinearOverloadDeriviation(activeCollectorStatus, graceFactor)).to.be.gt(0);
103101
}).timeout(10 * 1000);
104102

105103
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});
109111
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);
115117
}).timeout(20 * 1000);
116118
});
117119

@@ -125,30 +127,26 @@ describe('repair module', () => {
125127
});
126128

127129
describe('When one or more supporting system2 is in error state', () => {
130+
const dependant = EcrModel.switchboardstMap[ESwitchBoard.A2][0];
128131

129132
it('the supported system1 begins accumulating heat (the rate does not change according to the amount of systems in error)', () => {
130133
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));
132135
sideEffects.setRepairRate.reset();
133136
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));
135138
sideEffects.setRepairRate.reset();
136139
repair.shutdownSwitchBoard(ESwitchBoard.A2);
137140
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);
139142
});
140143

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));
152150
});
153151
});
154152
});

yarn.lock

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -989,6 +989,13 @@ [email protected]:
989989
version "1.1.1"
990990
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
991991

992+
993+
version "1.0.2"
994+
resolved "https://registry.yarnpkg.com/empty-epsilon-js/-/empty-epsilon-js-1.0.2.tgz#d43c150ae05019c672e02c385989943158fb95e9"
995+
dependencies:
996+
axios "0.15.3"
997+
string-template "^1.0.0"
998+
992999
encodeurl@^1.0.1:
9931000
version "1.0.1"
9941001
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20"
@@ -2414,6 +2421,15 @@ [email protected]:
24142421
version "0.0.2"
24152422
resolved "https://registry.yarnpkg.com/only/-/only-0.0.2.tgz#2afde84d03e50b9a8edc444e30610a70295edfb4"
24162423

2424+
2425+
version "1.0.0"
2426+
resolved "https://registry.yarnpkg.com/open-epsilon/-/open-epsilon-1.0.0.tgz#1e66937f8505a698e7eecc086931633b011f3b75"
2427+
dependencies:
2428+
empty-epsilon-js "1.0.2"
2429+
naming "^1.0.6"
2430+
osc "^2.2.0"
2431+
rxjs "^5.5.6"
2432+
24172433
optimist@^0.6.1:
24182434
version "0.6.1"
24192435
resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686"
@@ -2851,6 +2867,12 @@ rxjs@^5.5.2:
28512867
dependencies:
28522868
symbol-observable "^1.0.1"
28532869

2870+
rxjs@^5.5.6:
2871+
version "5.5.6"
2872+
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.6.tgz#e31fb96d6fd2ff1fd84bcea8ae9c02d007179c02"
2873+
dependencies:
2874+
symbol-observable "1.0.1"
2875+
28542876
safe-buffer@^5.0.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
28552877
version "5.1.1"
28562878
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
@@ -3153,6 +3175,10 @@ supports-color@^4.0.0:
31533175
dependencies:
31543176
has-flag "^2.0.0"
31553177

3178+
3179+
version "1.0.1"
3180+
resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4"
3181+
31563182
symbol-observable@^1.0.1:
31573183
version "1.0.4"
31583184
resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d"

0 commit comments

Comments
 (0)