Welcome to Subscribe On Youtube

2704. To Be Or Not To Be

Description

Write a function expect that helps developers test their code. It should take in any value val and return an object with the following two functions.

  • toBe(val) accepts another value and returns true if the two values === each other. If they are not equal, it should throw an error "Not Equal".
  • notToBe(val) accepts another value and returns true if the two values !== each other. If they are equal, it should throw an error "Equal".

 

Example 1:

Input: func = () => expect(5).toBe(5)
Output: {"value": true}
Explanation: 5 === 5 so this expression returns true.

Example 2:

Input: func = () => expect(5).toBe(null)
Output: {"error": "Not Equal"}
Explanation: 5 !== null so this expression throw the error "Not Equal".

Example 3:

Input: func = () => expect(5).notToBe(null)
Output: {"value": true}
Explanation: 5 !== null so this expression returns true.

Solutions

  • type ToBeOrNotToBe = {
        toBe: (val: any) => boolean;
        notToBe: (val: any) => boolean;
    };
    
    function expect(val: any): ToBeOrNotToBe {
        return {
            toBe: (toBeVal: any) => {
                if (val !== toBeVal) {
                    throw new Error('Not Equal');
                }
                return true;
            },
            notToBe: (notToBeVal: any) => {
                if (val === notToBeVal) {
                    throw new Error('Equal');
                }
                return true;
            },
        };
    }
    
    /**
     * expect(5).toBe(5); // true
     * expect(5).notToBe(5); // throws "Equal"
     */
    
    
  • /**
     * @param {string} val
     * @return {Object}
     */
    var expect = function (val) {
        return {
            toBe: function (expected) {
                if (val !== expected) {
                    throw new Error('Not Equal');
                }
                return true;
            },
            notToBe: function (expected) {
                if (val === expected) {
                    throw new Error('Equal');
                }
                return true;
            },
        };
    };
    
    /**
     * expect(5).toBe(5); // true
     * expect(5).notToBe(5); // throws "Equal"
     */
    
    

All Problems

All Solutions