{
   "scope": "source.js",
   "version": "0.10",
   "completions":
   [
    { "trigger": "assert", "contents": "assert(${1:expression}${2:, \"${3:[message]}\"});$0"},
    { "trigger": "assert.fail", "contents": "assert.fail(${1:actual}, ${2:expected}${3:, \"${4:[message]}\", ${5:[operator]}});$0"},
    { "trigger": "assert.ok", "contents": "assert.ok(${1:object}${2:, \"${3:[message]}\"});$0"},
    { "trigger": "assert.equal", "contents": "assert.equal(${1:actual}, ${2:expected}${3:, \"${4:[message]}\"});$0"},
    { "trigger": "assert.notEqual", "contents": "assert.notEqual(${1:actual}, ${2:expected}${3:, \"${3:[message]}\"});$0"},
    { "trigger": "assert.strictEqual", "contents": "assert.strictEqual(${1:actual}, ${2:expected}${3:, \"${4:[message]}\"});$0"},
    { "trigger": "assert.notStrictEqual", "contents": "assert.notStrictEqual(${1:actual}, ${2:expected}${3:, \"${4:[message]}\"});$0"},
    { "trigger": "assert.deepEqual", "contents": "assert.deepEqual(${1:actual}, ${2:expected}${3:, \"${4:[message]}\"});$0"},
    { "trigger": "assert.notDeepEqual", "contents": "assert.notDeepEqual(${1:actual}, ${2:expected}${3:, \"${3:[message]}\"});$0"},
    { "trigger": "assert.isTrue", "contents": "assert.isTrue(${1:value}${2:, \"${3:[message]}\"});$0"},
    { "trigger": "assert.isFalse", "contents": "assert.isFalse(${1:value}${2:, \"${3:[message]}\"});$0"},
    { "trigger": "assert.isNull", "contents": "assert.isNull(${1:value}${2:, \"${3:[message]}\"});$0"},
    { "trigger": "assert.isNotNull", "contents": "assert.isNotNull(${1:value}${2:, \"${3:[message]}\"});$0"},
    { "trigger": "assert.isUndefined", "contents": "assert.isUndefined(${1:value}${2:, \"${3:[message]}\"});$0"},
    { "trigger": "assert.isDefined", "contents": "assert.isDefined(${1:value}${2:, \"${3:[message]}\"});$0"},
    { "trigger": "assert.isFunction", "contents": "assert.isFunction(${1:value}${2:, \"${3:[message]}\"});$0"},
    { "trigger": "assert.isNotFunction", "contents": "assert.isNotFunction(${1:value}${2:, \"${3:[message]}\"});$0"},
    { "trigger": "assert.isObject", "contents": "assert.isObject(${1:value}${2:, \"${3:[message]}\"});$0"},
    { "trigger": "assert.isNotObject", "contents": "assert.isNotObject(${1:value}${2:, \"${3:[message]}\"});$0"},
    { "trigger": "assert.isArray", "contents": "assert.isArray(${1:value}${2:, \"${3:[message]}\"});$0"},
    { "trigger": "assert.isNotArray", "contents": "assert.isNotArray(${1:value}${2:, \"${3:[message]}\"});$0"},
    { "trigger": "assert.isString", "contents": "assert.isString(${1:value}${2:, \"${3:[message]}\"});$0"},
    { "trigger": "assert.isNotString", "contents": "assert.isNotString(${1:value}${2:, \"${3:[message]}\"});$0"},
    { "trigger": "assert.isNumber", "contents": "assert.isNumber(${1:value}${2:, \"${3:[message]}\"});$0"},
    { "trigger": "assert.isNotNumber", "contents": "assert.isNotNumber(${1:value}${2:, \"${3:[message]}\"});$0"},
    { "trigger": "assert.isBoolean", "contents": "assert.isBoolean(${1:value}${2:, \"${3:[message]}\"});$0"},
    { "trigger": "assert.isNotBoolean", "contents": "assert.isNotBoolean(${1:value}${2:, \"${3:[message]}\"});$0"},
    { "trigger": "assert.typeOf", "contents": "assert.typeOf(${1:value}, ${2:name}${3:, \"${4:[message]}\"});$0"},
    { "trigger": "assert.notTypeOf", "contents": "assert.notTypeOf(${1:value}, ${2:name}${3:, \"${4:[message]}\"});$0"},
    { "trigger": "assert.instanceOf", "contents": "assert.instanceOf(${1:object}, ${2:constructor}${3:, \"${4:[message]}\"});$0"},
    { "trigger": "assert.notInstanceOf", "contents": "assert.notInstanceOf(${1:object}, ${2:constructor}${3:, \"${4:[message]}\"});$0"},
    { "trigger": "assert.include", "contents": "assert.include(${1:haystack}, ${2:needle}${3:, \"${4:[message]}\"});$0"},
    { "trigger": "assert.match", "contents": "assert.match(${1:value}, ${2:regexp}${3:, \"${4:[message]}\"});$0"},
    { "trigger": "assert.notMatch", "contents": "assert.notMatch(${1:value}, ${2:regexp}${3:, \"${4:[message]}\"});$0"},
    { "trigger": "assert.property", "contents": "assert.property(${1:object}, ${2:property}${3:, \"${4:[message]}\"});$0"},
    { "trigger": "assert.notProperty", "contents": "assert.notProperty(${1:object}, ${2:property}${3:, \"${4:[message]}\"});$0"},
    { "trigger": "assert.deepProperty", "contents": "assert.deepProperty(${1:object}, ${2:property}${3:, \"${4:[message]}\"});$0"},
    { "trigger": "assert.notDeepProperty", "contents": "assert.notDeepProperty(${1:object}, ${2:property}${3:, \"${4:[message]}\"});$0"},
    { "trigger": "assert.propertyVal", "contents": "assert.notDeepProperty(${1:object}, ${2:property}, ${3:value}${4:, \"${5:[message]}\"});$0"},
    { "trigger": "assert.propertyNotVal", "contents": "assert.propertyNotVal(${1:object}, ${2:property} ${3:value}${4:, \"${5:[message]}\"});$0"},
    { "trigger": "assert.deepPropertyVal", "contents": "assert.deepPropertyVal(${1:object}, ${2:property} ${3:value}${4:, \"${5:[message]}\"});$0"},
    { "trigger": "assert.deepPropertyNotVal", "contents": "assert.deepPropertyNotVal(${1:object}, ${2:property}, ${3:value}${4:, \"${5:[message]}\"});$0"},
    { "trigger": "assert.lengthOf", "contents": "assert.lengthOf(${1:object}, ${2:length}${3:, \"${4:[message]}\"});$0"},
    { "trigger": "assert.throws", "contents": "assert.throws(${1:function}, ${2:constructor/regexp}${3:, \"${4:[message]}\"});$0"},
    { "trigger": "assert.doesNotThrow", "contents": "assert.doesNotThrow(${1:function}, ${2:constructor/regexp}${3:, \"${4:[message]}\"});$0"},
    { "trigger": "assert.operator", "contents": "assert.operator(${1:val1}, ${2:operator}, ${3:val2}${4:, \"${5:[message]}\"});$0"},
    { "trigger": "assert.closeTo", "contents": "assert.closeTo(${1:actual}, ${2:expected}, ${3:delta}${4:, \"${5:[message]}\"}$0" }
   ]
}