cdcef2e106
Ergänzt visibility in Editor und Live-Log inkl. OWM-Übernahme, CSV-Export und touch-taugliche Slider für Luftdruck, Seegang, Sichtweite und Krängung. Co-authored-by: Cursor <cursoragent@cursor.com>
46 lines
1.3 KiB
TypeScript
46 lines
1.3 KiB
TypeScript
import { describe, expect, it } from 'vitest'
|
|
import {
|
|
formatPressureHpa,
|
|
formatSeaState,
|
|
formatVisibilityMeters,
|
|
parseHeelDeg,
|
|
parsePressureHpa,
|
|
parseSeaState,
|
|
parseVisibilityMeters,
|
|
visibilityMetersFromStepIndex,
|
|
visibilityStepIndex
|
|
} from './weatherMetrics.js'
|
|
|
|
describe('weatherMetrics', () => {
|
|
it('parses and formats pressure', () => {
|
|
expect(parsePressureHpa('1014')).toBe(1014)
|
|
expect(parsePressureHpa('1014 hPa')).toBe(1014)
|
|
expect(parsePressureHpa('')).toBeNull()
|
|
expect(formatPressureHpa(1014)).toBe('1014')
|
|
})
|
|
|
|
it('parses and formats sea state', () => {
|
|
expect(parseSeaState('3')).toBe(3)
|
|
expect(parseSeaState('leicht')).toBeNull()
|
|
expect(formatSeaState(3)).toBe('3')
|
|
})
|
|
|
|
it('parses and formats heel', () => {
|
|
expect(parseHeelDeg('12')).toBe(12)
|
|
expect(parseHeelDeg('12°')).toBe(12)
|
|
})
|
|
|
|
it('parses visibility with units', () => {
|
|
expect(parseVisibilityMeters('10 km')).toBe(10000)
|
|
expect(parseVisibilityMeters('500 m')).toBe(500)
|
|
expect(formatVisibilityMeters(10000)).toBe('10 km')
|
|
expect(formatVisibilityMeters(500)).toBe('500 m')
|
|
})
|
|
|
|
it('maps visibility to log steps', () => {
|
|
expect(visibilityStepIndex(10000)).toBe(8)
|
|
expect(visibilityMetersFromStepIndex(8)).toBe(10000)
|
|
expect(visibilityMetersFromStepIndex(0)).toBe(0)
|
|
})
|
|
})
|