{"id":"v001","input":{"true_course":"70 deg","wind_correction":"-5 deg","variation":"-10 deg","deviation_card":[{"heading":"30 deg","deviation":"1 deg"},{"heading":"60 deg","deviation":"2 deg"},{"heading":"90 deg","deviation":"-1 deg"},{"heading":"120 deg","deviation":"-2 deg"}]},"expect":{"result.true_heading.value":65.0,"result.magnetic_heading.value":75.0,"result.deviation.value":0.5,"result.compass_heading.value":74.5,"ok":true},"source":"add-aviation-suite scenarios","sourceVersion":"2026","tolerance":{"result.true_heading.value":{"rel":0,"abs":1e-09},"result.magnetic_heading.value":{"rel":0,"abs":1e-09},"result.deviation.value":{"rel":0,"abs":1e-09},"result.compass_heading.value":{"rel":0,"abs":1e-09}}}
{"id":"v002","input":{"true_course":"70 deg","wind_correction":"-5 deg","variation":"-10 deg","deviation_card":[{"heading":"30 deg","deviation":"1 deg"},{"heading":"60 deg","deviation":"2 deg"},{"heading":"90 deg","deviation":"-1 deg"},{"heading":"120 deg","deviation":"-2 deg"},{"heading":"180 deg","deviation":"0 deg"},{"heading":"270 deg","deviation":"1.5 deg"},{"heading":"330 deg","deviation":"0.5 deg"}]},"expect":{"result.true_heading.value":65.0,"result.magnetic_heading.value":75.0,"result.deviation.value":0.5,"result.compass_heading.value":74.5,"ok":true},"source":"Heading arithmetic and Bolton (1980) eq. 15 worked in Python (tools/vectors/gen_heading.py)","sourceVersion":"2026","tolerance":{"result.true_heading.value":{"rel":0,"abs":1e-09},"result.magnetic_heading.value":{"rel":0,"abs":1e-09},"result.deviation.value":{"rel":0,"abs":1e-09},"result.compass_heading.value":{"rel":0,"abs":1e-09}}}
{"id":"v003","input":{"true_course":"180 deg","wind_correction":"8 deg","variation":"12 deg","deviation_card":[{"heading":"30 deg","deviation":"1 deg"},{"heading":"60 deg","deviation":"2 deg"},{"heading":"90 deg","deviation":"-1 deg"},{"heading":"120 deg","deviation":"-2 deg"},{"heading":"180 deg","deviation":"0 deg"},{"heading":"270 deg","deviation":"1.5 deg"},{"heading":"330 deg","deviation":"0.5 deg"}]},"expect":{"result.true_heading.value":188.0,"result.magnetic_heading.value":176.0,"result.deviation.value":-0.1333333333333333,"result.compass_heading.value":176.13333333333333,"ok":true},"source":"Heading arithmetic and Bolton (1980) eq. 15 worked in Python (tools/vectors/gen_heading.py)","sourceVersion":"2026","tolerance":{"result.true_heading.value":{"rel":0,"abs":1e-09},"result.magnetic_heading.value":{"rel":0,"abs":1e-09},"result.deviation.value":{"rel":0,"abs":1e-09},"result.compass_heading.value":{"rel":0,"abs":1e-09}}}
{"id":"v004","input":{"true_course":"350 deg","wind_correction":"12 deg","variation":"-3 deg","deviation_card":[{"heading":"30 deg","deviation":"1 deg"},{"heading":"60 deg","deviation":"2 deg"},{"heading":"90 deg","deviation":"-1 deg"},{"heading":"120 deg","deviation":"-2 deg"},{"heading":"180 deg","deviation":"0 deg"},{"heading":"270 deg","deviation":"1.5 deg"},{"heading":"330 deg","deviation":"0.5 deg"}]},"expect":{"result.true_heading.value":2.0,"result.magnetic_heading.value":5.0,"result.deviation.value":0.7916666666666667,"result.compass_heading.value":4.208333333333333,"ok":true},"source":"Heading arithmetic and Bolton (1980) eq. 15 worked in Python (tools/vectors/gen_heading.py)","sourceVersion":"2026","tolerance":{"result.true_heading.value":{"rel":0,"abs":1e-09},"result.magnetic_heading.value":{"rel":0,"abs":1e-09},"result.deviation.value":{"rel":0,"abs":1e-09},"result.compass_heading.value":{"rel":0,"abs":1e-09}}}
{"id":"v005","input":{"true_course":"0 deg","wind_correction":"0 deg","variation":"0 deg"},"expect":{"result.true_heading.value":0.0,"result.magnetic_heading.value":0.0,"result.deviation.value":0.0,"result.compass_heading.value":0.0,"ok":true},"source":"Heading arithmetic and Bolton (1980) eq. 15 worked in Python (tools/vectors/gen_heading.py)","sourceVersion":"2026","tolerance":{"result.true_heading.value":{"rel":0,"abs":1e-09},"result.magnetic_heading.value":{"rel":0,"abs":1e-09},"result.deviation.value":{"rel":0,"abs":1e-09},"result.compass_heading.value":{"rel":0,"abs":1e-09}}}
{"id":"v006","input":{"true_course":"255 deg","wind_correction":"-3 deg","variation":"7.5 deg","deviation_card":[{"heading":"30 deg","deviation":"1 deg"},{"heading":"60 deg","deviation":"2 deg"},{"heading":"90 deg","deviation":"-1 deg"},{"heading":"120 deg","deviation":"-2 deg"},{"heading":"180 deg","deviation":"0 deg"},{"heading":"270 deg","deviation":"1.5 deg"},{"heading":"330 deg","deviation":"0.5 deg"}]},"expect":{"result.true_heading.value":252.0,"result.magnetic_heading.value":244.5,"result.deviation.value":1.075,"result.compass_heading.value":243.425,"ok":true},"source":"Heading arithmetic and Bolton (1980) eq. 15 worked in Python (tools/vectors/gen_heading.py)","sourceVersion":"2026","tolerance":{"result.true_heading.value":{"rel":0,"abs":1e-09},"result.magnetic_heading.value":{"rel":0,"abs":1e-09},"result.deviation.value":{"rel":0,"abs":1e-09},"result.compass_heading.value":{"rel":0,"abs":1e-09}}}
{"id":"v007","input":{"true_course":"20 deg","wind_correction":"0 deg","variation":"14 deg","deviation_card":[{"heading":"30 deg","deviation":"1 deg"},{"heading":"60 deg","deviation":"2 deg"},{"heading":"90 deg","deviation":"-1 deg"},{"heading":"120 deg","deviation":"-2 deg"},{"heading":"180 deg","deviation":"0 deg"},{"heading":"270 deg","deviation":"1.5 deg"},{"heading":"330 deg","deviation":"0.5 deg"}]},"expect":{"result.true_heading.value":20.0,"result.magnetic_heading.value":6.0,"result.deviation.value":0.8,"result.compass_heading.value":5.2,"ok":true},"source":"Heading arithmetic and Bolton (1980) eq. 15 worked in Python (tools/vectors/gen_heading.py)","sourceVersion":"2026","tolerance":{"result.true_heading.value":{"rel":0,"abs":1e-09},"result.magnetic_heading.value":{"rel":0,"abs":1e-09},"result.deviation.value":{"rel":0,"abs":1e-09},"result.compass_heading.value":{"rel":0,"abs":1e-09}}}
{"id":"v008","input":{"true_course":"70 deg","variation":"0 deg","deviation_card":[{"heading":"60 deg","deviation":"40 deg"}]},"expect":{"ok":false,"error.code":"INVALID_INPUT"},"source":"Heading arithmetic and Bolton (1980) eq. 15 worked in Python (tools/vectors/gen_heading.py)","sourceVersion":"2026","tolerance":{}}
