65 lines
2.3 KiB
TypeScript
65 lines
2.3 KiB
TypeScript
import { describe, it, expect } from 'vitest';
|
|
import { getCountryCodeFromCallsign } from './callsignMapper';
|
|
|
|
describe('getCountryCodeFromCallsign', () => {
|
|
it('should return US for K prefix', () => {
|
|
expect(getCountryCodeFromCallsign('K6ABC')).toBe('US');
|
|
expect(getCountryCodeFromCallsign('KA1ABC')).toBe('US');
|
|
expect(getCountryCodeFromCallsign('W1AW')).toBe('US');
|
|
expect(getCountryCodeFromCallsign('N0CALL')).toBe('US');
|
|
});
|
|
|
|
it('should handle callsigns with SSID', () => {
|
|
expect(getCountryCodeFromCallsign('K6ABC-5')).toBe('US');
|
|
expect(getCountryCodeFromCallsign('PA0MZ-9')).toBe('NL');
|
|
});
|
|
|
|
it('should return NL for PA prefix', () => {
|
|
expect(getCountryCodeFromCallsign('PA0MZ')).toBe('NL');
|
|
expect(getCountryCodeFromCallsign('PD0ABC')).toBe('NL');
|
|
});
|
|
|
|
it('should return GB for G and M prefixes', () => {
|
|
expect(getCountryCodeFromCallsign('G4ABC')).toBe('GB');
|
|
expect(getCountryCodeFromCallsign('M0XYZ')).toBe('GB');
|
|
});
|
|
|
|
it('should return DE for D prefix', () => {
|
|
expect(getCountryCodeFromCallsign('DL1ABC')).toBe('DE');
|
|
expect(getCountryCodeFromCallsign('DJ5XY')).toBe('DE');
|
|
});
|
|
|
|
it('should return FR for F prefix', () => {
|
|
expect(getCountryCodeFromCallsign('F6ABC')).toBe('FR');
|
|
});
|
|
|
|
it('should return JP for JA prefix', () => {
|
|
expect(getCountryCodeFromCallsign('JA1ABC')).toBe('JP');
|
|
});
|
|
|
|
it('should return CA for VE prefix', () => {
|
|
expect(getCountryCodeFromCallsign('VE3ABC')).toBe('CA');
|
|
});
|
|
|
|
it('should handle lowercase callsigns', () => {
|
|
expect(getCountryCodeFromCallsign('k6abc')).toBe('US');
|
|
expect(getCountryCodeFromCallsign('pa0mz')).toBe('NL');
|
|
});
|
|
|
|
it('should return null for invalid or unknown callsigns', () => {
|
|
expect(getCountryCodeFromCallsign('')).toBe(null);
|
|
expect(getCountryCodeFromCallsign(undefined)).toBe(null);
|
|
expect(getCountryCodeFromCallsign('???')).toBe(null);
|
|
});
|
|
|
|
it('should handle numeric prefixes', () => {
|
|
expect(getCountryCodeFromCallsign('9A1ABC')).toBe('HR'); // Croatia
|
|
expect(getCountryCodeFromCallsign('4X1AB')).toBe('IL'); // Israel
|
|
});
|
|
|
|
it('should match longest prefix first', () => {
|
|
// Make sure it tries 3-char, then 2-char, then 1-char prefixes
|
|
expect(getCountryCodeFromCallsign('PA0MZ')).toBe('NL'); // Should match PA, not P
|
|
});
|
|
});
|