flight-planner
Version:
Plan and route VFR flights
112 lines (111 loc) • 4.67 kB
JavaScript
// 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 ');
});
});