All files player.js

92.5% Statements 37/40
62.5% Branches 5/8
86.36% Functions 19/22
100% Lines 18/18
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28    3x   17x 5x 8x 107x 3x   3x 3x 6x   3x 23x 3x 3x   5x   3x 3x 3x 3x      
import { claim as claimNode, } 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 hasID = i => ({ id, }) => id === i;
export const sameID = p0 => p1 => id(p0) === id(p1);
export const matches = sameID;
export const xMatches = p0 => p1 => !matches(p0)(p1);
 
export const updatePlayer = next => p => sameID(next)(p) ? Object.assign({}, p, next) : 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 => claimNode(id(p));
 
// const matches = p0 => p1 => hasID(p0.id)(p1);