'use strict'
// A list of all the synonyms of assert methods.
// In addition to these, multi-word camelCase are also synonymized to
// all lowercase and snake_case

const multiword = obj =>
  Object.keys(obj).reduce((s, i) =>
    (s[i] = [ multiword_(i) ]
      .concat(obj[i].map(multiword_))
      .reduce((s, i) => (s.push.apply(s, i), s), []), s), obj)

const multiword_ = str =>
  str.match(/[A-Z]/) ? [
    str,
    str.toLowerCase(),
    str.replace(/[A-Z]/g, $0 => '_' + $0.toLowerCase())
  ] : [str]

module.exports = multiword({
  ok: ['true', 'assert'],
  notOk: ['false', 'assertNot'],

  error: ['ifError', 'ifErr'],
  throws: ['throw'],
  doesNotThrow: ['notThrow'],

  // exactly the same.  ===
  equal: [
    'equals', 'isEqual', 'is', 'strictEqual', 'strictEquals', 'strictIs',
    'isStrict', 'isStrictly'
  ],

  // not equal.  !==
  not: [
    'inequal', 'notEqual', 'notEquals', 'notStrictEqual', 'notStrictEquals',
    'isNotEqual', 'isNot', 'doesNotEqual', 'isInequal'
  ],

  // deep equivalence.  == for scalars
  same: [
    'equivalent', 'looseEqual', 'looseEquals', 'deepEqual',
    'deepEquals', 'isLoose', 'looseIs', 'isEquivalent'
  ],

  // deep inequivalence. != for scalars
  notSame: [
    'inequivalent', 'looseInequal', 'notDeep', 'deepInequal',
    'notLoose', 'looseNot', 'notEquivalent', 'isNotDeepEqual',
    'isNotDeeply', 'notDeepEqual', 'isInequivalent',
    'isNotEquivalent'
  ],

  // deep equivalence, === for scalars
  strictSame: [
    'strictEquivalent', 'strictDeepEqual', 'sameStrict', 'deepIs',
    'isDeeply', 'isDeep', 'strictDeepEquals'
  ],

  // deep inequivalence, !== for scalars
  strictNotSame: [
    'strictInequivalent', 'strictDeepInequal', 'notSameStrict', 'deepNot',
    'notDeeply', 'strictDeepInequals', 'notStrictSame'
  ],

  // found has the fields in wanted, string matches regexp
  match: [
    'has', 'hasFields', 'matches', 'similar', 'like', 'isLike',
    'includes', 'include', 'isSimilar', 'contains'
  ],

  notMatch: [
    'dissimilar', 'unsimilar', 'notSimilar', 'unlike', 'isUnlike',
    'notLike', 'isNotLike', 'doesNotHave', 'isNotSimilar', 'isDissimilar'
  ],

  type: [
    'isa', 'isA'
  ]
})
