import { describe, expect, test } from '@jest/globals' import { DieState, isHeldState, isSelectedState, setDeselected, setSelected, toggleSelected } from './gamestate' describe('isHeldState', () => { test.each<[DieState, boolean]>([ [DieState.ROLLED, false], [DieState.SELECTED, false], [DieState.HELD, true], [DieState.HELD_SELECTED, true], [DieState.SCORED, false], ])('(%p) returns %p', (state, value): void => { expect(isHeldState(state)).toEqual(value) }) }) describe('isSelectedState', () => { test.each<[DieState, boolean]>([ [DieState.ROLLED, false], [DieState.SELECTED, true], [DieState.HELD, false], [DieState.HELD_SELECTED, true], [DieState.SCORED, false], ])('(%p) returns %p', (state, value): void => { expect(isSelectedState(state)).toEqual(value) }) }) describe('setSelected', () => { test.each<[DieState, DieState]>([ [DieState.ROLLED, DieState.SELECTED], [DieState.SELECTED, DieState.SELECTED], [DieState.HELD, DieState.HELD_SELECTED], [DieState.HELD_SELECTED, DieState.HELD_SELECTED], [DieState.SCORED, DieState.SCORED], ])('(%p) returns %p', (state, value): void => { expect(setSelected(state)).toEqual(value) }) }) describe('setDeselected', () => { test.each<[DieState, DieState]>([ [DieState.ROLLED, DieState.ROLLED], [DieState.SELECTED, DieState.ROLLED], [DieState.HELD, DieState.HELD], [DieState.HELD_SELECTED, DieState.HELD], [DieState.SCORED, DieState.SCORED], ])('(%p) returns %p', (state, value): void => { expect(setDeselected(state)).toEqual(value) }) }) describe('toggleSelected', () => { test.each<[DieState, DieState]>([ [DieState.ROLLED, DieState.SELECTED], [DieState.SELECTED, DieState.ROLLED], [DieState.HELD, DieState.HELD_SELECTED], [DieState.HELD_SELECTED, DieState.HELD], [DieState.SCORED, DieState.SCORED], ])('(%p) returns %p', (state, value): void => { expect(toggleSelected(state)).toEqual(value) }) })