{
"_meta": {
"name": "Coordinate Parsing Gauntlet",
"description": "Exhaustive test of geospatial coordinate parsing across all supported formats",
"version": "1.0.0",
"cases": 105,
"categories": [
"decimal_degrees",
"dms",
"iso6709",
"compass_suffixed",
"ambiguous_ordering",
"invalid",
"edge_cases"
]
},
"cases": [
{"id": "dd_001", "input": "40.7128, -74.0060", "expected_lat": 40.7128, "expected_lng": -74.0060, "format": "DecimalDegrees", "note": "New York City"},
{"id": "dd_002", "input": "-33.8688, 151.2093", "expected_lat": -33.8688, "expected_lng": 151.2093, "format": "DecimalDegrees", "note": "Sydney, Australia"},
{"id": "dd_003", "input": "0, 0", "expected_lat": 0.0, "expected_lng": 0.0, "format": "DecimalDegrees", "note": "Null Island"},
{"id": "dd_004", "input": "90, 180", "expected_lat": 90.0, "expected_lng": 180.0, "format": "DecimalDegrees", "note": "Max valid lat/lng"},
{"id": "dd_005", "input": "-90, -180", "expected_lat": -90.0, "expected_lng": -180.0, "format": "DecimalDegrees", "note": "Min valid lat/lng"},
{"id": "dd_006", "input": "48.8566, 2.3522", "expected_lat": 48.8566, "expected_lng": 2.3522, "format": "DecimalDegrees", "note": "Paris, France"},
{"id": "dd_007", "input": "35.6762, 139.6503", "expected_lat": 35.6762, "expected_lng": 139.6503, "format": "DecimalDegrees", "note": "Tokyo, Japan"},
{"id": "dd_008", "input": "55.7558, 37.6173", "expected_lat": 55.7558, "expected_lng": 37.6173, "format": "DecimalDegrees", "note": "Moscow, Russia"},
{"id": "dd_009", "input": "-22.9068, -43.1729", "expected_lat": -22.9068, "expected_lng": -43.1729, "format": "DecimalDegrees", "note": "Rio de Janeiro, Brazil"},
{"id": "dd_010", "input": "1.3521, 103.8198", "expected_lat": 1.3521, "expected_lng": 103.8198, "format": "DecimalDegrees", "note": "Singapore"},
{"id": "dd_011", "input": "40.7128 -74.0060", "expected_lat": 40.7128, "expected_lng": -74.0060, "format": "DecimalDegrees", "note": "Space-separated NYC"},
{"id": "dd_012", "input": "-34.6037, -58.3816", "expected_lat": -34.6037, "expected_lng": -58.3816, "format": "DecimalDegrees", "note": "Buenos Aires, Argentina"},
{"id": "dd_013", "input": "64.1466, -21.9426", "expected_lat": 64.1466, "expected_lng": -21.9426, "format": "DecimalDegrees", "note": "Reykjavik, Iceland"},
{"id": "dd_014", "input": "-1.2921, 36.8219", "expected_lat": -1.2921, "expected_lng": 36.8219, "format": "DecimalDegrees", "note": "Nairobi, Kenya"},
{"id": "dd_015", "input": "28.6139, 77.2090", "expected_lat": 28.6139, "expected_lng": 77.2090, "format": "DecimalDegrees", "note": "New Delhi, India"},
{"id": "dd_016", "input": "37.5665, 126.9780", "expected_lat": 37.5665, "expected_lng": 126.9780, "format": "DecimalDegrees", "note": "Seoul, South Korea"},
{"id": "dd_017", "input": "-41.2865, 174.7762", "expected_lat": -41.2865, "expected_lng": 174.7762, "format": "DecimalDegrees", "note": "Wellington, New Zealand"},
{"id": "dd_018", "input": "30.0444, 31.2357", "expected_lat": 30.0444, "expected_lng": 31.2357, "format": "DecimalDegrees", "note": "Cairo, Egypt"},
{"id": "dd_019", "input": "59.3293, 18.0686", "expected_lat": 59.3293, "expected_lng": 18.0686, "format": "DecimalDegrees", "note": "Stockholm, Sweden"},
{"id": "dd_020", "input": "13.7563, 100.5018", "expected_lat": 13.7563, "expected_lng": 100.5018, "format": "DecimalDegrees", "note": "Bangkok, Thailand"},
{"id": "dms_001", "input": "40°42'46\"N 74°0'22\"W", "expected_lat": 40.7128, "expected_lng": -74.0061, "format": "Dms", "note": "NYC in DMS with ASCII quotes"},
{"id": "dms_002", "input": "51°30'26\"N 0°7'39\"W", "expected_lat": 51.5072, "expected_lng": -0.1275, "format": "Dms", "note": "London, UK"},
{"id": "dms_003", "input": "40\u00b042\u203246\u2033N 74\u00b00\u203222\u2033W", "expected_lat": 40.7128, "expected_lng": -74.0061, "format": "Dms", "note": "NYC with Unicode prime/double-prime"},
{"id": "dms_004", "input": "48°51'24\"N 2°17'40\"E", "expected_lat": 48.8567, "expected_lng": 2.2944, "format": "Dms", "note": "Paris, Eiffel Tower"},
{"id": "dms_005", "input": "33°51'54\"S 151°12'34\"E", "expected_lat": -33.865, "expected_lng": 151.2094, "format": "Dms", "note": "Sydney, Australia"},
{"id": "dms_006", "input": "35°40'34\"N 139°44'52\"E", "expected_lat": 35.6761, "expected_lng": 139.7478, "format": "Dms", "note": "Tokyo Tower, Japan"},
{"id": "dms_007", "input": "55°45'21\"N 37°37'2\"E", "expected_lat": 55.7558, "expected_lng": 37.6172, "format": "Dms", "note": "Moscow Kremlin"},
{"id": "dms_008", "input": "22°54'24\"S 43°10'22\"W", "expected_lat": -22.9067, "expected_lng": -43.1728, "format": "Dms", "note": "Rio de Janeiro"},
{"id": "dms_009", "input": "0°0'0\"N 0°0'0\"E", "expected_lat": 0.0, "expected_lng": 0.0, "format": "Dms", "note": "Null Island in DMS"},
{"id": "dms_010", "input": "90°0'0\"N 180°0'0\"E", "expected_lat": 90.0, "expected_lng": 180.0, "format": "Dms", "note": "Maximum valid DMS"},
{"id": "dms_011", "input": "90°0'0\"S 180°0'0\"W", "expected_lat": -90.0, "expected_lng": -180.0, "format": "Dms", "note": "Minimum valid DMS"},
{"id": "dms_012", "input": "41°24'12\"N 2°10'26\"E", "expected_lat": 41.4033, "expected_lng": 2.1739, "format": "Dms", "note": "Barcelona, Spain"},
{"id": "dms_013", "input": "52°31'12\"N 13°24'18\"E", "expected_lat": 52.52, "expected_lng": 13.405, "format": "Dms", "note": "Berlin, Germany"},
{"id": "dms_014", "input": "37°58'17\"N 23°43'41\"E", "expected_lat": 37.9714, "expected_lng": 23.728, "format": "Dms", "note": "Athens, Greece"},
{"id": "dms_015", "input": "1°17'12\"S 36°49'19\"E", "expected_lat": -1.2867, "expected_lng": 36.8219, "format": "Dms", "note": "Nairobi, Kenya in DMS"},
{"id": "dms_016", "input": "39°54'20\"N 116°23'29\"E", "expected_lat": 39.9056, "expected_lng": 116.3914, "format": "Dms", "note": "Beijing, China"},
{"id": "dms_017", "input": "34°3'8\"S 18°31'48\"E", "expected_lat": -34.0522, "expected_lng": 18.53, "format": "Dms", "note": "Cape Town, South Africa"},
{"id": "dms_018", "input": "25°15'27\"S 57°38'0\"W", "expected_lat": -25.2575, "expected_lng": -57.6333, "format": "Dms", "note": "Asuncion, Paraguay"},
{"id": "dms_019", "input": "64°8'48\"N 21°56'33\"W", "expected_lat": 64.1467, "expected_lng": -21.9425, "format": "Dms", "note": "Reykjavik, Iceland in DMS"},
{"id": "dms_020", "input": "51\u00b030\u203226\u2033N 0\u00b07\u203239\u2033W", "expected_lat": 51.5072, "expected_lng": -0.1275, "format": "Dms", "note": "London with Unicode degree/prime/double-prime"},
{"id": "iso_001", "input": "+40.7128-074.0060/", "expected_lat": 40.7128, "expected_lng": -74.0060, "format": "Iso6709", "note": "NYC ISO 6709"},
{"id": "iso_002", "input": "+48.8566+002.3522/", "expected_lat": 48.8566, "expected_lng": 2.3522, "format": "Iso6709", "note": "Paris ISO 6709"},
{"id": "iso_003", "input": "+00.0000+000.0000/", "expected_lat": 0.0, "expected_lng": 0.0, "format": "Iso6709", "note": "Null Island ISO 6709"},
{"id": "iso_004", "input": "-33.8688+151.2093/", "expected_lat": -33.8688, "expected_lng": 151.2093, "format": "Iso6709", "note": "Sydney ISO 6709"},
{"id": "iso_005", "input": "+35.6762+139.6503/", "expected_lat": 35.6762, "expected_lng": 139.6503, "format": "Iso6709", "note": "Tokyo ISO 6709"},
{"id": "iso_006", "input": "+55.7558+037.6173/", "expected_lat": 55.7558, "expected_lng": 37.6173, "format": "Iso6709", "note": "Moscow ISO 6709"},
{"id": "iso_007", "input": "-22.9068-043.1729/", "expected_lat": -22.9068, "expected_lng": -43.1729, "format": "Iso6709", "note": "Rio ISO 6709"},
{"id": "iso_008", "input": "+90.0000+180.0000/", "expected_lat": 90.0, "expected_lng": 180.0, "format": "Iso6709", "note": "Max valid ISO 6709"},
{"id": "iso_009", "input": "-90.0000-180.0000/", "expected_lat": -90.0, "expected_lng": -180.0, "format": "Iso6709", "note": "Min valid ISO 6709"},
{"id": "iso_010", "input": "+51.5074-000.1278/", "expected_lat": 51.5074, "expected_lng": -0.1278, "format": "Iso6709", "note": "London ISO 6709"},
{"id": "iso_011", "input": "+01.3521+103.8198/", "expected_lat": 1.3521, "expected_lng": 103.8198, "format": "Iso6709", "note": "Singapore ISO 6709"},
{"id": "iso_012", "input": "+40.7128-074.0060", "expected_lat": 40.7128, "expected_lng": -74.006, "format": "Iso6709", "note": "NYC ISO 6709 without trailing slash"},
{"id": "iso_013", "input": "-01.2921+036.8219/", "expected_lat": -1.2921, "expected_lng": 36.8219, "format": "Iso6709", "note": "Nairobi ISO 6709"},
{"id": "iso_014", "input": "+28.6139+077.2090/", "expected_lat": 28.6139, "expected_lng": 77.209, "format": "Iso6709", "note": "New Delhi ISO 6709"},
{"id": "iso_015", "input": "-41.2865+174.7762/", "expected_lat": -41.2865, "expected_lng": 174.7762, "format": "Iso6709", "note": "Wellington ISO 6709"},
{"id": "comp_001", "input": "40.7128\u00b0N 74.0060\u00b0W", "expected_lat": 40.7128, "expected_lng": -74.006, "format": "Dms", "note": "NYC compass-suffixed decimal degrees"},
{"id": "comp_002", "input": "33.8688\u00b0S 151.2093\u00b0E", "expected_lat": -33.8688, "expected_lng": 151.2093, "format": "Dms", "note": "Sydney compass-suffixed"},
{"id": "comp_003", "input": "48.8566\u00b0N 2.3522\u00b0E", "expected_lat": 48.8566, "expected_lng": 2.3522, "format": "Dms", "note": "Paris compass-suffixed"},
{"id": "comp_004", "input": "35.6762\u00b0N 139.6503\u00b0E", "expected_lat": 35.6762, "expected_lng": 139.6503, "format": "Dms", "note": "Tokyo compass-suffixed"},
{"id": "comp_005", "input": "0.0000\u00b0N 0.0000\u00b0E", "expected_lat": 0.0, "expected_lng": 0.0, "format": "Dms", "note": "Null Island compass-suffixed"},
{"id": "comp_006", "input": "90.0000\u00b0N 180.0000\u00b0E", "expected_lat": 90.0, "expected_lng": 180.0, "format": "Dms", "note": "Max valid compass-suffixed"},
{"id": "comp_007", "input": "90.0000\u00b0S 180.0000\u00b0W", "expected_lat": -90.0, "expected_lng": -180.0, "format": "Dms", "note": "Min valid compass-suffixed"},
{"id": "comp_008", "input": "22.9068\u00b0S 43.1729\u00b0W", "expected_lat": -22.9068, "expected_lng": -43.1729, "format": "Dms", "note": "Rio compass-suffixed"},
{"id": "comp_009", "input": "55.7558\u00b0N 37.6173\u00b0E", "expected_lat": 55.7558, "expected_lng": 37.6173, "format": "Dms", "note": "Moscow compass-suffixed"},
{"id": "comp_010", "input": "1.3521\u00b0N 103.8198\u00b0E", "expected_lat": 1.3521, "expected_lng": 103.8198, "format": "Dms", "note": "Singapore compass-suffixed"},
{"id": "comp_011", "input": "51.5074\u00b0N 0.1278\u00b0W", "expected_lat": 51.5074, "expected_lng": -0.1278, "format": "Dms", "note": "London compass-suffixed"},
{"id": "comp_012", "input": "41.3851\u00b0N 2.1734\u00b0E", "expected_lat": 41.3851, "expected_lng": 2.1734, "format": "Dms", "note": "Barcelona compass-suffixed"},
{"id": "comp_013", "input": "34.0522\u00b0S 18.5300\u00b0E", "expected_lat": -34.0522, "expected_lng": 18.53, "format": "Dms", "note": "Cape Town compass-suffixed"},
{"id": "comp_014", "input": "64.1466\u00b0N 21.9426\u00b0W", "expected_lat": 64.1466, "expected_lng": -21.9426, "format": "Dms", "note": "Reykjavik compass-suffixed"},
{"id": "comp_015", "input": "59.3293\u00b0N 18.0686\u00b0E", "expected_lat": 59.3293, "expected_lng": 18.0686, "format": "Dms", "note": "Stockholm compass-suffixed"},
{"id": "amb_001", "input": "40, 50", "expected_lat": 40.0, "expected_lng": 50.0, "format": "DecimalDegrees", "note": "Ambiguous: both values within [-90,90], assumed lat-first"},
{"id": "amb_002", "input": "10, 20", "expected_lat": 10.0, "expected_lng": 20.0, "format": "DecimalDegrees", "note": "Ambiguous: small positive values"},
{"id": "amb_003", "input": "-30, 45", "expected_lat": -30.0, "expected_lng": 45.0, "format": "DecimalDegrees", "note": "Ambiguous: negative lat, positive lng both <= 90"},
{"id": "amb_004", "input": "85, 85", "expected_lat": 85.0, "expected_lng": 85.0, "format": "DecimalDegrees", "note": "Ambiguous: identical high values"},
{"id": "amb_005", "input": "0.001, 0.001", "expected_lat": 0.001, "expected_lng": 0.001, "format": "DecimalDegrees", "note": "Ambiguous: near-zero identical values"},
{"id": "amb_006", "input": "-45, -45", "expected_lat": -45.0, "expected_lng": -45.0, "format": "DecimalDegrees", "note": "Ambiguous: identical negative values"},
{"id": "amb_007", "input": "1.0, 2.0", "expected_lat": 1.0, "expected_lng": 2.0, "format": "DecimalDegrees", "note": "Ambiguous: small integer-like decimals"},
{"id": "amb_008", "input": "89.9999, 89.9999", "expected_lat": 89.9999, "expected_lng": 89.9999, "format": "DecimalDegrees", "note": "Ambiguous: just under 90 on both"},
{"id": "amb_009", "input": "-89, 89", "expected_lat": -89.0, "expected_lng": 89.0, "format": "DecimalDegrees", "note": "Ambiguous: opposite signs both <= 90"},
{"id": "amb_010", "input": "45.5, -45.5", "expected_lat": 45.5, "expected_lng": -45.5, "format": "DecimalDegrees", "note": "Ambiguous: symmetric around zero"},
{"id": "inv_001", "input": "91, 0", "expected_lat": null, "expected_lng": null, "format": null, "note": "Invalid: latitude > 90"},
{"id": "inv_002", "input": "0, 181", "expected_lat": null, "expected_lng": null, "format": null, "note": "Invalid: longitude > 180"},
{"id": "inv_003", "input": "-91, 0", "expected_lat": null, "expected_lng": null, "format": null, "note": "Invalid: latitude < -90"},
{"id": "inv_004", "input": "0, -181", "expected_lat": null, "expected_lng": null, "format": null, "note": "Invalid: longitude < -180"},
{"id": "inv_005", "input": "abc, def", "expected_lat": null, "expected_lng": null, "format": null, "note": "Invalid: non-numeric garbage"},
{"id": "inv_006", "input": "", "expected_lat": null, "expected_lng": null, "format": null, "note": "Invalid: empty string"},
{"id": "inv_007", "input": "hello world", "expected_lat": null, "expected_lng": null, "format": null, "note": "Invalid: plain text"},
{"id": "inv_008", "input": "999, 999", "expected_lat": null, "expected_lng": null, "format": null, "note": "Invalid: wildly out of range"},
{"id": "inv_009", "input": "40.7128", "expected_lat": null, "expected_lng": null, "format": null, "note": "Invalid: single number, not a pair"},
{"id": "inv_010", "input": "40.7128, -74.0060, 100", "expected_lat": null, "expected_lng": null, "format": null, "note": "Invalid: three numbers (altitude not supported in pair parse)"},
{"id": "edge_001", "input": "0.0, 0.0", "expected_lat": 0.0, "expected_lng": 0.0, "format": "DecimalDegrees", "note": "All zeros as floats"},
{"id": "edge_002", "input": "0, 0", "expected_lat": 0.0, "expected_lng": 0.0, "format": "DecimalDegrees", "note": "All zeros as integers"},
{"id": "edge_003", "input": "-0.0, -0.0", "expected_lat": 0.0, "expected_lng": 0.0, "format": "DecimalDegrees", "note": "Negative zero"},
{"id": "edge_004", "input": "40.712800000, -74.006000000", "expected_lat": 40.7128, "expected_lng": -74.006, "format": "DecimalDegrees", "note": "Excessive trailing zeros"},
{"id": "edge_005", "input": "40.7127753, -74.0059728", "expected_lat": 40.7127753, "expected_lng": -74.0059728, "format": "DecimalDegrees", "note": "7 decimal places (sub-meter precision)"},
{"id": "edge_006", "input": "40.71278532, -74.00597281", "expected_lat": 40.71278532, "expected_lng": -74.00597281, "format": "DecimalDegrees", "note": "8 decimal places (millimeter precision)"},
{"id": "edge_007", "input": " 40.7128 , -74.0060 ", "expected_lat": 40.7128, "expected_lng": -74.006, "format": "DecimalDegrees", "note": "Leading and trailing whitespace"},
{"id": "edge_008", "input": "90.0, -180.0", "expected_lat": 90.0, "expected_lng": -180.0, "format": "DecimalDegrees", "note": "North pole, antimeridian"},
{"id": "edge_009", "input": "-90.0, 180.0", "expected_lat": -90.0, "expected_lng": 180.0, "format": "DecimalDegrees", "note": "South pole, antimeridian"},
{"id": "edge_010", "input": "0.000001, 0.000001", "expected_lat": 0.000001, "expected_lng": 0.000001, "format": "DecimalDegrees", "note": "Very small positive values (~11cm from null island)"},
{"id": "edge_011", "input": "+40.7128-074.0060/", "expected_lat": 40.7128, "expected_lng": -74.006, "format": "Iso6709", "note": "ISO 6709 takes precedence over decimal for signed strings"},
{"id": "edge_012", "input": "40.7128, -74.0060", "expected_lat": 40.7128, "expected_lng": -74.006, "format": "DecimalDegrees", "note": "Extra space after comma"},
{"id": "edge_013", "input": "40.7128,-74.0060", "expected_lat": 40.7128, "expected_lng": -74.006, "format": "DecimalDegrees", "note": "No space after comma"},
{"id": "edge_014", "input": "+00.0000+000.0000", "expected_lat": 0.0, "expected_lng": 0.0, "format": "Iso6709", "note": "ISO 6709 null island without trailing slash"},
{"id": "edge_015", "input": "0.123456789012, 0.987654321098", "expected_lat": 0.123456789012, "expected_lng": 0.987654321098, "format": "DecimalDegrees", "note": "12 decimal places (extreme precision)"}
]
}