All files CommandProcessor.js

88.24% Statements 15/17
50% Branches 2/4
40% Functions 4/10
93.75% Lines 15/16

Press n or j to go to the next uncovered block, b, p or k for the previous block.

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 29 30 31 32 33 34 35 36 37 381x 1x   1x   2x   1x                       1x   14x 12x 5x 4x 3x 2x     2x 1x           1x  
const assert = require('assert')
const IterableCollection = require('./IterableCollection')
 
const _CommandProcessor = {
  chat (coll, index, args) {
    assert(typeof args[0] === 'string', 'args[0] must be a string')
 
    for (let { c, i } of coll) {
      if (i !== index) c.write(`Client ${index}: ${args[0].trim()}\n`)
    }
  },
  connect () {},
  disconnect () {},
  help () {},
  list () {},
  login () {},
  logout () {}
}
 
const CommandProcessor = new Proxy(_CommandProcessor, {
  get (o, p) {
    if (o.hasOwnProperty(p)) {
      return function (coll, index, args) {
        assert(coll instanceof IterableCollection, 'coll argument must be an instance of IterableCollection')
        assert(typeof index === 'number', 'index argument must be a number')
        assert(Array.isArray(args), 'args argument must be an Array')
        return o[p](coll, index, args)
      }
    } else {
      return () => {
        console.log(`Unknown command: ${p}`)
      }
    }
  }
})
 
module.exports = CommandProcessor