Files
hamview/ui/src/libs/callsignMapper.test.ts
maze e83df1c143
Some checks failed
Test and build / Test and lint (push) Failing after 35s
Test and build / Build collector (push) Failing after 36s
Test and build / Build receiver (push) Failing after 36s
More APRS enhancements
2026-03-05 22:24:09 +01:00

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
});
});