Implement a lightweight version of Jest's expect() API.
solve(matcher, received, expected?) must support these matchers:
| Matcher | Description |
|---|---|
'toBe' | Strict equality (===). expected required. |
'toEqual' | Deep equality (nested objects/arrays). expected required. |
'toBeTruthy' | Passes if received is truthy. |
'toBeFalsy' | Passes if received is falsy. |
'toBeNull' | Passes if received === null. |
'toBeUndefined' | Passes if received === undefined. |
'toBeDefined' | Passes if received !== undefined. |
Return an object { pass: boolean, message: string }.
When passing, message is ''.
When failing, message is a human-readable explanation, e.g.:
"Expected 5 but received 3""Expected value to be truthy but received false"solve('toBe', 42, 42) // { pass: true, message: '' }
solve('toBe', 42, 43) // { pass: false, message: 'Expected 43 but received 42' }
solve('toEqual', {a:1}, {a:1}) // { pass: true, message: '' }
solve('toBeTruthy', 0) // { pass: false, message: 'Expected value to be truthy but received 0' }Sample tests