import { Logger } from '../../src/utils/logger.ts'; import { expect, describe, test } from 'vitest'; /** * Tests that a logger function is created and that it is a logger. */ const testLoggerCreatesLoggerFunction = (): void => { const logger = new Logger('test'); expect(logger).toBeDefined(); expect(logger.namespace).toBe('test'); expect(Logger.isLogger(logger)).toBe(true); }; /** * Tests that a logger function is a logger. */ const testLoggerFunctionIsLogger = (): void => { const logger = new Logger('test'); expect(Logger.isLogger(logger)).toBe(true); }; /** * Tests that a logger extends. */ const testLoggerExtends = (): void => { const logger = new Logger('test'); const extendedLogger = logger.extend('extended'); expect(extendedLogger.namespace).toBe('test:extended'); expect(Logger.isLogger(extendedLogger)).toBe(true); }; /** * Tests that a logger is a logger. */ const testLoggerIsLogger = (): void => { const logger = new Logger('test'); expect(Logger.isLogger(logger)).toBe(true); // Test not a logger const notALogger = [ 'not a logger', 123, true, false, null, undefined, NaN, Infinity, -Infinity ]; for (const item of notALogger) { expect(Logger.isLogger(item)).toBe(false); } }; describe('Logger', () => { test('creates a logger function', testLoggerCreatesLoggerFunction); test('logger function is a logger', testLoggerFunctionIsLogger); test('logger extends', testLoggerExtends); test('logger is logger', testLoggerIsLogger); });