All files / src player.js

82.14% Statements 23/28
62.5% Branches 5/8
66.67% Functions 10/15
100% Lines 13/13
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18  3x   16x 5x 7x 24x 3x   3x 3x 6x   3x 3x 3x 32x  
import { isFree, setPlayer, } from './node';
export const playerInit = { name: '', score: 0, id: null };
 
export const player = (name = '', score = 0, id = name) => ({ name, score, id });
export const name = ({ name } = playerInit) => name;
export const score = ({ score } = playerInit) => score;
export const id = ({ id } = playerInit) => id;
export const copy = p => player(name(p), score(p), id(p));
 
export const setName = name => p => player(name, score(p), id(p));
export const setID = id => p => player(name(p), score(p), id);
export const setScore = score => p => player(name(p), score, id(p));
 
export const resetScore = setScore(0);
export const incrementScore = p => setScore(score(p) + 1)(p);
export const decrementScore = p => setScore(score(p) - 1)(p);
export const claim = p => n => isFree(n) ? Object.assign(n, { player: id(p) }) : n;