Home Reference Source Test

src/main/generic/utils/ComparisonUtils.js

class ComparisonUtils {
    /**
     * @param {*} a
     * @param {*} b
     * @return {boolean}
     */
    static equals(a, b) {
        // Primitive values
        if (a === b) return true;

        // Set
        if (a instanceof Set && b instanceof Set) return a.equals(b);

        // ArrayBuffer/Uint8Array/Buffer
        if (ComparisonUtils.isUint8Array(a) && ComparisonUtils.isUint8Array(b)) return BufferUtils.equals(new Uint8Array(a), new Uint8Array(b));

        return false;
    }

    /**
     * @param {*} a
     * @param {*} b
     * @return {boolean}
     */
    static compare(a, b) {
        // ArrayBuffer/Uint8Array/Buffer
        if (ComparisonUtils.isUint8Array(a) && ComparisonUtils.isUint8Array(b)) return BufferUtils.compare(new Uint8Array(a), new Uint8Array(b));

        // Primitive values
        if (a < b) return -1;
        if (a > b) return 1;

        return 0;
    }

    /**
     * @param {*} obj
     * @returns {boolean}
     */
    static isUint8Array(obj) {
        if (typeof Buffer !== 'undefined' && typeof window === 'undefined' && obj instanceof Buffer) return true;
        return ArrayBuffer.isView(obj) || obj instanceof ArrayBuffer;
    }
}
Class.register(ComparisonUtils);