/** * @fileoverview Tests for checks.js. */ goog.module('protobuf.internal.checksTest'); const {CHECK_TYPE, checkDefAndNotNull, checkFunctionExists} = goog.require('protobuf.internal.checks'); describe('checkDefAndNotNull', () => { it('throws if undefined', () => { let value; if (CHECK_TYPE) { expect(() => checkDefAndNotNull(value)).toThrow(); } else { expect(checkDefAndNotNull(value)).toBeUndefined(); } }); it('throws if null', () => { const value = null; if (CHECK_TYPE) { expect(() => checkDefAndNotNull(value)).toThrow(); } else { expect(checkDefAndNotNull(value)).toBeNull(); } }); it('does not throw if empty string', () => { const value = ''; expect(checkDefAndNotNull(value)).toEqual(''); }); }); describe('checkFunctionExists', () => { it('throws if the function is undefined', () => { let foo = /** @type {function()} */ (/** @type {*} */ (undefined)); if (CHECK_TYPE) { expect(() => checkFunctionExists(foo)).toThrow(); } else { checkFunctionExists(foo); } }); it('throws if the property is defined but not a function', () => { let foo = /** @type {function()} */ (/** @type {*} */ (1)); if (CHECK_TYPE) { expect(() => checkFunctionExists(foo)).toThrow(); } else { checkFunctionExists(foo); } }); it('does not throw if the function is defined', () => { function foo(x) { return x; } checkFunctionExists(foo); }); });