UNPKG

flight-planner

Version:
112 lines (111 loc) 4.67 kB
// import { ReportingPoint, Aerodrome } from './airport.js'; import { isICAO, normalizeICAO, capitalizeWords, isIATA, normalizeIATA } from './utils.js'; import { describe, it, expect } from '@jest/globals'; // import { jest } from '@jest/globals'; // import { point } from '@turf/turf'; // import { AerodromeService } from './service.js'; describe('isICAO', () => { it('should return true for valid ICAO identifiers', () => { expect(isICAO('EHAM')).toBe(true); expect(isICAO('LFPG')).toBe(true); expect(isICAO('KJFK')).toBe(true); expect(isICAO('EHRD')).toBe(true); expect(isICAO('egll')).toBe(true); }); it('should return false for invalid ICAO identifiers', () => { expect(isICAO('EHAM1')).toBe(false); expect(isICAO('ehams')).toBe(false); expect(isICAO('EH AM')).toBe(false); expect(isICAO('')).toBe(false); }); it('should handle edge cases', () => { expect(isICAO('ZZZZ')).toBe(true); }); }); describe('normalizeICAO', () => { it('should convert lowercase ICAO codes to uppercase', () => { expect(normalizeICAO('eham')).toBe('EHAM'); expect(normalizeICAO('lfpg')).toBe('LFPG'); expect(normalizeICAO('kjfk')).toBe('KJFK'); }); it('should convert mixed case ICAO codes to uppercase', () => { expect(normalizeICAO('eHaM')).toBe('EHAM'); expect(normalizeICAO('LfPg')).toBe('LFPG'); expect(normalizeICAO('kJfK')).toBe('KJFK'); }); it('should leave uppercase ICAO codes unchanged', () => { expect(normalizeICAO('EHAM')).toBe('EHAM'); expect(normalizeICAO('LFPG')).toBe('LFPG'); expect(normalizeICAO('KJFK')).toBe('KJFK'); }); it('should handle empty strings', () => { expect(normalizeICAO('')).toBe(''); }); }); describe('isIATA', () => { it('should return true for valid IATA identifiers', () => { expect(isIATA('AMS')).toBe(true); expect(isIATA('CDG')).toBe(true); expect(isIATA('JFK')).toBe(true); expect(isIATA('LHR')).toBe(true); }); it('should return false for invalid IATA identifiers', () => { expect(isIATA('AM1')).toBe(false); expect(isIATA('AMS1')).toBe(false); expect(isIATA('')).toBe(false); }); it('should handle edge cases', () => { expect(isIATA('ZZZ')).toBe(true); }); }); describe('normalizeIATA', () => { it('should convert lowercase IATA codes to uppercase', () => { expect(normalizeIATA('ams')).toBe('AMS'); expect(normalizeIATA('cdg')).toBe('CDG'); expect(normalizeIATA('jfk')).toBe('JFK'); }); it('should convert mixed case IATA codes to uppercase', () => { expect(normalizeIATA('aMs')).toBe('AMS'); expect(normalizeIATA('cDg')).toBe('CDG'); expect(normalizeIATA('jFk')).toBe('JFK'); }); it('should leave uppercase IATA codes unchanged', () => { expect(normalizeIATA('AMS')).toBe('AMS'); expect(normalizeIATA('CDG')).toBe('CDG'); expect(normalizeIATA('JFK')).toBe('JFK'); }); it('should handle empty strings', () => { expect(normalizeIATA('')).toBe(''); }); it('should handle invalid IATA codes', () => { expect(normalizeIATA('AM1')).toBe('AM1'); expect(normalizeIATA('ams')).toBe('AMS'); expect(normalizeIATA('AMS1')).toBe('AMS1'); expect(normalizeIATA('')).toBe(''); }); }); describe('capitalizeWords', () => { it('should capitalize the first letter of each word', () => { expect(capitalizeWords('hello world')).toBe('Hello World'); expect(capitalizeWords('amsterdam airport schiphol')).toBe('Amsterdam Airport Schiphol'); expect(capitalizeWords('paris charles de gaulle')).toBe('Paris Charles De Gaulle'); }); it('should convert uppercase text to title case', () => { expect(capitalizeWords('HELLO WORLD')).toBe('Hello World'); expect(capitalizeWords('AMSTERDAM AIRPORT')).toBe('Amsterdam Airport'); }); it('should handle mixed case input', () => { expect(capitalizeWords('hELLo woRLd')).toBe('Hello World'); expect(capitalizeWords('aMSterDAM airPORT')).toBe('Amsterdam Airport'); }); it('should handle single word input', () => { expect(capitalizeWords('hello')).toBe('Hello'); expect(capitalizeWords('AIRPORT')).toBe('Airport'); }); it('should handle empty string', () => { expect(capitalizeWords('')).toBe(''); }); it('should handle strings with extra spaces', () => { expect(capitalizeWords(' hello world ')).toBe(' Hello World '); }); });