{"id":"v001","input":{"tas":"120 kt","fuel_flow":"8.5 gph","groundspeed":"105 kt"},"expect":{"result.air_range":14.117647058823529,"result.fuel_per_100nm.value":7.083333333333333,"result.ground_range":12.352941176470589,"result.ground_fuel_per_100nm.value":8.095238095238095,"ok":true},"source":"Specific range worked in Python (tools/vectors/gen_range.py)","sourceVersion":"2026","tolerance":{"result.air_range":{"rel":0,"abs":1e-09},"result.fuel_per_100nm.value":{"rel":0,"abs":1e-09},"result.ground_range":{"rel":0,"abs":1e-09},"result.ground_fuel_per_100nm.value":{"rel":0,"abs":1e-09}}}
{"id":"v002","input":{"tas":"150 kt","fuel_flow":"12 gph"},"expect":{"result.air_range":12.5,"result.fuel_per_100nm.value":8.0,"ok":true},"source":"Specific range worked in Python (tools/vectors/gen_range.py)","sourceVersion":"2026","tolerance":{"result.air_range":{"rel":0,"abs":1e-09},"result.fuel_per_100nm.value":{"rel":0,"abs":1e-09}}}
{"id":"v003","input":{"tas":"95 kt","fuel_flow":"6 gph","groundspeed":"110 kt"},"expect":{"result.air_range":15.833333333333334,"result.fuel_per_100nm.value":6.315789473684211,"result.ground_range":18.333333333333332,"result.ground_fuel_per_100nm.value":5.454545454545454,"ok":true},"source":"Specific range worked in Python (tools/vectors/gen_range.py)","sourceVersion":"2026","tolerance":{"result.air_range":{"rel":0,"abs":1e-09},"result.fuel_per_100nm.value":{"rel":0,"abs":1e-09},"result.ground_range":{"rel":0,"abs":1e-09},"result.ground_fuel_per_100nm.value":{"rel":0,"abs":1e-09}}}
{"id":"v004","input":{"tas":"250 kt","fuel_flow":"30 gph","groundspeed":"280 kt"},"expect":{"result.air_range":8.333333333333334,"result.fuel_per_100nm.value":12.0,"result.ground_range":9.333333333333334,"result.ground_fuel_per_100nm.value":10.714285714285714,"ok":true},"source":"Specific range worked in Python (tools/vectors/gen_range.py)","sourceVersion":"2026","tolerance":{"result.air_range":{"rel":0,"abs":1e-09},"result.fuel_per_100nm.value":{"rel":0,"abs":1e-09},"result.ground_range":{"rel":0,"abs":1e-09},"result.ground_fuel_per_100nm.value":{"rel":0,"abs":1e-09}}}
{"id":"v005","input":{"tas":"140 kt","fuel_flow":"40 L/h","groundspeed":"130 kt"},"expect":{"result.air_range":13.248941244,"result.fuel_per_100nm.value":7.547772924518527,"result.ground_range":12.302588298,"result.ground_fuel_per_100nm.value":8.128370841789183,"ok":true},"source":"Specific range worked in Python (tools/vectors/gen_range.py)","sourceVersion":"2026","tolerance":{"result.air_range":{"rel":0,"abs":1e-09},"result.fuel_per_100nm.value":{"rel":0,"abs":1e-09},"result.ground_range":{"rel":0,"abs":1e-09},"result.ground_fuel_per_100nm.value":{"rel":0,"abs":1e-09}}}
{"id":"v006","input":{"tas":"120 kt","fuel_flow":"0 gph"},"expect":{"ok":false,"error.code":"INVALID_INPUT"},"source":"Specific range worked in Python (tools/vectors/gen_range.py)","sourceVersion":"2026","tolerance":{}}
{"id":"v007","input":{"tas":"0 kt","fuel_flow":"8 gph"},"expect":{"ok":false,"error.code":"INVALID_INPUT"},"source":"Specific range worked in Python (tools/vectors/gen_range.py)","sourceVersion":"2026","tolerance":{}}
{"id":"v008","input":{"tas":"120 kt","fuel_flow":"8 gph","groundspeed":"0 kt"},"expect":{"ok":false,"error.code":"INVALID_INPUT"},"source":"Specific range worked in Python (tools/vectors/gen_range.py)","sourceVersion":"2026","tolerance":{}}
