# assert

***

**1. Basic Assertion:**

```js
assert.equal(1, 1); // Assertion passes
assert.equal(1, 2); // Assertion fails
```

**2. Custom Error Message:**

```js
assert.equal(1, 2, 'Error message'); // Custom error message is displayed on failure
```

**3. Strict Equality Assertion:**

```js
assert.strictEqual(1, 1); // Assertion passes, uses === for comparison
```

**4. Truthiness Assertion:**

```js
assert.ok(true); // Assertion passes
assert.ok(false); // Assertion fails
```

**5. Falsiness Assertion:**

```js
assert.fail(false); // Assertion passes
assert.fail(true); // Assertion fails
```

**6. Object Equality Assertion:**

```js
assert.deepEqual({a: 1}, {a: 1}); // Assertion passes
assert.deepEqual({a: 1}, {b: 1}); // Assertion fails
```

**7. Array Equality Assertion:**

```js
assert.deepStrictEqual([1, 2], [1, 2]); // Assertion passes
assert.deepStrictEqual([1, 2], [2, 1]); // Assertion fails
```

**8. Regex Pattern Matching Assertion:**

```js
assert.match('hello world', /hello/); // Assertion passes
assert.match('hello world', /bye/); // Assertion fails
```

**9. Exception Throwing Assertion:**

```js
function throwError() { throw new Error('Error'); }
assert.throws(throwError);
```

**10. No Exception Throwing Assertion:**

```js
function noThrow() {}
assert.doesNotThrow(noThrow);
```

**11. Promise Resolving Assertion:**

```js
assert.resolves(Promise.resolve(1));
```

**12. Promise Rejecting Assertion:**

```js
assert.rejects(Promise.reject(new Error('Error')));
```

**13. Event Emitting Assertion:**

```js
const emitter = new EventEmitter();
assert.emits(emitter, 'event');
```

**14. Event Not Emitting Assertion:**

```js
const emitter = new EventEmitter();
assert.doesNotEmit(emitter, 'event');
```

**15. Property Existence Assertion:**

```js
assert.hasOwn(object, 'property');
```

**16. Property Value Assertion:**

```js
assert.propertyVal(object, 'property', 1);
```

**17. Array Inclusion Assertion:**

```js
assert.include([1, 2, 3], 2);
```

**18. Array Exclusion Assertion:**

```js
assert.notInclude([1, 2, 3], 4);
```

**19. Array Membership Assertion:**

```js
assert.isMember([1, 2, 3], 2);
```

**20. Number Comparison Assertion:**

```js
assert.greater than(3, 2);
```

**21. Number Comparison with Custom Message Assertion:**

```js
assert.greaterThanOrEqual(3, 2, 'Error message');
```

**22. Float Comparison Assertion:**

```js
assert.closeTo(0.1, 0.11, 0.01);
```

**23. Regex Pattern Not Matching Assertion:**

```js
assert.doesNotMatch('hello world', /bye/);
```

**24. Object Membership Assertion:**

```js
assert.propertyValueEqual({a: 1, b: 2}, 'a', 1);
```

**25. Deep Property Value Assertion:**

```js
assert.deepPropertyVal({a: {b: 1}}, 'a.b', 1);
```

**26. Array Length Assertion:**

```js
assert.lengthOf([1, 2, 3], 3);
```

**27. Array Element Type Assertion:**

```js
assert.instanceOf([1, 2, 3], Number);
```

**28. Function Type Assertion:**

```js
assert.isFunction(Math.random);
```

**29. Instance Assertion:**

```js
assert.isInstanceOf(new Date(), Date);
```

**30. Error Assertion:**

```js
assert.instanceOf(new TypeError(), TypeError);
```

**31. RegExp Constructor Assertion:**

```js
assert.isRegExp(/hello/);
```

**32. NaN Assertion:**

```js
assert.isNaN(NaN);
```

**33. Promise Assertion:**

```js
assert.isPromise(Promise.resolve(1));
```

**34. Generator Function Assertion:**

```js
assert.isGeneratorFunction(function*() {});
```

**35. Generator Object Assertion:**

```js
assert.isGenerator(yield* function*() {});
```

**36. WebAssembly Module Assertion:**

```js
assert.isWebAssemblyCompiledModule(new WebAssembly.Module());
```
