{"id":"v001","input":{"points":[{"distance":"0.0 ft","elevation":"400.0 ft"},{"distance":"100.0 ft","elevation":"406.0 ft"},{"distance":"200.0 ft","elevation":"417.0 ft"},{"distance":"300.0 ft","elevation":"414.0 ft"}],"limit":8},"expect":{"result.segments.1.grade":11.0,"result.segments.1.over_limit":"yes","result.segments.0.over_limit":"no","result.flagged":1.0,"result.max_grade":11.0,"result.climb.value":17.0,"result.descent.value":3.0,"ok":true},"source":"add-survey-suite scenarios","sourceVersion":"2026","tolerance":{"result.segments.1.grade":{"rel":1e-12,"abs":1e-09},"result.flagged":{"rel":1e-12,"abs":1e-09},"result.max_grade":{"rel":1e-12,"abs":1e-09},"result.climb.value":{"rel":1e-12,"abs":1e-09},"result.descent.value":{"rel":1e-12,"abs":1e-09}}}
{"id":"v002","input":{"points":[{"distance":"0.0 m","elevation":"10.0 m"},{"distance":"50.0 m","elevation":"12.5 m"},{"distance":"80.0 m","elevation":"9.0 m"},{"distance":"200.0 m","elevation":"15.0 m"}],"limit":10},"expect":{"result.max_grade":-11.666666666666666,"result.average_grade":2.5,"result.climb.value":8.5,"result.descent.value":3.5,"result.flagged":1.0,"ok":true},"source":"Surveying formulas (Ghilani & Wolf 2018) evaluated in Python (tools/vectors/gen_survey.py)","sourceVersion":"15th edition (2018)","tolerance":{"result.max_grade":{"rel":1e-12,"abs":1e-09},"result.average_grade":{"rel":1e-12,"abs":1e-09},"result.climb.value":{"rel":1e-12,"abs":1e-09},"result.descent.value":{"rel":1e-12,"abs":1e-09},"result.flagged":{"rel":1e-12,"abs":1e-09}}}
{"id":"v003","input":{"points":[{"distance":"0.0 ft","elevation":"100.0 ft"},{"distance":"25.0 ft","elevation":"99.0 ft"},{"distance":"75.0 ft","elevation":"96.5 ft"}]},"expect":{"result.max_grade":-5.0,"result.average_grade":-4.666666666666667,"result.climb.value":0.0,"result.descent.value":3.5,"ok":true},"source":"Surveying formulas (Ghilani & Wolf 2018) evaluated in Python (tools/vectors/gen_survey.py)","sourceVersion":"15th edition (2018)","tolerance":{"result.max_grade":{"rel":1e-12,"abs":1e-09},"result.average_grade":{"rel":1e-12,"abs":1e-09},"result.climb.value":{"rel":1e-12,"abs":1e-09},"result.descent.value":{"rel":1e-12,"abs":1e-09}}}
{"id":"v004","input":{"points":[{"distance":"0.0 m","elevation":"0.0 m"},{"distance":"10.0 m","elevation":"1.2 m"},{"distance":"20.0 m","elevation":"2.0 m"},{"distance":"30.0 m","elevation":"1.0 m"},{"distance":"40.0 m","elevation":"3.5 m"}],"limit":12},"expect":{"result.max_grade":25.0,"result.average_grade":8.75,"result.climb.value":4.5,"result.descent.value":1.0,"result.flagged":1.0,"ok":true},"source":"Surveying formulas (Ghilani & Wolf 2018) evaluated in Python (tools/vectors/gen_survey.py)","sourceVersion":"15th edition (2018)","tolerance":{"result.max_grade":{"rel":1e-12,"abs":1e-09},"result.average_grade":{"rel":1e-12,"abs":1e-09},"result.climb.value":{"rel":1e-12,"abs":1e-09},"result.descent.value":{"rel":1e-12,"abs":1e-09},"result.flagged":{"rel":1e-12,"abs":1e-09}}}
{"id":"v005","input":{"points":[{"distance":"0.0 ft","elevation":"1.0 ft"},{"distance":"10.0 ft","elevation":"1.5 ft"}]},"expect":{"result.average_grade":5.0,"ok":true},"source":"Surveying formulas (Ghilani & Wolf 2018) evaluated in Python (tools/vectors/gen_survey.py)","sourceVersion":"15th edition (2018)","tolerance":{"result.average_grade":{"rel":1e-12,"abs":1e-09}}}
{"id":"v006","input":{"points":[{"distance":"0.0 ft","elevation":"1.0 ft"},{"distance":"0.0 ft","elevation":"2.0 ft"}]},"expect":{"ok":false,"error.code":"INVALID_INPUT"},"source":"Surveying formulas (Ghilani & Wolf 2018) evaluated in Python (tools/vectors/gen_survey.py)","sourceVersion":"15th edition (2018)","tolerance":{}}
