You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
temptress-bot/src/state/gamestate.spec.ts

62 lines
2.1 KiB

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)
})
})