diff --git a/src/domain-models/tamadas_bonusz.test.ts b/src/domain-models/tamadas_bonusz.test.ts new file mode 100644 index 0000000..a5760e1 --- /dev/null +++ b/src/domain-models/tamadas_bonusz.test.ts @@ -0,0 +1,136 @@ +import {Osztaly} from "./osztaly"; +import {CelzoTB, KozelharciTB, TamadasBonusz} from "./tamadas_bonusz"; +import {KarakterTulajdonsagok, Modifier} from "./tulajdonsag"; + +describe('Tamadas Bonusz calculation', () => { + + describe('Base Tamadas Bonusz', () => { + test.each([ + [Osztaly.Harcos, 1, [1]], + [Osztaly.Amazon, 6, [6,1]], + [Osztaly.Ijasz, 20, [10,10,10]], + [Osztaly.Tolvaj, 1, [0]], + [Osztaly.Tolvaj, 9, [6,1]], + [Osztaly.Pap, 17, [10,6]], + [Osztaly.Varazslo, 1, [0]], + [Osztaly.Varazslo, 12, [6]], + [Osztaly.Illuzionista, 20, [10]], + ])('%s has a TB of %i at level %i', (osztaly: Osztaly, szint: number, expectedTB: number[]) => { + const actual = TamadasBonusz(osztaly, szint) + expect(actual).toEqual(expectedTB) + }) + }); + + describe('CelzoTB', () => { + const szint = 10 + const tulajdonsagok: KarakterTulajdonsagok = { + t_ugy: 17, + t_kar: 3, + t_bol: 3, + t_egs: 3, + t_ero: 3, + t_int: 3, + } + const modifier = Modifier(tulajdonsagok.t_ugy) + + it('should be equal base + ugyesseg modifier', () => { + const osztaly = Osztaly.Tolvaj + const base = TamadasBonusz(osztaly, szint) + const expected = base.map(x => x + modifier) + + const actual = CelzoTB({ + osztaly, + szint, + tulajdonsagok + }) + + expect(actual).toEqual(expected) + }); + it('should double the first base TB for Íjjász', () => { + const osztaly = Osztaly.Ijasz + const base = TamadasBonusz(osztaly, szint) + const ijjaszDoubleBase = [base[0], ...base] + const expected = ijjaszDoubleBase.map(x => x + modifier) + + const actual = CelzoTB({ + osztaly, + szint, + tulajdonsagok + }) + + expect(actual).toEqual(expected) + }); + }); + + describe('KozelharciTB', () => { + const szint = 10 + const tulajdonsagok: KarakterTulajdonsagok = { + t_ugy: 3, + t_kar: 3, + t_bol: 3, + t_egs: 3, + t_ero: 3, + t_int: 3, + } + const modifier = Modifier(tulajdonsagok.t_ero) + + it('should be equal base + ero modifier', () => { + const osztaly = Osztaly.Tolvaj + const base = TamadasBonusz(osztaly, szint) + const expected = base.map(x => x + modifier) + + const actual = KozelharciTB({ + osztaly, + szint, + tulajdonsagok + }) + + expect(actual).toEqual(expected) + }); + it('should use t_ugy for Kaloz if t_ugy > t_ero', () => { + const osztaly = Osztaly.Kaloz + const tulajdonsagok: KarakterTulajdonsagok = { + t_ugy: 17, + t_kar: 3, + t_bol: 3, + t_egs: 3, + t_ero: 3, + t_int: 3, + } + const modifier = Modifier(tulajdonsagok.t_ugy) + const base = TamadasBonusz(osztaly, szint) + const expected = base.map(x => x + modifier) + + const actual = KozelharciTB({ + osztaly, + szint, + tulajdonsagok + }) + + expect(actual).toEqual(expected) + }); + it('should use t_ero for Kaloz if t_ero > t_ugy', () => { + const osztaly = Osztaly.Kaloz + const tulajdonsagok: KarakterTulajdonsagok = { + t_ugy: 3, + t_kar: 3, + t_bol: 3, + t_egs: 3, + t_ero: 13, + t_int: 3, + } + const modifier = Modifier(tulajdonsagok.t_ero) + const base = TamadasBonusz(osztaly, szint) + const expected = base.map(x => x + modifier) + + const actual = KozelharciTB({ + osztaly, + szint, + tulajdonsagok + }) + + expect(actual).toEqual(expected) + }); + }); + +}); \ No newline at end of file