From 6bd04ee6e2c6fee7c91628f290d44dac914c8542 Mon Sep 17 00:00:00 2001 From: Anton Vakhrushev Date: Fri, 24 Apr 2020 11:43:18 +0300 Subject: [PATCH] Add resources tests --- src/Core/GatheringTimings.ts | 2 +- src/Core/HeroBalance.ts | 4 ++-- src/Core/Resources.ts | 10 +--------- tests/Core/GatheringTimingsTest.ts | 11 +++-------- tests/Core/ResourcesTest.ts | 30 ++++++++++++++++++++++++++++++ 5 files changed, 37 insertions(+), 20 deletions(-) create mode 100644 tests/Core/ResourcesTest.ts diff --git a/src/Core/GatheringTimings.ts b/src/Core/GatheringTimings.ts index e16fddf..4426ca9 100644 --- a/src/Core/GatheringTimings.ts +++ b/src/Core/GatheringTimings.ts @@ -16,7 +16,7 @@ export class GatheringTimings { this.crop = crop; } - get common(): GatheringTime { + private get common(): GatheringTime { const xs = [this.lumber, this.clay, this.iron, this.crop]; return xs.reduce((m, t) => (m === 'never' || t === 'never' ? 'never' : Math.max(m, t)), 0); } diff --git a/src/Core/HeroBalance.ts b/src/Core/HeroBalance.ts index 9bcb0af..89ea658 100644 --- a/src/Core/HeroBalance.ts +++ b/src/Core/HeroBalance.ts @@ -27,11 +27,11 @@ function calcNeedResources( totalRequired: Resources, storage: ResourceStorage ): Resources { - if (!current.gt(required)) { + if (current.lt(required)) { return required.sub(current); } - if (!current.gt(totalRequired)) { + if (current.lt(totalRequired)) { return totalRequired.sub(current); } diff --git a/src/Core/Resources.ts b/src/Core/Resources.ts index 1f1d3b8..4bd9b7b 100644 --- a/src/Core/Resources.ts +++ b/src/Core/Resources.ts @@ -86,21 +86,13 @@ export class Resources implements ResourcesInterface { } lt(other: ResourcesInterface): boolean { - return this.lumber < other.lumber && this.clay < other.clay && this.iron < other.iron && this.crop < other.crop; + return this.lumber < other.lumber || this.clay < other.clay || this.iron < other.iron || this.crop < other.crop; } gt(other: ResourcesInterface): boolean { return this.lumber > other.lumber && this.clay > other.clay && this.iron > other.iron && this.crop > other.crop; } - lte(other: ResourcesInterface): boolean { - return !this.gt(other); - } - - gte(other: ResourcesInterface): boolean { - return !this.lt(other); - } - min(other: ResourcesInterface): Resources { return new Resources( Math.min(this.lumber, other.lumber), diff --git a/tests/Core/GatheringTimingsTest.ts b/tests/Core/GatheringTimingsTest.ts index 7c59991..1e66c17 100644 --- a/tests/Core/GatheringTimingsTest.ts +++ b/tests/Core/GatheringTimingsTest.ts @@ -2,25 +2,21 @@ import { it, describe } from 'mocha'; import { expect } from 'chai'; import { Resources } from '../../src/Core/Resources'; -import { ResourceType } from '../../src/Core/ResourceType'; -import { ResourceStorage } from '../../src/Core/ResourceStorage'; import { calcGatheringTimings, GatheringTimings } from '../../src/Core/GatheringTimings'; describe('Gathering timings', function() { it('Can calc common from numbers', function() { const timings = new GatheringTimings(10, 20, 15, 5); - expect(20).to.equals(timings.common); + expect(20).to.equals(timings.hours); }); it('Can calc common with never', function() { const timings = new GatheringTimings(10, 20, 'never', 5); - expect('never').to.equals(timings.common); expect(true).to.equals(timings.never); }); it('Can calc common with all never', function() { const timings = new GatheringTimings('never', 'never', 'never', 'never'); - expect('never').to.equals(timings.common); expect(true).to.equals(timings.never); }); @@ -29,7 +25,7 @@ describe('Gathering timings', function() { const desired = new Resources(60, 60, 60, 60); const speed = new Resources(5, 5, 5, 5); const timings = calcGatheringTimings(resources, desired, speed); - expect(10).to.equals(timings.common); + expect(10).to.equals(timings.hours); }); it('Can calc timings with different speed', function() { @@ -41,7 +37,7 @@ describe('Gathering timings', function() { expect(5).to.equals(timings.clay); expect(2).to.equals(timings.iron); expect(10).to.equals(timings.crop); - expect(10).to.equals(timings.common); + expect(10).to.equals(timings.hours); }); it('Can calc timings with negative speed', function() { @@ -53,7 +49,6 @@ describe('Gathering timings', function() { expect(5).to.equals(timings.clay); expect(2).to.equals(timings.iron); expect('never').to.equals(timings.crop); - expect('never').to.equals(timings.common); expect(true).to.equals(timings.never); }); }); diff --git a/tests/Core/ResourcesTest.ts b/tests/Core/ResourcesTest.ts new file mode 100644 index 0000000..da1e0dc --- /dev/null +++ b/tests/Core/ResourcesTest.ts @@ -0,0 +1,30 @@ +import { it, describe } from 'mocha'; +import { expect } from 'chai'; + +import { Resources } from '../../src/Core/Resources'; + +describe('Resources', function() { + it('Can compare with lt', function() { + const x = new Resources(0, 0, 0, 0); + const y = new Resources(5, 5, 5, 5); + expect(true).is.equals(x.lt(y)); + }); + + it('Can compare with lt (mixed)', function() { + const x = new Resources(20, 20, 5, 20); + const y = new Resources(10, 10, 10, 10); + expect(true).is.equals(x.lt(y)); + }); + + it('Can compare with gt', function() { + const x = new Resources(5, 5, 5, 5); + const y = new Resources(0, 0, 0, 0); + expect(true).is.equals(x.gt(y)); + }); + + it('Can compare with gt (mixed)', function() { + const x = new Resources(30, 30, 10, 30); + const y = new Resources(20, 20, 20, 20); + expect(false).is.equals(x.gt(y)); + }); +});