Body unit tests.
This commit is contained in:
parent
f0a79d4d7a
commit
a30c0dd179
3 changed files with 192 additions and 7 deletions
2
src/@types/journalLines.d.ts
vendored
2
src/@types/journalLines.d.ts
vendored
|
@ -131,7 +131,7 @@ export interface planetScan<scanType> extends journalEntry<'Scan'> {
|
|||
WasMapped: boolean,
|
||||
}
|
||||
|
||||
export type autoScan = starScan<'AutoScan'> & asteroidScan<'AutoScan'> & planetScan<'AutoScan'>
|
||||
export type autoScan = starScan<'AutoScan'> | asteroidScan<'AutoScan'> | planetScan<'AutoScan'>
|
||||
export type detailedScan = starScan<'Detailed'> & asteroidScan<'Detailed'> & planetScan<'Detailed'>
|
||||
export type discoveryScan = detailedScan
|
||||
export type fssScan = detailedScan
|
||||
|
|
|
@ -48,8 +48,8 @@ export class Body {
|
|||
|
||||
/* ---------------------------------------------------------------------------- nameIcon ---- */
|
||||
|
||||
nameIcon(): string | null {
|
||||
let nameIcon: string | null = null;
|
||||
nameIcon(): string {
|
||||
let nameIcon: string = '';
|
||||
|
||||
if (this.isAsteroid()) {
|
||||
nameIcon = 'asteroid-4';
|
||||
|
@ -70,8 +70,8 @@ export class Body {
|
|||
|
||||
/* ---------------------------------------------------------------------------- typeIcon ---- */
|
||||
|
||||
typeIcon(): string | null {
|
||||
let typeIcon: string | null = null;
|
||||
typeIcon(): string {
|
||||
let typeIcon: string = '';
|
||||
|
||||
if (this.isStar() || this.isAsteroid()) {
|
||||
typeIcon = this.nameIcon();
|
||||
|
@ -247,8 +247,8 @@ export class Body {
|
|||
|
||||
let finalValue = Math.max((
|
||||
value + (
|
||||
value * Math.pow(mass, 0.2) * q
|
||||
)
|
||||
value * Math.pow(mass, 0.2) * q
|
||||
)
|
||||
) * mapMultiplier, 500);
|
||||
|
||||
// First discovery bonus.
|
||||
|
|
185
test/Body.test.ts
Normal file
185
test/Body.test.ts
Normal file
|
@ -0,0 +1,185 @@
|
|||
import {expect} from '@jest/globals';
|
||||
import type {autoScan} from '../src/@types/journalLines';
|
||||
import {Body} from '../src/models/Body';
|
||||
|
||||
describe('Body', () => {
|
||||
const star: autoScan = {
|
||||
'timestamp': '2023-05-08T19:13:58Z',
|
||||
'event': 'Scan',
|
||||
'ScanType': 'AutoScan',
|
||||
'BodyName': 'LHS 119 A',
|
||||
'BodyID': 1,
|
||||
'Parents': [{'Null': 0}],
|
||||
'StarSystem': 'LHS 119',
|
||||
'SystemAddress': 18262603605409,
|
||||
'DistanceFromArrivalLS': 0.000000,
|
||||
'StarType': 'M',
|
||||
'Subclass': 4,
|
||||
'StellarMass': 0.214844,
|
||||
'Radius': 267243648.000000,
|
||||
'AbsoluteMagnitude': 11.148788,
|
||||
'Age_MY': 11724,
|
||||
'SurfaceTemperature': 2175.000000,
|
||||
'Luminosity': 'V',
|
||||
'SemiMajorAxis': 3448964357376.098633,
|
||||
'Eccentricity': 0.010115,
|
||||
'OrbitalInclination': -105.666674,
|
||||
'Periapsis': 272.289207,
|
||||
'OrbitalPeriod': 18957803249.359131,
|
||||
'AscendingNode': -65.823206,
|
||||
'MeanAnomaly': 326.300292,
|
||||
'RotationPeriod': 131207.524554,
|
||||
'AxialTilt': 0.000000,
|
||||
'WasDiscovered': true,
|
||||
'WasMapped': false,
|
||||
};
|
||||
const asteroid: autoScan = {
|
||||
'timestamp': '2023-05-08T20:34:25Z',
|
||||
'event': 'Scan',
|
||||
'ScanType': 'AutoScan',
|
||||
'BodyName': 'Aten A A Belt Cluster 8',
|
||||
'BodyID': 11,
|
||||
'Parents': [{'Ring': 3}, {'Star': 1}, {'Null': 0}],
|
||||
'StarSystem': 'Aten',
|
||||
'SystemAddress': 16063580284321,
|
||||
'DistanceFromArrivalLS': 4.171922,
|
||||
'WasDiscovered': true,
|
||||
'WasMapped': false,
|
||||
};
|
||||
const planet: autoScan = {
|
||||
'timestamp': '2023-05-04T19:15:34Z',
|
||||
'event': 'Scan',
|
||||
'ScanType': 'AutoScan',
|
||||
'BodyName': 'Col 285 Sector SL-B b14-5 A 2',
|
||||
'BodyID': 13,
|
||||
'Parents': [{'Star': 1}, {'Null': 0}],
|
||||
'StarSystem': 'Col 285 Sector SL-B b14-5',
|
||||
'SystemAddress': 11662043981201,
|
||||
'DistanceFromArrivalLS': 14.736108,
|
||||
'TidalLock': true,
|
||||
'TerraformState': '',
|
||||
'PlanetClass': 'High metal content body',
|
||||
'Atmosphere': '',
|
||||
'AtmosphereType': 'None',
|
||||
'Volcanism': '',
|
||||
'MassEM': 0.134842,
|
||||
'Radius': 3279249.500000,
|
||||
'SurfaceGravity': 4.997877,
|
||||
'SurfaceTemperature': 478.828308,
|
||||
'SurfacePressure': 0.000000,
|
||||
'Landable': true,
|
||||
'Materials': [
|
||||
{'Name': 'iron', 'Percent': 21.042704},
|
||||
{'Name': 'nickel', 'Percent': 15.915817},
|
||||
{'Name': 'sulphur', 'Percent': 15.119031},
|
||||
{'Name': 'carbon', 'Percent': 12.713538},
|
||||
{'Name': 'chromium', 'Percent': 9.463602},
|
||||
{'Name': 'manganese', 'Percent': 8.690421},
|
||||
{'Name': 'phosphorus', 'Percent': 8.139426},
|
||||
{'Name': 'vanadium', 'Percent': 5.167356},
|
||||
{'Name': 'niobium', 'Percent': 1.438156},
|
||||
{'Name': 'tin', 'Percent': 1.371430},
|
||||
{'Name': 'antimony', 'Percent': 0.938514},
|
||||
],
|
||||
'Composition': {'Ice': 0.000000, 'Rock': 0.675801, 'Metal': 0.324199},
|
||||
'SemiMajorAxis': 4417732596.397400,
|
||||
'Eccentricity': 0.000022,
|
||||
'OrbitalInclination': 0.000008,
|
||||
'Periapsis': 115.738785,
|
||||
'OrbitalPeriod': 272940.599918,
|
||||
'AscendingNode': -62.515181,
|
||||
'MeanAnomaly': 244.149914,
|
||||
'RotationPeriod': 273121.869415,
|
||||
'AxialTilt': 0.183773,
|
||||
'WasDiscovered': true,
|
||||
'WasMapped': false,
|
||||
};
|
||||
|
||||
const body = new Body(planet);
|
||||
|
||||
describe('constructor()', () => {
|
||||
it('should create Body', () => {
|
||||
expect(body).toMatchObject(planet as any);
|
||||
});
|
||||
|
||||
it('should appraise body', () => {
|
||||
expect(body.mappedValue).toBeDefined();
|
||||
expect(typeof body.mappedValue).toBe('number');
|
||||
});
|
||||
});
|
||||
|
||||
describe('isAsteroid()', () => {
|
||||
it('should return boolean', () => {
|
||||
expect(typeof body.isAsteroid()).toBe('boolean');
|
||||
});
|
||||
|
||||
it('should return true for asteroids', () => {
|
||||
const asteroidBody = new Body(asteroid);
|
||||
expect(asteroidBody.isAsteroid()).toBe(true);
|
||||
});
|
||||
|
||||
it('should return false for non-asteroids', () => {
|
||||
const starBody = new Body(star);
|
||||
expect(starBody.isAsteroid()).toBe(false);
|
||||
|
||||
const planetBody = new Body(planet);
|
||||
expect(planetBody.isAsteroid()).toBe(false);
|
||||
});
|
||||
});
|
||||
|
||||
describe('isPlanet()', () => {
|
||||
it('should return boolean', () => {
|
||||
expect(typeof body.isPlanet()).toBe('boolean');
|
||||
});
|
||||
|
||||
it('should return true for planets', () => {
|
||||
const planetBody = new Body(planet);
|
||||
expect(planetBody.isPlanet()).toBe(true);
|
||||
});
|
||||
|
||||
it('should return false for non-planets', () => {
|
||||
const starBody = new Body(star);
|
||||
expect(starBody.isPlanet()).toBe(false);
|
||||
|
||||
const asteroidBody = new Body(asteroid);
|
||||
expect(asteroidBody.isPlanet()).toBe(false);
|
||||
});
|
||||
});
|
||||
|
||||
describe('isStar()', () => {
|
||||
it('should return boolean', () => {
|
||||
expect(typeof body.isStar()).toBe('boolean');
|
||||
});
|
||||
|
||||
it('should return true for stars', () => {
|
||||
const starBody = new Body(star);
|
||||
expect(starBody.isStar()).toBe(true);
|
||||
});
|
||||
|
||||
it('should return false for non-stars', () => {
|
||||
const planetBody = new Body(planet);
|
||||
expect(planetBody.isStar()).toBe(false);
|
||||
|
||||
const asteroidBody = new Body(asteroid);
|
||||
expect(asteroidBody.isStar()).toBe(false);
|
||||
});
|
||||
});
|
||||
|
||||
describe('nameIcon()', () => {
|
||||
it('should return string', () => {
|
||||
expect(typeof body.nameIcon()).toBe('string');
|
||||
});
|
||||
});
|
||||
|
||||
describe('simpleName()', () => {
|
||||
it('should return string', () => {
|
||||
expect(typeof body.simpleName()).toBe('string');
|
||||
});
|
||||
});
|
||||
|
||||
describe('typeIcon()', () => {
|
||||
it('should return string', () => {
|
||||
expect(typeof body.typeIcon()).toBe('string');
|
||||
});
|
||||
});
|
||||
});
|
Loading…
Reference in a new issue