{"id":"v001","input":{"start_northing":"5000 ft","start_easting":"5000 ft","start_station":"10+00.00","direction":"60","northing":"5300 ft","easting":"5400 ft"},"expect":{"result.station":"14+96.41","result.offset.value":-59.807621135331544,"result.side":"left","result.foot_northing.value":5248.205080756888,"result.foot_easting.value":5429.9038105676655,"ok":true},"source":"Surveying formulas (Ghilani & Wolf 2018) evaluated in Python (tools/vectors/gen_survey.py)","sourceVersion":"15th edition (2018)","tolerance":{"result.offset.value":{"rel":1e-11,"abs":1e-09},"result.foot_northing.value":{"rel":1e-11,"abs":1e-09},"result.foot_easting.value":{"rel":1e-11,"abs":1e-09}}}
{"id":"v002","input":{"start_northing":"0 ft","start_easting":"0 ft","start_station":"0+00.00","direction":"0","northing":"50 ft","easting":"-20 ft"},"expect":{"result.station":"0+50.00","result.offset.value":-20.0,"result.side":"left","result.foot_northing.value":50.0,"result.foot_easting.value":0.0,"ok":true},"source":"Surveying formulas (Ghilani & Wolf 2018) evaluated in Python (tools/vectors/gen_survey.py)","sourceVersion":"15th edition (2018)","tolerance":{"result.offset.value":{"rel":1e-11,"abs":1e-09},"result.foot_northing.value":{"rel":1e-11,"abs":1e-09},"result.foot_easting.value":{"rel":1e-11,"abs":1e-09}}}
{"id":"v003","input":{"start_northing":"1000 ft","start_easting":"2000 ft","start_station":"5+00.00","direction":"225","northing":"900 ft","easting":"1950 ft"},"expect":{"result.station":"6+06.07","result.offset.value":-35.355339059327356,"result.side":"left","result.foot_northing.value":925.0,"result.foot_easting.value":1925.0,"ok":true},"source":"Surveying formulas (Ghilani & Wolf 2018) evaluated in Python (tools/vectors/gen_survey.py)","sourceVersion":"15th edition (2018)","tolerance":{"result.offset.value":{"rel":1e-11,"abs":1e-09},"result.foot_northing.value":{"rel":1e-11,"abs":1e-09},"result.foot_easting.value":{"rel":1e-11,"abs":1e-09}}}
{"id":"v004","input":{"start_northing":"200 ft","start_easting":"300 ft","start_station":"12+50.00","direction":"135","northing":"150 ft","easting":"400 ft"},"expect":{"result.station":"13+56.07","result.offset.value":-35.35533905932736,"result.side":"left","result.foot_northing.value":125.0,"result.foot_easting.value":375.0,"ok":true},"source":"Surveying formulas (Ghilani & Wolf 2018) evaluated in Python (tools/vectors/gen_survey.py)","sourceVersion":"15th edition (2018)","tolerance":{"result.offset.value":{"rel":1e-11,"abs":1e-09},"result.foot_northing.value":{"rel":1e-11,"abs":1e-09},"result.foot_easting.value":{"rel":1e-11,"abs":1e-09}}}
{"id":"v005","input":{"start_northing":"5000 ft","start_easting":"5000 ft","start_station":"10+00","direction":"60","station":"13+50","offset":"-12.5 ft"},"expect":{"result.northing.value":5185.8253175473055,"result.easting.value":5296.858891324553,"result.side":"left","ok":true},"source":"Surveying formulas (Ghilani & Wolf 2018) evaluated in Python (tools/vectors/gen_survey.py)","sourceVersion":"15th edition (2018)","tolerance":{"result.northing.value":{"rel":1e-11,"abs":1e-09},"result.easting.value":{"rel":1e-11,"abs":1e-09}}}
{"id":"v006","input":{"start_northing":"0 ft","start_easting":"0 ft","direction":"0"},"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":{}}
