{"id":"v001","input":{"curve":"crest","sight_distance":"400 ft","grade_change":5,"eye_height":"3.5 ft","object_height":"2.0 ft"},"expect":{"result.min_length.value":368.33989511483276,"result.case":"S > L: the sight line extends past the curve","result.k":73.66797902296655,"ok":true},"source":"add-survey-suite scenarios","sourceVersion":"2026","tolerance":{"result.min_length.value":{"rel":1e-12,"abs":1e-09},"result.k":{"rel":1e-12,"abs":1e-09}}}
{"id":"v002","input":{"curve":"crest","sight_distance":"650 ft","grade_change":7.5,"eye_height":"3.5 ft","object_height":"2.0 ft"},"expect":{"result.min_length.value":1468.1690358403494,"result.case":"S < L: the sight line lies within the curve","ok":true},"source":"Surveying formulas (Ghilani & Wolf 2018) evaluated in Python (tools/vectors/gen_survey.py)","sourceVersion":"15th edition (2018)","tolerance":{"result.min_length.value":{"rel":1e-12,"abs":1e-09}}}
{"id":"v003","input":{"curve":"sag","sight_distance":"500 ft","grade_change":6,"headlight_height":"2 ft","divergence":"1 deg"},"expect":{"result.min_length.value":699.1356143729065,"result.case":"S < L: the sight line lies within the curve","ok":true},"source":"Surveying formulas (Ghilani & Wolf 2018) evaluated in Python (tools/vectors/gen_survey.py)","sourceVersion":"15th edition (2018)","tolerance":{"result.min_length.value":{"rel":1e-12,"abs":1e-09}}}
{"id":"v004","input":{"curve":"sag","sight_distance":"150 m","grade_change":2,"headlight_height":"0.6 m","divergence":"1 deg"},"expect":{"result.min_length.value":0.0,"result.case":"S > L: the sight line extends past the curve","ok":true},"source":"Surveying formulas (Ghilani & Wolf 2018) evaluated in Python (tools/vectors/gen_survey.py)","sourceVersion":"15th edition (2018)","tolerance":{"result.min_length.value":{"rel":1e-12,"abs":1e-09}}}
{"id":"v005","input":{"curve":"crest","sight_distance":"400 ft","grade_change":5,"eye_height":"3.5 ft","object_height":"2.0 ft","design_k":44,"design_k_source":"A design manual's crest K table"},"expect":{"result.design_length.value":220.0,"result.design_source":"A design manual's crest K table","ok":true},"source":"Surveying formulas (Ghilani & Wolf 2018) evaluated in Python (tools/vectors/gen_survey.py)","sourceVersion":"15th edition (2018)","tolerance":{"result.design_length.value":{"rel":1e-12,"abs":1e-09}}}
{"id":"v006","input":{"curve":"crest","sight_distance":"400 ft","grade_change":5},"expect":{"ok":false,"error.code":"INVALID_INPUT","error.field":"/eye_height"},"source":"Surveying formulas (Ghilani & Wolf 2018) evaluated in Python (tools/vectors/gen_survey.py)","sourceVersion":"15th edition (2018)","tolerance":{}}
{"id":"v007","input":{"curve":"crest","sight_distance":"400 ft","grade_change":5,"eye_height":"3.5 ft","object_height":"2.0 ft","design_k":44},"expect":{"ok":false,"error.code":"INVALID_INPUT","error.field":"/design_k_source"},"source":"Surveying formulas (Ghilani & Wolf 2018) evaluated in Python (tools/vectors/gen_survey.py)","sourceVersion":"15th edition (2018)","tolerance":{}}
