From 90b563f6ce44f2382fd09d2cfcb7ddd59fb8c872 Mon Sep 17 00:00:00 2001 From: Rusty Conover Date: Tue, 10 Nov 2026 13:13:02 -0500 Subject: [PATCH 1/2] Evaluate duckdb.spatial/intersects_extent@1 with DuckDB core && semantics FilterApplier treated the extension call as a constant TRUE: rows were never filtered by a pushed `geom && const` (an EXACT filter DuckDB removes from its plan), and under NOT the predicate dropped every row. The example worker then re-applied it through the embedded engine's spatial st_intersects_extent, which treats NaN coordinates as never intersecting and so dropped rows DuckDB core keeps (297 of 1849 corpus pairs). Add WkbExtent, an ISO WKB (LE/BE, Z/M/ZM, nested collections) extent reader matching core: empty geometries and all-NaN POINTs contribute no vertex, a NaN axis on any other vertex is unbounded, bounds inclusive, exact doubles. Malformed/unsupported values (including EWKB flags) raise FilterV2Exception: an ADVISORY predicate then keeps the batch's rows, a REQUIRED one fails the scan. SpatialFilterExampleFunction now relies on FilterApplier alone. Tests run the DuckDB 2.0 conformance corpus (43 geometries, 1849 pairs) through FilterApplier and through the example worker's filter step for all four LE/BE combinations, plus advisory-failure and NULL cases. Co-Authored-By: Claude Opus 5.5 --- .../table/ExpressionFilterEvaluator.java | 4 + .../table/SpatialFilterExampleFunction.java | 36 +- .../table/SpatialFilterConformanceTest.java | 133 + .../conformance/intersects_extent_cases.json | 9512 +++++++++++++++++ .../query/vgi/pushdown/FilterApplier.java | 6 +- .../query/vgi/pushdown/PushdownFilters.java | 14 +- .../farm/query/vgi/pushdown/WkbExtent.java | 134 + .../IntersectsExtentConformanceTest.java | 179 + .../conformance/intersects_extent_cases.json | 9512 +++++++++++++++++ 9 files changed, 19511 insertions(+), 19 deletions(-) create mode 100644 vgi-example-worker/src/test/java/farm/query/vgi/example/table/SpatialFilterConformanceTest.java create mode 100644 vgi-example-worker/src/test/resources/conformance/intersects_extent_cases.json create mode 100644 vgi/src/main/java/farm/query/vgi/pushdown/WkbExtent.java create mode 100644 vgi/src/test/java/farm/query/vgi/pushdown/IntersectsExtentConformanceTest.java create mode 100644 vgi/src/test/resources/conformance/intersects_extent_cases.json diff --git a/vgi-example-worker/src/main/java/farm/query/vgi/example/table/ExpressionFilterEvaluator.java b/vgi-example-worker/src/main/java/farm/query/vgi/example/table/ExpressionFilterEvaluator.java index ccd2038a..e69a956c 100644 --- a/vgi-example-worker/src/main/java/farm/query/vgi/example/table/ExpressionFilterEvaluator.java +++ b/vgi-example-worker/src/main/java/farm/query/vgi/example/table/ExpressionFilterEvaluator.java @@ -30,6 +30,10 @@ * for the process. A batch is bridged into the engine via the Arrow C Data * interface, the combined predicate is evaluated to a per-row boolean mask, and * the batch is compacted via {@link FilterApplier#compact}. + * + *

Not used for {@code duckdb.spatial/intersects_extent@1}: {@link FilterApplier#apply} + * evaluates it with DuckDB core's {@code &&} semantics, which the spatial extension's + * {@code st_intersects_extent} does not match on NaN coordinates. */ public final class ExpressionFilterEvaluator { diff --git a/vgi-example-worker/src/main/java/farm/query/vgi/example/table/SpatialFilterExampleFunction.java b/vgi-example-worker/src/main/java/farm/query/vgi/example/table/SpatialFilterExampleFunction.java index 063ffc82..3fda73e6 100644 --- a/vgi-example-worker/src/main/java/farm/query/vgi/example/table/SpatialFilterExampleFunction.java +++ b/vgi-example-worker/src/main/java/farm/query/vgi/example/table/SpatialFilterExampleFunction.java @@ -40,7 +40,7 @@ * where {@code cols = ceil(sqrt(count))}. Declares {@code &&} and * {@code st_intersects_extent} as supported expression filters; the engine pushes * those predicates into the function (removing the FILTER node), and the worker - * applies them via {@link ExpressionFilterEvaluator}. + * applies them via {@link FilterApplier}. */ public final class SpatialFilterExampleFunction extends CountdownTableFunction { @@ -49,7 +49,7 @@ public final class SpatialFilterExampleFunction extends CountdownTableFunction { Map.of("ARROW:extension:name", "geoarrow.wkb", "ARROW:extension:metadata", "{}")), null); - private static final Schema OUTPUT_SCHEMA = Schemas.of( + static final Schema OUTPUT_SCHEMA = Schemas.of( Schemas.nullable("n", Schemas.INT64), Schemas.nullable("x", Schemas.FLOAT64), Schemas.nullable("y", Schemas.FLOAT64), @@ -91,6 +91,28 @@ static byte[] wkbPoint(double x, double y) { return b.array(); } + /** + * Apply the pushed filters to one emitted batch, exactly as {@link State#produceTick} does. + * + * @param work the batch; ownership is transferred (closed when rows are dropped) + * @param filterBytes the pushdown-filter IPC bytes + * @param joinKeysIpc the {@code InitRequest.join_keys} IPC batches, or {@code null} + * @return the batch holding only the rows that pass + */ + static VectorSchemaRoot applyFilters(VectorSchemaRoot work, byte[] filterBytes, + List joinKeysIpc) { + FilterApplier fa = FilterApplier.from(filterBytes, joinKeysIpc, OUTPUT_SCHEMA, + new PushdownFiltersDecoder.Capabilities( + java.util.Set.of(new FilterIdentity( + "duckdb.spatial", "intersects_extent", 1)), + java.util.Set.of(), java.util.Map.of())); + // FilterApplier evaluates every v2 predicate natively, intersects_extent (&&) included, + // with DuckDB core's semantics. Re-running it through the embedded engine's + // spatial st_intersects_extent would drop rows core keeps (spatial treats a NaN + // coordinate as never intersecting; core makes that axis unbounded). + return fa.apply(work); + } + public static final class State extends TableProducerState { public BatchState batch; public long totalCount; @@ -132,15 +154,7 @@ public State() {} } work.setRowCount(n); - if (filterBytes != null) { - FilterApplier fa = FilterApplier.from(filterBytes, joinKeysIpc, OUTPUT_SCHEMA, - new PushdownFiltersDecoder.Capabilities( - java.util.Set.of(new FilterIdentity( - "duckdb.spatial", "intersects_extent", 1)), - java.util.Set.of(), java.util.Map.of())); - work = fa.apply(work); // column filters (n < 50) - work = ExpressionFilterEvaluator.apply(work, fa.expressionPredicates()); // spatial && etc. - } + if (filterBytes != null) work = applyFilters(work, filterBytes, joinKeysIpc); out.emit(VectorProjector.project(work, outputSchema.get())); batch.advance(n); } diff --git a/vgi-example-worker/src/test/java/farm/query/vgi/example/table/SpatialFilterConformanceTest.java b/vgi-example-worker/src/test/java/farm/query/vgi/example/table/SpatialFilterConformanceTest.java new file mode 100644 index 00000000..83c49d86 --- /dev/null +++ b/vgi-example-worker/src/test/java/farm/query/vgi/example/table/SpatialFilterConformanceTest.java @@ -0,0 +1,133 @@ +// Copyright 2026 Query Farm LLC - https://query.farm + +package farm.query.vgi.example.table; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import farm.query.vgi.internal.BatchUtil; +import farm.query.vgi.internal.VectorScalarCodec; +import farm.query.vgirpc.wire.Allocators; +import org.apache.arrow.vector.BigIntVector; +import org.apache.arrow.vector.VarBinaryVector; +import org.apache.arrow.vector.VectorSchemaRoot; +import org.apache.arrow.vector.types.pojo.ArrowType; +import org.apache.arrow.vector.types.pojo.Field; +import org.apache.arrow.vector.types.pojo.FieldType; +import org.apache.arrow.vector.types.pojo.Schema; +import org.junit.jupiter.api.Test; + +import java.io.InputStream; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.HexFormat; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +/** + * The example worker's spatial filter step ({@link SpatialFilterExampleFunction#applyFilters}) + * must keep exactly the rows DuckDB core's {@code &&} keeps, on every case of the conformance + * corpus and for all four little/big-endian encoding combinations: the derived + * {@code intersects_extent} filter must never drop a row DuckDB would keep. + */ +final class SpatialFilterConformanceTest { + private static final String[] ENCODINGS = {"wkb_le", "wkb_be"}; + + @Test + void spatialFilterStepMatchesDuckDbCore() throws Exception { + JsonNode doc; + try (InputStream in = getClass().getResourceAsStream("/conformance/intersects_extent_cases.json")) { + doc = new ObjectMapper().readTree(in); + } + Map geometries = new LinkedHashMap<>(); + for (JsonNode g : doc.get("geometries")) geometries.put(g.get("name").asText(), g); + List names = new ArrayList<>(geometries.keySet()); + Map expected = new LinkedHashMap<>(); + for (JsonNode c : doc.get("cases")) { + expected.put(c.get("left").asText() + "|" + c.get("right").asText(), + c.get("expected").asBoolean()); + } + + List mismatches = new ArrayList<>(); + int checked = 0; + for (String mode : List.of("required", "advisory")) { + for (String rightEncoding : ENCODINGS) { + for (String right : names) { + byte[] filter = filter(mode, hex(geometries.get(right), rightEncoding)); + for (String leftEncoding : ENCODINGS) { + Set kept = run(filter, names.stream() + .map(n -> hex(geometries.get(n), leftEncoding)).toList()); + for (int i = 0; i < names.size(); i++) { + boolean want = expected.get(names.get(i) + "|" + right); + boolean got = kept.contains((long) i); + checked++; + if (got != want) { + mismatches.add(mode + ": " + names.get(i) + "(" + leftEncoding + ") && " + + right + "(" + rightEncoding + "): expected " + want + + ", got " + got); + } + } + } + } + } + } + assertEquals(2 * 4 * expected.size(), checked); + assertTrue(mismatches.isEmpty(), + mismatches.size() + " mismatches:\n" + String.join("\n", mismatches)); + } + + private static Set run(byte[] filter, List rows) { + VectorSchemaRoot root = VectorSchemaRoot.create(SpatialFilterExampleFunction.OUTPUT_SCHEMA, + Allocators.root()); + root.allocateNew(); + BigIntVector n = (BigIntVector) root.getVector("n"); + VarBinaryVector geom = (VarBinaryVector) root.getVector("geom"); + for (int i = 0; i < rows.size(); i++) { + n.setSafe(i, i); + root.getVector("x").setNull(i); + root.getVector("y").setNull(i); + geom.setSafe(i, rows.get(i)); + } + for (var v : root.getFieldVectors()) v.setValueCount(rows.size()); + root.setRowCount(rows.size()); + try (VectorSchemaRoot out = SpatialFilterExampleFunction.applyFilters(root, filter, List.of())) { + Set kept = new HashSet<>(); + BigIntVector survivors = (BigIntVector) out.getVector("n"); + for (int i = 0; i < out.getRowCount(); i++) kept.add(survivors.get(i)); + return kept; + } + } + + private static byte[] filter(String mode, byte[] constant) { + String expression = "{\"node\":\"call\",\"function\":{" + + "\"namespace\":\"duckdb.spatial\",\"name\":\"intersects_extent\",\"version\":1}," + + "\"arguments\":[{\"node\":\"column_ref\",\"column_index\":3,\"column_name\":\"geom\"}," + + "{\"node\":\"literal\",\"value_ref\":0}]}"; + String json = "{\"encoding\":\"vgi.filters.v2\",\"semantics\":\"vgi.duckdb.standard.v1\"," + + "\"kind\":\"snapshot\",\"predicates\":[{\"id\":\"spatial\",\"revision\":0,\"mode\":\"" + + mode + "\",\"source\":\"query\",\"expression\":" + expression + "}]}"; + Field spec = new Field("filter_spec", FieldType.notNullable(new ArrowType.Utf8()), null); + Field literal = new Field("value_0", new FieldType(true, new ArrowType.Binary(), null, + Map.of("ARROW:extension:name", "geoarrow.wkb", "ARROW:extension:metadata", "{}")), null); + Schema schema = new Schema(List.of(spec, literal), Map.of( + "vgi_filter_encoding", "vgi.filters.v2", + "vgi_filter_version", "2", + "vgi_evaluation_context", "vgi.none.v1")); + try (VectorSchemaRoot root = VectorSchemaRoot.create(schema, Allocators.root())) { + root.allocateNew(); + VectorScalarCodec.write(root.getVector(0), 0, json); + VectorScalarCodec.write(root.getVector(1), 0, constant); + for (var vector : root.getFieldVectors()) vector.setValueCount(1); + root.setRowCount(1); + return BatchUtil.writeSingleBatch(root); + } + } + + private static byte[] hex(JsonNode geometry, String encoding) { + return HexFormat.of().parseHex(geometry.get(encoding).asText()); + } +} diff --git a/vgi-example-worker/src/test/resources/conformance/intersects_extent_cases.json b/vgi-example-worker/src/test/resources/conformance/intersects_extent_cases.json new file mode 100644 index 00000000..88eed83a --- /dev/null +++ b/vgi-example-worker/src/test/resources/conformance/intersects_extent_cases.json @@ -0,0 +1,9512 @@ +{ + "description": "duckdb.spatial/intersects_extent@1 (`a && b`) results from DuckDB core. An SDK evaluator must return `expected` for every case, for both the little-endian (wkb_le) and big-endian (wkb_be) encodings of each side. Generated by gen.py.", + "duckdb_version": "v2.0.0", + "spatial_version": "a3dbcd1781", + "geometries": [ + { + "name": "pt_origin", + "wkt": "POINT(0 0)", + "wkb_le": "010100000000000000000000000000000000000000", + "wkb_be": "000000000100000000000000000000000000000000" + }, + { + "name": "pt_one", + "wkt": "POINT(1 1)", + "wkb_le": "0101000000000000000000f03f000000000000f03f", + "wkb_be": "00000000013ff00000000000003ff0000000000000" + }, + { + "name": "pt_half", + "wkt": "POINT(0.5 0.5)", + "wkb_le": "0101000000000000000000e03f000000000000e03f", + "wkb_be": "00000000013fe00000000000003fe0000000000000" + }, + { + "name": "pt_far", + "wkt": "POINT(5 5)", + "wkb_le": "010100000000000000000014400000000000001440", + "wkb_be": "000000000140140000000000004014000000000000" + }, + { + "name": "pt_neg", + "wkt": "POINT(-1 -1)", + "wkb_le": "0101000000000000000000f0bf000000000000f0bf", + "wkb_be": "0000000001bff0000000000000bff0000000000000" + }, + { + "name": "pt_just_outside", + "wkt": "POINT(1.0000000000000002 0.5)", + "wkb_le": "0101000000010000000000f03f000000000000e03f", + "wkb_be": "00000000013ff00000000000013fe0000000000000" + }, + { + "name": "pt_huge", + "wkt": "POINT(1e300 -1e300)", + "wkb_le": "01010000009c7500883ce4377e9c7500883ce437fe", + "wkb_be": "00000000017e37e43c8800759cfe37e43c8800759c" + }, + { + "name": "pt_nan_x", + "wkt": "POINT(nan 1)", + "wkb_le": "0101000000000000000000f87f000000000000f03f", + "wkb_be": "00000000017ff80000000000003ff0000000000000" + }, + { + "name": "pt_nan_y", + "wkt": "POINT(1 nan)", + "wkb_le": "0101000000000000000000f03f000000000000f87f", + "wkb_be": "00000000013ff00000000000007ff8000000000000" + }, + { + "name": "pt_nan_xy", + "wkt": "POINT(nan nan)", + "wkb_le": "0101000000000000000000f87f000000000000f87f", + "wkb_be": "00000000017ff80000000000007ff8000000000000" + }, + { + "name": "pt_inf_x", + "wkt": "POINT(inf 0.5)", + "wkb_le": "0101000000000000000000f07f000000000000e03f", + "wkb_be": "00000000017ff00000000000003fe0000000000000" + }, + { + "name": "pt_neginf_x", + "wkt": "POINT(-inf 0.5)", + "wkb_le": "0101000000000000000000f0ff000000000000e03f", + "wkb_be": "0000000001fff00000000000003fe0000000000000" + }, + { + "name": "pt_empty", + "wkt": "POINT EMPTY", + "wkb_le": "0101000000000000000000f87f000000000000f87f", + "wkb_be": "00000000017ff80000000000007ff8000000000000" + }, + { + "name": "pt_z", + "wkt": "POINT Z (0.5 0.5 99)", + "wkb_le": "01e9030000000000000000e03f000000000000e03f0000000000c05840", + "wkb_be": "00000003e93fe00000000000003fe00000000000004058c00000000000" + }, + { + "name": "pt_m", + "wkt": "POINT M (0.5 0.5 7)", + "wkb_le": "01d1070000000000000000e03f000000000000e03f0000000000001c40", + "wkb_be": "00000007d13fe00000000000003fe0000000000000401c000000000000" + }, + { + "name": "pt_zm", + "wkt": "POINT ZM (2 2 1 1)", + "wkb_le": "01b90b000000000000000000400000000000000040000000000000f03f000000000000f03f", + "wkb_be": "0000000bb9400000000000000040000000000000003ff00000000000003ff0000000000000" + }, + { + "name": "pt_z_nan_z", + "wkt": "POINT Z (0.5 0.5 nan)", + "wkb_le": "01e9030000000000000000e03f000000000000e03f000000000000f87f", + "wkb_be": "00000003e93fe00000000000003fe00000000000007ff8000000000000" + }, + { + "name": "ls_diag", + "wkt": "LINESTRING(0 0, 1 1)", + "wkb_le": "01020000000200000000000000000000000000000000000000000000000000f03f000000000000f03f", + "wkb_be": "000000000200000002000000000000000000000000000000003ff00000000000003ff0000000000000" + }, + { + "name": "ls_edge", + "wkt": "LINESTRING(1 0, 2 0)", + "wkb_le": "010200000002000000000000000000f03f000000000000000000000000000000400000000000000000", + "wkb_be": "0000000002000000023ff0000000000000000000000000000040000000000000000000000000000000" + }, + { + "name": "ls_far", + "wkt": "LINESTRING(3 3, 4 4)", + "wkb_le": "0102000000020000000000000000000840000000000000084000000000000010400000000000001040", + "wkb_be": "0000000002000000024008000000000000400800000000000040100000000000004010000000000000" + }, + { + "name": "ls_empty", + "wkt": "LINESTRING EMPTY", + "wkb_le": "010200000000000000", + "wkb_be": "000000000200000000" + }, + { + "name": "ls_nan_vertex", + "wkt": "LINESTRING(nan 0, 2 2)", + "wkb_le": "010200000002000000000000000000f87f000000000000000000000000000000400000000000000040", + "wkb_be": "0000000002000000027ff8000000000000000000000000000040000000000000004000000000000000" + }, + { + "name": "poly_unit", + "wkt": "POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))", + "wkb_le": "0103000000010000000500000000000000000000000000000000000000000000000000f03f0000000000000000000000000000f03f000000000000f03f0000000000000000000000000000f03f00000000000000000000000000000000", + "wkb_be": "00000000030000000100000005000000000000000000000000000000003ff000000000000000000000000000003ff00000000000003ff000000000000000000000000000003ff000000000000000000000000000000000000000000000" + }, + { + "name": "poly_far", + "wkt": "POLYGON((2 2, 3 2, 3 3, 2 3, 2 2))", + "wkb_le": "010300000001000000050000000000000000000040000000000000004000000000000008400000000000000040000000000000084000000000000008400000000000000040000000000000084000000000000000400000000000000040", + "wkb_be": "000000000300000001000000054000000000000000400000000000000040080000000000004000000000000000400800000000000040080000000000004000000000000000400800000000000040000000000000004000000000000000" + }, + { + "name": "poly_hole", + "wkt": "POLYGON((0 0, 10 0, 10 10, 0 10, 0 0), (4 4, 6 4, 6 6, 4 6, 4 4))", + "wkb_le": "010300000002000000050000000000000000000000000000000000000000000000000024400000000000000000000000000000244000000000000024400000000000000000000000000000244000000000000000000000000000000000050000000000000000001040000000000000104000000000000018400000000000001040000000000000184000000000000018400000000000001040000000000000184000000000000010400000000000001040", + "wkb_be": "000000000300000002000000050000000000000000000000000000000040240000000000000000000000000000402400000000000040240000000000000000000000000000402400000000000000000000000000000000000000000000000000054010000000000000401000000000000040180000000000004010000000000000401800000000000040180000000000004010000000000000401800000000000040100000000000004010000000000000" + }, + { + "name": "poly_empty", + "wkt": "POLYGON EMPTY", + "wkb_le": "010300000000000000", + "wkb_be": "000000000300000000" + }, + { + "name": "mpt", + "wkt": "MULTIPOINT((0 0), (2 2))", + "wkb_le": "010400000002000000010100000000000000000000000000000000000000010100000000000000000000400000000000000040", + "wkb_be": "000000000400000002000000000100000000000000000000000000000000000000000140000000000000004000000000000000" + }, + { + "name": "mpt_with_empty", + "wkt": "MULTIPOINT(EMPTY, (3 3))", + "wkb_le": "0104000000020000000101000000000000000000f87f000000000000f87f010100000000000000000008400000000000000840", + "wkb_be": "00000000040000000200000000017ff80000000000007ff8000000000000000000000140080000000000004008000000000000" + }, + { + "name": "mpt_empty", + "wkt": "MULTIPOINT EMPTY", + "wkb_le": "010400000000000000", + "wkb_be": "000000000400000000" + }, + { + "name": "mls", + "wkt": "MULTILINESTRING((0 0, 0 1), (5 5, 6 6))", + "wkb_le": "010500000002000000010200000002000000000000000000000000000000000000000000000000000000000000000000f03f0102000000020000000000000000001440000000000000144000000000000018400000000000001840", + "wkb_be": "0000000005000000020000000002000000020000000000000000000000000000000000000000000000003ff00000000000000000000002000000024014000000000000401400000000000040180000000000004018000000000000" + }, + { + "name": "mpoly", + "wkt": "MULTIPOLYGON(((2 2, 3 2, 3 3, 2 3, 2 2)), ((7 7, 8 7, 8 8, 7 8, 7 7)))", + "wkb_le": "010600000002000000010300000001000000050000000000000000000040000000000000004000000000000008400000000000000040000000000000084000000000000008400000000000000040000000000000084000000000000000400000000000000040010300000001000000050000000000000000001c400000000000001c4000000000000020400000000000001c40000000000000204000000000000020400000000000001c4000000000000020400000000000001c400000000000001c40", + "wkb_be": "00000000060000000200000000030000000100000005400000000000000040000000000000004008000000000000400000000000000040080000000000004008000000000000400000000000000040080000000000004000000000000000400000000000000000000000030000000100000005401c000000000000401c0000000000004020000000000000401c00000000000040200000000000004020000000000000401c0000000000004020000000000000401c000000000000401c000000000000" + }, + { + "name": "mpoly_empty", + "wkt": "MULTIPOLYGON EMPTY", + "wkb_le": "010600000000000000", + "wkb_be": "000000000600000000" + }, + { + "name": "gc_empty", + "wkt": "GEOMETRYCOLLECTION EMPTY", + "wkb_le": "010700000000000000", + "wkb_be": "000000000700000000" + }, + { + "name": "gc_empty_parts", + "wkt": "GEOMETRYCOLLECTION(POINT EMPTY, LINESTRING EMPTY)", + "wkb_le": "0107000000020000000101000000000000000000f87f000000000000f87f010200000000000000", + "wkb_be": "00000000070000000200000000017ff80000000000007ff8000000000000000000000200000000" + }, + { + "name": "gc_mixed", + "wkt": "GEOMETRYCOLLECTION(POINT EMPTY, POINT(0.25 0.75))", + "wkb_le": "0107000000020000000101000000000000000000f87f000000000000f87f0101000000000000000000d03f000000000000e83f", + "wkb_be": "00000000070000000200000000017ff80000000000007ff800000000000000000000013fd00000000000003fe8000000000000" + }, + { + "name": "gc_nested", + "wkt": "GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(POINT(2.5 2.5)), LINESTRING(9 9, 10 10))", + "wkb_le": "0107000000020000000107000000010000000101000000000000000000044000000000000004400102000000020000000000000000002240000000000000224000000000000024400000000000002440", + "wkb_be": "0000000007000000020000000007000000010000000001400400000000000040040000000000000000000002000000024022000000000000402200000000000040240000000000004024000000000000" + }, + { + "name": "gc_nan_part", + "wkt": "GEOMETRYCOLLECTION(POINT(nan 1), POINT(3 3))", + "wkb_le": "0107000000020000000101000000000000000000f87f000000000000f03f010100000000000000000008400000000000000840", + "wkb_be": "00000000070000000200000000017ff80000000000003ff0000000000000000000000140080000000000004008000000000000" + }, + { + "name": "ls_nan_nan_vertex", + "wkt": "LINESTRING(nan nan, 5 5)", + "wkb_le": "010200000002000000000000000000f87f000000000000f87f00000000000014400000000000001440", + "wkb_be": "0000000002000000027ff80000000000007ff800000000000040140000000000004014000000000000" + }, + { + "name": "ls_all_nan", + "wkt": "LINESTRING(nan nan, nan nan)", + "wkb_le": "010200000002000000000000000000f87f000000000000f87f000000000000f87f000000000000f87f", + "wkb_be": "0000000002000000027ff80000000000007ff80000000000007ff80000000000007ff8000000000000" + }, + { + "name": "ls_mixed_nan", + "wkt": "LINESTRING(nan 1, 1 nan)", + "wkb_le": "010200000002000000000000000000f87f000000000000f03f000000000000f03f000000000000f87f", + "wkb_be": "0000000002000000027ff80000000000003ff00000000000003ff00000000000007ff8000000000000" + }, + { + "name": "poly_nan_vertex", + "wkt": "POLYGON((nan nan, 5 5, 6 6, nan nan))", + "wkb_le": "01030000000100000004000000000000000000f87f000000000000f87f0000000000001440000000000000144000000000000018400000000000001840000000000000f87f000000000000f87f", + "wkb_be": "000000000300000001000000047ff80000000000007ff800000000000040140000000000004014000000000000401800000000000040180000000000007ff80000000000007ff8000000000000" + }, + { + "name": "mpt_nan_member", + "wkt": "MULTIPOINT((nan nan), (5 5))", + "wkb_le": "0104000000020000000101000000000000000000f87f000000000000f87f010100000000000000000014400000000000001440", + "wkb_be": "00000000040000000200000000017ff80000000000007ff8000000000000000000000140140000000000004014000000000000" + }, + { + "name": "gc_nan_nan_point", + "wkt": "GEOMETRYCOLLECTION(POINT(nan nan), POINT(3 3))", + "wkb_le": "0107000000020000000101000000000000000000f87f000000000000f87f010100000000000000000008400000000000000840", + "wkb_be": "00000000070000000200000000017ff80000000000007ff8000000000000000000000140080000000000004008000000000000" + } + ], + "cases": [ + { + "left": "pt_origin", + "right": "pt_origin", + "expected": true + }, + { + "left": "pt_origin", + "right": "pt_one", + "expected": false + }, + { + "left": "pt_origin", + "right": "pt_half", + "expected": false + }, + { + "left": "pt_origin", + "right": "pt_far", + "expected": false + }, + { + "left": "pt_origin", + "right": "pt_neg", + "expected": false + }, + { + "left": "pt_origin", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "pt_origin", + "right": "pt_huge", + "expected": false + }, + { + "left": "pt_origin", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "pt_origin", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "pt_origin", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "pt_origin", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "pt_origin", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "pt_origin", + "right": "pt_empty", + "expected": false + }, + { + "left": "pt_origin", + "right": "pt_z", + "expected": false + }, + { + "left": "pt_origin", + "right": "pt_m", + "expected": false + }, + { + "left": "pt_origin", + "right": "pt_zm", + "expected": false + }, + { + "left": "pt_origin", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "pt_origin", + "right": "ls_diag", + "expected": true + }, + { + "left": "pt_origin", + "right": "ls_edge", + "expected": false + }, + { + "left": "pt_origin", + "right": "ls_far", + "expected": false + }, + { + "left": "pt_origin", + "right": "ls_empty", + "expected": false + }, + { + "left": "pt_origin", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "pt_origin", + "right": "poly_unit", + "expected": true + }, + { + "left": "pt_origin", + "right": "poly_far", + "expected": false + }, + { + "left": "pt_origin", + "right": "poly_hole", + "expected": true + }, + { + "left": "pt_origin", + "right": "poly_empty", + "expected": false + }, + { + "left": "pt_origin", + "right": "mpt", + "expected": true + }, + { + "left": "pt_origin", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "pt_origin", + "right": "mpt_empty", + "expected": false + }, + { + "left": "pt_origin", + "right": "mls", + "expected": true + }, + { + "left": "pt_origin", + "right": "mpoly", + "expected": false + }, + { + "left": "pt_origin", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "pt_origin", + "right": "gc_empty", + "expected": false + }, + { + "left": "pt_origin", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "pt_origin", + "right": "gc_mixed", + "expected": false + }, + { + "left": "pt_origin", + "right": "gc_nested", + "expected": false + }, + { + "left": "pt_origin", + "right": "gc_nan_part", + "expected": false + }, + { + "left": "pt_origin", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "pt_origin", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "pt_origin", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "pt_origin", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "pt_origin", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "pt_origin", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "pt_one", + "right": "pt_origin", + "expected": false + }, + { + "left": "pt_one", + "right": "pt_one", + "expected": true + }, + { + "left": "pt_one", + "right": "pt_half", + "expected": false + }, + { + "left": "pt_one", + "right": "pt_far", + "expected": false + }, + { + "left": "pt_one", + "right": "pt_neg", + "expected": false + }, + { + "left": "pt_one", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "pt_one", + "right": "pt_huge", + "expected": false + }, + { + "left": "pt_one", + "right": "pt_nan_x", + "expected": true + }, + { + "left": "pt_one", + "right": "pt_nan_y", + "expected": true + }, + { + "left": "pt_one", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "pt_one", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "pt_one", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "pt_one", + "right": "pt_empty", + "expected": false + }, + { + "left": "pt_one", + "right": "pt_z", + "expected": false + }, + { + "left": "pt_one", + "right": "pt_m", + "expected": false + }, + { + "left": "pt_one", + "right": "pt_zm", + "expected": false + }, + { + "left": "pt_one", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "pt_one", + "right": "ls_diag", + "expected": true + }, + { + "left": "pt_one", + "right": "ls_edge", + "expected": false + }, + { + "left": "pt_one", + "right": "ls_far", + "expected": false + }, + { + "left": "pt_one", + "right": "ls_empty", + "expected": false + }, + { + "left": "pt_one", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "pt_one", + "right": "poly_unit", + "expected": true + }, + { + "left": "pt_one", + "right": "poly_far", + "expected": false + }, + { + "left": "pt_one", + "right": "poly_hole", + "expected": true + }, + { + "left": "pt_one", + "right": "poly_empty", + "expected": false + }, + { + "left": "pt_one", + "right": "mpt", + "expected": true + }, + { + "left": "pt_one", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "pt_one", + "right": "mpt_empty", + "expected": false + }, + { + "left": "pt_one", + "right": "mls", + "expected": true + }, + { + "left": "pt_one", + "right": "mpoly", + "expected": false + }, + { + "left": "pt_one", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "pt_one", + "right": "gc_empty", + "expected": false + }, + { + "left": "pt_one", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "pt_one", + "right": "gc_mixed", + "expected": false + }, + { + "left": "pt_one", + "right": "gc_nested", + "expected": false + }, + { + "left": "pt_one", + "right": "gc_nan_part", + "expected": true + }, + { + "left": "pt_one", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "pt_one", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "pt_one", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "pt_one", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "pt_one", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "pt_one", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "pt_half", + "right": "pt_origin", + "expected": false + }, + { + "left": "pt_half", + "right": "pt_one", + "expected": false + }, + { + "left": "pt_half", + "right": "pt_half", + "expected": true + }, + { + "left": "pt_half", + "right": "pt_far", + "expected": false + }, + { + "left": "pt_half", + "right": "pt_neg", + "expected": false + }, + { + "left": "pt_half", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "pt_half", + "right": "pt_huge", + "expected": false + }, + { + "left": "pt_half", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "pt_half", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "pt_half", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "pt_half", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "pt_half", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "pt_half", + "right": "pt_empty", + "expected": false + }, + { + "left": "pt_half", + "right": "pt_z", + "expected": true + }, + { + "left": "pt_half", + "right": "pt_m", + "expected": true + }, + { + "left": "pt_half", + "right": "pt_zm", + "expected": false + }, + { + "left": "pt_half", + "right": "pt_z_nan_z", + "expected": true + }, + { + "left": "pt_half", + "right": "ls_diag", + "expected": true + }, + { + "left": "pt_half", + "right": "ls_edge", + "expected": false + }, + { + "left": "pt_half", + "right": "ls_far", + "expected": false + }, + { + "left": "pt_half", + "right": "ls_empty", + "expected": false + }, + { + "left": "pt_half", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "pt_half", + "right": "poly_unit", + "expected": true + }, + { + "left": "pt_half", + "right": "poly_far", + "expected": false + }, + { + "left": "pt_half", + "right": "poly_hole", + "expected": true + }, + { + "left": "pt_half", + "right": "poly_empty", + "expected": false + }, + { + "left": "pt_half", + "right": "mpt", + "expected": true + }, + { + "left": "pt_half", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "pt_half", + "right": "mpt_empty", + "expected": false + }, + { + "left": "pt_half", + "right": "mls", + "expected": true + }, + { + "left": "pt_half", + "right": "mpoly", + "expected": false + }, + { + "left": "pt_half", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "pt_half", + "right": "gc_empty", + "expected": false + }, + { + "left": "pt_half", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "pt_half", + "right": "gc_mixed", + "expected": false + }, + { + "left": "pt_half", + "right": "gc_nested", + "expected": false + }, + { + "left": "pt_half", + "right": "gc_nan_part", + "expected": false + }, + { + "left": "pt_half", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "pt_half", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "pt_half", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "pt_half", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "pt_half", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "pt_half", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "pt_far", + "right": "pt_origin", + "expected": false + }, + { + "left": "pt_far", + "right": "pt_one", + "expected": false + }, + { + "left": "pt_far", + "right": "pt_half", + "expected": false + }, + { + "left": "pt_far", + "right": "pt_far", + "expected": true + }, + { + "left": "pt_far", + "right": "pt_neg", + "expected": false + }, + { + "left": "pt_far", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "pt_far", + "right": "pt_huge", + "expected": false + }, + { + "left": "pt_far", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "pt_far", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "pt_far", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "pt_far", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "pt_far", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "pt_far", + "right": "pt_empty", + "expected": false + }, + { + "left": "pt_far", + "right": "pt_z", + "expected": false + }, + { + "left": "pt_far", + "right": "pt_m", + "expected": false + }, + { + "left": "pt_far", + "right": "pt_zm", + "expected": false + }, + { + "left": "pt_far", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "pt_far", + "right": "ls_diag", + "expected": false + }, + { + "left": "pt_far", + "right": "ls_edge", + "expected": false + }, + { + "left": "pt_far", + "right": "ls_far", + "expected": false + }, + { + "left": "pt_far", + "right": "ls_empty", + "expected": false + }, + { + "left": "pt_far", + "right": "ls_nan_vertex", + "expected": false + }, + { + "left": "pt_far", + "right": "poly_unit", + "expected": false + }, + { + "left": "pt_far", + "right": "poly_far", + "expected": false + }, + { + "left": "pt_far", + "right": "poly_hole", + "expected": true + }, + { + "left": "pt_far", + "right": "poly_empty", + "expected": false + }, + { + "left": "pt_far", + "right": "mpt", + "expected": false + }, + { + "left": "pt_far", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "pt_far", + "right": "mpt_empty", + "expected": false + }, + { + "left": "pt_far", + "right": "mls", + "expected": true + }, + { + "left": "pt_far", + "right": "mpoly", + "expected": true + }, + { + "left": "pt_far", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "pt_far", + "right": "gc_empty", + "expected": false + }, + { + "left": "pt_far", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "pt_far", + "right": "gc_mixed", + "expected": false + }, + { + "left": "pt_far", + "right": "gc_nested", + "expected": true + }, + { + "left": "pt_far", + "right": "gc_nan_part", + "expected": false + }, + { + "left": "pt_far", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "pt_far", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "pt_far", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "pt_far", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "pt_far", + "right": "mpt_nan_member", + "expected": true + }, + { + "left": "pt_far", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "pt_neg", + "right": "pt_origin", + "expected": false + }, + { + "left": "pt_neg", + "right": "pt_one", + "expected": false + }, + { + "left": "pt_neg", + "right": "pt_half", + "expected": false + }, + { + "left": "pt_neg", + "right": "pt_far", + "expected": false + }, + { + "left": "pt_neg", + "right": "pt_neg", + "expected": true + }, + { + "left": "pt_neg", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "pt_neg", + "right": "pt_huge", + "expected": false + }, + { + "left": "pt_neg", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "pt_neg", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "pt_neg", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "pt_neg", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "pt_neg", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "pt_neg", + "right": "pt_empty", + "expected": false + }, + { + "left": "pt_neg", + "right": "pt_z", + "expected": false + }, + { + "left": "pt_neg", + "right": "pt_m", + "expected": false + }, + { + "left": "pt_neg", + "right": "pt_zm", + "expected": false + }, + { + "left": "pt_neg", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "pt_neg", + "right": "ls_diag", + "expected": false + }, + { + "left": "pt_neg", + "right": "ls_edge", + "expected": false + }, + { + "left": "pt_neg", + "right": "ls_far", + "expected": false + }, + { + "left": "pt_neg", + "right": "ls_empty", + "expected": false + }, + { + "left": "pt_neg", + "right": "ls_nan_vertex", + "expected": false + }, + { + "left": "pt_neg", + "right": "poly_unit", + "expected": false + }, + { + "left": "pt_neg", + "right": "poly_far", + "expected": false + }, + { + "left": "pt_neg", + "right": "poly_hole", + "expected": false + }, + { + "left": "pt_neg", + "right": "poly_empty", + "expected": false + }, + { + "left": "pt_neg", + "right": "mpt", + "expected": false + }, + { + "left": "pt_neg", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "pt_neg", + "right": "mpt_empty", + "expected": false + }, + { + "left": "pt_neg", + "right": "mls", + "expected": false + }, + { + "left": "pt_neg", + "right": "mpoly", + "expected": false + }, + { + "left": "pt_neg", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "pt_neg", + "right": "gc_empty", + "expected": false + }, + { + "left": "pt_neg", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "pt_neg", + "right": "gc_mixed", + "expected": false + }, + { + "left": "pt_neg", + "right": "gc_nested", + "expected": false + }, + { + "left": "pt_neg", + "right": "gc_nan_part", + "expected": false + }, + { + "left": "pt_neg", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "pt_neg", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "pt_neg", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "pt_neg", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "pt_neg", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "pt_neg", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "pt_origin", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "pt_one", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "pt_half", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "pt_far", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "pt_neg", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "pt_just_outside", + "expected": true + }, + { + "left": "pt_just_outside", + "right": "pt_huge", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "pt_empty", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "pt_z", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "pt_m", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "pt_zm", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "ls_diag", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "ls_edge", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "ls_far", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "ls_empty", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "pt_just_outside", + "right": "poly_unit", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "poly_far", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "poly_hole", + "expected": true + }, + { + "left": "pt_just_outside", + "right": "poly_empty", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "mpt", + "expected": true + }, + { + "left": "pt_just_outside", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "mpt_empty", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "mls", + "expected": true + }, + { + "left": "pt_just_outside", + "right": "mpoly", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "gc_empty", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "gc_mixed", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "gc_nested", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "gc_nan_part", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "pt_just_outside", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "pt_just_outside", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "pt_just_outside", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "pt_just_outside", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "pt_huge", + "right": "pt_origin", + "expected": false + }, + { + "left": "pt_huge", + "right": "pt_one", + "expected": false + }, + { + "left": "pt_huge", + "right": "pt_half", + "expected": false + }, + { + "left": "pt_huge", + "right": "pt_far", + "expected": false + }, + { + "left": "pt_huge", + "right": "pt_neg", + "expected": false + }, + { + "left": "pt_huge", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "pt_huge", + "right": "pt_huge", + "expected": true + }, + { + "left": "pt_huge", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "pt_huge", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "pt_huge", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "pt_huge", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "pt_huge", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "pt_huge", + "right": "pt_empty", + "expected": false + }, + { + "left": "pt_huge", + "right": "pt_z", + "expected": false + }, + { + "left": "pt_huge", + "right": "pt_m", + "expected": false + }, + { + "left": "pt_huge", + "right": "pt_zm", + "expected": false + }, + { + "left": "pt_huge", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "pt_huge", + "right": "ls_diag", + "expected": false + }, + { + "left": "pt_huge", + "right": "ls_edge", + "expected": false + }, + { + "left": "pt_huge", + "right": "ls_far", + "expected": false + }, + { + "left": "pt_huge", + "right": "ls_empty", + "expected": false + }, + { + "left": "pt_huge", + "right": "ls_nan_vertex", + "expected": false + }, + { + "left": "pt_huge", + "right": "poly_unit", + "expected": false + }, + { + "left": "pt_huge", + "right": "poly_far", + "expected": false + }, + { + "left": "pt_huge", + "right": "poly_hole", + "expected": false + }, + { + "left": "pt_huge", + "right": "poly_empty", + "expected": false + }, + { + "left": "pt_huge", + "right": "mpt", + "expected": false + }, + { + "left": "pt_huge", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "pt_huge", + "right": "mpt_empty", + "expected": false + }, + { + "left": "pt_huge", + "right": "mls", + "expected": false + }, + { + "left": "pt_huge", + "right": "mpoly", + "expected": false + }, + { + "left": "pt_huge", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "pt_huge", + "right": "gc_empty", + "expected": false + }, + { + "left": "pt_huge", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "pt_huge", + "right": "gc_mixed", + "expected": false + }, + { + "left": "pt_huge", + "right": "gc_nested", + "expected": false + }, + { + "left": "pt_huge", + "right": "gc_nan_part", + "expected": false + }, + { + "left": "pt_huge", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "pt_huge", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "pt_huge", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "pt_huge", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "pt_huge", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "pt_huge", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "pt_origin", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "pt_one", + "expected": true + }, + { + "left": "pt_nan_x", + "right": "pt_half", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "pt_far", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "pt_neg", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "pt_huge", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "pt_nan_x", + "expected": true + }, + { + "left": "pt_nan_x", + "right": "pt_nan_y", + "expected": true + }, + { + "left": "pt_nan_x", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "pt_empty", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "pt_z", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "pt_m", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "pt_zm", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "ls_diag", + "expected": true + }, + { + "left": "pt_nan_x", + "right": "ls_edge", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "ls_far", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "ls_empty", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "pt_nan_x", + "right": "poly_unit", + "expected": true + }, + { + "left": "pt_nan_x", + "right": "poly_far", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "poly_hole", + "expected": true + }, + { + "left": "pt_nan_x", + "right": "poly_empty", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "mpt", + "expected": true + }, + { + "left": "pt_nan_x", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "mpt_empty", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "mls", + "expected": true + }, + { + "left": "pt_nan_x", + "right": "mpoly", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "gc_empty", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "gc_mixed", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "gc_nested", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "gc_nan_part", + "expected": true + }, + { + "left": "pt_nan_x", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "pt_nan_x", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "pt_nan_x", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "pt_nan_x", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "pt_nan_x", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "pt_origin", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "pt_one", + "expected": true + }, + { + "left": "pt_nan_y", + "right": "pt_half", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "pt_far", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "pt_neg", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "pt_huge", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "pt_nan_x", + "expected": true + }, + { + "left": "pt_nan_y", + "right": "pt_nan_y", + "expected": true + }, + { + "left": "pt_nan_y", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "pt_empty", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "pt_z", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "pt_m", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "pt_zm", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "ls_diag", + "expected": true + }, + { + "left": "pt_nan_y", + "right": "ls_edge", + "expected": true + }, + { + "left": "pt_nan_y", + "right": "ls_far", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "ls_empty", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "pt_nan_y", + "right": "poly_unit", + "expected": true + }, + { + "left": "pt_nan_y", + "right": "poly_far", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "poly_hole", + "expected": true + }, + { + "left": "pt_nan_y", + "right": "poly_empty", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "mpt", + "expected": true + }, + { + "left": "pt_nan_y", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "mpt_empty", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "mls", + "expected": true + }, + { + "left": "pt_nan_y", + "right": "mpoly", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "gc_empty", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "gc_mixed", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "gc_nested", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "gc_nan_part", + "expected": true + }, + { + "left": "pt_nan_y", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "pt_nan_y", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "pt_nan_y", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "pt_nan_y", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "pt_nan_y", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "pt_origin", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "pt_one", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "pt_half", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "pt_far", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "pt_neg", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "pt_huge", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "pt_empty", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "pt_z", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "pt_m", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "pt_zm", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "ls_diag", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "ls_edge", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "ls_far", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "ls_empty", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "ls_nan_vertex", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "poly_unit", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "poly_far", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "poly_hole", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "poly_empty", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "mpt", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "mpt_empty", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "mls", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "mpoly", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "gc_empty", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "gc_mixed", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "gc_nested", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "gc_nan_part", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "ls_nan_nan_vertex", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "ls_all_nan", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "ls_mixed_nan", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "poly_nan_vertex", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "pt_origin", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "pt_one", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "pt_half", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "pt_far", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "pt_neg", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "pt_huge", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "pt_inf_x", + "expected": true + }, + { + "left": "pt_inf_x", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "pt_empty", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "pt_z", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "pt_m", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "pt_zm", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "ls_diag", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "ls_edge", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "ls_far", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "ls_empty", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "pt_inf_x", + "right": "poly_unit", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "poly_far", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "poly_hole", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "poly_empty", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "mpt", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "mpt_empty", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "mls", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "mpoly", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "gc_empty", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "gc_mixed", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "gc_nested", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "gc_nan_part", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "pt_inf_x", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "pt_inf_x", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "pt_inf_x", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "pt_inf_x", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "pt_origin", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "pt_one", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "pt_half", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "pt_far", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "pt_neg", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "pt_huge", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "pt_neginf_x", + "expected": true + }, + { + "left": "pt_neginf_x", + "right": "pt_empty", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "pt_z", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "pt_m", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "pt_zm", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "ls_diag", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "ls_edge", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "ls_far", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "ls_empty", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "pt_neginf_x", + "right": "poly_unit", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "poly_far", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "poly_hole", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "poly_empty", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "mpt", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "mpt_empty", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "mls", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "mpoly", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "gc_empty", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "gc_mixed", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "gc_nested", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "gc_nan_part", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "pt_neginf_x", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "pt_neginf_x", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "pt_neginf_x", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "pt_neginf_x", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "pt_empty", + "right": "pt_origin", + "expected": false + }, + { + "left": "pt_empty", + "right": "pt_one", + "expected": false + }, + { + "left": "pt_empty", + "right": "pt_half", + "expected": false + }, + { + "left": "pt_empty", + "right": "pt_far", + "expected": false + }, + { + "left": "pt_empty", + "right": "pt_neg", + "expected": false + }, + { + "left": "pt_empty", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "pt_empty", + "right": "pt_huge", + "expected": false + }, + { + "left": "pt_empty", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "pt_empty", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "pt_empty", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "pt_empty", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "pt_empty", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "pt_empty", + "right": "pt_empty", + "expected": false + }, + { + "left": "pt_empty", + "right": "pt_z", + "expected": false + }, + { + "left": "pt_empty", + "right": "pt_m", + "expected": false + }, + { + "left": "pt_empty", + "right": "pt_zm", + "expected": false + }, + { + "left": "pt_empty", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "pt_empty", + "right": "ls_diag", + "expected": false + }, + { + "left": "pt_empty", + "right": "ls_edge", + "expected": false + }, + { + "left": "pt_empty", + "right": "ls_far", + "expected": false + }, + { + "left": "pt_empty", + "right": "ls_empty", + "expected": false + }, + { + "left": "pt_empty", + "right": "ls_nan_vertex", + "expected": false + }, + { + "left": "pt_empty", + "right": "poly_unit", + "expected": false + }, + { + "left": "pt_empty", + "right": "poly_far", + "expected": false + }, + { + "left": "pt_empty", + "right": "poly_hole", + "expected": false + }, + { + "left": "pt_empty", + "right": "poly_empty", + "expected": false + }, + { + "left": "pt_empty", + "right": "mpt", + "expected": false + }, + { + "left": "pt_empty", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "pt_empty", + "right": "mpt_empty", + "expected": false + }, + { + "left": "pt_empty", + "right": "mls", + "expected": false + }, + { + "left": "pt_empty", + "right": "mpoly", + "expected": false + }, + { + "left": "pt_empty", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "pt_empty", + "right": "gc_empty", + "expected": false + }, + { + "left": "pt_empty", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "pt_empty", + "right": "gc_mixed", + "expected": false + }, + { + "left": "pt_empty", + "right": "gc_nested", + "expected": false + }, + { + "left": "pt_empty", + "right": "gc_nan_part", + "expected": false + }, + { + "left": "pt_empty", + "right": "ls_nan_nan_vertex", + "expected": false + }, + { + "left": "pt_empty", + "right": "ls_all_nan", + "expected": false + }, + { + "left": "pt_empty", + "right": "ls_mixed_nan", + "expected": false + }, + { + "left": "pt_empty", + "right": "poly_nan_vertex", + "expected": false + }, + { + "left": "pt_empty", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "pt_empty", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "pt_z", + "right": "pt_origin", + "expected": false + }, + { + "left": "pt_z", + "right": "pt_one", + "expected": false + }, + { + "left": "pt_z", + "right": "pt_half", + "expected": true + }, + { + "left": "pt_z", + "right": "pt_far", + "expected": false + }, + { + "left": "pt_z", + "right": "pt_neg", + "expected": false + }, + { + "left": "pt_z", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "pt_z", + "right": "pt_huge", + "expected": false + }, + { + "left": "pt_z", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "pt_z", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "pt_z", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "pt_z", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "pt_z", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "pt_z", + "right": "pt_empty", + "expected": false + }, + { + "left": "pt_z", + "right": "pt_z", + "expected": true + }, + { + "left": "pt_z", + "right": "pt_m", + "expected": true + }, + { + "left": "pt_z", + "right": "pt_zm", + "expected": false + }, + { + "left": "pt_z", + "right": "pt_z_nan_z", + "expected": true + }, + { + "left": "pt_z", + "right": "ls_diag", + "expected": true + }, + { + "left": "pt_z", + "right": "ls_edge", + "expected": false + }, + { + "left": "pt_z", + "right": "ls_far", + "expected": false + }, + { + "left": "pt_z", + "right": "ls_empty", + "expected": false + }, + { + "left": "pt_z", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "pt_z", + "right": "poly_unit", + "expected": true + }, + { + "left": "pt_z", + "right": "poly_far", + "expected": false + }, + { + "left": "pt_z", + "right": "poly_hole", + "expected": true + }, + { + "left": "pt_z", + "right": "poly_empty", + "expected": false + }, + { + "left": "pt_z", + "right": "mpt", + "expected": true + }, + { + "left": "pt_z", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "pt_z", + "right": "mpt_empty", + "expected": false + }, + { + "left": "pt_z", + "right": "mls", + "expected": true + }, + { + "left": "pt_z", + "right": "mpoly", + "expected": false + }, + { + "left": "pt_z", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "pt_z", + "right": "gc_empty", + "expected": false + }, + { + "left": "pt_z", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "pt_z", + "right": "gc_mixed", + "expected": false + }, + { + "left": "pt_z", + "right": "gc_nested", + "expected": false + }, + { + "left": "pt_z", + "right": "gc_nan_part", + "expected": false + }, + { + "left": "pt_z", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "pt_z", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "pt_z", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "pt_z", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "pt_z", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "pt_z", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "pt_m", + "right": "pt_origin", + "expected": false + }, + { + "left": "pt_m", + "right": "pt_one", + "expected": false + }, + { + "left": "pt_m", + "right": "pt_half", + "expected": true + }, + { + "left": "pt_m", + "right": "pt_far", + "expected": false + }, + { + "left": "pt_m", + "right": "pt_neg", + "expected": false + }, + { + "left": "pt_m", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "pt_m", + "right": "pt_huge", + "expected": false + }, + { + "left": "pt_m", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "pt_m", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "pt_m", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "pt_m", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "pt_m", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "pt_m", + "right": "pt_empty", + "expected": false + }, + { + "left": "pt_m", + "right": "pt_z", + "expected": true + }, + { + "left": "pt_m", + "right": "pt_m", + "expected": true + }, + { + "left": "pt_m", + "right": "pt_zm", + "expected": false + }, + { + "left": "pt_m", + "right": "pt_z_nan_z", + "expected": true + }, + { + "left": "pt_m", + "right": "ls_diag", + "expected": true + }, + { + "left": "pt_m", + "right": "ls_edge", + "expected": false + }, + { + "left": "pt_m", + "right": "ls_far", + "expected": false + }, + { + "left": "pt_m", + "right": "ls_empty", + "expected": false + }, + { + "left": "pt_m", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "pt_m", + "right": "poly_unit", + "expected": true + }, + { + "left": "pt_m", + "right": "poly_far", + "expected": false + }, + { + "left": "pt_m", + "right": "poly_hole", + "expected": true + }, + { + "left": "pt_m", + "right": "poly_empty", + "expected": false + }, + { + "left": "pt_m", + "right": "mpt", + "expected": true + }, + { + "left": "pt_m", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "pt_m", + "right": "mpt_empty", + "expected": false + }, + { + "left": "pt_m", + "right": "mls", + "expected": true + }, + { + "left": "pt_m", + "right": "mpoly", + "expected": false + }, + { + "left": "pt_m", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "pt_m", + "right": "gc_empty", + "expected": false + }, + { + "left": "pt_m", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "pt_m", + "right": "gc_mixed", + "expected": false + }, + { + "left": "pt_m", + "right": "gc_nested", + "expected": false + }, + { + "left": "pt_m", + "right": "gc_nan_part", + "expected": false + }, + { + "left": "pt_m", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "pt_m", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "pt_m", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "pt_m", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "pt_m", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "pt_m", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "pt_zm", + "right": "pt_origin", + "expected": false + }, + { + "left": "pt_zm", + "right": "pt_one", + "expected": false + }, + { + "left": "pt_zm", + "right": "pt_half", + "expected": false + }, + { + "left": "pt_zm", + "right": "pt_far", + "expected": false + }, + { + "left": "pt_zm", + "right": "pt_neg", + "expected": false + }, + { + "left": "pt_zm", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "pt_zm", + "right": "pt_huge", + "expected": false + }, + { + "left": "pt_zm", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "pt_zm", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "pt_zm", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "pt_zm", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "pt_zm", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "pt_zm", + "right": "pt_empty", + "expected": false + }, + { + "left": "pt_zm", + "right": "pt_z", + "expected": false + }, + { + "left": "pt_zm", + "right": "pt_m", + "expected": false + }, + { + "left": "pt_zm", + "right": "pt_zm", + "expected": true + }, + { + "left": "pt_zm", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "pt_zm", + "right": "ls_diag", + "expected": false + }, + { + "left": "pt_zm", + "right": "ls_edge", + "expected": false + }, + { + "left": "pt_zm", + "right": "ls_far", + "expected": false + }, + { + "left": "pt_zm", + "right": "ls_empty", + "expected": false + }, + { + "left": "pt_zm", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "pt_zm", + "right": "poly_unit", + "expected": false + }, + { + "left": "pt_zm", + "right": "poly_far", + "expected": true + }, + { + "left": "pt_zm", + "right": "poly_hole", + "expected": true + }, + { + "left": "pt_zm", + "right": "poly_empty", + "expected": false + }, + { + "left": "pt_zm", + "right": "mpt", + "expected": true + }, + { + "left": "pt_zm", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "pt_zm", + "right": "mpt_empty", + "expected": false + }, + { + "left": "pt_zm", + "right": "mls", + "expected": true + }, + { + "left": "pt_zm", + "right": "mpoly", + "expected": true + }, + { + "left": "pt_zm", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "pt_zm", + "right": "gc_empty", + "expected": false + }, + { + "left": "pt_zm", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "pt_zm", + "right": "gc_mixed", + "expected": false + }, + { + "left": "pt_zm", + "right": "gc_nested", + "expected": false + }, + { + "left": "pt_zm", + "right": "gc_nan_part", + "expected": true + }, + { + "left": "pt_zm", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "pt_zm", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "pt_zm", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "pt_zm", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "pt_zm", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "pt_zm", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "pt_origin", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "pt_one", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "pt_half", + "expected": true + }, + { + "left": "pt_z_nan_z", + "right": "pt_far", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "pt_neg", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "pt_huge", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "pt_empty", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "pt_z", + "expected": true + }, + { + "left": "pt_z_nan_z", + "right": "pt_m", + "expected": true + }, + { + "left": "pt_z_nan_z", + "right": "pt_zm", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "pt_z_nan_z", + "expected": true + }, + { + "left": "pt_z_nan_z", + "right": "ls_diag", + "expected": true + }, + { + "left": "pt_z_nan_z", + "right": "ls_edge", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "ls_far", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "ls_empty", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "pt_z_nan_z", + "right": "poly_unit", + "expected": true + }, + { + "left": "pt_z_nan_z", + "right": "poly_far", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "poly_hole", + "expected": true + }, + { + "left": "pt_z_nan_z", + "right": "poly_empty", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "mpt", + "expected": true + }, + { + "left": "pt_z_nan_z", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "mpt_empty", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "mls", + "expected": true + }, + { + "left": "pt_z_nan_z", + "right": "mpoly", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "gc_empty", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "gc_mixed", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "gc_nested", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "gc_nan_part", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "pt_z_nan_z", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "pt_z_nan_z", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "pt_z_nan_z", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "pt_z_nan_z", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "ls_diag", + "right": "pt_origin", + "expected": true + }, + { + "left": "ls_diag", + "right": "pt_one", + "expected": true + }, + { + "left": "ls_diag", + "right": "pt_half", + "expected": true + }, + { + "left": "ls_diag", + "right": "pt_far", + "expected": false + }, + { + "left": "ls_diag", + "right": "pt_neg", + "expected": false + }, + { + "left": "ls_diag", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "ls_diag", + "right": "pt_huge", + "expected": false + }, + { + "left": "ls_diag", + "right": "pt_nan_x", + "expected": true + }, + { + "left": "ls_diag", + "right": "pt_nan_y", + "expected": true + }, + { + "left": "ls_diag", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "ls_diag", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "ls_diag", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "ls_diag", + "right": "pt_empty", + "expected": false + }, + { + "left": "ls_diag", + "right": "pt_z", + "expected": true + }, + { + "left": "ls_diag", + "right": "pt_m", + "expected": true + }, + { + "left": "ls_diag", + "right": "pt_zm", + "expected": false + }, + { + "left": "ls_diag", + "right": "pt_z_nan_z", + "expected": true + }, + { + "left": "ls_diag", + "right": "ls_diag", + "expected": true + }, + { + "left": "ls_diag", + "right": "ls_edge", + "expected": true + }, + { + "left": "ls_diag", + "right": "ls_far", + "expected": false + }, + { + "left": "ls_diag", + "right": "ls_empty", + "expected": false + }, + { + "left": "ls_diag", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "ls_diag", + "right": "poly_unit", + "expected": true + }, + { + "left": "ls_diag", + "right": "poly_far", + "expected": false + }, + { + "left": "ls_diag", + "right": "poly_hole", + "expected": true + }, + { + "left": "ls_diag", + "right": "poly_empty", + "expected": false + }, + { + "left": "ls_diag", + "right": "mpt", + "expected": true + }, + { + "left": "ls_diag", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "ls_diag", + "right": "mpt_empty", + "expected": false + }, + { + "left": "ls_diag", + "right": "mls", + "expected": true + }, + { + "left": "ls_diag", + "right": "mpoly", + "expected": false + }, + { + "left": "ls_diag", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "ls_diag", + "right": "gc_empty", + "expected": false + }, + { + "left": "ls_diag", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "ls_diag", + "right": "gc_mixed", + "expected": true + }, + { + "left": "ls_diag", + "right": "gc_nested", + "expected": false + }, + { + "left": "ls_diag", + "right": "gc_nan_part", + "expected": true + }, + { + "left": "ls_diag", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "ls_diag", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "ls_diag", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "ls_diag", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "ls_diag", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "ls_diag", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "ls_edge", + "right": "pt_origin", + "expected": false + }, + { + "left": "ls_edge", + "right": "pt_one", + "expected": false + }, + { + "left": "ls_edge", + "right": "pt_half", + "expected": false + }, + { + "left": "ls_edge", + "right": "pt_far", + "expected": false + }, + { + "left": "ls_edge", + "right": "pt_neg", + "expected": false + }, + { + "left": "ls_edge", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "ls_edge", + "right": "pt_huge", + "expected": false + }, + { + "left": "ls_edge", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "ls_edge", + "right": "pt_nan_y", + "expected": true + }, + { + "left": "ls_edge", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "ls_edge", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "ls_edge", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "ls_edge", + "right": "pt_empty", + "expected": false + }, + { + "left": "ls_edge", + "right": "pt_z", + "expected": false + }, + { + "left": "ls_edge", + "right": "pt_m", + "expected": false + }, + { + "left": "ls_edge", + "right": "pt_zm", + "expected": false + }, + { + "left": "ls_edge", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "ls_edge", + "right": "ls_diag", + "expected": true + }, + { + "left": "ls_edge", + "right": "ls_edge", + "expected": true + }, + { + "left": "ls_edge", + "right": "ls_far", + "expected": false + }, + { + "left": "ls_edge", + "right": "ls_empty", + "expected": false + }, + { + "left": "ls_edge", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "ls_edge", + "right": "poly_unit", + "expected": true + }, + { + "left": "ls_edge", + "right": "poly_far", + "expected": false + }, + { + "left": "ls_edge", + "right": "poly_hole", + "expected": true + }, + { + "left": "ls_edge", + "right": "poly_empty", + "expected": false + }, + { + "left": "ls_edge", + "right": "mpt", + "expected": true + }, + { + "left": "ls_edge", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "ls_edge", + "right": "mpt_empty", + "expected": false + }, + { + "left": "ls_edge", + "right": "mls", + "expected": true + }, + { + "left": "ls_edge", + "right": "mpoly", + "expected": false + }, + { + "left": "ls_edge", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "ls_edge", + "right": "gc_empty", + "expected": false + }, + { + "left": "ls_edge", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "ls_edge", + "right": "gc_mixed", + "expected": false + }, + { + "left": "ls_edge", + "right": "gc_nested", + "expected": false + }, + { + "left": "ls_edge", + "right": "gc_nan_part", + "expected": false + }, + { + "left": "ls_edge", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "ls_edge", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "ls_edge", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "ls_edge", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "ls_edge", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "ls_edge", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "ls_far", + "right": "pt_origin", + "expected": false + }, + { + "left": "ls_far", + "right": "pt_one", + "expected": false + }, + { + "left": "ls_far", + "right": "pt_half", + "expected": false + }, + { + "left": "ls_far", + "right": "pt_far", + "expected": false + }, + { + "left": "ls_far", + "right": "pt_neg", + "expected": false + }, + { + "left": "ls_far", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "ls_far", + "right": "pt_huge", + "expected": false + }, + { + "left": "ls_far", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "ls_far", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "ls_far", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "ls_far", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "ls_far", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "ls_far", + "right": "pt_empty", + "expected": false + }, + { + "left": "ls_far", + "right": "pt_z", + "expected": false + }, + { + "left": "ls_far", + "right": "pt_m", + "expected": false + }, + { + "left": "ls_far", + "right": "pt_zm", + "expected": false + }, + { + "left": "ls_far", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "ls_far", + "right": "ls_diag", + "expected": false + }, + { + "left": "ls_far", + "right": "ls_edge", + "expected": false + }, + { + "left": "ls_far", + "right": "ls_far", + "expected": true + }, + { + "left": "ls_far", + "right": "ls_empty", + "expected": false + }, + { + "left": "ls_far", + "right": "ls_nan_vertex", + "expected": false + }, + { + "left": "ls_far", + "right": "poly_unit", + "expected": false + }, + { + "left": "ls_far", + "right": "poly_far", + "expected": true + }, + { + "left": "ls_far", + "right": "poly_hole", + "expected": true + }, + { + "left": "ls_far", + "right": "poly_empty", + "expected": false + }, + { + "left": "ls_far", + "right": "mpt", + "expected": false + }, + { + "left": "ls_far", + "right": "mpt_with_empty", + "expected": true + }, + { + "left": "ls_far", + "right": "mpt_empty", + "expected": false + }, + { + "left": "ls_far", + "right": "mls", + "expected": true + }, + { + "left": "ls_far", + "right": "mpoly", + "expected": true + }, + { + "left": "ls_far", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "ls_far", + "right": "gc_empty", + "expected": false + }, + { + "left": "ls_far", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "ls_far", + "right": "gc_mixed", + "expected": false + }, + { + "left": "ls_far", + "right": "gc_nested", + "expected": true + }, + { + "left": "ls_far", + "right": "gc_nan_part", + "expected": true + }, + { + "left": "ls_far", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "ls_far", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "ls_far", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "ls_far", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "ls_far", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "ls_far", + "right": "gc_nan_nan_point", + "expected": true + }, + { + "left": "ls_empty", + "right": "pt_origin", + "expected": false + }, + { + "left": "ls_empty", + "right": "pt_one", + "expected": false + }, + { + "left": "ls_empty", + "right": "pt_half", + "expected": false + }, + { + "left": "ls_empty", + "right": "pt_far", + "expected": false + }, + { + "left": "ls_empty", + "right": "pt_neg", + "expected": false + }, + { + "left": "ls_empty", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "ls_empty", + "right": "pt_huge", + "expected": false + }, + { + "left": "ls_empty", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "ls_empty", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "ls_empty", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "ls_empty", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "ls_empty", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "ls_empty", + "right": "pt_empty", + "expected": false + }, + { + "left": "ls_empty", + "right": "pt_z", + "expected": false + }, + { + "left": "ls_empty", + "right": "pt_m", + "expected": false + }, + { + "left": "ls_empty", + "right": "pt_zm", + "expected": false + }, + { + "left": "ls_empty", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "ls_empty", + "right": "ls_diag", + "expected": false + }, + { + "left": "ls_empty", + "right": "ls_edge", + "expected": false + }, + { + "left": "ls_empty", + "right": "ls_far", + "expected": false + }, + { + "left": "ls_empty", + "right": "ls_empty", + "expected": false + }, + { + "left": "ls_empty", + "right": "ls_nan_vertex", + "expected": false + }, + { + "left": "ls_empty", + "right": "poly_unit", + "expected": false + }, + { + "left": "ls_empty", + "right": "poly_far", + "expected": false + }, + { + "left": "ls_empty", + "right": "poly_hole", + "expected": false + }, + { + "left": "ls_empty", + "right": "poly_empty", + "expected": false + }, + { + "left": "ls_empty", + "right": "mpt", + "expected": false + }, + { + "left": "ls_empty", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "ls_empty", + "right": "mpt_empty", + "expected": false + }, + { + "left": "ls_empty", + "right": "mls", + "expected": false + }, + { + "left": "ls_empty", + "right": "mpoly", + "expected": false + }, + { + "left": "ls_empty", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "ls_empty", + "right": "gc_empty", + "expected": false + }, + { + "left": "ls_empty", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "ls_empty", + "right": "gc_mixed", + "expected": false + }, + { + "left": "ls_empty", + "right": "gc_nested", + "expected": false + }, + { + "left": "ls_empty", + "right": "gc_nan_part", + "expected": false + }, + { + "left": "ls_empty", + "right": "ls_nan_nan_vertex", + "expected": false + }, + { + "left": "ls_empty", + "right": "ls_all_nan", + "expected": false + }, + { + "left": "ls_empty", + "right": "ls_mixed_nan", + "expected": false + }, + { + "left": "ls_empty", + "right": "poly_nan_vertex", + "expected": false + }, + { + "left": "ls_empty", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "ls_empty", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "ls_nan_vertex", + "right": "pt_origin", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "pt_one", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "pt_half", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "pt_far", + "expected": false + }, + { + "left": "ls_nan_vertex", + "right": "pt_neg", + "expected": false + }, + { + "left": "ls_nan_vertex", + "right": "pt_just_outside", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "pt_huge", + "expected": false + }, + { + "left": "ls_nan_vertex", + "right": "pt_nan_x", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "pt_nan_y", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "ls_nan_vertex", + "right": "pt_inf_x", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "pt_neginf_x", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "pt_empty", + "expected": false + }, + { + "left": "ls_nan_vertex", + "right": "pt_z", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "pt_m", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "pt_zm", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "pt_z_nan_z", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "ls_diag", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "ls_edge", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "ls_far", + "expected": false + }, + { + "left": "ls_nan_vertex", + "right": "ls_empty", + "expected": false + }, + { + "left": "ls_nan_vertex", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "poly_unit", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "poly_far", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "poly_hole", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "poly_empty", + "expected": false + }, + { + "left": "ls_nan_vertex", + "right": "mpt", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "ls_nan_vertex", + "right": "mpt_empty", + "expected": false + }, + { + "left": "ls_nan_vertex", + "right": "mls", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "mpoly", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "ls_nan_vertex", + "right": "gc_empty", + "expected": false + }, + { + "left": "ls_nan_vertex", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "ls_nan_vertex", + "right": "gc_mixed", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "gc_nested", + "expected": false + }, + { + "left": "ls_nan_vertex", + "right": "gc_nan_part", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "ls_nan_vertex", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "poly_unit", + "right": "pt_origin", + "expected": true + }, + { + "left": "poly_unit", + "right": "pt_one", + "expected": true + }, + { + "left": "poly_unit", + "right": "pt_half", + "expected": true + }, + { + "left": "poly_unit", + "right": "pt_far", + "expected": false + }, + { + "left": "poly_unit", + "right": "pt_neg", + "expected": false + }, + { + "left": "poly_unit", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "poly_unit", + "right": "pt_huge", + "expected": false + }, + { + "left": "poly_unit", + "right": "pt_nan_x", + "expected": true + }, + { + "left": "poly_unit", + "right": "pt_nan_y", + "expected": true + }, + { + "left": "poly_unit", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "poly_unit", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "poly_unit", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "poly_unit", + "right": "pt_empty", + "expected": false + }, + { + "left": "poly_unit", + "right": "pt_z", + "expected": true + }, + { + "left": "poly_unit", + "right": "pt_m", + "expected": true + }, + { + "left": "poly_unit", + "right": "pt_zm", + "expected": false + }, + { + "left": "poly_unit", + "right": "pt_z_nan_z", + "expected": true + }, + { + "left": "poly_unit", + "right": "ls_diag", + "expected": true + }, + { + "left": "poly_unit", + "right": "ls_edge", + "expected": true + }, + { + "left": "poly_unit", + "right": "ls_far", + "expected": false + }, + { + "left": "poly_unit", + "right": "ls_empty", + "expected": false + }, + { + "left": "poly_unit", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "poly_unit", + "right": "poly_unit", + "expected": true + }, + { + "left": "poly_unit", + "right": "poly_far", + "expected": false + }, + { + "left": "poly_unit", + "right": "poly_hole", + "expected": true + }, + { + "left": "poly_unit", + "right": "poly_empty", + "expected": false + }, + { + "left": "poly_unit", + "right": "mpt", + "expected": true + }, + { + "left": "poly_unit", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "poly_unit", + "right": "mpt_empty", + "expected": false + }, + { + "left": "poly_unit", + "right": "mls", + "expected": true + }, + { + "left": "poly_unit", + "right": "mpoly", + "expected": false + }, + { + "left": "poly_unit", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "poly_unit", + "right": "gc_empty", + "expected": false + }, + { + "left": "poly_unit", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "poly_unit", + "right": "gc_mixed", + "expected": true + }, + { + "left": "poly_unit", + "right": "gc_nested", + "expected": false + }, + { + "left": "poly_unit", + "right": "gc_nan_part", + "expected": true + }, + { + "left": "poly_unit", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "poly_unit", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "poly_unit", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "poly_unit", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "poly_unit", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "poly_unit", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "poly_far", + "right": "pt_origin", + "expected": false + }, + { + "left": "poly_far", + "right": "pt_one", + "expected": false + }, + { + "left": "poly_far", + "right": "pt_half", + "expected": false + }, + { + "left": "poly_far", + "right": "pt_far", + "expected": false + }, + { + "left": "poly_far", + "right": "pt_neg", + "expected": false + }, + { + "left": "poly_far", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "poly_far", + "right": "pt_huge", + "expected": false + }, + { + "left": "poly_far", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "poly_far", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "poly_far", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "poly_far", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "poly_far", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "poly_far", + "right": "pt_empty", + "expected": false + }, + { + "left": "poly_far", + "right": "pt_z", + "expected": false + }, + { + "left": "poly_far", + "right": "pt_m", + "expected": false + }, + { + "left": "poly_far", + "right": "pt_zm", + "expected": true + }, + { + "left": "poly_far", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "poly_far", + "right": "ls_diag", + "expected": false + }, + { + "left": "poly_far", + "right": "ls_edge", + "expected": false + }, + { + "left": "poly_far", + "right": "ls_far", + "expected": true + }, + { + "left": "poly_far", + "right": "ls_empty", + "expected": false + }, + { + "left": "poly_far", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "poly_far", + "right": "poly_unit", + "expected": false + }, + { + "left": "poly_far", + "right": "poly_far", + "expected": true + }, + { + "left": "poly_far", + "right": "poly_hole", + "expected": true + }, + { + "left": "poly_far", + "right": "poly_empty", + "expected": false + }, + { + "left": "poly_far", + "right": "mpt", + "expected": true + }, + { + "left": "poly_far", + "right": "mpt_with_empty", + "expected": true + }, + { + "left": "poly_far", + "right": "mpt_empty", + "expected": false + }, + { + "left": "poly_far", + "right": "mls", + "expected": true + }, + { + "left": "poly_far", + "right": "mpoly", + "expected": true + }, + { + "left": "poly_far", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "poly_far", + "right": "gc_empty", + "expected": false + }, + { + "left": "poly_far", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "poly_far", + "right": "gc_mixed", + "expected": false + }, + { + "left": "poly_far", + "right": "gc_nested", + "expected": true + }, + { + "left": "poly_far", + "right": "gc_nan_part", + "expected": true + }, + { + "left": "poly_far", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "poly_far", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "poly_far", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "poly_far", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "poly_far", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "poly_far", + "right": "gc_nan_nan_point", + "expected": true + }, + { + "left": "poly_hole", + "right": "pt_origin", + "expected": true + }, + { + "left": "poly_hole", + "right": "pt_one", + "expected": true + }, + { + "left": "poly_hole", + "right": "pt_half", + "expected": true + }, + { + "left": "poly_hole", + "right": "pt_far", + "expected": true + }, + { + "left": "poly_hole", + "right": "pt_neg", + "expected": false + }, + { + "left": "poly_hole", + "right": "pt_just_outside", + "expected": true + }, + { + "left": "poly_hole", + "right": "pt_huge", + "expected": false + }, + { + "left": "poly_hole", + "right": "pt_nan_x", + "expected": true + }, + { + "left": "poly_hole", + "right": "pt_nan_y", + "expected": true + }, + { + "left": "poly_hole", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "poly_hole", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "poly_hole", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "poly_hole", + "right": "pt_empty", + "expected": false + }, + { + "left": "poly_hole", + "right": "pt_z", + "expected": true + }, + { + "left": "poly_hole", + "right": "pt_m", + "expected": true + }, + { + "left": "poly_hole", + "right": "pt_zm", + "expected": true + }, + { + "left": "poly_hole", + "right": "pt_z_nan_z", + "expected": true + }, + { + "left": "poly_hole", + "right": "ls_diag", + "expected": true + }, + { + "left": "poly_hole", + "right": "ls_edge", + "expected": true + }, + { + "left": "poly_hole", + "right": "ls_far", + "expected": true + }, + { + "left": "poly_hole", + "right": "ls_empty", + "expected": false + }, + { + "left": "poly_hole", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "poly_hole", + "right": "poly_unit", + "expected": true + }, + { + "left": "poly_hole", + "right": "poly_far", + "expected": true + }, + { + "left": "poly_hole", + "right": "poly_hole", + "expected": true + }, + { + "left": "poly_hole", + "right": "poly_empty", + "expected": false + }, + { + "left": "poly_hole", + "right": "mpt", + "expected": true + }, + { + "left": "poly_hole", + "right": "mpt_with_empty", + "expected": true + }, + { + "left": "poly_hole", + "right": "mpt_empty", + "expected": false + }, + { + "left": "poly_hole", + "right": "mls", + "expected": true + }, + { + "left": "poly_hole", + "right": "mpoly", + "expected": true + }, + { + "left": "poly_hole", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "poly_hole", + "right": "gc_empty", + "expected": false + }, + { + "left": "poly_hole", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "poly_hole", + "right": "gc_mixed", + "expected": true + }, + { + "left": "poly_hole", + "right": "gc_nested", + "expected": true + }, + { + "left": "poly_hole", + "right": "gc_nan_part", + "expected": true + }, + { + "left": "poly_hole", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "poly_hole", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "poly_hole", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "poly_hole", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "poly_hole", + "right": "mpt_nan_member", + "expected": true + }, + { + "left": "poly_hole", + "right": "gc_nan_nan_point", + "expected": true + }, + { + "left": "poly_empty", + "right": "pt_origin", + "expected": false + }, + { + "left": "poly_empty", + "right": "pt_one", + "expected": false + }, + { + "left": "poly_empty", + "right": "pt_half", + "expected": false + }, + { + "left": "poly_empty", + "right": "pt_far", + "expected": false + }, + { + "left": "poly_empty", + "right": "pt_neg", + "expected": false + }, + { + "left": "poly_empty", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "poly_empty", + "right": "pt_huge", + "expected": false + }, + { + "left": "poly_empty", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "poly_empty", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "poly_empty", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "poly_empty", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "poly_empty", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "poly_empty", + "right": "pt_empty", + "expected": false + }, + { + "left": "poly_empty", + "right": "pt_z", + "expected": false + }, + { + "left": "poly_empty", + "right": "pt_m", + "expected": false + }, + { + "left": "poly_empty", + "right": "pt_zm", + "expected": false + }, + { + "left": "poly_empty", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "poly_empty", + "right": "ls_diag", + "expected": false + }, + { + "left": "poly_empty", + "right": "ls_edge", + "expected": false + }, + { + "left": "poly_empty", + "right": "ls_far", + "expected": false + }, + { + "left": "poly_empty", + "right": "ls_empty", + "expected": false + }, + { + "left": "poly_empty", + "right": "ls_nan_vertex", + "expected": false + }, + { + "left": "poly_empty", + "right": "poly_unit", + "expected": false + }, + { + "left": "poly_empty", + "right": "poly_far", + "expected": false + }, + { + "left": "poly_empty", + "right": "poly_hole", + "expected": false + }, + { + "left": "poly_empty", + "right": "poly_empty", + "expected": false + }, + { + "left": "poly_empty", + "right": "mpt", + "expected": false + }, + { + "left": "poly_empty", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "poly_empty", + "right": "mpt_empty", + "expected": false + }, + { + "left": "poly_empty", + "right": "mls", + "expected": false + }, + { + "left": "poly_empty", + "right": "mpoly", + "expected": false + }, + { + "left": "poly_empty", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "poly_empty", + "right": "gc_empty", + "expected": false + }, + { + "left": "poly_empty", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "poly_empty", + "right": "gc_mixed", + "expected": false + }, + { + "left": "poly_empty", + "right": "gc_nested", + "expected": false + }, + { + "left": "poly_empty", + "right": "gc_nan_part", + "expected": false + }, + { + "left": "poly_empty", + "right": "ls_nan_nan_vertex", + "expected": false + }, + { + "left": "poly_empty", + "right": "ls_all_nan", + "expected": false + }, + { + "left": "poly_empty", + "right": "ls_mixed_nan", + "expected": false + }, + { + "left": "poly_empty", + "right": "poly_nan_vertex", + "expected": false + }, + { + "left": "poly_empty", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "poly_empty", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "mpt", + "right": "pt_origin", + "expected": true + }, + { + "left": "mpt", + "right": "pt_one", + "expected": true + }, + { + "left": "mpt", + "right": "pt_half", + "expected": true + }, + { + "left": "mpt", + "right": "pt_far", + "expected": false + }, + { + "left": "mpt", + "right": "pt_neg", + "expected": false + }, + { + "left": "mpt", + "right": "pt_just_outside", + "expected": true + }, + { + "left": "mpt", + "right": "pt_huge", + "expected": false + }, + { + "left": "mpt", + "right": "pt_nan_x", + "expected": true + }, + { + "left": "mpt", + "right": "pt_nan_y", + "expected": true + }, + { + "left": "mpt", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "mpt", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "mpt", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "mpt", + "right": "pt_empty", + "expected": false + }, + { + "left": "mpt", + "right": "pt_z", + "expected": true + }, + { + "left": "mpt", + "right": "pt_m", + "expected": true + }, + { + "left": "mpt", + "right": "pt_zm", + "expected": true + }, + { + "left": "mpt", + "right": "pt_z_nan_z", + "expected": true + }, + { + "left": "mpt", + "right": "ls_diag", + "expected": true + }, + { + "left": "mpt", + "right": "ls_edge", + "expected": true + }, + { + "left": "mpt", + "right": "ls_far", + "expected": false + }, + { + "left": "mpt", + "right": "ls_empty", + "expected": false + }, + { + "left": "mpt", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "mpt", + "right": "poly_unit", + "expected": true + }, + { + "left": "mpt", + "right": "poly_far", + "expected": true + }, + { + "left": "mpt", + "right": "poly_hole", + "expected": true + }, + { + "left": "mpt", + "right": "poly_empty", + "expected": false + }, + { + "left": "mpt", + "right": "mpt", + "expected": true + }, + { + "left": "mpt", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "mpt", + "right": "mpt_empty", + "expected": false + }, + { + "left": "mpt", + "right": "mls", + "expected": true + }, + { + "left": "mpt", + "right": "mpoly", + "expected": true + }, + { + "left": "mpt", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "mpt", + "right": "gc_empty", + "expected": false + }, + { + "left": "mpt", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "mpt", + "right": "gc_mixed", + "expected": true + }, + { + "left": "mpt", + "right": "gc_nested", + "expected": false + }, + { + "left": "mpt", + "right": "gc_nan_part", + "expected": true + }, + { + "left": "mpt", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "mpt", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "mpt", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "mpt", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "mpt", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "mpt", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "pt_origin", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "pt_one", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "pt_half", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "pt_far", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "pt_neg", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "pt_huge", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "pt_empty", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "pt_z", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "pt_m", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "pt_zm", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "ls_diag", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "ls_edge", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "ls_far", + "expected": true + }, + { + "left": "mpt_with_empty", + "right": "ls_empty", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "ls_nan_vertex", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "poly_unit", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "poly_far", + "expected": true + }, + { + "left": "mpt_with_empty", + "right": "poly_hole", + "expected": true + }, + { + "left": "mpt_with_empty", + "right": "poly_empty", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "mpt", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "mpt_with_empty", + "expected": true + }, + { + "left": "mpt_with_empty", + "right": "mpt_empty", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "mls", + "expected": true + }, + { + "left": "mpt_with_empty", + "right": "mpoly", + "expected": true + }, + { + "left": "mpt_with_empty", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "gc_empty", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "gc_mixed", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "gc_nested", + "expected": true + }, + { + "left": "mpt_with_empty", + "right": "gc_nan_part", + "expected": true + }, + { + "left": "mpt_with_empty", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "mpt_with_empty", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "mpt_with_empty", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "mpt_with_empty", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "mpt_with_empty", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "gc_nan_nan_point", + "expected": true + }, + { + "left": "mpt_empty", + "right": "pt_origin", + "expected": false + }, + { + "left": "mpt_empty", + "right": "pt_one", + "expected": false + }, + { + "left": "mpt_empty", + "right": "pt_half", + "expected": false + }, + { + "left": "mpt_empty", + "right": "pt_far", + "expected": false + }, + { + "left": "mpt_empty", + "right": "pt_neg", + "expected": false + }, + { + "left": "mpt_empty", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "mpt_empty", + "right": "pt_huge", + "expected": false + }, + { + "left": "mpt_empty", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "mpt_empty", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "mpt_empty", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "mpt_empty", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "mpt_empty", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "mpt_empty", + "right": "pt_empty", + "expected": false + }, + { + "left": "mpt_empty", + "right": "pt_z", + "expected": false + }, + { + "left": "mpt_empty", + "right": "pt_m", + "expected": false + }, + { + "left": "mpt_empty", + "right": "pt_zm", + "expected": false + }, + { + "left": "mpt_empty", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "mpt_empty", + "right": "ls_diag", + "expected": false + }, + { + "left": "mpt_empty", + "right": "ls_edge", + "expected": false + }, + { + "left": "mpt_empty", + "right": "ls_far", + "expected": false + }, + { + "left": "mpt_empty", + "right": "ls_empty", + "expected": false + }, + { + "left": "mpt_empty", + "right": "ls_nan_vertex", + "expected": false + }, + { + "left": "mpt_empty", + "right": "poly_unit", + "expected": false + }, + { + "left": "mpt_empty", + "right": "poly_far", + "expected": false + }, + { + "left": "mpt_empty", + "right": "poly_hole", + "expected": false + }, + { + "left": "mpt_empty", + "right": "poly_empty", + "expected": false + }, + { + "left": "mpt_empty", + "right": "mpt", + "expected": false + }, + { + "left": "mpt_empty", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "mpt_empty", + "right": "mpt_empty", + "expected": false + }, + { + "left": "mpt_empty", + "right": "mls", + "expected": false + }, + { + "left": "mpt_empty", + "right": "mpoly", + "expected": false + }, + { + "left": "mpt_empty", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "mpt_empty", + "right": "gc_empty", + "expected": false + }, + { + "left": "mpt_empty", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "mpt_empty", + "right": "gc_mixed", + "expected": false + }, + { + "left": "mpt_empty", + "right": "gc_nested", + "expected": false + }, + { + "left": "mpt_empty", + "right": "gc_nan_part", + "expected": false + }, + { + "left": "mpt_empty", + "right": "ls_nan_nan_vertex", + "expected": false + }, + { + "left": "mpt_empty", + "right": "ls_all_nan", + "expected": false + }, + { + "left": "mpt_empty", + "right": "ls_mixed_nan", + "expected": false + }, + { + "left": "mpt_empty", + "right": "poly_nan_vertex", + "expected": false + }, + { + "left": "mpt_empty", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "mpt_empty", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "mls", + "right": "pt_origin", + "expected": true + }, + { + "left": "mls", + "right": "pt_one", + "expected": true + }, + { + "left": "mls", + "right": "pt_half", + "expected": true + }, + { + "left": "mls", + "right": "pt_far", + "expected": true + }, + { + "left": "mls", + "right": "pt_neg", + "expected": false + }, + { + "left": "mls", + "right": "pt_just_outside", + "expected": true + }, + { + "left": "mls", + "right": "pt_huge", + "expected": false + }, + { + "left": "mls", + "right": "pt_nan_x", + "expected": true + }, + { + "left": "mls", + "right": "pt_nan_y", + "expected": true + }, + { + "left": "mls", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "mls", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "mls", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "mls", + "right": "pt_empty", + "expected": false + }, + { + "left": "mls", + "right": "pt_z", + "expected": true + }, + { + "left": "mls", + "right": "pt_m", + "expected": true + }, + { + "left": "mls", + "right": "pt_zm", + "expected": true + }, + { + "left": "mls", + "right": "pt_z_nan_z", + "expected": true + }, + { + "left": "mls", + "right": "ls_diag", + "expected": true + }, + { + "left": "mls", + "right": "ls_edge", + "expected": true + }, + { + "left": "mls", + "right": "ls_far", + "expected": true + }, + { + "left": "mls", + "right": "ls_empty", + "expected": false + }, + { + "left": "mls", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "mls", + "right": "poly_unit", + "expected": true + }, + { + "left": "mls", + "right": "poly_far", + "expected": true + }, + { + "left": "mls", + "right": "poly_hole", + "expected": true + }, + { + "left": "mls", + "right": "poly_empty", + "expected": false + }, + { + "left": "mls", + "right": "mpt", + "expected": true + }, + { + "left": "mls", + "right": "mpt_with_empty", + "expected": true + }, + { + "left": "mls", + "right": "mpt_empty", + "expected": false + }, + { + "left": "mls", + "right": "mls", + "expected": true + }, + { + "left": "mls", + "right": "mpoly", + "expected": true + }, + { + "left": "mls", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "mls", + "right": "gc_empty", + "expected": false + }, + { + "left": "mls", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "mls", + "right": "gc_mixed", + "expected": true + }, + { + "left": "mls", + "right": "gc_nested", + "expected": true + }, + { + "left": "mls", + "right": "gc_nan_part", + "expected": true + }, + { + "left": "mls", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "mls", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "mls", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "mls", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "mls", + "right": "mpt_nan_member", + "expected": true + }, + { + "left": "mls", + "right": "gc_nan_nan_point", + "expected": true + }, + { + "left": "mpoly", + "right": "pt_origin", + "expected": false + }, + { + "left": "mpoly", + "right": "pt_one", + "expected": false + }, + { + "left": "mpoly", + "right": "pt_half", + "expected": false + }, + { + "left": "mpoly", + "right": "pt_far", + "expected": true + }, + { + "left": "mpoly", + "right": "pt_neg", + "expected": false + }, + { + "left": "mpoly", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "mpoly", + "right": "pt_huge", + "expected": false + }, + { + "left": "mpoly", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "mpoly", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "mpoly", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "mpoly", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "mpoly", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "mpoly", + "right": "pt_empty", + "expected": false + }, + { + "left": "mpoly", + "right": "pt_z", + "expected": false + }, + { + "left": "mpoly", + "right": "pt_m", + "expected": false + }, + { + "left": "mpoly", + "right": "pt_zm", + "expected": true + }, + { + "left": "mpoly", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "mpoly", + "right": "ls_diag", + "expected": false + }, + { + "left": "mpoly", + "right": "ls_edge", + "expected": false + }, + { + "left": "mpoly", + "right": "ls_far", + "expected": true + }, + { + "left": "mpoly", + "right": "ls_empty", + "expected": false + }, + { + "left": "mpoly", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "mpoly", + "right": "poly_unit", + "expected": false + }, + { + "left": "mpoly", + "right": "poly_far", + "expected": true + }, + { + "left": "mpoly", + "right": "poly_hole", + "expected": true + }, + { + "left": "mpoly", + "right": "poly_empty", + "expected": false + }, + { + "left": "mpoly", + "right": "mpt", + "expected": true + }, + { + "left": "mpoly", + "right": "mpt_with_empty", + "expected": true + }, + { + "left": "mpoly", + "right": "mpt_empty", + "expected": false + }, + { + "left": "mpoly", + "right": "mls", + "expected": true + }, + { + "left": "mpoly", + "right": "mpoly", + "expected": true + }, + { + "left": "mpoly", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "mpoly", + "right": "gc_empty", + "expected": false + }, + { + "left": "mpoly", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "mpoly", + "right": "gc_mixed", + "expected": false + }, + { + "left": "mpoly", + "right": "gc_nested", + "expected": true + }, + { + "left": "mpoly", + "right": "gc_nan_part", + "expected": true + }, + { + "left": "mpoly", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "mpoly", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "mpoly", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "mpoly", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "mpoly", + "right": "mpt_nan_member", + "expected": true + }, + { + "left": "mpoly", + "right": "gc_nan_nan_point", + "expected": true + }, + { + "left": "mpoly_empty", + "right": "pt_origin", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "pt_one", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "pt_half", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "pt_far", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "pt_neg", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "pt_huge", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "pt_empty", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "pt_z", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "pt_m", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "pt_zm", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "ls_diag", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "ls_edge", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "ls_far", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "ls_empty", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "ls_nan_vertex", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "poly_unit", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "poly_far", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "poly_hole", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "poly_empty", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "mpt", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "mpt_empty", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "mls", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "mpoly", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "gc_empty", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "gc_mixed", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "gc_nested", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "gc_nan_part", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "ls_nan_nan_vertex", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "ls_all_nan", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "ls_mixed_nan", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "poly_nan_vertex", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "gc_empty", + "right": "pt_origin", + "expected": false + }, + { + "left": "gc_empty", + "right": "pt_one", + "expected": false + }, + { + "left": "gc_empty", + "right": "pt_half", + "expected": false + }, + { + "left": "gc_empty", + "right": "pt_far", + "expected": false + }, + { + "left": "gc_empty", + "right": "pt_neg", + "expected": false + }, + { + "left": "gc_empty", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "gc_empty", + "right": "pt_huge", + "expected": false + }, + { + "left": "gc_empty", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "gc_empty", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "gc_empty", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "gc_empty", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "gc_empty", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "gc_empty", + "right": "pt_empty", + "expected": false + }, + { + "left": "gc_empty", + "right": "pt_z", + "expected": false + }, + { + "left": "gc_empty", + "right": "pt_m", + "expected": false + }, + { + "left": "gc_empty", + "right": "pt_zm", + "expected": false + }, + { + "left": "gc_empty", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "gc_empty", + "right": "ls_diag", + "expected": false + }, + { + "left": "gc_empty", + "right": "ls_edge", + "expected": false + }, + { + "left": "gc_empty", + "right": "ls_far", + "expected": false + }, + { + "left": "gc_empty", + "right": "ls_empty", + "expected": false + }, + { + "left": "gc_empty", + "right": "ls_nan_vertex", + "expected": false + }, + { + "left": "gc_empty", + "right": "poly_unit", + "expected": false + }, + { + "left": "gc_empty", + "right": "poly_far", + "expected": false + }, + { + "left": "gc_empty", + "right": "poly_hole", + "expected": false + }, + { + "left": "gc_empty", + "right": "poly_empty", + "expected": false + }, + { + "left": "gc_empty", + "right": "mpt", + "expected": false + }, + { + "left": "gc_empty", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "gc_empty", + "right": "mpt_empty", + "expected": false + }, + { + "left": "gc_empty", + "right": "mls", + "expected": false + }, + { + "left": "gc_empty", + "right": "mpoly", + "expected": false + }, + { + "left": "gc_empty", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "gc_empty", + "right": "gc_empty", + "expected": false + }, + { + "left": "gc_empty", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "gc_empty", + "right": "gc_mixed", + "expected": false + }, + { + "left": "gc_empty", + "right": "gc_nested", + "expected": false + }, + { + "left": "gc_empty", + "right": "gc_nan_part", + "expected": false + }, + { + "left": "gc_empty", + "right": "ls_nan_nan_vertex", + "expected": false + }, + { + "left": "gc_empty", + "right": "ls_all_nan", + "expected": false + }, + { + "left": "gc_empty", + "right": "ls_mixed_nan", + "expected": false + }, + { + "left": "gc_empty", + "right": "poly_nan_vertex", + "expected": false + }, + { + "left": "gc_empty", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "gc_empty", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "pt_origin", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "pt_one", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "pt_half", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "pt_far", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "pt_neg", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "pt_huge", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "pt_empty", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "pt_z", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "pt_m", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "pt_zm", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "ls_diag", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "ls_edge", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "ls_far", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "ls_empty", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "ls_nan_vertex", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "poly_unit", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "poly_far", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "poly_hole", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "poly_empty", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "mpt", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "mpt_empty", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "mls", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "mpoly", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "gc_empty", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "gc_mixed", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "gc_nested", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "gc_nan_part", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "ls_nan_nan_vertex", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "ls_all_nan", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "ls_mixed_nan", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "poly_nan_vertex", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "gc_mixed", + "right": "pt_origin", + "expected": false + }, + { + "left": "gc_mixed", + "right": "pt_one", + "expected": false + }, + { + "left": "gc_mixed", + "right": "pt_half", + "expected": false + }, + { + "left": "gc_mixed", + "right": "pt_far", + "expected": false + }, + { + "left": "gc_mixed", + "right": "pt_neg", + "expected": false + }, + { + "left": "gc_mixed", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "gc_mixed", + "right": "pt_huge", + "expected": false + }, + { + "left": "gc_mixed", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "gc_mixed", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "gc_mixed", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "gc_mixed", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "gc_mixed", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "gc_mixed", + "right": "pt_empty", + "expected": false + }, + { + "left": "gc_mixed", + "right": "pt_z", + "expected": false + }, + { + "left": "gc_mixed", + "right": "pt_m", + "expected": false + }, + { + "left": "gc_mixed", + "right": "pt_zm", + "expected": false + }, + { + "left": "gc_mixed", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "gc_mixed", + "right": "ls_diag", + "expected": true + }, + { + "left": "gc_mixed", + "right": "ls_edge", + "expected": false + }, + { + "left": "gc_mixed", + "right": "ls_far", + "expected": false + }, + { + "left": "gc_mixed", + "right": "ls_empty", + "expected": false + }, + { + "left": "gc_mixed", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "gc_mixed", + "right": "poly_unit", + "expected": true + }, + { + "left": "gc_mixed", + "right": "poly_far", + "expected": false + }, + { + "left": "gc_mixed", + "right": "poly_hole", + "expected": true + }, + { + "left": "gc_mixed", + "right": "poly_empty", + "expected": false + }, + { + "left": "gc_mixed", + "right": "mpt", + "expected": true + }, + { + "left": "gc_mixed", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "gc_mixed", + "right": "mpt_empty", + "expected": false + }, + { + "left": "gc_mixed", + "right": "mls", + "expected": true + }, + { + "left": "gc_mixed", + "right": "mpoly", + "expected": false + }, + { + "left": "gc_mixed", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "gc_mixed", + "right": "gc_empty", + "expected": false + }, + { + "left": "gc_mixed", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "gc_mixed", + "right": "gc_mixed", + "expected": true + }, + { + "left": "gc_mixed", + "right": "gc_nested", + "expected": false + }, + { + "left": "gc_mixed", + "right": "gc_nan_part", + "expected": false + }, + { + "left": "gc_mixed", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "gc_mixed", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "gc_mixed", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "gc_mixed", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "gc_mixed", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "gc_mixed", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "gc_nested", + "right": "pt_origin", + "expected": false + }, + { + "left": "gc_nested", + "right": "pt_one", + "expected": false + }, + { + "left": "gc_nested", + "right": "pt_half", + "expected": false + }, + { + "left": "gc_nested", + "right": "pt_far", + "expected": true + }, + { + "left": "gc_nested", + "right": "pt_neg", + "expected": false + }, + { + "left": "gc_nested", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "gc_nested", + "right": "pt_huge", + "expected": false + }, + { + "left": "gc_nested", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "gc_nested", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "gc_nested", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "gc_nested", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "gc_nested", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "gc_nested", + "right": "pt_empty", + "expected": false + }, + { + "left": "gc_nested", + "right": "pt_z", + "expected": false + }, + { + "left": "gc_nested", + "right": "pt_m", + "expected": false + }, + { + "left": "gc_nested", + "right": "pt_zm", + "expected": false + }, + { + "left": "gc_nested", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "gc_nested", + "right": "ls_diag", + "expected": false + }, + { + "left": "gc_nested", + "right": "ls_edge", + "expected": false + }, + { + "left": "gc_nested", + "right": "ls_far", + "expected": true + }, + { + "left": "gc_nested", + "right": "ls_empty", + "expected": false + }, + { + "left": "gc_nested", + "right": "ls_nan_vertex", + "expected": false + }, + { + "left": "gc_nested", + "right": "poly_unit", + "expected": false + }, + { + "left": "gc_nested", + "right": "poly_far", + "expected": true + }, + { + "left": "gc_nested", + "right": "poly_hole", + "expected": true + }, + { + "left": "gc_nested", + "right": "poly_empty", + "expected": false + }, + { + "left": "gc_nested", + "right": "mpt", + "expected": false + }, + { + "left": "gc_nested", + "right": "mpt_with_empty", + "expected": true + }, + { + "left": "gc_nested", + "right": "mpt_empty", + "expected": false + }, + { + "left": "gc_nested", + "right": "mls", + "expected": true + }, + { + "left": "gc_nested", + "right": "mpoly", + "expected": true + }, + { + "left": "gc_nested", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "gc_nested", + "right": "gc_empty", + "expected": false + }, + { + "left": "gc_nested", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "gc_nested", + "right": "gc_mixed", + "expected": false + }, + { + "left": "gc_nested", + "right": "gc_nested", + "expected": true + }, + { + "left": "gc_nested", + "right": "gc_nan_part", + "expected": true + }, + { + "left": "gc_nested", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "gc_nested", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "gc_nested", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "gc_nested", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "gc_nested", + "right": "mpt_nan_member", + "expected": true + }, + { + "left": "gc_nested", + "right": "gc_nan_nan_point", + "expected": true + }, + { + "left": "gc_nan_part", + "right": "pt_origin", + "expected": false + }, + { + "left": "gc_nan_part", + "right": "pt_one", + "expected": true + }, + { + "left": "gc_nan_part", + "right": "pt_half", + "expected": false + }, + { + "left": "gc_nan_part", + "right": "pt_far", + "expected": false + }, + { + "left": "gc_nan_part", + "right": "pt_neg", + "expected": false + }, + { + "left": "gc_nan_part", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "gc_nan_part", + "right": "pt_huge", + "expected": false + }, + { + "left": "gc_nan_part", + "right": "pt_nan_x", + "expected": true + }, + { + "left": "gc_nan_part", + "right": "pt_nan_y", + "expected": true + }, + { + "left": "gc_nan_part", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "gc_nan_part", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "gc_nan_part", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "gc_nan_part", + "right": "pt_empty", + "expected": false + }, + { + "left": "gc_nan_part", + "right": "pt_z", + "expected": false + }, + { + "left": "gc_nan_part", + "right": "pt_m", + "expected": false + }, + { + "left": "gc_nan_part", + "right": "pt_zm", + "expected": true + }, + { + "left": "gc_nan_part", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "gc_nan_part", + "right": "ls_diag", + "expected": true + }, + { + "left": "gc_nan_part", + "right": "ls_edge", + "expected": false + }, + { + "left": "gc_nan_part", + "right": "ls_far", + "expected": true + }, + { + "left": "gc_nan_part", + "right": "ls_empty", + "expected": false + }, + { + "left": "gc_nan_part", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "gc_nan_part", + "right": "poly_unit", + "expected": true + }, + { + "left": "gc_nan_part", + "right": "poly_far", + "expected": true + }, + { + "left": "gc_nan_part", + "right": "poly_hole", + "expected": true + }, + { + "left": "gc_nan_part", + "right": "poly_empty", + "expected": false + }, + { + "left": "gc_nan_part", + "right": "mpt", + "expected": true + }, + { + "left": "gc_nan_part", + "right": "mpt_with_empty", + "expected": true + }, + { + "left": "gc_nan_part", + "right": "mpt_empty", + "expected": false + }, + { + "left": "gc_nan_part", + "right": "mls", + "expected": true + }, + { + "left": "gc_nan_part", + "right": "mpoly", + "expected": true + }, + { + "left": "gc_nan_part", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "gc_nan_part", + "right": "gc_empty", + "expected": false + }, + { + "left": "gc_nan_part", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "gc_nan_part", + "right": "gc_mixed", + "expected": false + }, + { + "left": "gc_nan_part", + "right": "gc_nested", + "expected": true + }, + { + "left": "gc_nan_part", + "right": "gc_nan_part", + "expected": true + }, + { + "left": "gc_nan_part", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "gc_nan_part", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "gc_nan_part", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "gc_nan_part", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "gc_nan_part", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "gc_nan_part", + "right": "gc_nan_nan_point", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "pt_origin", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "pt_one", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "pt_half", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "pt_far", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "pt_neg", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "pt_just_outside", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "pt_huge", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "pt_nan_x", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "pt_nan_y", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "ls_nan_nan_vertex", + "right": "pt_inf_x", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "pt_neginf_x", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "pt_empty", + "expected": false + }, + { + "left": "ls_nan_nan_vertex", + "right": "pt_z", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "pt_m", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "pt_zm", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "pt_z_nan_z", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "ls_diag", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "ls_edge", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "ls_far", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "ls_empty", + "expected": false + }, + { + "left": "ls_nan_nan_vertex", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "poly_unit", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "poly_far", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "poly_hole", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "poly_empty", + "expected": false + }, + { + "left": "ls_nan_nan_vertex", + "right": "mpt", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "mpt_with_empty", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "mpt_empty", + "expected": false + }, + { + "left": "ls_nan_nan_vertex", + "right": "mls", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "mpoly", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "ls_nan_nan_vertex", + "right": "gc_empty", + "expected": false + }, + { + "left": "ls_nan_nan_vertex", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "ls_nan_nan_vertex", + "right": "gc_mixed", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "gc_nested", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "gc_nan_part", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "mpt_nan_member", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "gc_nan_nan_point", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "pt_origin", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "pt_one", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "pt_half", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "pt_far", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "pt_neg", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "pt_just_outside", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "pt_huge", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "pt_nan_x", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "pt_nan_y", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "ls_all_nan", + "right": "pt_inf_x", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "pt_neginf_x", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "pt_empty", + "expected": false + }, + { + "left": "ls_all_nan", + "right": "pt_z", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "pt_m", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "pt_zm", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "pt_z_nan_z", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "ls_diag", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "ls_edge", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "ls_far", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "ls_empty", + "expected": false + }, + { + "left": "ls_all_nan", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "poly_unit", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "poly_far", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "poly_hole", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "poly_empty", + "expected": false + }, + { + "left": "ls_all_nan", + "right": "mpt", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "mpt_with_empty", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "mpt_empty", + "expected": false + }, + { + "left": "ls_all_nan", + "right": "mls", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "mpoly", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "ls_all_nan", + "right": "gc_empty", + "expected": false + }, + { + "left": "ls_all_nan", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "ls_all_nan", + "right": "gc_mixed", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "gc_nested", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "gc_nan_part", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "mpt_nan_member", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "gc_nan_nan_point", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "pt_origin", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "pt_one", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "pt_half", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "pt_far", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "pt_neg", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "pt_just_outside", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "pt_huge", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "pt_nan_x", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "pt_nan_y", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "ls_mixed_nan", + "right": "pt_inf_x", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "pt_neginf_x", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "pt_empty", + "expected": false + }, + { + "left": "ls_mixed_nan", + "right": "pt_z", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "pt_m", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "pt_zm", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "pt_z_nan_z", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "ls_diag", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "ls_edge", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "ls_far", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "ls_empty", + "expected": false + }, + { + "left": "ls_mixed_nan", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "poly_unit", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "poly_far", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "poly_hole", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "poly_empty", + "expected": false + }, + { + "left": "ls_mixed_nan", + "right": "mpt", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "mpt_with_empty", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "mpt_empty", + "expected": false + }, + { + "left": "ls_mixed_nan", + "right": "mls", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "mpoly", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "ls_mixed_nan", + "right": "gc_empty", + "expected": false + }, + { + "left": "ls_mixed_nan", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "ls_mixed_nan", + "right": "gc_mixed", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "gc_nested", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "gc_nan_part", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "mpt_nan_member", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "gc_nan_nan_point", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "pt_origin", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "pt_one", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "pt_half", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "pt_far", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "pt_neg", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "pt_just_outside", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "pt_huge", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "pt_nan_x", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "pt_nan_y", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "poly_nan_vertex", + "right": "pt_inf_x", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "pt_neginf_x", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "pt_empty", + "expected": false + }, + { + "left": "poly_nan_vertex", + "right": "pt_z", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "pt_m", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "pt_zm", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "pt_z_nan_z", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "ls_diag", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "ls_edge", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "ls_far", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "ls_empty", + "expected": false + }, + { + "left": "poly_nan_vertex", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "poly_unit", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "poly_far", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "poly_hole", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "poly_empty", + "expected": false + }, + { + "left": "poly_nan_vertex", + "right": "mpt", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "mpt_with_empty", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "mpt_empty", + "expected": false + }, + { + "left": "poly_nan_vertex", + "right": "mls", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "mpoly", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "poly_nan_vertex", + "right": "gc_empty", + "expected": false + }, + { + "left": "poly_nan_vertex", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "poly_nan_vertex", + "right": "gc_mixed", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "gc_nested", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "gc_nan_part", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "mpt_nan_member", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "gc_nan_nan_point", + "expected": true + }, + { + "left": "mpt_nan_member", + "right": "pt_origin", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "pt_one", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "pt_half", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "pt_far", + "expected": true + }, + { + "left": "mpt_nan_member", + "right": "pt_neg", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "pt_huge", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "pt_empty", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "pt_z", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "pt_m", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "pt_zm", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "ls_diag", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "ls_edge", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "ls_far", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "ls_empty", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "ls_nan_vertex", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "poly_unit", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "poly_far", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "poly_hole", + "expected": true + }, + { + "left": "mpt_nan_member", + "right": "poly_empty", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "mpt", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "mpt_empty", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "mls", + "expected": true + }, + { + "left": "mpt_nan_member", + "right": "mpoly", + "expected": true + }, + { + "left": "mpt_nan_member", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "gc_empty", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "gc_mixed", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "gc_nested", + "expected": true + }, + { + "left": "mpt_nan_member", + "right": "gc_nan_part", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "mpt_nan_member", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "mpt_nan_member", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "mpt_nan_member", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "mpt_nan_member", + "right": "mpt_nan_member", + "expected": true + }, + { + "left": "mpt_nan_member", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "pt_origin", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "pt_one", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "pt_half", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "pt_far", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "pt_neg", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "pt_huge", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "pt_empty", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "pt_z", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "pt_m", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "pt_zm", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "ls_diag", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "ls_edge", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "ls_far", + "expected": true + }, + { + "left": "gc_nan_nan_point", + "right": "ls_empty", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "ls_nan_vertex", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "poly_unit", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "poly_far", + "expected": true + }, + { + "left": "gc_nan_nan_point", + "right": "poly_hole", + "expected": true + }, + { + "left": "gc_nan_nan_point", + "right": "poly_empty", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "mpt", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "mpt_with_empty", + "expected": true + }, + { + "left": "gc_nan_nan_point", + "right": "mpt_empty", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "mls", + "expected": true + }, + { + "left": "gc_nan_nan_point", + "right": "mpoly", + "expected": true + }, + { + "left": "gc_nan_nan_point", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "gc_empty", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "gc_mixed", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "gc_nested", + "expected": true + }, + { + "left": "gc_nan_nan_point", + "right": "gc_nan_part", + "expected": true + }, + { + "left": "gc_nan_nan_point", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "gc_nan_nan_point", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "gc_nan_nan_point", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "gc_nan_nan_point", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "gc_nan_nan_point", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "gc_nan_nan_point", + "expected": true + } + ] +} \ No newline at end of file diff --git a/vgi/src/main/java/farm/query/vgi/pushdown/FilterApplier.java b/vgi/src/main/java/farm/query/vgi/pushdown/FilterApplier.java index 1b9102cb..02e931fa 100644 --- a/vgi/src/main/java/farm/query/vgi/pushdown/FilterApplier.java +++ b/vgi/src/main/java/farm/query/vgi/pushdown/FilterApplier.java @@ -164,9 +164,9 @@ int retainedDeltaCount() { /** * The rendered SQL predicates of any pushed expression filters (spatial - * {@code &&}, {@code list_contains}, ...). {@link #apply} only handles - * column filters; expression filters are pass-through there and must be - * applied separately via the worker's expression evaluator. + * {@code &&}, {@code list_contains}, ...). {@link #apply} already evaluates + * every v2 predicate, these included; see + * {@link PushdownFilters#expressionPredicates()} before re-applying them elsewhere. * * @return the expression-filter SQL predicates, in order; empty when none */ diff --git a/vgi/src/main/java/farm/query/vgi/pushdown/PushdownFilters.java b/vgi/src/main/java/farm/query/vgi/pushdown/PushdownFilters.java index 7bd0aba0..5d4e5ad2 100644 --- a/vgi/src/main/java/farm/query/vgi/pushdown/PushdownFilters.java +++ b/vgi/src/main/java/farm/query/vgi/pushdown/PushdownFilters.java @@ -457,10 +457,12 @@ private static String formatOne(PushdownFilter f) { /** * The rendered SQL predicates of the top-level expression filters (e.g. - * {@code ("geom" && ST_MakeEnvelope(...))}). These can't be evaluated - * row-at-a-time — {@link #evaluate} treats them as pass-through; the worker - * applies them via an embedded engine (see vgi-example-worker's - * {@code ExpressionFilterEvaluator}). + * {@code ("geom" && ST_MakeEnvelope(...))}), for workers that want to + * evaluate them in an embedded engine. {@link #evaluate} already evaluates + * every v2 predicate natively, {@code duckdb.spatial/intersects_extent@1} + * included (with DuckDB core's {@code &&} semantics), so re-applying these is + * redundant; an engine whose semantics differ (e.g. the spatial extension's + * {@code st_intersects_extent} on NaN coordinates) can drop rows DuckDB keeps. * * @return the SQL predicates of the expression filters, in order; empty when none */ @@ -830,7 +832,9 @@ private static Scalar scalar(FilterExpression expression, VectorSchemaRoot root, if (expression instanceof FilterExpression.Call call) { List args = call.arguments().stream().map(arg -> scalar(arg, root, row).value()).toList(); if (!(call.function() instanceof FilterExpression.StandardFunction function)) { - return new Scalar(true, new Field("result", + // The decoder admits only duckdb.spatial/intersects_extent@1 here. + if (args.size() != 2) throw new FilterV2Exception("intersects_extent requires two arguments"); + return new Scalar(WkbExtent.intersects(args.get(0), args.get(1)), new Field("result", org.apache.arrow.vector.types.pojo.FieldType.nullable(new ArrowType.Bool()), null)); } Object result = switch (function) { diff --git a/vgi/src/main/java/farm/query/vgi/pushdown/WkbExtent.java b/vgi/src/main/java/farm/query/vgi/pushdown/WkbExtent.java new file mode 100644 index 00000000..bd509007 --- /dev/null +++ b/vgi/src/main/java/farm/query/vgi/pushdown/WkbExtent.java @@ -0,0 +1,134 @@ +// Copyright 2026 Query Farm LLC - https://query.farm + +package farm.query.vgi.pushdown; + +import java.nio.ByteBuffer; +import java.nio.ByteOrder; + +/** + * The XY extent of an ISO WKB geometry, and {@code duckdb.spatial/intersects_extent@1} + * ({@code a && b}) with DuckDB core's exact semantics: + * + *
    + *
  • a geometry without vertices (any empty geometry) intersects nothing;
  • + *
  • a POINT whose coordinates are all NaN is empty and contributes no vertex (that applies + * to a POINT anywhere, including inside a MULTIPOINT or GEOMETRYCOLLECTION; a NaN vertex + * of a LINESTRING or POLYGON is still a vertex);
  • + *
  • a vertex that is NaN on an axis makes that axis unbounded for the geometry;
  • + *
  • bounds are inclusive and compared as exact doubles, infinities included;
  • + *
  • Z and M are read past and ignored.
  • + *
+ * + *

Anything that is not well-formed ISO WKB (unknown byte order or type, EWKB flags such as + * the SRID flag, truncation, trailing bytes) is rejected with a {@link FilterV2Exception}. + */ +final class WkbExtent { + private static final int MAX_DEPTH = 128; + + private double minX = Double.POSITIVE_INFINITY; + private double maxX = Double.NEGATIVE_INFINITY; + private double minY = Double.POSITIVE_INFINITY; + private double maxY = Double.NEGATIVE_INFINITY; + private boolean empty = true; + + private WkbExtent() {} + + /** + * {@code a && b}: whether the extents of two WKB geometries intersect. + * + * @return the result, or {@code null} when either side is {@code null} + * @throws FilterV2Exception when a side is not a binary ISO WKB geometry + */ + static Boolean intersects(Object a, Object b) { + if (a == null || b == null) return null; + WkbExtent left = of(a); + WkbExtent right = of(b); + if (left.empty || right.empty) return false; + return left.minX <= right.maxX && right.minX <= left.maxX + && left.minY <= right.maxY && right.minY <= left.maxY; + } + + static WkbExtent of(Object value) { + if (!(value instanceof byte[] bytes)) { + throw new FilterV2Exception("intersects_extent argument is not a WKB binary value"); + } + WkbExtent extent = new WkbExtent(); + ByteBuffer buffer = ByteBuffer.wrap(bytes); + try { + extent.geometry(buffer, 0); + } catch (java.nio.BufferUnderflowException e) { + throw new FilterV2Exception("truncated WKB geometry", e); + } + if (buffer.hasRemaining()) throw new FilterV2Exception("trailing bytes after WKB geometry"); + return extent; + } + + private void geometry(ByteBuffer buffer, int depth) { + if (depth > MAX_DEPTH) throw new FilterV2Exception("WKB geometry nests too deeply"); + byte order = buffer.get(); + if (order == 0) buffer.order(ByteOrder.BIG_ENDIAN); + else if (order == 1) buffer.order(ByteOrder.LITTLE_ENDIAN); + else throw new FilterV2Exception("invalid WKB byte order " + order); + long type = Integer.toUnsignedLong(buffer.getInt()); + long base = type % 1000; + long dimensions = type / 1000; + if (base < 1 || base > 7 || dimensions > 3) { + throw new FilterV2Exception("unsupported WKB geometry type " + type); + } + int width = 2 + (dimensions == 0 ? 0 : dimensions == 3 ? 2 : 1); + switch ((int) base) { + case 1 -> point(buffer, width); + case 2 -> vertices(buffer, count(buffer, 8L * width), width); + case 3 -> { + for (int ring = count(buffer, 4); ring > 0; ring--) { + vertices(buffer, count(buffer, 8L * width), width); + } + } + default -> { + for (int part = count(buffer, 5); part > 0; part--) geometry(buffer, depth + 1); + } + } + } + + /** Read an element count, rejecting one that cannot fit in the bytes left. */ + private static int count(ByteBuffer buffer, long minElementBytes) { + long n = Integer.toUnsignedLong(buffer.getInt()); + if (n * minElementBytes > buffer.remaining()) throw new FilterV2Exception("truncated WKB geometry"); + return (int) n; + } + + private void point(ByteBuffer buffer, int width) { + double x = buffer.getDouble(); + double y = buffer.getDouble(); + boolean allNaN = Double.isNaN(x) && Double.isNaN(y); + for (int i = 2; i < width; i++) allNaN &= Double.isNaN(buffer.getDouble()); + if (!allNaN) vertex(x, y); + } + + private void vertices(ByteBuffer buffer, int n, int width) { + for (int i = 0; i < n; i++) { + double x = buffer.getDouble(); + double y = buffer.getDouble(); + for (int skip = 2; skip < width; skip++) buffer.getDouble(); + vertex(x, y); + } + } + + private void vertex(double x, double y) { + empty = false; + if (Double.isNaN(x)) { + minX = Double.NEGATIVE_INFINITY; + maxX = Double.POSITIVE_INFINITY; + } else { + if (x < minX) minX = x; + if (x > maxX) maxX = x; + } + if (Double.isNaN(y)) { + minY = Double.NEGATIVE_INFINITY; + maxY = Double.POSITIVE_INFINITY; + } else { + if (y < minY) minY = y; + if (y > maxY) maxY = y; + } + } +} diff --git a/vgi/src/test/java/farm/query/vgi/pushdown/IntersectsExtentConformanceTest.java b/vgi/src/test/java/farm/query/vgi/pushdown/IntersectsExtentConformanceTest.java new file mode 100644 index 00000000..f1265872 --- /dev/null +++ b/vgi/src/test/java/farm/query/vgi/pushdown/IntersectsExtentConformanceTest.java @@ -0,0 +1,179 @@ +// Copyright 2026 Query Farm LLC - https://query.farm + +package farm.query.vgi.pushdown; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import farm.query.vgi.internal.BatchUtil; +import farm.query.vgi.internal.VectorScalarCodec; +import farm.query.vgirpc.wire.Allocators; +import org.apache.arrow.vector.VarBinaryVector; +import org.apache.arrow.vector.VectorSchemaRoot; +import org.apache.arrow.vector.types.pojo.ArrowType; +import org.apache.arrow.vector.types.pojo.Field; +import org.apache.arrow.vector.types.pojo.FieldType; +import org.apache.arrow.vector.types.pojo.Schema; +import org.junit.jupiter.api.Test; + +import java.io.InputStream; +import java.util.ArrayList; +import java.util.HexFormat; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import static org.junit.jupiter.api.Assertions.assertArrayEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; + +/** + * {@code duckdb.spatial/intersects_extent@1} must agree with DuckDB core's {@code &&} on every + * case of the generated conformance corpus ({@code conformance/intersects_extent_cases.json}), + * for all four little/big-endian encoding combinations. The predicate is decoded from a real v2 + * filter payload and evaluated through {@link FilterApplier}, the same path scans use per batch. + */ +final class IntersectsExtentConformanceTest { + private static final FilterIdentity INTERSECTS_EXTENT = + new FilterIdentity("duckdb.spatial", "intersects_extent", 1); + private static final PushdownFiltersDecoder.Capabilities CAPABILITIES = + new PushdownFiltersDecoder.Capabilities(Set.of(INTERSECTS_EXTENT), Set.of(), Map.of()); + private static final Map WKB = Map.of( + "ARROW:extension:name", "geoarrow.wkb", "ARROW:extension:metadata", "{}"); + private static final Field GEOM = new Field("geom", + new FieldType(true, new ArrowType.Binary(), null, WKB), null); + private static final Schema SCHEMA = new Schema(List.of(GEOM)); + private static final String[] ENCODINGS = {"wkb_le", "wkb_be"}; + + @Test + void matchesDuckDbCoreOnEveryCase() throws Exception { + JsonNode doc; + try (InputStream in = getClass().getResourceAsStream("/conformance/intersects_extent_cases.json")) { + doc = new ObjectMapper().readTree(in); + } + Map geometries = new LinkedHashMap<>(); + for (JsonNode g : doc.get("geometries")) geometries.put(g.get("name").asText(), g); + List names = new ArrayList<>(geometries.keySet()); + Map expected = new LinkedHashMap<>(); + for (JsonNode c : doc.get("cases")) { + expected.put(c.get("left").asText() + "|" + c.get("right").asText(), + c.get("expected").asBoolean()); + } + assertEquals(names.size() * names.size(), expected.size()); + + List mismatches = new ArrayList<>(); + int checked = 0; + for (String rightEncoding : ENCODINGS) { + for (String right : names) { + byte[] constant = hex(geometries.get(right), rightEncoding); + FilterApplier applier = applier("required", constant); + for (String leftEncoding : ENCODINGS) { + List rows = new ArrayList<>(); + for (String left : names) rows.add(hex(geometries.get(left), leftEncoding)); + boolean[] mask = evaluate(applier, rows); + for (int i = 0; i < names.size(); i++) { + boolean want = expected.get(names.get(i) + "|" + right); + checked++; + if (mask[i] != want) { + mismatches.add(names.get(i) + "(" + leftEncoding + ") && " + right + + "(" + rightEncoding + "): expected " + want + ", got " + mask[i]); + } + } + } + } + } + assertEquals(4 * expected.size(), checked); + assertTrue(mismatches.isEmpty(), + mismatches.size() + " mismatches:\n" + String.join("\n", mismatches)); + } + + @Test + void nullGeometryIsNotSelected() { + byte[] unit = HexFormat.of().parseHex( + "0103000000010000000500000000000000000000000000000000000000000000000000f03f" + + "0000000000000000000000000000f03f000000000000f03f0000000000000000" + + "000000000000f03f00000000000000000000000000000000"); + assertArrayEquals(new boolean[] {false}, + evaluate(applier("required", unit), java.util.Collections.singletonList(null))); + } + + @Test + void undecodableRowValueKeepsRowsForAdvisoryAndFailsRequired() { + byte[] point = HexFormat.of().parseHex("0101000000000000000000e03f000000000000e03f"); + byte[] far = HexFormat.of().parseHex("010100000000000000000014400000000000001440"); + // EWKB point with the SRID flag (0x20000000) and SRID 4326. + byte[] ewkb = HexFormat.of().parseHex("0101000020e6100000000000000000e03f000000000000e03f"); + List bad = List.of( + new byte[] {1, 2, (byte) 0xff}, // truncated + HexFormat.of().parseHex("0108000000"), // unsupported type 8 + HexFormat.of().parseHex("020100000000000000000000000000000000000000"), // bad byte order + ewkb); + for (byte[] value : bad) { + List rows = List.of(far, value, point); + assertArrayEquals(new boolean[] {true, true, true}, + evaluate(applier("advisory", point), rows), + "advisory failure must keep rows: " + HexFormat.of().formatHex(value)); + assertThrows(FilterV2Exception.class, () -> evaluate(applier("required", point), rows)); + } + // A malformed constant is the same kind of failure. + assertArrayEquals(new boolean[] {true, true}, + evaluate(applier("advisory", new byte[] {1}), List.of(point, far))); + assertThrows(FilterV2Exception.class, + () -> evaluate(applier("required", new byte[] {1}), List.of(point, far))); + } + + @Test + void advisoryPredicatesAreAppliedByFilterApplier() { + byte[] point = HexFormat.of().parseHex("0101000000000000000000e03f000000000000e03f"); + byte[] far = HexFormat.of().parseHex("010100000000000000000014400000000000001440"); + assertArrayEquals(new boolean[] {true, false}, + evaluate(applier("advisory", point), List.of(point, far))); + } + + private static FilterApplier applier(String mode, byte[] constant) { + String expression = "{\"node\":\"call\",\"function\":{" + + "\"namespace\":\"duckdb.spatial\",\"name\":\"intersects_extent\",\"version\":1}," + + "\"arguments\":[{\"node\":\"column_ref\",\"column_index\":0,\"column_name\":\"geom\"}," + + "{\"node\":\"literal\",\"value_ref\":0}]}"; + String snapshot = "{\"encoding\":\"vgi.filters.v2\",\"semantics\":\"vgi.duckdb.standard.v1\"," + + "\"kind\":\"snapshot\",\"predicates\":[{\"id\":\"spatial\",\"revision\":0,\"mode\":\"" + + mode + "\",\"source\":\"query\",\"expression\":" + expression + "}]}"; + Field literal = new Field("value_0", new FieldType(true, new ArrowType.Binary(), null, WKB), null); + return FilterApplier.from(payload(snapshot, literal, constant), List.of(), SCHEMA, CAPABILITIES); + } + + private static boolean[] evaluate(FilterApplier applier, List rows) { + try (VectorSchemaRoot root = VectorSchemaRoot.create(SCHEMA, Allocators.root())) { + root.allocateNew(); + VarBinaryVector geom = (VarBinaryVector) root.getVector(0); + for (int i = 0; i < rows.size(); i++) { + if (rows.get(i) == null) geom.setNull(i); + else geom.setSafe(i, rows.get(i)); + } + geom.setValueCount(rows.size()); + root.setRowCount(rows.size()); + return applier.current().evaluate(root); + } + } + + private static byte[] payload(String json, Field literal, byte[] value) { + Field spec = new Field("filter_spec", FieldType.notNullable(new ArrowType.Utf8()), null); + Schema schema = new Schema(List.of(spec, literal), Map.of( + "vgi_filter_encoding", "vgi.filters.v2", + "vgi_filter_version", "2", + "vgi_evaluation_context", "vgi.none.v1")); + try (VectorSchemaRoot root = VectorSchemaRoot.create(schema, Allocators.root())) { + root.allocateNew(); + VectorScalarCodec.write(root.getVector(0), 0, json); + VectorScalarCodec.write(root.getVector(1), 0, value); + for (var vector : root.getFieldVectors()) vector.setValueCount(1); + root.setRowCount(1); + return BatchUtil.writeSingleBatch(root); + } + } + + private static byte[] hex(JsonNode geometry, String encoding) { + return HexFormat.of().parseHex(geometry.get(encoding).asText()); + } +} diff --git a/vgi/src/test/resources/conformance/intersects_extent_cases.json b/vgi/src/test/resources/conformance/intersects_extent_cases.json new file mode 100644 index 00000000..88eed83a --- /dev/null +++ b/vgi/src/test/resources/conformance/intersects_extent_cases.json @@ -0,0 +1,9512 @@ +{ + "description": "duckdb.spatial/intersects_extent@1 (`a && b`) results from DuckDB core. An SDK evaluator must return `expected` for every case, for both the little-endian (wkb_le) and big-endian (wkb_be) encodings of each side. Generated by gen.py.", + "duckdb_version": "v2.0.0", + "spatial_version": "a3dbcd1781", + "geometries": [ + { + "name": "pt_origin", + "wkt": "POINT(0 0)", + "wkb_le": "010100000000000000000000000000000000000000", + "wkb_be": "000000000100000000000000000000000000000000" + }, + { + "name": "pt_one", + "wkt": "POINT(1 1)", + "wkb_le": "0101000000000000000000f03f000000000000f03f", + "wkb_be": "00000000013ff00000000000003ff0000000000000" + }, + { + "name": "pt_half", + "wkt": "POINT(0.5 0.5)", + "wkb_le": "0101000000000000000000e03f000000000000e03f", + "wkb_be": "00000000013fe00000000000003fe0000000000000" + }, + { + "name": "pt_far", + "wkt": "POINT(5 5)", + "wkb_le": "010100000000000000000014400000000000001440", + "wkb_be": "000000000140140000000000004014000000000000" + }, + { + "name": "pt_neg", + "wkt": "POINT(-1 -1)", + "wkb_le": "0101000000000000000000f0bf000000000000f0bf", + "wkb_be": "0000000001bff0000000000000bff0000000000000" + }, + { + "name": "pt_just_outside", + "wkt": "POINT(1.0000000000000002 0.5)", + "wkb_le": "0101000000010000000000f03f000000000000e03f", + "wkb_be": "00000000013ff00000000000013fe0000000000000" + }, + { + "name": "pt_huge", + "wkt": "POINT(1e300 -1e300)", + "wkb_le": "01010000009c7500883ce4377e9c7500883ce437fe", + "wkb_be": "00000000017e37e43c8800759cfe37e43c8800759c" + }, + { + "name": "pt_nan_x", + "wkt": "POINT(nan 1)", + "wkb_le": "0101000000000000000000f87f000000000000f03f", + "wkb_be": "00000000017ff80000000000003ff0000000000000" + }, + { + "name": "pt_nan_y", + "wkt": "POINT(1 nan)", + "wkb_le": "0101000000000000000000f03f000000000000f87f", + "wkb_be": "00000000013ff00000000000007ff8000000000000" + }, + { + "name": "pt_nan_xy", + "wkt": "POINT(nan nan)", + "wkb_le": "0101000000000000000000f87f000000000000f87f", + "wkb_be": "00000000017ff80000000000007ff8000000000000" + }, + { + "name": "pt_inf_x", + "wkt": "POINT(inf 0.5)", + "wkb_le": "0101000000000000000000f07f000000000000e03f", + "wkb_be": "00000000017ff00000000000003fe0000000000000" + }, + { + "name": "pt_neginf_x", + "wkt": "POINT(-inf 0.5)", + "wkb_le": "0101000000000000000000f0ff000000000000e03f", + "wkb_be": "0000000001fff00000000000003fe0000000000000" + }, + { + "name": "pt_empty", + "wkt": "POINT EMPTY", + "wkb_le": "0101000000000000000000f87f000000000000f87f", + "wkb_be": "00000000017ff80000000000007ff8000000000000" + }, + { + "name": "pt_z", + "wkt": "POINT Z (0.5 0.5 99)", + "wkb_le": "01e9030000000000000000e03f000000000000e03f0000000000c05840", + "wkb_be": "00000003e93fe00000000000003fe00000000000004058c00000000000" + }, + { + "name": "pt_m", + "wkt": "POINT M (0.5 0.5 7)", + "wkb_le": "01d1070000000000000000e03f000000000000e03f0000000000001c40", + "wkb_be": "00000007d13fe00000000000003fe0000000000000401c000000000000" + }, + { + "name": "pt_zm", + "wkt": "POINT ZM (2 2 1 1)", + "wkb_le": "01b90b000000000000000000400000000000000040000000000000f03f000000000000f03f", + "wkb_be": "0000000bb9400000000000000040000000000000003ff00000000000003ff0000000000000" + }, + { + "name": "pt_z_nan_z", + "wkt": "POINT Z (0.5 0.5 nan)", + "wkb_le": "01e9030000000000000000e03f000000000000e03f000000000000f87f", + "wkb_be": "00000003e93fe00000000000003fe00000000000007ff8000000000000" + }, + { + "name": "ls_diag", + "wkt": "LINESTRING(0 0, 1 1)", + "wkb_le": "01020000000200000000000000000000000000000000000000000000000000f03f000000000000f03f", + "wkb_be": "000000000200000002000000000000000000000000000000003ff00000000000003ff0000000000000" + }, + { + "name": "ls_edge", + "wkt": "LINESTRING(1 0, 2 0)", + "wkb_le": "010200000002000000000000000000f03f000000000000000000000000000000400000000000000000", + "wkb_be": "0000000002000000023ff0000000000000000000000000000040000000000000000000000000000000" + }, + { + "name": "ls_far", + "wkt": "LINESTRING(3 3, 4 4)", + "wkb_le": "0102000000020000000000000000000840000000000000084000000000000010400000000000001040", + "wkb_be": "0000000002000000024008000000000000400800000000000040100000000000004010000000000000" + }, + { + "name": "ls_empty", + "wkt": "LINESTRING EMPTY", + "wkb_le": "010200000000000000", + "wkb_be": "000000000200000000" + }, + { + "name": "ls_nan_vertex", + "wkt": "LINESTRING(nan 0, 2 2)", + "wkb_le": "010200000002000000000000000000f87f000000000000000000000000000000400000000000000040", + "wkb_be": "0000000002000000027ff8000000000000000000000000000040000000000000004000000000000000" + }, + { + "name": "poly_unit", + "wkt": "POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))", + "wkb_le": "0103000000010000000500000000000000000000000000000000000000000000000000f03f0000000000000000000000000000f03f000000000000f03f0000000000000000000000000000f03f00000000000000000000000000000000", + "wkb_be": "00000000030000000100000005000000000000000000000000000000003ff000000000000000000000000000003ff00000000000003ff000000000000000000000000000003ff000000000000000000000000000000000000000000000" + }, + { + "name": "poly_far", + "wkt": "POLYGON((2 2, 3 2, 3 3, 2 3, 2 2))", + "wkb_le": "010300000001000000050000000000000000000040000000000000004000000000000008400000000000000040000000000000084000000000000008400000000000000040000000000000084000000000000000400000000000000040", + "wkb_be": "000000000300000001000000054000000000000000400000000000000040080000000000004000000000000000400800000000000040080000000000004000000000000000400800000000000040000000000000004000000000000000" + }, + { + "name": "poly_hole", + "wkt": "POLYGON((0 0, 10 0, 10 10, 0 10, 0 0), (4 4, 6 4, 6 6, 4 6, 4 4))", + "wkb_le": "010300000002000000050000000000000000000000000000000000000000000000000024400000000000000000000000000000244000000000000024400000000000000000000000000000244000000000000000000000000000000000050000000000000000001040000000000000104000000000000018400000000000001040000000000000184000000000000018400000000000001040000000000000184000000000000010400000000000001040", + "wkb_be": "000000000300000002000000050000000000000000000000000000000040240000000000000000000000000000402400000000000040240000000000000000000000000000402400000000000000000000000000000000000000000000000000054010000000000000401000000000000040180000000000004010000000000000401800000000000040180000000000004010000000000000401800000000000040100000000000004010000000000000" + }, + { + "name": "poly_empty", + "wkt": "POLYGON EMPTY", + "wkb_le": "010300000000000000", + "wkb_be": "000000000300000000" + }, + { + "name": "mpt", + "wkt": "MULTIPOINT((0 0), (2 2))", + "wkb_le": "010400000002000000010100000000000000000000000000000000000000010100000000000000000000400000000000000040", + "wkb_be": "000000000400000002000000000100000000000000000000000000000000000000000140000000000000004000000000000000" + }, + { + "name": "mpt_with_empty", + "wkt": "MULTIPOINT(EMPTY, (3 3))", + "wkb_le": "0104000000020000000101000000000000000000f87f000000000000f87f010100000000000000000008400000000000000840", + "wkb_be": "00000000040000000200000000017ff80000000000007ff8000000000000000000000140080000000000004008000000000000" + }, + { + "name": "mpt_empty", + "wkt": "MULTIPOINT EMPTY", + "wkb_le": "010400000000000000", + "wkb_be": "000000000400000000" + }, + { + "name": "mls", + "wkt": "MULTILINESTRING((0 0, 0 1), (5 5, 6 6))", + "wkb_le": "010500000002000000010200000002000000000000000000000000000000000000000000000000000000000000000000f03f0102000000020000000000000000001440000000000000144000000000000018400000000000001840", + "wkb_be": "0000000005000000020000000002000000020000000000000000000000000000000000000000000000003ff00000000000000000000002000000024014000000000000401400000000000040180000000000004018000000000000" + }, + { + "name": "mpoly", + "wkt": "MULTIPOLYGON(((2 2, 3 2, 3 3, 2 3, 2 2)), ((7 7, 8 7, 8 8, 7 8, 7 7)))", + "wkb_le": "010600000002000000010300000001000000050000000000000000000040000000000000004000000000000008400000000000000040000000000000084000000000000008400000000000000040000000000000084000000000000000400000000000000040010300000001000000050000000000000000001c400000000000001c4000000000000020400000000000001c40000000000000204000000000000020400000000000001c4000000000000020400000000000001c400000000000001c40", + "wkb_be": "00000000060000000200000000030000000100000005400000000000000040000000000000004008000000000000400000000000000040080000000000004008000000000000400000000000000040080000000000004000000000000000400000000000000000000000030000000100000005401c000000000000401c0000000000004020000000000000401c00000000000040200000000000004020000000000000401c0000000000004020000000000000401c000000000000401c000000000000" + }, + { + "name": "mpoly_empty", + "wkt": "MULTIPOLYGON EMPTY", + "wkb_le": "010600000000000000", + "wkb_be": "000000000600000000" + }, + { + "name": "gc_empty", + "wkt": "GEOMETRYCOLLECTION EMPTY", + "wkb_le": "010700000000000000", + "wkb_be": "000000000700000000" + }, + { + "name": "gc_empty_parts", + "wkt": "GEOMETRYCOLLECTION(POINT EMPTY, LINESTRING EMPTY)", + "wkb_le": "0107000000020000000101000000000000000000f87f000000000000f87f010200000000000000", + "wkb_be": "00000000070000000200000000017ff80000000000007ff8000000000000000000000200000000" + }, + { + "name": "gc_mixed", + "wkt": "GEOMETRYCOLLECTION(POINT EMPTY, POINT(0.25 0.75))", + "wkb_le": "0107000000020000000101000000000000000000f87f000000000000f87f0101000000000000000000d03f000000000000e83f", + "wkb_be": "00000000070000000200000000017ff80000000000007ff800000000000000000000013fd00000000000003fe8000000000000" + }, + { + "name": "gc_nested", + "wkt": "GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(POINT(2.5 2.5)), LINESTRING(9 9, 10 10))", + "wkb_le": "0107000000020000000107000000010000000101000000000000000000044000000000000004400102000000020000000000000000002240000000000000224000000000000024400000000000002440", + "wkb_be": "0000000007000000020000000007000000010000000001400400000000000040040000000000000000000002000000024022000000000000402200000000000040240000000000004024000000000000" + }, + { + "name": "gc_nan_part", + "wkt": "GEOMETRYCOLLECTION(POINT(nan 1), POINT(3 3))", + "wkb_le": "0107000000020000000101000000000000000000f87f000000000000f03f010100000000000000000008400000000000000840", + "wkb_be": "00000000070000000200000000017ff80000000000003ff0000000000000000000000140080000000000004008000000000000" + }, + { + "name": "ls_nan_nan_vertex", + "wkt": "LINESTRING(nan nan, 5 5)", + "wkb_le": "010200000002000000000000000000f87f000000000000f87f00000000000014400000000000001440", + "wkb_be": "0000000002000000027ff80000000000007ff800000000000040140000000000004014000000000000" + }, + { + "name": "ls_all_nan", + "wkt": "LINESTRING(nan nan, nan nan)", + "wkb_le": "010200000002000000000000000000f87f000000000000f87f000000000000f87f000000000000f87f", + "wkb_be": "0000000002000000027ff80000000000007ff80000000000007ff80000000000007ff8000000000000" + }, + { + "name": "ls_mixed_nan", + "wkt": "LINESTRING(nan 1, 1 nan)", + "wkb_le": "010200000002000000000000000000f87f000000000000f03f000000000000f03f000000000000f87f", + "wkb_be": "0000000002000000027ff80000000000003ff00000000000003ff00000000000007ff8000000000000" + }, + { + "name": "poly_nan_vertex", + "wkt": "POLYGON((nan nan, 5 5, 6 6, nan nan))", + "wkb_le": "01030000000100000004000000000000000000f87f000000000000f87f0000000000001440000000000000144000000000000018400000000000001840000000000000f87f000000000000f87f", + "wkb_be": "000000000300000001000000047ff80000000000007ff800000000000040140000000000004014000000000000401800000000000040180000000000007ff80000000000007ff8000000000000" + }, + { + "name": "mpt_nan_member", + "wkt": "MULTIPOINT((nan nan), (5 5))", + "wkb_le": "0104000000020000000101000000000000000000f87f000000000000f87f010100000000000000000014400000000000001440", + "wkb_be": "00000000040000000200000000017ff80000000000007ff8000000000000000000000140140000000000004014000000000000" + }, + { + "name": "gc_nan_nan_point", + "wkt": "GEOMETRYCOLLECTION(POINT(nan nan), POINT(3 3))", + "wkb_le": "0107000000020000000101000000000000000000f87f000000000000f87f010100000000000000000008400000000000000840", + "wkb_be": "00000000070000000200000000017ff80000000000007ff8000000000000000000000140080000000000004008000000000000" + } + ], + "cases": [ + { + "left": "pt_origin", + "right": "pt_origin", + "expected": true + }, + { + "left": "pt_origin", + "right": "pt_one", + "expected": false + }, + { + "left": "pt_origin", + "right": "pt_half", + "expected": false + }, + { + "left": "pt_origin", + "right": "pt_far", + "expected": false + }, + { + "left": "pt_origin", + "right": "pt_neg", + "expected": false + }, + { + "left": "pt_origin", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "pt_origin", + "right": "pt_huge", + "expected": false + }, + { + "left": "pt_origin", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "pt_origin", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "pt_origin", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "pt_origin", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "pt_origin", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "pt_origin", + "right": "pt_empty", + "expected": false + }, + { + "left": "pt_origin", + "right": "pt_z", + "expected": false + }, + { + "left": "pt_origin", + "right": "pt_m", + "expected": false + }, + { + "left": "pt_origin", + "right": "pt_zm", + "expected": false + }, + { + "left": "pt_origin", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "pt_origin", + "right": "ls_diag", + "expected": true + }, + { + "left": "pt_origin", + "right": "ls_edge", + "expected": false + }, + { + "left": "pt_origin", + "right": "ls_far", + "expected": false + }, + { + "left": "pt_origin", + "right": "ls_empty", + "expected": false + }, + { + "left": "pt_origin", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "pt_origin", + "right": "poly_unit", + "expected": true + }, + { + "left": "pt_origin", + "right": "poly_far", + "expected": false + }, + { + "left": "pt_origin", + "right": "poly_hole", + "expected": true + }, + { + "left": "pt_origin", + "right": "poly_empty", + "expected": false + }, + { + "left": "pt_origin", + "right": "mpt", + "expected": true + }, + { + "left": "pt_origin", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "pt_origin", + "right": "mpt_empty", + "expected": false + }, + { + "left": "pt_origin", + "right": "mls", + "expected": true + }, + { + "left": "pt_origin", + "right": "mpoly", + "expected": false + }, + { + "left": "pt_origin", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "pt_origin", + "right": "gc_empty", + "expected": false + }, + { + "left": "pt_origin", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "pt_origin", + "right": "gc_mixed", + "expected": false + }, + { + "left": "pt_origin", + "right": "gc_nested", + "expected": false + }, + { + "left": "pt_origin", + "right": "gc_nan_part", + "expected": false + }, + { + "left": "pt_origin", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "pt_origin", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "pt_origin", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "pt_origin", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "pt_origin", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "pt_origin", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "pt_one", + "right": "pt_origin", + "expected": false + }, + { + "left": "pt_one", + "right": "pt_one", + "expected": true + }, + { + "left": "pt_one", + "right": "pt_half", + "expected": false + }, + { + "left": "pt_one", + "right": "pt_far", + "expected": false + }, + { + "left": "pt_one", + "right": "pt_neg", + "expected": false + }, + { + "left": "pt_one", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "pt_one", + "right": "pt_huge", + "expected": false + }, + { + "left": "pt_one", + "right": "pt_nan_x", + "expected": true + }, + { + "left": "pt_one", + "right": "pt_nan_y", + "expected": true + }, + { + "left": "pt_one", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "pt_one", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "pt_one", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "pt_one", + "right": "pt_empty", + "expected": false + }, + { + "left": "pt_one", + "right": "pt_z", + "expected": false + }, + { + "left": "pt_one", + "right": "pt_m", + "expected": false + }, + { + "left": "pt_one", + "right": "pt_zm", + "expected": false + }, + { + "left": "pt_one", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "pt_one", + "right": "ls_diag", + "expected": true + }, + { + "left": "pt_one", + "right": "ls_edge", + "expected": false + }, + { + "left": "pt_one", + "right": "ls_far", + "expected": false + }, + { + "left": "pt_one", + "right": "ls_empty", + "expected": false + }, + { + "left": "pt_one", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "pt_one", + "right": "poly_unit", + "expected": true + }, + { + "left": "pt_one", + "right": "poly_far", + "expected": false + }, + { + "left": "pt_one", + "right": "poly_hole", + "expected": true + }, + { + "left": "pt_one", + "right": "poly_empty", + "expected": false + }, + { + "left": "pt_one", + "right": "mpt", + "expected": true + }, + { + "left": "pt_one", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "pt_one", + "right": "mpt_empty", + "expected": false + }, + { + "left": "pt_one", + "right": "mls", + "expected": true + }, + { + "left": "pt_one", + "right": "mpoly", + "expected": false + }, + { + "left": "pt_one", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "pt_one", + "right": "gc_empty", + "expected": false + }, + { + "left": "pt_one", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "pt_one", + "right": "gc_mixed", + "expected": false + }, + { + "left": "pt_one", + "right": "gc_nested", + "expected": false + }, + { + "left": "pt_one", + "right": "gc_nan_part", + "expected": true + }, + { + "left": "pt_one", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "pt_one", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "pt_one", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "pt_one", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "pt_one", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "pt_one", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "pt_half", + "right": "pt_origin", + "expected": false + }, + { + "left": "pt_half", + "right": "pt_one", + "expected": false + }, + { + "left": "pt_half", + "right": "pt_half", + "expected": true + }, + { + "left": "pt_half", + "right": "pt_far", + "expected": false + }, + { + "left": "pt_half", + "right": "pt_neg", + "expected": false + }, + { + "left": "pt_half", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "pt_half", + "right": "pt_huge", + "expected": false + }, + { + "left": "pt_half", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "pt_half", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "pt_half", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "pt_half", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "pt_half", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "pt_half", + "right": "pt_empty", + "expected": false + }, + { + "left": "pt_half", + "right": "pt_z", + "expected": true + }, + { + "left": "pt_half", + "right": "pt_m", + "expected": true + }, + { + "left": "pt_half", + "right": "pt_zm", + "expected": false + }, + { + "left": "pt_half", + "right": "pt_z_nan_z", + "expected": true + }, + { + "left": "pt_half", + "right": "ls_diag", + "expected": true + }, + { + "left": "pt_half", + "right": "ls_edge", + "expected": false + }, + { + "left": "pt_half", + "right": "ls_far", + "expected": false + }, + { + "left": "pt_half", + "right": "ls_empty", + "expected": false + }, + { + "left": "pt_half", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "pt_half", + "right": "poly_unit", + "expected": true + }, + { + "left": "pt_half", + "right": "poly_far", + "expected": false + }, + { + "left": "pt_half", + "right": "poly_hole", + "expected": true + }, + { + "left": "pt_half", + "right": "poly_empty", + "expected": false + }, + { + "left": "pt_half", + "right": "mpt", + "expected": true + }, + { + "left": "pt_half", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "pt_half", + "right": "mpt_empty", + "expected": false + }, + { + "left": "pt_half", + "right": "mls", + "expected": true + }, + { + "left": "pt_half", + "right": "mpoly", + "expected": false + }, + { + "left": "pt_half", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "pt_half", + "right": "gc_empty", + "expected": false + }, + { + "left": "pt_half", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "pt_half", + "right": "gc_mixed", + "expected": false + }, + { + "left": "pt_half", + "right": "gc_nested", + "expected": false + }, + { + "left": "pt_half", + "right": "gc_nan_part", + "expected": false + }, + { + "left": "pt_half", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "pt_half", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "pt_half", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "pt_half", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "pt_half", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "pt_half", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "pt_far", + "right": "pt_origin", + "expected": false + }, + { + "left": "pt_far", + "right": "pt_one", + "expected": false + }, + { + "left": "pt_far", + "right": "pt_half", + "expected": false + }, + { + "left": "pt_far", + "right": "pt_far", + "expected": true + }, + { + "left": "pt_far", + "right": "pt_neg", + "expected": false + }, + { + "left": "pt_far", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "pt_far", + "right": "pt_huge", + "expected": false + }, + { + "left": "pt_far", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "pt_far", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "pt_far", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "pt_far", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "pt_far", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "pt_far", + "right": "pt_empty", + "expected": false + }, + { + "left": "pt_far", + "right": "pt_z", + "expected": false + }, + { + "left": "pt_far", + "right": "pt_m", + "expected": false + }, + { + "left": "pt_far", + "right": "pt_zm", + "expected": false + }, + { + "left": "pt_far", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "pt_far", + "right": "ls_diag", + "expected": false + }, + { + "left": "pt_far", + "right": "ls_edge", + "expected": false + }, + { + "left": "pt_far", + "right": "ls_far", + "expected": false + }, + { + "left": "pt_far", + "right": "ls_empty", + "expected": false + }, + { + "left": "pt_far", + "right": "ls_nan_vertex", + "expected": false + }, + { + "left": "pt_far", + "right": "poly_unit", + "expected": false + }, + { + "left": "pt_far", + "right": "poly_far", + "expected": false + }, + { + "left": "pt_far", + "right": "poly_hole", + "expected": true + }, + { + "left": "pt_far", + "right": "poly_empty", + "expected": false + }, + { + "left": "pt_far", + "right": "mpt", + "expected": false + }, + { + "left": "pt_far", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "pt_far", + "right": "mpt_empty", + "expected": false + }, + { + "left": "pt_far", + "right": "mls", + "expected": true + }, + { + "left": "pt_far", + "right": "mpoly", + "expected": true + }, + { + "left": "pt_far", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "pt_far", + "right": "gc_empty", + "expected": false + }, + { + "left": "pt_far", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "pt_far", + "right": "gc_mixed", + "expected": false + }, + { + "left": "pt_far", + "right": "gc_nested", + "expected": true + }, + { + "left": "pt_far", + "right": "gc_nan_part", + "expected": false + }, + { + "left": "pt_far", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "pt_far", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "pt_far", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "pt_far", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "pt_far", + "right": "mpt_nan_member", + "expected": true + }, + { + "left": "pt_far", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "pt_neg", + "right": "pt_origin", + "expected": false + }, + { + "left": "pt_neg", + "right": "pt_one", + "expected": false + }, + { + "left": "pt_neg", + "right": "pt_half", + "expected": false + }, + { + "left": "pt_neg", + "right": "pt_far", + "expected": false + }, + { + "left": "pt_neg", + "right": "pt_neg", + "expected": true + }, + { + "left": "pt_neg", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "pt_neg", + "right": "pt_huge", + "expected": false + }, + { + "left": "pt_neg", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "pt_neg", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "pt_neg", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "pt_neg", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "pt_neg", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "pt_neg", + "right": "pt_empty", + "expected": false + }, + { + "left": "pt_neg", + "right": "pt_z", + "expected": false + }, + { + "left": "pt_neg", + "right": "pt_m", + "expected": false + }, + { + "left": "pt_neg", + "right": "pt_zm", + "expected": false + }, + { + "left": "pt_neg", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "pt_neg", + "right": "ls_diag", + "expected": false + }, + { + "left": "pt_neg", + "right": "ls_edge", + "expected": false + }, + { + "left": "pt_neg", + "right": "ls_far", + "expected": false + }, + { + "left": "pt_neg", + "right": "ls_empty", + "expected": false + }, + { + "left": "pt_neg", + "right": "ls_nan_vertex", + "expected": false + }, + { + "left": "pt_neg", + "right": "poly_unit", + "expected": false + }, + { + "left": "pt_neg", + "right": "poly_far", + "expected": false + }, + { + "left": "pt_neg", + "right": "poly_hole", + "expected": false + }, + { + "left": "pt_neg", + "right": "poly_empty", + "expected": false + }, + { + "left": "pt_neg", + "right": "mpt", + "expected": false + }, + { + "left": "pt_neg", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "pt_neg", + "right": "mpt_empty", + "expected": false + }, + { + "left": "pt_neg", + "right": "mls", + "expected": false + }, + { + "left": "pt_neg", + "right": "mpoly", + "expected": false + }, + { + "left": "pt_neg", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "pt_neg", + "right": "gc_empty", + "expected": false + }, + { + "left": "pt_neg", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "pt_neg", + "right": "gc_mixed", + "expected": false + }, + { + "left": "pt_neg", + "right": "gc_nested", + "expected": false + }, + { + "left": "pt_neg", + "right": "gc_nan_part", + "expected": false + }, + { + "left": "pt_neg", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "pt_neg", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "pt_neg", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "pt_neg", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "pt_neg", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "pt_neg", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "pt_origin", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "pt_one", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "pt_half", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "pt_far", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "pt_neg", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "pt_just_outside", + "expected": true + }, + { + "left": "pt_just_outside", + "right": "pt_huge", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "pt_empty", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "pt_z", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "pt_m", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "pt_zm", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "ls_diag", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "ls_edge", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "ls_far", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "ls_empty", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "pt_just_outside", + "right": "poly_unit", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "poly_far", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "poly_hole", + "expected": true + }, + { + "left": "pt_just_outside", + "right": "poly_empty", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "mpt", + "expected": true + }, + { + "left": "pt_just_outside", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "mpt_empty", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "mls", + "expected": true + }, + { + "left": "pt_just_outside", + "right": "mpoly", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "gc_empty", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "gc_mixed", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "gc_nested", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "gc_nan_part", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "pt_just_outside", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "pt_just_outside", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "pt_just_outside", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "pt_just_outside", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "pt_huge", + "right": "pt_origin", + "expected": false + }, + { + "left": "pt_huge", + "right": "pt_one", + "expected": false + }, + { + "left": "pt_huge", + "right": "pt_half", + "expected": false + }, + { + "left": "pt_huge", + "right": "pt_far", + "expected": false + }, + { + "left": "pt_huge", + "right": "pt_neg", + "expected": false + }, + { + "left": "pt_huge", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "pt_huge", + "right": "pt_huge", + "expected": true + }, + { + "left": "pt_huge", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "pt_huge", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "pt_huge", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "pt_huge", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "pt_huge", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "pt_huge", + "right": "pt_empty", + "expected": false + }, + { + "left": "pt_huge", + "right": "pt_z", + "expected": false + }, + { + "left": "pt_huge", + "right": "pt_m", + "expected": false + }, + { + "left": "pt_huge", + "right": "pt_zm", + "expected": false + }, + { + "left": "pt_huge", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "pt_huge", + "right": "ls_diag", + "expected": false + }, + { + "left": "pt_huge", + "right": "ls_edge", + "expected": false + }, + { + "left": "pt_huge", + "right": "ls_far", + "expected": false + }, + { + "left": "pt_huge", + "right": "ls_empty", + "expected": false + }, + { + "left": "pt_huge", + "right": "ls_nan_vertex", + "expected": false + }, + { + "left": "pt_huge", + "right": "poly_unit", + "expected": false + }, + { + "left": "pt_huge", + "right": "poly_far", + "expected": false + }, + { + "left": "pt_huge", + "right": "poly_hole", + "expected": false + }, + { + "left": "pt_huge", + "right": "poly_empty", + "expected": false + }, + { + "left": "pt_huge", + "right": "mpt", + "expected": false + }, + { + "left": "pt_huge", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "pt_huge", + "right": "mpt_empty", + "expected": false + }, + { + "left": "pt_huge", + "right": "mls", + "expected": false + }, + { + "left": "pt_huge", + "right": "mpoly", + "expected": false + }, + { + "left": "pt_huge", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "pt_huge", + "right": "gc_empty", + "expected": false + }, + { + "left": "pt_huge", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "pt_huge", + "right": "gc_mixed", + "expected": false + }, + { + "left": "pt_huge", + "right": "gc_nested", + "expected": false + }, + { + "left": "pt_huge", + "right": "gc_nan_part", + "expected": false + }, + { + "left": "pt_huge", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "pt_huge", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "pt_huge", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "pt_huge", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "pt_huge", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "pt_huge", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "pt_origin", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "pt_one", + "expected": true + }, + { + "left": "pt_nan_x", + "right": "pt_half", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "pt_far", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "pt_neg", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "pt_huge", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "pt_nan_x", + "expected": true + }, + { + "left": "pt_nan_x", + "right": "pt_nan_y", + "expected": true + }, + { + "left": "pt_nan_x", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "pt_empty", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "pt_z", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "pt_m", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "pt_zm", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "ls_diag", + "expected": true + }, + { + "left": "pt_nan_x", + "right": "ls_edge", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "ls_far", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "ls_empty", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "pt_nan_x", + "right": "poly_unit", + "expected": true + }, + { + "left": "pt_nan_x", + "right": "poly_far", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "poly_hole", + "expected": true + }, + { + "left": "pt_nan_x", + "right": "poly_empty", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "mpt", + "expected": true + }, + { + "left": "pt_nan_x", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "mpt_empty", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "mls", + "expected": true + }, + { + "left": "pt_nan_x", + "right": "mpoly", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "gc_empty", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "gc_mixed", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "gc_nested", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "gc_nan_part", + "expected": true + }, + { + "left": "pt_nan_x", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "pt_nan_x", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "pt_nan_x", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "pt_nan_x", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "pt_nan_x", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "pt_origin", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "pt_one", + "expected": true + }, + { + "left": "pt_nan_y", + "right": "pt_half", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "pt_far", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "pt_neg", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "pt_huge", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "pt_nan_x", + "expected": true + }, + { + "left": "pt_nan_y", + "right": "pt_nan_y", + "expected": true + }, + { + "left": "pt_nan_y", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "pt_empty", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "pt_z", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "pt_m", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "pt_zm", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "ls_diag", + "expected": true + }, + { + "left": "pt_nan_y", + "right": "ls_edge", + "expected": true + }, + { + "left": "pt_nan_y", + "right": "ls_far", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "ls_empty", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "pt_nan_y", + "right": "poly_unit", + "expected": true + }, + { + "left": "pt_nan_y", + "right": "poly_far", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "poly_hole", + "expected": true + }, + { + "left": "pt_nan_y", + "right": "poly_empty", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "mpt", + "expected": true + }, + { + "left": "pt_nan_y", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "mpt_empty", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "mls", + "expected": true + }, + { + "left": "pt_nan_y", + "right": "mpoly", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "gc_empty", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "gc_mixed", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "gc_nested", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "gc_nan_part", + "expected": true + }, + { + "left": "pt_nan_y", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "pt_nan_y", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "pt_nan_y", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "pt_nan_y", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "pt_nan_y", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "pt_origin", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "pt_one", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "pt_half", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "pt_far", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "pt_neg", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "pt_huge", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "pt_empty", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "pt_z", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "pt_m", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "pt_zm", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "ls_diag", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "ls_edge", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "ls_far", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "ls_empty", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "ls_nan_vertex", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "poly_unit", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "poly_far", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "poly_hole", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "poly_empty", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "mpt", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "mpt_empty", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "mls", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "mpoly", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "gc_empty", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "gc_mixed", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "gc_nested", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "gc_nan_part", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "ls_nan_nan_vertex", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "ls_all_nan", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "ls_mixed_nan", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "poly_nan_vertex", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "pt_origin", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "pt_one", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "pt_half", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "pt_far", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "pt_neg", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "pt_huge", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "pt_inf_x", + "expected": true + }, + { + "left": "pt_inf_x", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "pt_empty", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "pt_z", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "pt_m", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "pt_zm", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "ls_diag", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "ls_edge", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "ls_far", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "ls_empty", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "pt_inf_x", + "right": "poly_unit", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "poly_far", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "poly_hole", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "poly_empty", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "mpt", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "mpt_empty", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "mls", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "mpoly", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "gc_empty", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "gc_mixed", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "gc_nested", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "gc_nan_part", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "pt_inf_x", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "pt_inf_x", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "pt_inf_x", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "pt_inf_x", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "pt_origin", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "pt_one", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "pt_half", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "pt_far", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "pt_neg", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "pt_huge", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "pt_neginf_x", + "expected": true + }, + { + "left": "pt_neginf_x", + "right": "pt_empty", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "pt_z", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "pt_m", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "pt_zm", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "ls_diag", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "ls_edge", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "ls_far", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "ls_empty", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "pt_neginf_x", + "right": "poly_unit", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "poly_far", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "poly_hole", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "poly_empty", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "mpt", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "mpt_empty", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "mls", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "mpoly", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "gc_empty", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "gc_mixed", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "gc_nested", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "gc_nan_part", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "pt_neginf_x", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "pt_neginf_x", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "pt_neginf_x", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "pt_neginf_x", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "pt_empty", + "right": "pt_origin", + "expected": false + }, + { + "left": "pt_empty", + "right": "pt_one", + "expected": false + }, + { + "left": "pt_empty", + "right": "pt_half", + "expected": false + }, + { + "left": "pt_empty", + "right": "pt_far", + "expected": false + }, + { + "left": "pt_empty", + "right": "pt_neg", + "expected": false + }, + { + "left": "pt_empty", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "pt_empty", + "right": "pt_huge", + "expected": false + }, + { + "left": "pt_empty", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "pt_empty", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "pt_empty", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "pt_empty", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "pt_empty", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "pt_empty", + "right": "pt_empty", + "expected": false + }, + { + "left": "pt_empty", + "right": "pt_z", + "expected": false + }, + { + "left": "pt_empty", + "right": "pt_m", + "expected": false + }, + { + "left": "pt_empty", + "right": "pt_zm", + "expected": false + }, + { + "left": "pt_empty", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "pt_empty", + "right": "ls_diag", + "expected": false + }, + { + "left": "pt_empty", + "right": "ls_edge", + "expected": false + }, + { + "left": "pt_empty", + "right": "ls_far", + "expected": false + }, + { + "left": "pt_empty", + "right": "ls_empty", + "expected": false + }, + { + "left": "pt_empty", + "right": "ls_nan_vertex", + "expected": false + }, + { + "left": "pt_empty", + "right": "poly_unit", + "expected": false + }, + { + "left": "pt_empty", + "right": "poly_far", + "expected": false + }, + { + "left": "pt_empty", + "right": "poly_hole", + "expected": false + }, + { + "left": "pt_empty", + "right": "poly_empty", + "expected": false + }, + { + "left": "pt_empty", + "right": "mpt", + "expected": false + }, + { + "left": "pt_empty", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "pt_empty", + "right": "mpt_empty", + "expected": false + }, + { + "left": "pt_empty", + "right": "mls", + "expected": false + }, + { + "left": "pt_empty", + "right": "mpoly", + "expected": false + }, + { + "left": "pt_empty", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "pt_empty", + "right": "gc_empty", + "expected": false + }, + { + "left": "pt_empty", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "pt_empty", + "right": "gc_mixed", + "expected": false + }, + { + "left": "pt_empty", + "right": "gc_nested", + "expected": false + }, + { + "left": "pt_empty", + "right": "gc_nan_part", + "expected": false + }, + { + "left": "pt_empty", + "right": "ls_nan_nan_vertex", + "expected": false + }, + { + "left": "pt_empty", + "right": "ls_all_nan", + "expected": false + }, + { + "left": "pt_empty", + "right": "ls_mixed_nan", + "expected": false + }, + { + "left": "pt_empty", + "right": "poly_nan_vertex", + "expected": false + }, + { + "left": "pt_empty", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "pt_empty", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "pt_z", + "right": "pt_origin", + "expected": false + }, + { + "left": "pt_z", + "right": "pt_one", + "expected": false + }, + { + "left": "pt_z", + "right": "pt_half", + "expected": true + }, + { + "left": "pt_z", + "right": "pt_far", + "expected": false + }, + { + "left": "pt_z", + "right": "pt_neg", + "expected": false + }, + { + "left": "pt_z", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "pt_z", + "right": "pt_huge", + "expected": false + }, + { + "left": "pt_z", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "pt_z", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "pt_z", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "pt_z", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "pt_z", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "pt_z", + "right": "pt_empty", + "expected": false + }, + { + "left": "pt_z", + "right": "pt_z", + "expected": true + }, + { + "left": "pt_z", + "right": "pt_m", + "expected": true + }, + { + "left": "pt_z", + "right": "pt_zm", + "expected": false + }, + { + "left": "pt_z", + "right": "pt_z_nan_z", + "expected": true + }, + { + "left": "pt_z", + "right": "ls_diag", + "expected": true + }, + { + "left": "pt_z", + "right": "ls_edge", + "expected": false + }, + { + "left": "pt_z", + "right": "ls_far", + "expected": false + }, + { + "left": "pt_z", + "right": "ls_empty", + "expected": false + }, + { + "left": "pt_z", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "pt_z", + "right": "poly_unit", + "expected": true + }, + { + "left": "pt_z", + "right": "poly_far", + "expected": false + }, + { + "left": "pt_z", + "right": "poly_hole", + "expected": true + }, + { + "left": "pt_z", + "right": "poly_empty", + "expected": false + }, + { + "left": "pt_z", + "right": "mpt", + "expected": true + }, + { + "left": "pt_z", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "pt_z", + "right": "mpt_empty", + "expected": false + }, + { + "left": "pt_z", + "right": "mls", + "expected": true + }, + { + "left": "pt_z", + "right": "mpoly", + "expected": false + }, + { + "left": "pt_z", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "pt_z", + "right": "gc_empty", + "expected": false + }, + { + "left": "pt_z", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "pt_z", + "right": "gc_mixed", + "expected": false + }, + { + "left": "pt_z", + "right": "gc_nested", + "expected": false + }, + { + "left": "pt_z", + "right": "gc_nan_part", + "expected": false + }, + { + "left": "pt_z", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "pt_z", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "pt_z", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "pt_z", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "pt_z", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "pt_z", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "pt_m", + "right": "pt_origin", + "expected": false + }, + { + "left": "pt_m", + "right": "pt_one", + "expected": false + }, + { + "left": "pt_m", + "right": "pt_half", + "expected": true + }, + { + "left": "pt_m", + "right": "pt_far", + "expected": false + }, + { + "left": "pt_m", + "right": "pt_neg", + "expected": false + }, + { + "left": "pt_m", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "pt_m", + "right": "pt_huge", + "expected": false + }, + { + "left": "pt_m", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "pt_m", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "pt_m", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "pt_m", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "pt_m", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "pt_m", + "right": "pt_empty", + "expected": false + }, + { + "left": "pt_m", + "right": "pt_z", + "expected": true + }, + { + "left": "pt_m", + "right": "pt_m", + "expected": true + }, + { + "left": "pt_m", + "right": "pt_zm", + "expected": false + }, + { + "left": "pt_m", + "right": "pt_z_nan_z", + "expected": true + }, + { + "left": "pt_m", + "right": "ls_diag", + "expected": true + }, + { + "left": "pt_m", + "right": "ls_edge", + "expected": false + }, + { + "left": "pt_m", + "right": "ls_far", + "expected": false + }, + { + "left": "pt_m", + "right": "ls_empty", + "expected": false + }, + { + "left": "pt_m", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "pt_m", + "right": "poly_unit", + "expected": true + }, + { + "left": "pt_m", + "right": "poly_far", + "expected": false + }, + { + "left": "pt_m", + "right": "poly_hole", + "expected": true + }, + { + "left": "pt_m", + "right": "poly_empty", + "expected": false + }, + { + "left": "pt_m", + "right": "mpt", + "expected": true + }, + { + "left": "pt_m", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "pt_m", + "right": "mpt_empty", + "expected": false + }, + { + "left": "pt_m", + "right": "mls", + "expected": true + }, + { + "left": "pt_m", + "right": "mpoly", + "expected": false + }, + { + "left": "pt_m", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "pt_m", + "right": "gc_empty", + "expected": false + }, + { + "left": "pt_m", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "pt_m", + "right": "gc_mixed", + "expected": false + }, + { + "left": "pt_m", + "right": "gc_nested", + "expected": false + }, + { + "left": "pt_m", + "right": "gc_nan_part", + "expected": false + }, + { + "left": "pt_m", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "pt_m", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "pt_m", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "pt_m", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "pt_m", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "pt_m", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "pt_zm", + "right": "pt_origin", + "expected": false + }, + { + "left": "pt_zm", + "right": "pt_one", + "expected": false + }, + { + "left": "pt_zm", + "right": "pt_half", + "expected": false + }, + { + "left": "pt_zm", + "right": "pt_far", + "expected": false + }, + { + "left": "pt_zm", + "right": "pt_neg", + "expected": false + }, + { + "left": "pt_zm", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "pt_zm", + "right": "pt_huge", + "expected": false + }, + { + "left": "pt_zm", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "pt_zm", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "pt_zm", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "pt_zm", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "pt_zm", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "pt_zm", + "right": "pt_empty", + "expected": false + }, + { + "left": "pt_zm", + "right": "pt_z", + "expected": false + }, + { + "left": "pt_zm", + "right": "pt_m", + "expected": false + }, + { + "left": "pt_zm", + "right": "pt_zm", + "expected": true + }, + { + "left": "pt_zm", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "pt_zm", + "right": "ls_diag", + "expected": false + }, + { + "left": "pt_zm", + "right": "ls_edge", + "expected": false + }, + { + "left": "pt_zm", + "right": "ls_far", + "expected": false + }, + { + "left": "pt_zm", + "right": "ls_empty", + "expected": false + }, + { + "left": "pt_zm", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "pt_zm", + "right": "poly_unit", + "expected": false + }, + { + "left": "pt_zm", + "right": "poly_far", + "expected": true + }, + { + "left": "pt_zm", + "right": "poly_hole", + "expected": true + }, + { + "left": "pt_zm", + "right": "poly_empty", + "expected": false + }, + { + "left": "pt_zm", + "right": "mpt", + "expected": true + }, + { + "left": "pt_zm", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "pt_zm", + "right": "mpt_empty", + "expected": false + }, + { + "left": "pt_zm", + "right": "mls", + "expected": true + }, + { + "left": "pt_zm", + "right": "mpoly", + "expected": true + }, + { + "left": "pt_zm", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "pt_zm", + "right": "gc_empty", + "expected": false + }, + { + "left": "pt_zm", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "pt_zm", + "right": "gc_mixed", + "expected": false + }, + { + "left": "pt_zm", + "right": "gc_nested", + "expected": false + }, + { + "left": "pt_zm", + "right": "gc_nan_part", + "expected": true + }, + { + "left": "pt_zm", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "pt_zm", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "pt_zm", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "pt_zm", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "pt_zm", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "pt_zm", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "pt_origin", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "pt_one", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "pt_half", + "expected": true + }, + { + "left": "pt_z_nan_z", + "right": "pt_far", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "pt_neg", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "pt_huge", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "pt_empty", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "pt_z", + "expected": true + }, + { + "left": "pt_z_nan_z", + "right": "pt_m", + "expected": true + }, + { + "left": "pt_z_nan_z", + "right": "pt_zm", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "pt_z_nan_z", + "expected": true + }, + { + "left": "pt_z_nan_z", + "right": "ls_diag", + "expected": true + }, + { + "left": "pt_z_nan_z", + "right": "ls_edge", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "ls_far", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "ls_empty", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "pt_z_nan_z", + "right": "poly_unit", + "expected": true + }, + { + "left": "pt_z_nan_z", + "right": "poly_far", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "poly_hole", + "expected": true + }, + { + "left": "pt_z_nan_z", + "right": "poly_empty", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "mpt", + "expected": true + }, + { + "left": "pt_z_nan_z", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "mpt_empty", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "mls", + "expected": true + }, + { + "left": "pt_z_nan_z", + "right": "mpoly", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "gc_empty", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "gc_mixed", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "gc_nested", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "gc_nan_part", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "pt_z_nan_z", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "pt_z_nan_z", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "pt_z_nan_z", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "pt_z_nan_z", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "ls_diag", + "right": "pt_origin", + "expected": true + }, + { + "left": "ls_diag", + "right": "pt_one", + "expected": true + }, + { + "left": "ls_diag", + "right": "pt_half", + "expected": true + }, + { + "left": "ls_diag", + "right": "pt_far", + "expected": false + }, + { + "left": "ls_diag", + "right": "pt_neg", + "expected": false + }, + { + "left": "ls_diag", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "ls_diag", + "right": "pt_huge", + "expected": false + }, + { + "left": "ls_diag", + "right": "pt_nan_x", + "expected": true + }, + { + "left": "ls_diag", + "right": "pt_nan_y", + "expected": true + }, + { + "left": "ls_diag", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "ls_diag", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "ls_diag", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "ls_diag", + "right": "pt_empty", + "expected": false + }, + { + "left": "ls_diag", + "right": "pt_z", + "expected": true + }, + { + "left": "ls_diag", + "right": "pt_m", + "expected": true + }, + { + "left": "ls_diag", + "right": "pt_zm", + "expected": false + }, + { + "left": "ls_diag", + "right": "pt_z_nan_z", + "expected": true + }, + { + "left": "ls_diag", + "right": "ls_diag", + "expected": true + }, + { + "left": "ls_diag", + "right": "ls_edge", + "expected": true + }, + { + "left": "ls_diag", + "right": "ls_far", + "expected": false + }, + { + "left": "ls_diag", + "right": "ls_empty", + "expected": false + }, + { + "left": "ls_diag", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "ls_diag", + "right": "poly_unit", + "expected": true + }, + { + "left": "ls_diag", + "right": "poly_far", + "expected": false + }, + { + "left": "ls_diag", + "right": "poly_hole", + "expected": true + }, + { + "left": "ls_diag", + "right": "poly_empty", + "expected": false + }, + { + "left": "ls_diag", + "right": "mpt", + "expected": true + }, + { + "left": "ls_diag", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "ls_diag", + "right": "mpt_empty", + "expected": false + }, + { + "left": "ls_diag", + "right": "mls", + "expected": true + }, + { + "left": "ls_diag", + "right": "mpoly", + "expected": false + }, + { + "left": "ls_diag", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "ls_diag", + "right": "gc_empty", + "expected": false + }, + { + "left": "ls_diag", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "ls_diag", + "right": "gc_mixed", + "expected": true + }, + { + "left": "ls_diag", + "right": "gc_nested", + "expected": false + }, + { + "left": "ls_diag", + "right": "gc_nan_part", + "expected": true + }, + { + "left": "ls_diag", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "ls_diag", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "ls_diag", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "ls_diag", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "ls_diag", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "ls_diag", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "ls_edge", + "right": "pt_origin", + "expected": false + }, + { + "left": "ls_edge", + "right": "pt_one", + "expected": false + }, + { + "left": "ls_edge", + "right": "pt_half", + "expected": false + }, + { + "left": "ls_edge", + "right": "pt_far", + "expected": false + }, + { + "left": "ls_edge", + "right": "pt_neg", + "expected": false + }, + { + "left": "ls_edge", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "ls_edge", + "right": "pt_huge", + "expected": false + }, + { + "left": "ls_edge", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "ls_edge", + "right": "pt_nan_y", + "expected": true + }, + { + "left": "ls_edge", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "ls_edge", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "ls_edge", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "ls_edge", + "right": "pt_empty", + "expected": false + }, + { + "left": "ls_edge", + "right": "pt_z", + "expected": false + }, + { + "left": "ls_edge", + "right": "pt_m", + "expected": false + }, + { + "left": "ls_edge", + "right": "pt_zm", + "expected": false + }, + { + "left": "ls_edge", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "ls_edge", + "right": "ls_diag", + "expected": true + }, + { + "left": "ls_edge", + "right": "ls_edge", + "expected": true + }, + { + "left": "ls_edge", + "right": "ls_far", + "expected": false + }, + { + "left": "ls_edge", + "right": "ls_empty", + "expected": false + }, + { + "left": "ls_edge", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "ls_edge", + "right": "poly_unit", + "expected": true + }, + { + "left": "ls_edge", + "right": "poly_far", + "expected": false + }, + { + "left": "ls_edge", + "right": "poly_hole", + "expected": true + }, + { + "left": "ls_edge", + "right": "poly_empty", + "expected": false + }, + { + "left": "ls_edge", + "right": "mpt", + "expected": true + }, + { + "left": "ls_edge", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "ls_edge", + "right": "mpt_empty", + "expected": false + }, + { + "left": "ls_edge", + "right": "mls", + "expected": true + }, + { + "left": "ls_edge", + "right": "mpoly", + "expected": false + }, + { + "left": "ls_edge", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "ls_edge", + "right": "gc_empty", + "expected": false + }, + { + "left": "ls_edge", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "ls_edge", + "right": "gc_mixed", + "expected": false + }, + { + "left": "ls_edge", + "right": "gc_nested", + "expected": false + }, + { + "left": "ls_edge", + "right": "gc_nan_part", + "expected": false + }, + { + "left": "ls_edge", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "ls_edge", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "ls_edge", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "ls_edge", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "ls_edge", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "ls_edge", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "ls_far", + "right": "pt_origin", + "expected": false + }, + { + "left": "ls_far", + "right": "pt_one", + "expected": false + }, + { + "left": "ls_far", + "right": "pt_half", + "expected": false + }, + { + "left": "ls_far", + "right": "pt_far", + "expected": false + }, + { + "left": "ls_far", + "right": "pt_neg", + "expected": false + }, + { + "left": "ls_far", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "ls_far", + "right": "pt_huge", + "expected": false + }, + { + "left": "ls_far", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "ls_far", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "ls_far", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "ls_far", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "ls_far", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "ls_far", + "right": "pt_empty", + "expected": false + }, + { + "left": "ls_far", + "right": "pt_z", + "expected": false + }, + { + "left": "ls_far", + "right": "pt_m", + "expected": false + }, + { + "left": "ls_far", + "right": "pt_zm", + "expected": false + }, + { + "left": "ls_far", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "ls_far", + "right": "ls_diag", + "expected": false + }, + { + "left": "ls_far", + "right": "ls_edge", + "expected": false + }, + { + "left": "ls_far", + "right": "ls_far", + "expected": true + }, + { + "left": "ls_far", + "right": "ls_empty", + "expected": false + }, + { + "left": "ls_far", + "right": "ls_nan_vertex", + "expected": false + }, + { + "left": "ls_far", + "right": "poly_unit", + "expected": false + }, + { + "left": "ls_far", + "right": "poly_far", + "expected": true + }, + { + "left": "ls_far", + "right": "poly_hole", + "expected": true + }, + { + "left": "ls_far", + "right": "poly_empty", + "expected": false + }, + { + "left": "ls_far", + "right": "mpt", + "expected": false + }, + { + "left": "ls_far", + "right": "mpt_with_empty", + "expected": true + }, + { + "left": "ls_far", + "right": "mpt_empty", + "expected": false + }, + { + "left": "ls_far", + "right": "mls", + "expected": true + }, + { + "left": "ls_far", + "right": "mpoly", + "expected": true + }, + { + "left": "ls_far", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "ls_far", + "right": "gc_empty", + "expected": false + }, + { + "left": "ls_far", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "ls_far", + "right": "gc_mixed", + "expected": false + }, + { + "left": "ls_far", + "right": "gc_nested", + "expected": true + }, + { + "left": "ls_far", + "right": "gc_nan_part", + "expected": true + }, + { + "left": "ls_far", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "ls_far", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "ls_far", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "ls_far", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "ls_far", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "ls_far", + "right": "gc_nan_nan_point", + "expected": true + }, + { + "left": "ls_empty", + "right": "pt_origin", + "expected": false + }, + { + "left": "ls_empty", + "right": "pt_one", + "expected": false + }, + { + "left": "ls_empty", + "right": "pt_half", + "expected": false + }, + { + "left": "ls_empty", + "right": "pt_far", + "expected": false + }, + { + "left": "ls_empty", + "right": "pt_neg", + "expected": false + }, + { + "left": "ls_empty", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "ls_empty", + "right": "pt_huge", + "expected": false + }, + { + "left": "ls_empty", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "ls_empty", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "ls_empty", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "ls_empty", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "ls_empty", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "ls_empty", + "right": "pt_empty", + "expected": false + }, + { + "left": "ls_empty", + "right": "pt_z", + "expected": false + }, + { + "left": "ls_empty", + "right": "pt_m", + "expected": false + }, + { + "left": "ls_empty", + "right": "pt_zm", + "expected": false + }, + { + "left": "ls_empty", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "ls_empty", + "right": "ls_diag", + "expected": false + }, + { + "left": "ls_empty", + "right": "ls_edge", + "expected": false + }, + { + "left": "ls_empty", + "right": "ls_far", + "expected": false + }, + { + "left": "ls_empty", + "right": "ls_empty", + "expected": false + }, + { + "left": "ls_empty", + "right": "ls_nan_vertex", + "expected": false + }, + { + "left": "ls_empty", + "right": "poly_unit", + "expected": false + }, + { + "left": "ls_empty", + "right": "poly_far", + "expected": false + }, + { + "left": "ls_empty", + "right": "poly_hole", + "expected": false + }, + { + "left": "ls_empty", + "right": "poly_empty", + "expected": false + }, + { + "left": "ls_empty", + "right": "mpt", + "expected": false + }, + { + "left": "ls_empty", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "ls_empty", + "right": "mpt_empty", + "expected": false + }, + { + "left": "ls_empty", + "right": "mls", + "expected": false + }, + { + "left": "ls_empty", + "right": "mpoly", + "expected": false + }, + { + "left": "ls_empty", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "ls_empty", + "right": "gc_empty", + "expected": false + }, + { + "left": "ls_empty", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "ls_empty", + "right": "gc_mixed", + "expected": false + }, + { + "left": "ls_empty", + "right": "gc_nested", + "expected": false + }, + { + "left": "ls_empty", + "right": "gc_nan_part", + "expected": false + }, + { + "left": "ls_empty", + "right": "ls_nan_nan_vertex", + "expected": false + }, + { + "left": "ls_empty", + "right": "ls_all_nan", + "expected": false + }, + { + "left": "ls_empty", + "right": "ls_mixed_nan", + "expected": false + }, + { + "left": "ls_empty", + "right": "poly_nan_vertex", + "expected": false + }, + { + "left": "ls_empty", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "ls_empty", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "ls_nan_vertex", + "right": "pt_origin", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "pt_one", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "pt_half", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "pt_far", + "expected": false + }, + { + "left": "ls_nan_vertex", + "right": "pt_neg", + "expected": false + }, + { + "left": "ls_nan_vertex", + "right": "pt_just_outside", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "pt_huge", + "expected": false + }, + { + "left": "ls_nan_vertex", + "right": "pt_nan_x", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "pt_nan_y", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "ls_nan_vertex", + "right": "pt_inf_x", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "pt_neginf_x", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "pt_empty", + "expected": false + }, + { + "left": "ls_nan_vertex", + "right": "pt_z", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "pt_m", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "pt_zm", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "pt_z_nan_z", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "ls_diag", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "ls_edge", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "ls_far", + "expected": false + }, + { + "left": "ls_nan_vertex", + "right": "ls_empty", + "expected": false + }, + { + "left": "ls_nan_vertex", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "poly_unit", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "poly_far", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "poly_hole", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "poly_empty", + "expected": false + }, + { + "left": "ls_nan_vertex", + "right": "mpt", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "ls_nan_vertex", + "right": "mpt_empty", + "expected": false + }, + { + "left": "ls_nan_vertex", + "right": "mls", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "mpoly", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "ls_nan_vertex", + "right": "gc_empty", + "expected": false + }, + { + "left": "ls_nan_vertex", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "ls_nan_vertex", + "right": "gc_mixed", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "gc_nested", + "expected": false + }, + { + "left": "ls_nan_vertex", + "right": "gc_nan_part", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "ls_nan_vertex", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "poly_unit", + "right": "pt_origin", + "expected": true + }, + { + "left": "poly_unit", + "right": "pt_one", + "expected": true + }, + { + "left": "poly_unit", + "right": "pt_half", + "expected": true + }, + { + "left": "poly_unit", + "right": "pt_far", + "expected": false + }, + { + "left": "poly_unit", + "right": "pt_neg", + "expected": false + }, + { + "left": "poly_unit", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "poly_unit", + "right": "pt_huge", + "expected": false + }, + { + "left": "poly_unit", + "right": "pt_nan_x", + "expected": true + }, + { + "left": "poly_unit", + "right": "pt_nan_y", + "expected": true + }, + { + "left": "poly_unit", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "poly_unit", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "poly_unit", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "poly_unit", + "right": "pt_empty", + "expected": false + }, + { + "left": "poly_unit", + "right": "pt_z", + "expected": true + }, + { + "left": "poly_unit", + "right": "pt_m", + "expected": true + }, + { + "left": "poly_unit", + "right": "pt_zm", + "expected": false + }, + { + "left": "poly_unit", + "right": "pt_z_nan_z", + "expected": true + }, + { + "left": "poly_unit", + "right": "ls_diag", + "expected": true + }, + { + "left": "poly_unit", + "right": "ls_edge", + "expected": true + }, + { + "left": "poly_unit", + "right": "ls_far", + "expected": false + }, + { + "left": "poly_unit", + "right": "ls_empty", + "expected": false + }, + { + "left": "poly_unit", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "poly_unit", + "right": "poly_unit", + "expected": true + }, + { + "left": "poly_unit", + "right": "poly_far", + "expected": false + }, + { + "left": "poly_unit", + "right": "poly_hole", + "expected": true + }, + { + "left": "poly_unit", + "right": "poly_empty", + "expected": false + }, + { + "left": "poly_unit", + "right": "mpt", + "expected": true + }, + { + "left": "poly_unit", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "poly_unit", + "right": "mpt_empty", + "expected": false + }, + { + "left": "poly_unit", + "right": "mls", + "expected": true + }, + { + "left": "poly_unit", + "right": "mpoly", + "expected": false + }, + { + "left": "poly_unit", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "poly_unit", + "right": "gc_empty", + "expected": false + }, + { + "left": "poly_unit", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "poly_unit", + "right": "gc_mixed", + "expected": true + }, + { + "left": "poly_unit", + "right": "gc_nested", + "expected": false + }, + { + "left": "poly_unit", + "right": "gc_nan_part", + "expected": true + }, + { + "left": "poly_unit", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "poly_unit", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "poly_unit", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "poly_unit", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "poly_unit", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "poly_unit", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "poly_far", + "right": "pt_origin", + "expected": false + }, + { + "left": "poly_far", + "right": "pt_one", + "expected": false + }, + { + "left": "poly_far", + "right": "pt_half", + "expected": false + }, + { + "left": "poly_far", + "right": "pt_far", + "expected": false + }, + { + "left": "poly_far", + "right": "pt_neg", + "expected": false + }, + { + "left": "poly_far", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "poly_far", + "right": "pt_huge", + "expected": false + }, + { + "left": "poly_far", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "poly_far", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "poly_far", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "poly_far", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "poly_far", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "poly_far", + "right": "pt_empty", + "expected": false + }, + { + "left": "poly_far", + "right": "pt_z", + "expected": false + }, + { + "left": "poly_far", + "right": "pt_m", + "expected": false + }, + { + "left": "poly_far", + "right": "pt_zm", + "expected": true + }, + { + "left": "poly_far", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "poly_far", + "right": "ls_diag", + "expected": false + }, + { + "left": "poly_far", + "right": "ls_edge", + "expected": false + }, + { + "left": "poly_far", + "right": "ls_far", + "expected": true + }, + { + "left": "poly_far", + "right": "ls_empty", + "expected": false + }, + { + "left": "poly_far", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "poly_far", + "right": "poly_unit", + "expected": false + }, + { + "left": "poly_far", + "right": "poly_far", + "expected": true + }, + { + "left": "poly_far", + "right": "poly_hole", + "expected": true + }, + { + "left": "poly_far", + "right": "poly_empty", + "expected": false + }, + { + "left": "poly_far", + "right": "mpt", + "expected": true + }, + { + "left": "poly_far", + "right": "mpt_with_empty", + "expected": true + }, + { + "left": "poly_far", + "right": "mpt_empty", + "expected": false + }, + { + "left": "poly_far", + "right": "mls", + "expected": true + }, + { + "left": "poly_far", + "right": "mpoly", + "expected": true + }, + { + "left": "poly_far", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "poly_far", + "right": "gc_empty", + "expected": false + }, + { + "left": "poly_far", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "poly_far", + "right": "gc_mixed", + "expected": false + }, + { + "left": "poly_far", + "right": "gc_nested", + "expected": true + }, + { + "left": "poly_far", + "right": "gc_nan_part", + "expected": true + }, + { + "left": "poly_far", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "poly_far", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "poly_far", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "poly_far", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "poly_far", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "poly_far", + "right": "gc_nan_nan_point", + "expected": true + }, + { + "left": "poly_hole", + "right": "pt_origin", + "expected": true + }, + { + "left": "poly_hole", + "right": "pt_one", + "expected": true + }, + { + "left": "poly_hole", + "right": "pt_half", + "expected": true + }, + { + "left": "poly_hole", + "right": "pt_far", + "expected": true + }, + { + "left": "poly_hole", + "right": "pt_neg", + "expected": false + }, + { + "left": "poly_hole", + "right": "pt_just_outside", + "expected": true + }, + { + "left": "poly_hole", + "right": "pt_huge", + "expected": false + }, + { + "left": "poly_hole", + "right": "pt_nan_x", + "expected": true + }, + { + "left": "poly_hole", + "right": "pt_nan_y", + "expected": true + }, + { + "left": "poly_hole", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "poly_hole", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "poly_hole", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "poly_hole", + "right": "pt_empty", + "expected": false + }, + { + "left": "poly_hole", + "right": "pt_z", + "expected": true + }, + { + "left": "poly_hole", + "right": "pt_m", + "expected": true + }, + { + "left": "poly_hole", + "right": "pt_zm", + "expected": true + }, + { + "left": "poly_hole", + "right": "pt_z_nan_z", + "expected": true + }, + { + "left": "poly_hole", + "right": "ls_diag", + "expected": true + }, + { + "left": "poly_hole", + "right": "ls_edge", + "expected": true + }, + { + "left": "poly_hole", + "right": "ls_far", + "expected": true + }, + { + "left": "poly_hole", + "right": "ls_empty", + "expected": false + }, + { + "left": "poly_hole", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "poly_hole", + "right": "poly_unit", + "expected": true + }, + { + "left": "poly_hole", + "right": "poly_far", + "expected": true + }, + { + "left": "poly_hole", + "right": "poly_hole", + "expected": true + }, + { + "left": "poly_hole", + "right": "poly_empty", + "expected": false + }, + { + "left": "poly_hole", + "right": "mpt", + "expected": true + }, + { + "left": "poly_hole", + "right": "mpt_with_empty", + "expected": true + }, + { + "left": "poly_hole", + "right": "mpt_empty", + "expected": false + }, + { + "left": "poly_hole", + "right": "mls", + "expected": true + }, + { + "left": "poly_hole", + "right": "mpoly", + "expected": true + }, + { + "left": "poly_hole", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "poly_hole", + "right": "gc_empty", + "expected": false + }, + { + "left": "poly_hole", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "poly_hole", + "right": "gc_mixed", + "expected": true + }, + { + "left": "poly_hole", + "right": "gc_nested", + "expected": true + }, + { + "left": "poly_hole", + "right": "gc_nan_part", + "expected": true + }, + { + "left": "poly_hole", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "poly_hole", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "poly_hole", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "poly_hole", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "poly_hole", + "right": "mpt_nan_member", + "expected": true + }, + { + "left": "poly_hole", + "right": "gc_nan_nan_point", + "expected": true + }, + { + "left": "poly_empty", + "right": "pt_origin", + "expected": false + }, + { + "left": "poly_empty", + "right": "pt_one", + "expected": false + }, + { + "left": "poly_empty", + "right": "pt_half", + "expected": false + }, + { + "left": "poly_empty", + "right": "pt_far", + "expected": false + }, + { + "left": "poly_empty", + "right": "pt_neg", + "expected": false + }, + { + "left": "poly_empty", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "poly_empty", + "right": "pt_huge", + "expected": false + }, + { + "left": "poly_empty", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "poly_empty", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "poly_empty", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "poly_empty", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "poly_empty", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "poly_empty", + "right": "pt_empty", + "expected": false + }, + { + "left": "poly_empty", + "right": "pt_z", + "expected": false + }, + { + "left": "poly_empty", + "right": "pt_m", + "expected": false + }, + { + "left": "poly_empty", + "right": "pt_zm", + "expected": false + }, + { + "left": "poly_empty", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "poly_empty", + "right": "ls_diag", + "expected": false + }, + { + "left": "poly_empty", + "right": "ls_edge", + "expected": false + }, + { + "left": "poly_empty", + "right": "ls_far", + "expected": false + }, + { + "left": "poly_empty", + "right": "ls_empty", + "expected": false + }, + { + "left": "poly_empty", + "right": "ls_nan_vertex", + "expected": false + }, + { + "left": "poly_empty", + "right": "poly_unit", + "expected": false + }, + { + "left": "poly_empty", + "right": "poly_far", + "expected": false + }, + { + "left": "poly_empty", + "right": "poly_hole", + "expected": false + }, + { + "left": "poly_empty", + "right": "poly_empty", + "expected": false + }, + { + "left": "poly_empty", + "right": "mpt", + "expected": false + }, + { + "left": "poly_empty", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "poly_empty", + "right": "mpt_empty", + "expected": false + }, + { + "left": "poly_empty", + "right": "mls", + "expected": false + }, + { + "left": "poly_empty", + "right": "mpoly", + "expected": false + }, + { + "left": "poly_empty", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "poly_empty", + "right": "gc_empty", + "expected": false + }, + { + "left": "poly_empty", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "poly_empty", + "right": "gc_mixed", + "expected": false + }, + { + "left": "poly_empty", + "right": "gc_nested", + "expected": false + }, + { + "left": "poly_empty", + "right": "gc_nan_part", + "expected": false + }, + { + "left": "poly_empty", + "right": "ls_nan_nan_vertex", + "expected": false + }, + { + "left": "poly_empty", + "right": "ls_all_nan", + "expected": false + }, + { + "left": "poly_empty", + "right": "ls_mixed_nan", + "expected": false + }, + { + "left": "poly_empty", + "right": "poly_nan_vertex", + "expected": false + }, + { + "left": "poly_empty", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "poly_empty", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "mpt", + "right": "pt_origin", + "expected": true + }, + { + "left": "mpt", + "right": "pt_one", + "expected": true + }, + { + "left": "mpt", + "right": "pt_half", + "expected": true + }, + { + "left": "mpt", + "right": "pt_far", + "expected": false + }, + { + "left": "mpt", + "right": "pt_neg", + "expected": false + }, + { + "left": "mpt", + "right": "pt_just_outside", + "expected": true + }, + { + "left": "mpt", + "right": "pt_huge", + "expected": false + }, + { + "left": "mpt", + "right": "pt_nan_x", + "expected": true + }, + { + "left": "mpt", + "right": "pt_nan_y", + "expected": true + }, + { + "left": "mpt", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "mpt", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "mpt", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "mpt", + "right": "pt_empty", + "expected": false + }, + { + "left": "mpt", + "right": "pt_z", + "expected": true + }, + { + "left": "mpt", + "right": "pt_m", + "expected": true + }, + { + "left": "mpt", + "right": "pt_zm", + "expected": true + }, + { + "left": "mpt", + "right": "pt_z_nan_z", + "expected": true + }, + { + "left": "mpt", + "right": "ls_diag", + "expected": true + }, + { + "left": "mpt", + "right": "ls_edge", + "expected": true + }, + { + "left": "mpt", + "right": "ls_far", + "expected": false + }, + { + "left": "mpt", + "right": "ls_empty", + "expected": false + }, + { + "left": "mpt", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "mpt", + "right": "poly_unit", + "expected": true + }, + { + "left": "mpt", + "right": "poly_far", + "expected": true + }, + { + "left": "mpt", + "right": "poly_hole", + "expected": true + }, + { + "left": "mpt", + "right": "poly_empty", + "expected": false + }, + { + "left": "mpt", + "right": "mpt", + "expected": true + }, + { + "left": "mpt", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "mpt", + "right": "mpt_empty", + "expected": false + }, + { + "left": "mpt", + "right": "mls", + "expected": true + }, + { + "left": "mpt", + "right": "mpoly", + "expected": true + }, + { + "left": "mpt", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "mpt", + "right": "gc_empty", + "expected": false + }, + { + "left": "mpt", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "mpt", + "right": "gc_mixed", + "expected": true + }, + { + "left": "mpt", + "right": "gc_nested", + "expected": false + }, + { + "left": "mpt", + "right": "gc_nan_part", + "expected": true + }, + { + "left": "mpt", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "mpt", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "mpt", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "mpt", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "mpt", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "mpt", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "pt_origin", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "pt_one", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "pt_half", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "pt_far", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "pt_neg", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "pt_huge", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "pt_empty", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "pt_z", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "pt_m", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "pt_zm", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "ls_diag", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "ls_edge", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "ls_far", + "expected": true + }, + { + "left": "mpt_with_empty", + "right": "ls_empty", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "ls_nan_vertex", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "poly_unit", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "poly_far", + "expected": true + }, + { + "left": "mpt_with_empty", + "right": "poly_hole", + "expected": true + }, + { + "left": "mpt_with_empty", + "right": "poly_empty", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "mpt", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "mpt_with_empty", + "expected": true + }, + { + "left": "mpt_with_empty", + "right": "mpt_empty", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "mls", + "expected": true + }, + { + "left": "mpt_with_empty", + "right": "mpoly", + "expected": true + }, + { + "left": "mpt_with_empty", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "gc_empty", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "gc_mixed", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "gc_nested", + "expected": true + }, + { + "left": "mpt_with_empty", + "right": "gc_nan_part", + "expected": true + }, + { + "left": "mpt_with_empty", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "mpt_with_empty", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "mpt_with_empty", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "mpt_with_empty", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "mpt_with_empty", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "gc_nan_nan_point", + "expected": true + }, + { + "left": "mpt_empty", + "right": "pt_origin", + "expected": false + }, + { + "left": "mpt_empty", + "right": "pt_one", + "expected": false + }, + { + "left": "mpt_empty", + "right": "pt_half", + "expected": false + }, + { + "left": "mpt_empty", + "right": "pt_far", + "expected": false + }, + { + "left": "mpt_empty", + "right": "pt_neg", + "expected": false + }, + { + "left": "mpt_empty", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "mpt_empty", + "right": "pt_huge", + "expected": false + }, + { + "left": "mpt_empty", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "mpt_empty", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "mpt_empty", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "mpt_empty", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "mpt_empty", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "mpt_empty", + "right": "pt_empty", + "expected": false + }, + { + "left": "mpt_empty", + "right": "pt_z", + "expected": false + }, + { + "left": "mpt_empty", + "right": "pt_m", + "expected": false + }, + { + "left": "mpt_empty", + "right": "pt_zm", + "expected": false + }, + { + "left": "mpt_empty", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "mpt_empty", + "right": "ls_diag", + "expected": false + }, + { + "left": "mpt_empty", + "right": "ls_edge", + "expected": false + }, + { + "left": "mpt_empty", + "right": "ls_far", + "expected": false + }, + { + "left": "mpt_empty", + "right": "ls_empty", + "expected": false + }, + { + "left": "mpt_empty", + "right": "ls_nan_vertex", + "expected": false + }, + { + "left": "mpt_empty", + "right": "poly_unit", + "expected": false + }, + { + "left": "mpt_empty", + "right": "poly_far", + "expected": false + }, + { + "left": "mpt_empty", + "right": "poly_hole", + "expected": false + }, + { + "left": "mpt_empty", + "right": "poly_empty", + "expected": false + }, + { + "left": "mpt_empty", + "right": "mpt", + "expected": false + }, + { + "left": "mpt_empty", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "mpt_empty", + "right": "mpt_empty", + "expected": false + }, + { + "left": "mpt_empty", + "right": "mls", + "expected": false + }, + { + "left": "mpt_empty", + "right": "mpoly", + "expected": false + }, + { + "left": "mpt_empty", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "mpt_empty", + "right": "gc_empty", + "expected": false + }, + { + "left": "mpt_empty", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "mpt_empty", + "right": "gc_mixed", + "expected": false + }, + { + "left": "mpt_empty", + "right": "gc_nested", + "expected": false + }, + { + "left": "mpt_empty", + "right": "gc_nan_part", + "expected": false + }, + { + "left": "mpt_empty", + "right": "ls_nan_nan_vertex", + "expected": false + }, + { + "left": "mpt_empty", + "right": "ls_all_nan", + "expected": false + }, + { + "left": "mpt_empty", + "right": "ls_mixed_nan", + "expected": false + }, + { + "left": "mpt_empty", + "right": "poly_nan_vertex", + "expected": false + }, + { + "left": "mpt_empty", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "mpt_empty", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "mls", + "right": "pt_origin", + "expected": true + }, + { + "left": "mls", + "right": "pt_one", + "expected": true + }, + { + "left": "mls", + "right": "pt_half", + "expected": true + }, + { + "left": "mls", + "right": "pt_far", + "expected": true + }, + { + "left": "mls", + "right": "pt_neg", + "expected": false + }, + { + "left": "mls", + "right": "pt_just_outside", + "expected": true + }, + { + "left": "mls", + "right": "pt_huge", + "expected": false + }, + { + "left": "mls", + "right": "pt_nan_x", + "expected": true + }, + { + "left": "mls", + "right": "pt_nan_y", + "expected": true + }, + { + "left": "mls", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "mls", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "mls", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "mls", + "right": "pt_empty", + "expected": false + }, + { + "left": "mls", + "right": "pt_z", + "expected": true + }, + { + "left": "mls", + "right": "pt_m", + "expected": true + }, + { + "left": "mls", + "right": "pt_zm", + "expected": true + }, + { + "left": "mls", + "right": "pt_z_nan_z", + "expected": true + }, + { + "left": "mls", + "right": "ls_diag", + "expected": true + }, + { + "left": "mls", + "right": "ls_edge", + "expected": true + }, + { + "left": "mls", + "right": "ls_far", + "expected": true + }, + { + "left": "mls", + "right": "ls_empty", + "expected": false + }, + { + "left": "mls", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "mls", + "right": "poly_unit", + "expected": true + }, + { + "left": "mls", + "right": "poly_far", + "expected": true + }, + { + "left": "mls", + "right": "poly_hole", + "expected": true + }, + { + "left": "mls", + "right": "poly_empty", + "expected": false + }, + { + "left": "mls", + "right": "mpt", + "expected": true + }, + { + "left": "mls", + "right": "mpt_with_empty", + "expected": true + }, + { + "left": "mls", + "right": "mpt_empty", + "expected": false + }, + { + "left": "mls", + "right": "mls", + "expected": true + }, + { + "left": "mls", + "right": "mpoly", + "expected": true + }, + { + "left": "mls", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "mls", + "right": "gc_empty", + "expected": false + }, + { + "left": "mls", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "mls", + "right": "gc_mixed", + "expected": true + }, + { + "left": "mls", + "right": "gc_nested", + "expected": true + }, + { + "left": "mls", + "right": "gc_nan_part", + "expected": true + }, + { + "left": "mls", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "mls", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "mls", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "mls", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "mls", + "right": "mpt_nan_member", + "expected": true + }, + { + "left": "mls", + "right": "gc_nan_nan_point", + "expected": true + }, + { + "left": "mpoly", + "right": "pt_origin", + "expected": false + }, + { + "left": "mpoly", + "right": "pt_one", + "expected": false + }, + { + "left": "mpoly", + "right": "pt_half", + "expected": false + }, + { + "left": "mpoly", + "right": "pt_far", + "expected": true + }, + { + "left": "mpoly", + "right": "pt_neg", + "expected": false + }, + { + "left": "mpoly", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "mpoly", + "right": "pt_huge", + "expected": false + }, + { + "left": "mpoly", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "mpoly", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "mpoly", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "mpoly", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "mpoly", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "mpoly", + "right": "pt_empty", + "expected": false + }, + { + "left": "mpoly", + "right": "pt_z", + "expected": false + }, + { + "left": "mpoly", + "right": "pt_m", + "expected": false + }, + { + "left": "mpoly", + "right": "pt_zm", + "expected": true + }, + { + "left": "mpoly", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "mpoly", + "right": "ls_diag", + "expected": false + }, + { + "left": "mpoly", + "right": "ls_edge", + "expected": false + }, + { + "left": "mpoly", + "right": "ls_far", + "expected": true + }, + { + "left": "mpoly", + "right": "ls_empty", + "expected": false + }, + { + "left": "mpoly", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "mpoly", + "right": "poly_unit", + "expected": false + }, + { + "left": "mpoly", + "right": "poly_far", + "expected": true + }, + { + "left": "mpoly", + "right": "poly_hole", + "expected": true + }, + { + "left": "mpoly", + "right": "poly_empty", + "expected": false + }, + { + "left": "mpoly", + "right": "mpt", + "expected": true + }, + { + "left": "mpoly", + "right": "mpt_with_empty", + "expected": true + }, + { + "left": "mpoly", + "right": "mpt_empty", + "expected": false + }, + { + "left": "mpoly", + "right": "mls", + "expected": true + }, + { + "left": "mpoly", + "right": "mpoly", + "expected": true + }, + { + "left": "mpoly", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "mpoly", + "right": "gc_empty", + "expected": false + }, + { + "left": "mpoly", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "mpoly", + "right": "gc_mixed", + "expected": false + }, + { + "left": "mpoly", + "right": "gc_nested", + "expected": true + }, + { + "left": "mpoly", + "right": "gc_nan_part", + "expected": true + }, + { + "left": "mpoly", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "mpoly", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "mpoly", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "mpoly", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "mpoly", + "right": "mpt_nan_member", + "expected": true + }, + { + "left": "mpoly", + "right": "gc_nan_nan_point", + "expected": true + }, + { + "left": "mpoly_empty", + "right": "pt_origin", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "pt_one", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "pt_half", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "pt_far", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "pt_neg", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "pt_huge", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "pt_empty", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "pt_z", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "pt_m", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "pt_zm", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "ls_diag", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "ls_edge", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "ls_far", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "ls_empty", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "ls_nan_vertex", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "poly_unit", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "poly_far", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "poly_hole", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "poly_empty", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "mpt", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "mpt_empty", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "mls", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "mpoly", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "gc_empty", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "gc_mixed", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "gc_nested", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "gc_nan_part", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "ls_nan_nan_vertex", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "ls_all_nan", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "ls_mixed_nan", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "poly_nan_vertex", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "gc_empty", + "right": "pt_origin", + "expected": false + }, + { + "left": "gc_empty", + "right": "pt_one", + "expected": false + }, + { + "left": "gc_empty", + "right": "pt_half", + "expected": false + }, + { + "left": "gc_empty", + "right": "pt_far", + "expected": false + }, + { + "left": "gc_empty", + "right": "pt_neg", + "expected": false + }, + { + "left": "gc_empty", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "gc_empty", + "right": "pt_huge", + "expected": false + }, + { + "left": "gc_empty", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "gc_empty", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "gc_empty", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "gc_empty", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "gc_empty", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "gc_empty", + "right": "pt_empty", + "expected": false + }, + { + "left": "gc_empty", + "right": "pt_z", + "expected": false + }, + { + "left": "gc_empty", + "right": "pt_m", + "expected": false + }, + { + "left": "gc_empty", + "right": "pt_zm", + "expected": false + }, + { + "left": "gc_empty", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "gc_empty", + "right": "ls_diag", + "expected": false + }, + { + "left": "gc_empty", + "right": "ls_edge", + "expected": false + }, + { + "left": "gc_empty", + "right": "ls_far", + "expected": false + }, + { + "left": "gc_empty", + "right": "ls_empty", + "expected": false + }, + { + "left": "gc_empty", + "right": "ls_nan_vertex", + "expected": false + }, + { + "left": "gc_empty", + "right": "poly_unit", + "expected": false + }, + { + "left": "gc_empty", + "right": "poly_far", + "expected": false + }, + { + "left": "gc_empty", + "right": "poly_hole", + "expected": false + }, + { + "left": "gc_empty", + "right": "poly_empty", + "expected": false + }, + { + "left": "gc_empty", + "right": "mpt", + "expected": false + }, + { + "left": "gc_empty", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "gc_empty", + "right": "mpt_empty", + "expected": false + }, + { + "left": "gc_empty", + "right": "mls", + "expected": false + }, + { + "left": "gc_empty", + "right": "mpoly", + "expected": false + }, + { + "left": "gc_empty", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "gc_empty", + "right": "gc_empty", + "expected": false + }, + { + "left": "gc_empty", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "gc_empty", + "right": "gc_mixed", + "expected": false + }, + { + "left": "gc_empty", + "right": "gc_nested", + "expected": false + }, + { + "left": "gc_empty", + "right": "gc_nan_part", + "expected": false + }, + { + "left": "gc_empty", + "right": "ls_nan_nan_vertex", + "expected": false + }, + { + "left": "gc_empty", + "right": "ls_all_nan", + "expected": false + }, + { + "left": "gc_empty", + "right": "ls_mixed_nan", + "expected": false + }, + { + "left": "gc_empty", + "right": "poly_nan_vertex", + "expected": false + }, + { + "left": "gc_empty", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "gc_empty", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "pt_origin", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "pt_one", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "pt_half", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "pt_far", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "pt_neg", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "pt_huge", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "pt_empty", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "pt_z", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "pt_m", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "pt_zm", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "ls_diag", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "ls_edge", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "ls_far", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "ls_empty", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "ls_nan_vertex", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "poly_unit", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "poly_far", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "poly_hole", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "poly_empty", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "mpt", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "mpt_empty", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "mls", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "mpoly", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "gc_empty", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "gc_mixed", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "gc_nested", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "gc_nan_part", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "ls_nan_nan_vertex", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "ls_all_nan", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "ls_mixed_nan", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "poly_nan_vertex", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "gc_mixed", + "right": "pt_origin", + "expected": false + }, + { + "left": "gc_mixed", + "right": "pt_one", + "expected": false + }, + { + "left": "gc_mixed", + "right": "pt_half", + "expected": false + }, + { + "left": "gc_mixed", + "right": "pt_far", + "expected": false + }, + { + "left": "gc_mixed", + "right": "pt_neg", + "expected": false + }, + { + "left": "gc_mixed", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "gc_mixed", + "right": "pt_huge", + "expected": false + }, + { + "left": "gc_mixed", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "gc_mixed", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "gc_mixed", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "gc_mixed", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "gc_mixed", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "gc_mixed", + "right": "pt_empty", + "expected": false + }, + { + "left": "gc_mixed", + "right": "pt_z", + "expected": false + }, + { + "left": "gc_mixed", + "right": "pt_m", + "expected": false + }, + { + "left": "gc_mixed", + "right": "pt_zm", + "expected": false + }, + { + "left": "gc_mixed", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "gc_mixed", + "right": "ls_diag", + "expected": true + }, + { + "left": "gc_mixed", + "right": "ls_edge", + "expected": false + }, + { + "left": "gc_mixed", + "right": "ls_far", + "expected": false + }, + { + "left": "gc_mixed", + "right": "ls_empty", + "expected": false + }, + { + "left": "gc_mixed", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "gc_mixed", + "right": "poly_unit", + "expected": true + }, + { + "left": "gc_mixed", + "right": "poly_far", + "expected": false + }, + { + "left": "gc_mixed", + "right": "poly_hole", + "expected": true + }, + { + "left": "gc_mixed", + "right": "poly_empty", + "expected": false + }, + { + "left": "gc_mixed", + "right": "mpt", + "expected": true + }, + { + "left": "gc_mixed", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "gc_mixed", + "right": "mpt_empty", + "expected": false + }, + { + "left": "gc_mixed", + "right": "mls", + "expected": true + }, + { + "left": "gc_mixed", + "right": "mpoly", + "expected": false + }, + { + "left": "gc_mixed", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "gc_mixed", + "right": "gc_empty", + "expected": false + }, + { + "left": "gc_mixed", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "gc_mixed", + "right": "gc_mixed", + "expected": true + }, + { + "left": "gc_mixed", + "right": "gc_nested", + "expected": false + }, + { + "left": "gc_mixed", + "right": "gc_nan_part", + "expected": false + }, + { + "left": "gc_mixed", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "gc_mixed", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "gc_mixed", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "gc_mixed", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "gc_mixed", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "gc_mixed", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "gc_nested", + "right": "pt_origin", + "expected": false + }, + { + "left": "gc_nested", + "right": "pt_one", + "expected": false + }, + { + "left": "gc_nested", + "right": "pt_half", + "expected": false + }, + { + "left": "gc_nested", + "right": "pt_far", + "expected": true + }, + { + "left": "gc_nested", + "right": "pt_neg", + "expected": false + }, + { + "left": "gc_nested", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "gc_nested", + "right": "pt_huge", + "expected": false + }, + { + "left": "gc_nested", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "gc_nested", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "gc_nested", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "gc_nested", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "gc_nested", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "gc_nested", + "right": "pt_empty", + "expected": false + }, + { + "left": "gc_nested", + "right": "pt_z", + "expected": false + }, + { + "left": "gc_nested", + "right": "pt_m", + "expected": false + }, + { + "left": "gc_nested", + "right": "pt_zm", + "expected": false + }, + { + "left": "gc_nested", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "gc_nested", + "right": "ls_diag", + "expected": false + }, + { + "left": "gc_nested", + "right": "ls_edge", + "expected": false + }, + { + "left": "gc_nested", + "right": "ls_far", + "expected": true + }, + { + "left": "gc_nested", + "right": "ls_empty", + "expected": false + }, + { + "left": "gc_nested", + "right": "ls_nan_vertex", + "expected": false + }, + { + "left": "gc_nested", + "right": "poly_unit", + "expected": false + }, + { + "left": "gc_nested", + "right": "poly_far", + "expected": true + }, + { + "left": "gc_nested", + "right": "poly_hole", + "expected": true + }, + { + "left": "gc_nested", + "right": "poly_empty", + "expected": false + }, + { + "left": "gc_nested", + "right": "mpt", + "expected": false + }, + { + "left": "gc_nested", + "right": "mpt_with_empty", + "expected": true + }, + { + "left": "gc_nested", + "right": "mpt_empty", + "expected": false + }, + { + "left": "gc_nested", + "right": "mls", + "expected": true + }, + { + "left": "gc_nested", + "right": "mpoly", + "expected": true + }, + { + "left": "gc_nested", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "gc_nested", + "right": "gc_empty", + "expected": false + }, + { + "left": "gc_nested", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "gc_nested", + "right": "gc_mixed", + "expected": false + }, + { + "left": "gc_nested", + "right": "gc_nested", + "expected": true + }, + { + "left": "gc_nested", + "right": "gc_nan_part", + "expected": true + }, + { + "left": "gc_nested", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "gc_nested", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "gc_nested", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "gc_nested", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "gc_nested", + "right": "mpt_nan_member", + "expected": true + }, + { + "left": "gc_nested", + "right": "gc_nan_nan_point", + "expected": true + }, + { + "left": "gc_nan_part", + "right": "pt_origin", + "expected": false + }, + { + "left": "gc_nan_part", + "right": "pt_one", + "expected": true + }, + { + "left": "gc_nan_part", + "right": "pt_half", + "expected": false + }, + { + "left": "gc_nan_part", + "right": "pt_far", + "expected": false + }, + { + "left": "gc_nan_part", + "right": "pt_neg", + "expected": false + }, + { + "left": "gc_nan_part", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "gc_nan_part", + "right": "pt_huge", + "expected": false + }, + { + "left": "gc_nan_part", + "right": "pt_nan_x", + "expected": true + }, + { + "left": "gc_nan_part", + "right": "pt_nan_y", + "expected": true + }, + { + "left": "gc_nan_part", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "gc_nan_part", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "gc_nan_part", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "gc_nan_part", + "right": "pt_empty", + "expected": false + }, + { + "left": "gc_nan_part", + "right": "pt_z", + "expected": false + }, + { + "left": "gc_nan_part", + "right": "pt_m", + "expected": false + }, + { + "left": "gc_nan_part", + "right": "pt_zm", + "expected": true + }, + { + "left": "gc_nan_part", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "gc_nan_part", + "right": "ls_diag", + "expected": true + }, + { + "left": "gc_nan_part", + "right": "ls_edge", + "expected": false + }, + { + "left": "gc_nan_part", + "right": "ls_far", + "expected": true + }, + { + "left": "gc_nan_part", + "right": "ls_empty", + "expected": false + }, + { + "left": "gc_nan_part", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "gc_nan_part", + "right": "poly_unit", + "expected": true + }, + { + "left": "gc_nan_part", + "right": "poly_far", + "expected": true + }, + { + "left": "gc_nan_part", + "right": "poly_hole", + "expected": true + }, + { + "left": "gc_nan_part", + "right": "poly_empty", + "expected": false + }, + { + "left": "gc_nan_part", + "right": "mpt", + "expected": true + }, + { + "left": "gc_nan_part", + "right": "mpt_with_empty", + "expected": true + }, + { + "left": "gc_nan_part", + "right": "mpt_empty", + "expected": false + }, + { + "left": "gc_nan_part", + "right": "mls", + "expected": true + }, + { + "left": "gc_nan_part", + "right": "mpoly", + "expected": true + }, + { + "left": "gc_nan_part", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "gc_nan_part", + "right": "gc_empty", + "expected": false + }, + { + "left": "gc_nan_part", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "gc_nan_part", + "right": "gc_mixed", + "expected": false + }, + { + "left": "gc_nan_part", + "right": "gc_nested", + "expected": true + }, + { + "left": "gc_nan_part", + "right": "gc_nan_part", + "expected": true + }, + { + "left": "gc_nan_part", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "gc_nan_part", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "gc_nan_part", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "gc_nan_part", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "gc_nan_part", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "gc_nan_part", + "right": "gc_nan_nan_point", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "pt_origin", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "pt_one", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "pt_half", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "pt_far", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "pt_neg", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "pt_just_outside", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "pt_huge", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "pt_nan_x", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "pt_nan_y", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "ls_nan_nan_vertex", + "right": "pt_inf_x", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "pt_neginf_x", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "pt_empty", + "expected": false + }, + { + "left": "ls_nan_nan_vertex", + "right": "pt_z", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "pt_m", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "pt_zm", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "pt_z_nan_z", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "ls_diag", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "ls_edge", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "ls_far", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "ls_empty", + "expected": false + }, + { + "left": "ls_nan_nan_vertex", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "poly_unit", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "poly_far", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "poly_hole", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "poly_empty", + "expected": false + }, + { + "left": "ls_nan_nan_vertex", + "right": "mpt", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "mpt_with_empty", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "mpt_empty", + "expected": false + }, + { + "left": "ls_nan_nan_vertex", + "right": "mls", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "mpoly", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "ls_nan_nan_vertex", + "right": "gc_empty", + "expected": false + }, + { + "left": "ls_nan_nan_vertex", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "ls_nan_nan_vertex", + "right": "gc_mixed", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "gc_nested", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "gc_nan_part", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "mpt_nan_member", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "gc_nan_nan_point", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "pt_origin", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "pt_one", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "pt_half", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "pt_far", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "pt_neg", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "pt_just_outside", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "pt_huge", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "pt_nan_x", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "pt_nan_y", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "ls_all_nan", + "right": "pt_inf_x", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "pt_neginf_x", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "pt_empty", + "expected": false + }, + { + "left": "ls_all_nan", + "right": "pt_z", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "pt_m", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "pt_zm", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "pt_z_nan_z", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "ls_diag", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "ls_edge", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "ls_far", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "ls_empty", + "expected": false + }, + { + "left": "ls_all_nan", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "poly_unit", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "poly_far", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "poly_hole", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "poly_empty", + "expected": false + }, + { + "left": "ls_all_nan", + "right": "mpt", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "mpt_with_empty", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "mpt_empty", + "expected": false + }, + { + "left": "ls_all_nan", + "right": "mls", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "mpoly", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "ls_all_nan", + "right": "gc_empty", + "expected": false + }, + { + "left": "ls_all_nan", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "ls_all_nan", + "right": "gc_mixed", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "gc_nested", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "gc_nan_part", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "mpt_nan_member", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "gc_nan_nan_point", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "pt_origin", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "pt_one", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "pt_half", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "pt_far", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "pt_neg", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "pt_just_outside", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "pt_huge", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "pt_nan_x", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "pt_nan_y", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "ls_mixed_nan", + "right": "pt_inf_x", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "pt_neginf_x", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "pt_empty", + "expected": false + }, + { + "left": "ls_mixed_nan", + "right": "pt_z", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "pt_m", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "pt_zm", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "pt_z_nan_z", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "ls_diag", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "ls_edge", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "ls_far", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "ls_empty", + "expected": false + }, + { + "left": "ls_mixed_nan", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "poly_unit", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "poly_far", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "poly_hole", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "poly_empty", + "expected": false + }, + { + "left": "ls_mixed_nan", + "right": "mpt", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "mpt_with_empty", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "mpt_empty", + "expected": false + }, + { + "left": "ls_mixed_nan", + "right": "mls", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "mpoly", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "ls_mixed_nan", + "right": "gc_empty", + "expected": false + }, + { + "left": "ls_mixed_nan", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "ls_mixed_nan", + "right": "gc_mixed", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "gc_nested", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "gc_nan_part", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "mpt_nan_member", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "gc_nan_nan_point", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "pt_origin", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "pt_one", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "pt_half", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "pt_far", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "pt_neg", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "pt_just_outside", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "pt_huge", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "pt_nan_x", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "pt_nan_y", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "poly_nan_vertex", + "right": "pt_inf_x", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "pt_neginf_x", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "pt_empty", + "expected": false + }, + { + "left": "poly_nan_vertex", + "right": "pt_z", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "pt_m", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "pt_zm", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "pt_z_nan_z", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "ls_diag", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "ls_edge", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "ls_far", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "ls_empty", + "expected": false + }, + { + "left": "poly_nan_vertex", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "poly_unit", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "poly_far", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "poly_hole", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "poly_empty", + "expected": false + }, + { + "left": "poly_nan_vertex", + "right": "mpt", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "mpt_with_empty", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "mpt_empty", + "expected": false + }, + { + "left": "poly_nan_vertex", + "right": "mls", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "mpoly", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "poly_nan_vertex", + "right": "gc_empty", + "expected": false + }, + { + "left": "poly_nan_vertex", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "poly_nan_vertex", + "right": "gc_mixed", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "gc_nested", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "gc_nan_part", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "mpt_nan_member", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "gc_nan_nan_point", + "expected": true + }, + { + "left": "mpt_nan_member", + "right": "pt_origin", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "pt_one", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "pt_half", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "pt_far", + "expected": true + }, + { + "left": "mpt_nan_member", + "right": "pt_neg", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "pt_huge", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "pt_empty", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "pt_z", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "pt_m", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "pt_zm", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "ls_diag", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "ls_edge", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "ls_far", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "ls_empty", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "ls_nan_vertex", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "poly_unit", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "poly_far", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "poly_hole", + "expected": true + }, + { + "left": "mpt_nan_member", + "right": "poly_empty", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "mpt", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "mpt_empty", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "mls", + "expected": true + }, + { + "left": "mpt_nan_member", + "right": "mpoly", + "expected": true + }, + { + "left": "mpt_nan_member", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "gc_empty", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "gc_mixed", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "gc_nested", + "expected": true + }, + { + "left": "mpt_nan_member", + "right": "gc_nan_part", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "mpt_nan_member", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "mpt_nan_member", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "mpt_nan_member", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "mpt_nan_member", + "right": "mpt_nan_member", + "expected": true + }, + { + "left": "mpt_nan_member", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "pt_origin", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "pt_one", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "pt_half", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "pt_far", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "pt_neg", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "pt_huge", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "pt_empty", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "pt_z", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "pt_m", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "pt_zm", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "ls_diag", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "ls_edge", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "ls_far", + "expected": true + }, + { + "left": "gc_nan_nan_point", + "right": "ls_empty", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "ls_nan_vertex", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "poly_unit", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "poly_far", + "expected": true + }, + { + "left": "gc_nan_nan_point", + "right": "poly_hole", + "expected": true + }, + { + "left": "gc_nan_nan_point", + "right": "poly_empty", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "mpt", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "mpt_with_empty", + "expected": true + }, + { + "left": "gc_nan_nan_point", + "right": "mpt_empty", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "mls", + "expected": true + }, + { + "left": "gc_nan_nan_point", + "right": "mpoly", + "expected": true + }, + { + "left": "gc_nan_nan_point", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "gc_empty", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "gc_mixed", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "gc_nested", + "expected": true + }, + { + "left": "gc_nan_nan_point", + "right": "gc_nan_part", + "expected": true + }, + { + "left": "gc_nan_nan_point", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "gc_nan_nan_point", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "gc_nan_nan_point", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "gc_nan_nan_point", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "gc_nan_nan_point", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "gc_nan_nan_point", + "expected": true + } + ] +} \ No newline at end of file From 883834decb5f25f37f1462a3d7faf2938468be80 Mon Sep 17 00:00:00 2001 From: Rusty Conover Date: Tue, 10 Nov 2026 13:16:46 -0500 Subject: [PATCH 2/2] Accept EWKB in intersects_extent; refresh conformance corpus DuckDB 2.0 core reads EWKB, as do the TypeScript and C# SDK evaluators, so rejecting it failed EXACT-mode scans DuckDB would answer. WkbExtent now accepts the Z (0x80000000), M (0x40000000) and SRID (0x20000000) high-bit flags per (sub-)geometry in either byte order: Z/M select the vertex width like the ISO 1000/2000/3000 offsets, and the 4-byte SRID is skipped. A type carrying both conventions, or a truncated SRID, is still rejected. Tests: the whole corpus re-encoded as EWKB (SRID on the outer geometry only, and on every part) must match DuckDB core for all LE/BE combos, plus hand-written EWKB POINT+SRID and POLYGON Z+SRID in both byte orders must match their ISO equivalents. The corpus is regenerated to 46 geometries / 2116 cases (adds POINT Z (nan nan 5), POINT Z (nan nan nan), MULTIPOINT Z ((nan nan 5), (9 9 9))). Co-Authored-By: Claude Opus 5.5 --- .../conformance/intersects_extent_cases.json | 1369 ++++++++++++++++- .../farm/query/vgi/pushdown/WkbExtent.java | 29 +- .../IntersectsExtentConformanceTest.java | 127 +- .../conformance/intersects_extent_cases.json | 1369 ++++++++++++++++- 4 files changed, 2863 insertions(+), 31 deletions(-) diff --git a/vgi-example-worker/src/test/resources/conformance/intersects_extent_cases.json b/vgi-example-worker/src/test/resources/conformance/intersects_extent_cases.json index 88eed83a..a34e9f74 100644 --- a/vgi-example-worker/src/test/resources/conformance/intersects_extent_cases.json +++ b/vgi-example-worker/src/test/resources/conformance/intersects_extent_cases.json @@ -260,6 +260,24 @@ "wkt": "GEOMETRYCOLLECTION(POINT(nan nan), POINT(3 3))", "wkb_le": "0107000000020000000101000000000000000000f87f000000000000f87f010100000000000000000008400000000000000840", "wkb_be": "00000000070000000200000000017ff80000000000007ff8000000000000000000000140080000000000004008000000000000" + }, + { + "name": "pt_z_nan_xy", + "wkt": "POINT Z (nan nan 5)", + "wkb_le": "01e9030000000000000000f87f000000000000f87f0000000000001440", + "wkb_be": "00000003e97ff80000000000007ff80000000000004014000000000000" + }, + { + "name": "pt_z_all_nan", + "wkt": "POINT Z (nan nan nan)", + "wkb_le": "01e9030000000000000000f87f000000000000f87f000000000000f87f", + "wkb_be": "00000003e97ff80000000000007ff80000000000007ff8000000000000" + }, + { + "name": "mpt_z_nan_xy_member", + "wkt": "MULTIPOINT Z ((nan nan 5), (9 9 9))", + "wkb_le": "01ec0300000200000001e9030000000000000000f87f000000000000f87f000000000000144001e9030000000000000000224000000000000022400000000000002240", + "wkb_be": "00000003ec0000000200000003e97ff80000000000007ff8000000000000401400000000000000000003e9402200000000000040220000000000004022000000000000" } ], "cases": [ @@ -478,6 +496,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "pt_origin", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "pt_origin", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "pt_origin", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "pt_one", "right": "pt_origin", @@ -693,6 +726,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "pt_one", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "pt_one", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "pt_one", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "pt_half", "right": "pt_origin", @@ -908,6 +956,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "pt_half", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "pt_half", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "pt_half", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "pt_far", "right": "pt_origin", @@ -1123,6 +1186,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "pt_far", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "pt_far", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "pt_far", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "pt_neg", "right": "pt_origin", @@ -1338,6 +1416,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "pt_neg", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "pt_neg", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "pt_neg", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "pt_just_outside", "right": "pt_origin", @@ -1553,6 +1646,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "pt_just_outside", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "pt_just_outside", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "pt_huge", "right": "pt_origin", @@ -1768,6 +1876,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "pt_huge", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "pt_huge", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "pt_huge", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "pt_nan_x", "right": "pt_origin", @@ -1983,6 +2106,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "pt_nan_x", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "pt_nan_x", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "pt_nan_y", "right": "pt_origin", @@ -2198,6 +2336,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "pt_nan_y", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "pt_nan_y", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "pt_nan_xy", "right": "pt_origin", @@ -2413,6 +2566,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "pt_nan_xy", + "right": "pt_z_nan_xy", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "mpt_z_nan_xy_member", + "expected": false + }, { "left": "pt_inf_x", "right": "pt_origin", @@ -2628,6 +2796,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "pt_inf_x", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "pt_inf_x", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "pt_neginf_x", "right": "pt_origin", @@ -2843,6 +3026,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "pt_neginf_x", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "pt_neginf_x", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "pt_empty", "right": "pt_origin", @@ -3058,6 +3256,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "pt_empty", + "right": "pt_z_nan_xy", + "expected": false + }, + { + "left": "pt_empty", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "pt_empty", + "right": "mpt_z_nan_xy_member", + "expected": false + }, { "left": "pt_z", "right": "pt_origin", @@ -3273,6 +3486,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "pt_z", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "pt_z", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "pt_z", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "pt_m", "right": "pt_origin", @@ -3488,6 +3716,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "pt_m", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "pt_m", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "pt_m", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "pt_zm", "right": "pt_origin", @@ -3703,6 +3946,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "pt_zm", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "pt_zm", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "pt_zm", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "pt_z_nan_z", "right": "pt_origin", @@ -3918,6 +4176,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "pt_z_nan_z", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "pt_z_nan_z", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "ls_diag", "right": "pt_origin", @@ -4133,6 +4406,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "ls_diag", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "ls_diag", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "ls_diag", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "ls_edge", "right": "pt_origin", @@ -4348,6 +4636,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "ls_edge", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "ls_edge", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "ls_edge", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "ls_far", "right": "pt_origin", @@ -4563,6 +4866,21 @@ "right": "gc_nan_nan_point", "expected": true }, + { + "left": "ls_far", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "ls_far", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "ls_far", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "ls_empty", "right": "pt_origin", @@ -4779,14 +5097,29 @@ "expected": false }, { - "left": "ls_nan_vertex", - "right": "pt_origin", - "expected": true + "left": "ls_empty", + "right": "pt_z_nan_xy", + "expected": false }, { - "left": "ls_nan_vertex", - "right": "pt_one", - "expected": true + "left": "ls_empty", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "ls_empty", + "right": "mpt_z_nan_xy_member", + "expected": false + }, + { + "left": "ls_nan_vertex", + "right": "pt_origin", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "pt_one", + "expected": true }, { "left": "ls_nan_vertex", @@ -4993,6 +5326,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "ls_nan_vertex", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "ls_nan_vertex", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "poly_unit", "right": "pt_origin", @@ -5208,6 +5556,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "poly_unit", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "poly_unit", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "poly_unit", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "poly_far", "right": "pt_origin", @@ -5423,6 +5786,21 @@ "right": "gc_nan_nan_point", "expected": true }, + { + "left": "poly_far", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "poly_far", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "poly_far", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "poly_hole", "right": "pt_origin", @@ -5638,6 +6016,21 @@ "right": "gc_nan_nan_point", "expected": true }, + { + "left": "poly_hole", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "poly_hole", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "poly_hole", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "poly_empty", "right": "pt_origin", @@ -5853,6 +6246,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "poly_empty", + "right": "pt_z_nan_xy", + "expected": false + }, + { + "left": "poly_empty", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "poly_empty", + "right": "mpt_z_nan_xy_member", + "expected": false + }, { "left": "mpt", "right": "pt_origin", @@ -6068,6 +6476,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "mpt", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "mpt", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "mpt", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "mpt_with_empty", "right": "pt_origin", @@ -6283,6 +6706,21 @@ "right": "gc_nan_nan_point", "expected": true }, + { + "left": "mpt_with_empty", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "mpt_with_empty", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "mpt_empty", "right": "pt_origin", @@ -6498,6 +6936,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "mpt_empty", + "right": "pt_z_nan_xy", + "expected": false + }, + { + "left": "mpt_empty", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "mpt_empty", + "right": "mpt_z_nan_xy_member", + "expected": false + }, { "left": "mls", "right": "pt_origin", @@ -6713,6 +7166,21 @@ "right": "gc_nan_nan_point", "expected": true }, + { + "left": "mls", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "mls", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "mls", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "mpoly", "right": "pt_origin", @@ -6928,6 +7396,21 @@ "right": "gc_nan_nan_point", "expected": true }, + { + "left": "mpoly", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "mpoly", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "mpoly", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "mpoly_empty", "right": "pt_origin", @@ -7143,6 +7626,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "mpoly_empty", + "right": "pt_z_nan_xy", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "mpt_z_nan_xy_member", + "expected": false + }, { "left": "gc_empty", "right": "pt_origin", @@ -7358,6 +7856,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "gc_empty", + "right": "pt_z_nan_xy", + "expected": false + }, + { + "left": "gc_empty", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "gc_empty", + "right": "mpt_z_nan_xy_member", + "expected": false + }, { "left": "gc_empty_parts", "right": "pt_origin", @@ -7573,6 +8086,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "gc_empty_parts", + "right": "pt_z_nan_xy", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "mpt_z_nan_xy_member", + "expected": false + }, { "left": "gc_mixed", "right": "pt_origin", @@ -7788,6 +8316,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "gc_mixed", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "gc_mixed", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "gc_mixed", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "gc_nested", "right": "pt_origin", @@ -8003,6 +8546,21 @@ "right": "gc_nan_nan_point", "expected": true }, + { + "left": "gc_nested", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "gc_nested", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "gc_nested", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "gc_nan_part", "right": "pt_origin", @@ -8218,6 +8776,21 @@ "right": "gc_nan_nan_point", "expected": true }, + { + "left": "gc_nan_part", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "gc_nan_part", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "gc_nan_part", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "ls_nan_nan_vertex", "right": "pt_origin", @@ -8433,6 +9006,21 @@ "right": "gc_nan_nan_point", "expected": true }, + { + "left": "ls_nan_nan_vertex", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "ls_nan_nan_vertex", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "ls_all_nan", "right": "pt_origin", @@ -8648,6 +9236,21 @@ "right": "gc_nan_nan_point", "expected": true }, + { + "left": "ls_all_nan", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "ls_all_nan", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "ls_mixed_nan", "right": "pt_origin", @@ -8863,6 +9466,21 @@ "right": "gc_nan_nan_point", "expected": true }, + { + "left": "ls_mixed_nan", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "ls_mixed_nan", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "poly_nan_vertex", "right": "pt_origin", @@ -9078,6 +9696,21 @@ "right": "gc_nan_nan_point", "expected": true }, + { + "left": "poly_nan_vertex", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "poly_nan_vertex", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "mpt_nan_member", "right": "pt_origin", @@ -9294,8 +9927,23 @@ "expected": false }, { - "left": "gc_nan_nan_point", - "right": "pt_origin", + "left": "mpt_nan_member", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "mpt_nan_member", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "mpt_z_nan_xy_member", + "expected": true + }, + { + "left": "gc_nan_nan_point", + "right": "pt_origin", "expected": false }, { @@ -9507,6 +10155,711 @@ "left": "gc_nan_nan_point", "right": "gc_nan_nan_point", "expected": true + }, + { + "left": "gc_nan_nan_point", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "gc_nan_nan_point", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "mpt_z_nan_xy_member", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "pt_origin", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "pt_one", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "pt_half", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "pt_far", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "pt_neg", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "pt_just_outside", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "pt_huge", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "pt_nan_x", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "pt_nan_y", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "pt_z_nan_xy", + "right": "pt_inf_x", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "pt_neginf_x", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "pt_empty", + "expected": false + }, + { + "left": "pt_z_nan_xy", + "right": "pt_z", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "pt_m", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "pt_zm", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "pt_z_nan_z", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "ls_diag", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "ls_edge", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "ls_far", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "ls_empty", + "expected": false + }, + { + "left": "pt_z_nan_xy", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "poly_unit", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "poly_far", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "poly_hole", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "poly_empty", + "expected": false + }, + { + "left": "pt_z_nan_xy", + "right": "mpt", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "mpt_with_empty", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "mpt_empty", + "expected": false + }, + { + "left": "pt_z_nan_xy", + "right": "mls", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "mpoly", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "pt_z_nan_xy", + "right": "gc_empty", + "expected": false + }, + { + "left": "pt_z_nan_xy", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "pt_z_nan_xy", + "right": "gc_mixed", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "gc_nested", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "gc_nan_part", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "mpt_nan_member", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "gc_nan_nan_point", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "pt_z_nan_xy", + "right": "mpt_z_nan_xy_member", + "expected": true + }, + { + "left": "pt_z_all_nan", + "right": "pt_origin", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "pt_one", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "pt_half", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "pt_far", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "pt_neg", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "pt_huge", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "pt_empty", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "pt_z", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "pt_m", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "pt_zm", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "ls_diag", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "ls_edge", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "ls_far", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "ls_empty", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "ls_nan_vertex", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "poly_unit", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "poly_far", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "poly_hole", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "poly_empty", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "mpt", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "mpt_empty", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "mls", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "mpoly", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "gc_empty", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "gc_mixed", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "gc_nested", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "gc_nan_part", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "ls_nan_nan_vertex", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "ls_all_nan", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "ls_mixed_nan", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "poly_nan_vertex", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "pt_z_nan_xy", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "mpt_z_nan_xy_member", + "expected": false + }, + { + "left": "mpt_z_nan_xy_member", + "right": "pt_origin", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "pt_one", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "pt_half", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "pt_far", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "pt_neg", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "pt_just_outside", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "pt_huge", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "pt_nan_x", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "pt_nan_y", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "mpt_z_nan_xy_member", + "right": "pt_inf_x", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "pt_neginf_x", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "pt_empty", + "expected": false + }, + { + "left": "mpt_z_nan_xy_member", + "right": "pt_z", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "pt_m", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "pt_zm", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "pt_z_nan_z", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "ls_diag", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "ls_edge", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "ls_far", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "ls_empty", + "expected": false + }, + { + "left": "mpt_z_nan_xy_member", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "poly_unit", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "poly_far", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "poly_hole", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "poly_empty", + "expected": false + }, + { + "left": "mpt_z_nan_xy_member", + "right": "mpt", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "mpt_with_empty", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "mpt_empty", + "expected": false + }, + { + "left": "mpt_z_nan_xy_member", + "right": "mls", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "mpoly", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "mpt_z_nan_xy_member", + "right": "gc_empty", + "expected": false + }, + { + "left": "mpt_z_nan_xy_member", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "mpt_z_nan_xy_member", + "right": "gc_mixed", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "gc_nested", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "gc_nan_part", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "mpt_nan_member", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "gc_nan_nan_point", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "mpt_z_nan_xy_member", + "right": "mpt_z_nan_xy_member", + "expected": true } ] } \ No newline at end of file diff --git a/vgi/src/main/java/farm/query/vgi/pushdown/WkbExtent.java b/vgi/src/main/java/farm/query/vgi/pushdown/WkbExtent.java index bd509007..321bb45b 100644 --- a/vgi/src/main/java/farm/query/vgi/pushdown/WkbExtent.java +++ b/vgi/src/main/java/farm/query/vgi/pushdown/WkbExtent.java @@ -19,11 +19,16 @@ *

  • Z and M are read past and ignored.
  • * * - *

    Anything that is not well-formed ISO WKB (unknown byte order or type, EWKB flags such as - * the SRID flag, truncation, trailing bytes) is rejected with a {@link FilterV2Exception}. + *

    Both ISO WKB (Z/M as 1000/2000/3000 type offsets) and EWKB (Z/M/SRID high-bit flags, with + * the SRID skipped) are accepted, in either byte order, per (sub-)geometry, as DuckDB core does. + * Anything else (unknown byte order or type, both Z/M conventions on one type, truncation, + * trailing bytes) is rejected with a {@link FilterV2Exception}. */ final class WkbExtent { private static final int MAX_DEPTH = 128; + private static final int EWKB_Z = 0x80000000; + private static final int EWKB_M = 0x40000000; + private static final int EWKB_SRID = 0x20000000; private double minX = Double.POSITIVE_INFINITY; private double maxX = Double.NEGATIVE_INFINITY; @@ -69,14 +74,20 @@ private void geometry(ByteBuffer buffer, int depth) { if (order == 0) buffer.order(ByteOrder.BIG_ENDIAN); else if (order == 1) buffer.order(ByteOrder.LITTLE_ENDIAN); else throw new FilterV2Exception("invalid WKB byte order " + order); - long type = Integer.toUnsignedLong(buffer.getInt()); - long base = type % 1000; - long dimensions = type / 1000; - if (base < 1 || base > 7 || dimensions > 3) { - throw new FilterV2Exception("unsupported WKB geometry type " + type); + int raw = buffer.getInt(); + boolean ewkbZ = (raw & EWKB_Z) != 0; + boolean ewkbM = (raw & EWKB_M) != 0; + int type = raw & ~(EWKB_Z | EWKB_M | EWKB_SRID); + int base = type % 1000; + int dimensions = type / 1000; + if (base < 1 || base > 7 || dimensions > 3 || ((ewkbZ || ewkbM) && dimensions != 0)) { + throw new FilterV2Exception("unsupported WKB geometry type " + Integer.toUnsignedString(raw)); } - int width = 2 + (dimensions == 0 ? 0 : dimensions == 3 ? 2 : 1); - switch ((int) base) { + if ((raw & EWKB_SRID) != 0) buffer.getInt(); // the SRID does not affect the extent + boolean hasZ = ewkbZ || dimensions == 1 || dimensions == 3; + boolean hasM = ewkbM || dimensions == 2 || dimensions == 3; + int width = 2 + (hasZ ? 1 : 0) + (hasM ? 1 : 0); + switch (base) { case 1 -> point(buffer, width); case 2 -> vertices(buffer, count(buffer, 8L * width), width); case 3 -> { diff --git a/vgi/src/test/java/farm/query/vgi/pushdown/IntersectsExtentConformanceTest.java b/vgi/src/test/java/farm/query/vgi/pushdown/IntersectsExtentConformanceTest.java index f1265872..7a3ab47d 100644 --- a/vgi/src/test/java/farm/query/vgi/pushdown/IntersectsExtentConformanceTest.java +++ b/vgi/src/test/java/farm/query/vgi/pushdown/IntersectsExtentConformanceTest.java @@ -16,12 +16,15 @@ import org.junit.jupiter.api.Test; import java.io.InputStream; +import java.nio.ByteBuffer; +import java.nio.ByteOrder; import java.util.ArrayList; import java.util.HexFormat; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.function.UnaryOperator; import static org.junit.jupiter.api.Assertions.assertArrayEquals; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -48,8 +51,62 @@ final class IntersectsExtentConformanceTest { @Test void matchesDuckDbCoreOnEveryCase() throws Exception { + runCorpus(bytes -> bytes); + } + + @Test + void ewkbMatchesDuckDbCoreOnEveryCase() throws Exception { + // Every corpus geometry re-encoded as EWKB: Z/M as high-bit flags, an SRID on the + // outermost geometry only, and then on every (sub-)geometry. + runCorpus(bytes -> toEwkb(bytes, false)); + runCorpus(bytes -> toEwkb(bytes, true)); + } + + @Test + void ewkbPointWithSridAndPolygonWithZAndSridMatchIsoEquivalents() throws Exception { + Corpus corpus = corpus(); + // POINT(0.5 0.5) as EWKB with SRID 4326, written by hand in both byte orders. + byte[] pointLe = HexFormat.of().parseHex("0101000020e6100000000000000000e03f000000000000e03f"); + byte[] pointBe = HexFormat.of().parseHex("0020000001000010e63fe00000000000003fe0000000000000"); + // POLYGON Z ((0 0 1, 1 0 2, 1 1 3, 0 1 4, 0 0 1)), SRID 4326 = poly_unit with Z. + double[][] ring = {{0, 0, 1}, {1, 0, 2}, {1, 1, 3}, {0, 1, 4}, {0, 0, 1}}; + for (ByteOrder order : List.of(ByteOrder.LITTLE_ENDIAN, ByteOrder.BIG_ENDIAN)) { + ByteBuffer polygon = ByteBuffer.allocate(1 + 4 + 4 + 4 + 4 + ring.length * 24).order(order); + polygon.put((byte) (order == ByteOrder.LITTLE_ENDIAN ? 1 : 0)); + polygon.putInt(0x80000000 | 0x20000000 | 3).putInt(4326).putInt(1).putInt(ring.length); + for (double[] v : ring) polygon.putDouble(v[0]).putDouble(v[1]).putDouble(v[2]); + assertMatchesIso(corpus, "poly_unit", polygon.array()); + } + assertMatchesIso(corpus, "pt_half", pointLe); + assertMatchesIso(corpus, "pt_half", pointBe); + } + + /** {@code ewkb} must behave exactly like corpus geometry {@code iso} on either side of &&. */ + private static void assertMatchesIso(Corpus corpus, String iso, byte[] ewkb) { + for (String encoding : ENCODINGS) { + List rows = new ArrayList<>(); + for (String left : corpus.names()) rows.add(hex(corpus.geometries().get(left), encoding)); + boolean[] asConstant = evaluate(applier("required", ewkb), rows); + boolean[] asRow = new boolean[rows.size()]; + for (int i = 0; i < rows.size(); i++) { + asRow[i] = evaluate(applier("required", rows.get(i)), List.of(ewkb))[0]; + } + boolean[] want = new boolean[rows.size()]; + for (int i = 0; i < rows.size(); i++) { + want[i] = corpus.expected().get(corpus.names().get(i) + "|" + iso); + } + assertArrayEquals(want, asConstant, "EWKB " + iso + " as constant (" + encoding + ")"); + assertArrayEquals(want, asRow, "EWKB " + iso + " as row (" + encoding + ")"); + } + } + + private record Corpus(Map geometries, List names, + Map expected) {} + + private static Corpus corpus() throws Exception { JsonNode doc; - try (InputStream in = getClass().getResourceAsStream("/conformance/intersects_extent_cases.json")) { + try (InputStream in = IntersectsExtentConformanceTest.class + .getResourceAsStream("/conformance/intersects_extent_cases.json")) { doc = new ObjectMapper().readTree(in); } Map geometries = new LinkedHashMap<>(); @@ -61,16 +118,24 @@ void matchesDuckDbCoreOnEveryCase() throws Exception { c.get("expected").asBoolean()); } assertEquals(names.size() * names.size(), expected.size()); + return new Corpus(geometries, names, expected); + } + + private static void runCorpus(UnaryOperator encode) throws Exception { + Corpus corpus = corpus(); + Map geometries = corpus.geometries(); + List names = corpus.names(); + Map expected = corpus.expected(); List mismatches = new ArrayList<>(); int checked = 0; for (String rightEncoding : ENCODINGS) { for (String right : names) { - byte[] constant = hex(geometries.get(right), rightEncoding); + byte[] constant = encode.apply(hex(geometries.get(right), rightEncoding)); FilterApplier applier = applier("required", constant); for (String leftEncoding : ENCODINGS) { List rows = new ArrayList<>(); - for (String left : names) rows.add(hex(geometries.get(left), leftEncoding)); + for (String left : names) rows.add(encode.apply(hex(geometries.get(left), leftEncoding))); boolean[] mask = evaluate(applier, rows); for (int i = 0; i < names.size(); i++) { boolean want = expected.get(names.get(i) + "|" + right); @@ -102,13 +167,14 @@ void nullGeometryIsNotSelected() { void undecodableRowValueKeepsRowsForAdvisoryAndFailsRequired() { byte[] point = HexFormat.of().parseHex("0101000000000000000000e03f000000000000e03f"); byte[] far = HexFormat.of().parseHex("010100000000000000000014400000000000001440"); - // EWKB point with the SRID flag (0x20000000) and SRID 4326. - byte[] ewkb = HexFormat.of().parseHex("0101000020e6100000000000000000e03f000000000000e03f"); List bad = List.of( new byte[] {1, 2, (byte) 0xff}, // truncated HexFormat.of().parseHex("0108000000"), // unsupported type 8 HexFormat.of().parseHex("020100000000000000000000000000000000000000"), // bad byte order - ewkb); + // EWKB Z flag on an ISO Z type (1001): two Z conventions at once. + HexFormat.of().parseHex("01e9030080000000000000e03f000000000000e03f0000000000000000"), + // EWKB point with the SRID flag but no room for the SRID. + HexFormat.of().parseHex("0101000020e610")); for (byte[] value : bad) { List rows = List.of(far, value, point); assertArrayEquals(new boolean[] {true, true, true}, @@ -173,6 +239,55 @@ private static byte[] payload(String json, Field literal, byte[] value) { } } + /** Re-encode ISO WKB as EWKB in the same byte order(s): Z/M flags, SRID 4326. */ + private static byte[] toEwkb(byte[] iso, boolean sridOnEveryPart) { + ByteBuffer in = ByteBuffer.wrap(iso); + java.io.ByteArrayOutputStream out = new java.io.ByteArrayOutputStream(); + copyAsEwkb(in, out, sridOnEveryPart, true); + assertEquals(0, in.remaining()); + return out.toByteArray(); + } + + private static void copyAsEwkb(ByteBuffer in, java.io.ByteArrayOutputStream out, + boolean sridOnEveryPart, boolean outermost) { + byte order = in.get(); + in.order(order == 0 ? ByteOrder.BIG_ENDIAN : ByteOrder.LITTLE_ENDIAN); + int type = in.getInt(); + int base = type % 1000; + int dims = type / 1000; + boolean srid = outermost || sridOnEveryPart; + int flags = (dims == 1 || dims == 3 ? 0x80000000 : 0) | (dims == 2 || dims == 3 ? 0x40000000 : 0) + | (srid ? 0x20000000 : 0); + ByteBuffer header = ByteBuffer.allocate(9).order(in.order()); + header.put(order).putInt(base | flags); + if (srid) header.putInt(4326); + out.write(header.array(), 0, header.position()); + int width = 2 + (dims == 0 ? 0 : dims == 3 ? 2 : 1); + switch (base) { + case 1 -> copy(in, out, 8 * width); + case 2 -> copy(in, out, 8 * width * copyCount(in, out)); + case 3 -> { + for (int r = copyCount(in, out); r > 0; r--) copy(in, out, 8 * width * copyCount(in, out)); + } + default -> { + for (int n = copyCount(in, out); n > 0; n--) { + copyAsEwkb(in, out, sridOnEveryPart, false); + } + } + } + } + + private static int copyCount(ByteBuffer in, java.io.ByteArrayOutputStream out) { + int n = in.getInt(in.position()); + copy(in, out, 4); + return n; + } + + private static void copy(ByteBuffer in, java.io.ByteArrayOutputStream out, int length) { + out.write(in.array(), in.position(), length); + in.position(in.position() + length); + } + private static byte[] hex(JsonNode geometry, String encoding) { return HexFormat.of().parseHex(geometry.get(encoding).asText()); } diff --git a/vgi/src/test/resources/conformance/intersects_extent_cases.json b/vgi/src/test/resources/conformance/intersects_extent_cases.json index 88eed83a..a34e9f74 100644 --- a/vgi/src/test/resources/conformance/intersects_extent_cases.json +++ b/vgi/src/test/resources/conformance/intersects_extent_cases.json @@ -260,6 +260,24 @@ "wkt": "GEOMETRYCOLLECTION(POINT(nan nan), POINT(3 3))", "wkb_le": "0107000000020000000101000000000000000000f87f000000000000f87f010100000000000000000008400000000000000840", "wkb_be": "00000000070000000200000000017ff80000000000007ff8000000000000000000000140080000000000004008000000000000" + }, + { + "name": "pt_z_nan_xy", + "wkt": "POINT Z (nan nan 5)", + "wkb_le": "01e9030000000000000000f87f000000000000f87f0000000000001440", + "wkb_be": "00000003e97ff80000000000007ff80000000000004014000000000000" + }, + { + "name": "pt_z_all_nan", + "wkt": "POINT Z (nan nan nan)", + "wkb_le": "01e9030000000000000000f87f000000000000f87f000000000000f87f", + "wkb_be": "00000003e97ff80000000000007ff80000000000007ff8000000000000" + }, + { + "name": "mpt_z_nan_xy_member", + "wkt": "MULTIPOINT Z ((nan nan 5), (9 9 9))", + "wkb_le": "01ec0300000200000001e9030000000000000000f87f000000000000f87f000000000000144001e9030000000000000000224000000000000022400000000000002240", + "wkb_be": "00000003ec0000000200000003e97ff80000000000007ff8000000000000401400000000000000000003e9402200000000000040220000000000004022000000000000" } ], "cases": [ @@ -478,6 +496,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "pt_origin", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "pt_origin", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "pt_origin", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "pt_one", "right": "pt_origin", @@ -693,6 +726,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "pt_one", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "pt_one", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "pt_one", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "pt_half", "right": "pt_origin", @@ -908,6 +956,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "pt_half", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "pt_half", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "pt_half", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "pt_far", "right": "pt_origin", @@ -1123,6 +1186,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "pt_far", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "pt_far", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "pt_far", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "pt_neg", "right": "pt_origin", @@ -1338,6 +1416,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "pt_neg", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "pt_neg", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "pt_neg", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "pt_just_outside", "right": "pt_origin", @@ -1553,6 +1646,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "pt_just_outside", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "pt_just_outside", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "pt_just_outside", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "pt_huge", "right": "pt_origin", @@ -1768,6 +1876,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "pt_huge", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "pt_huge", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "pt_huge", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "pt_nan_x", "right": "pt_origin", @@ -1983,6 +2106,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "pt_nan_x", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "pt_nan_x", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "pt_nan_x", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "pt_nan_y", "right": "pt_origin", @@ -2198,6 +2336,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "pt_nan_y", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "pt_nan_y", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "pt_nan_y", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "pt_nan_xy", "right": "pt_origin", @@ -2413,6 +2566,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "pt_nan_xy", + "right": "pt_z_nan_xy", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "pt_nan_xy", + "right": "mpt_z_nan_xy_member", + "expected": false + }, { "left": "pt_inf_x", "right": "pt_origin", @@ -2628,6 +2796,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "pt_inf_x", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "pt_inf_x", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "pt_inf_x", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "pt_neginf_x", "right": "pt_origin", @@ -2843,6 +3026,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "pt_neginf_x", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "pt_neginf_x", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "pt_neginf_x", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "pt_empty", "right": "pt_origin", @@ -3058,6 +3256,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "pt_empty", + "right": "pt_z_nan_xy", + "expected": false + }, + { + "left": "pt_empty", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "pt_empty", + "right": "mpt_z_nan_xy_member", + "expected": false + }, { "left": "pt_z", "right": "pt_origin", @@ -3273,6 +3486,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "pt_z", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "pt_z", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "pt_z", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "pt_m", "right": "pt_origin", @@ -3488,6 +3716,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "pt_m", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "pt_m", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "pt_m", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "pt_zm", "right": "pt_origin", @@ -3703,6 +3946,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "pt_zm", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "pt_zm", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "pt_zm", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "pt_z_nan_z", "right": "pt_origin", @@ -3918,6 +4176,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "pt_z_nan_z", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "pt_z_nan_z", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "pt_z_nan_z", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "ls_diag", "right": "pt_origin", @@ -4133,6 +4406,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "ls_diag", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "ls_diag", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "ls_diag", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "ls_edge", "right": "pt_origin", @@ -4348,6 +4636,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "ls_edge", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "ls_edge", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "ls_edge", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "ls_far", "right": "pt_origin", @@ -4563,6 +4866,21 @@ "right": "gc_nan_nan_point", "expected": true }, + { + "left": "ls_far", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "ls_far", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "ls_far", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "ls_empty", "right": "pt_origin", @@ -4779,14 +5097,29 @@ "expected": false }, { - "left": "ls_nan_vertex", - "right": "pt_origin", - "expected": true + "left": "ls_empty", + "right": "pt_z_nan_xy", + "expected": false }, { - "left": "ls_nan_vertex", - "right": "pt_one", - "expected": true + "left": "ls_empty", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "ls_empty", + "right": "mpt_z_nan_xy_member", + "expected": false + }, + { + "left": "ls_nan_vertex", + "right": "pt_origin", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "pt_one", + "expected": true }, { "left": "ls_nan_vertex", @@ -4993,6 +5326,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "ls_nan_vertex", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "ls_nan_vertex", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "ls_nan_vertex", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "poly_unit", "right": "pt_origin", @@ -5208,6 +5556,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "poly_unit", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "poly_unit", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "poly_unit", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "poly_far", "right": "pt_origin", @@ -5423,6 +5786,21 @@ "right": "gc_nan_nan_point", "expected": true }, + { + "left": "poly_far", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "poly_far", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "poly_far", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "poly_hole", "right": "pt_origin", @@ -5638,6 +6016,21 @@ "right": "gc_nan_nan_point", "expected": true }, + { + "left": "poly_hole", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "poly_hole", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "poly_hole", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "poly_empty", "right": "pt_origin", @@ -5853,6 +6246,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "poly_empty", + "right": "pt_z_nan_xy", + "expected": false + }, + { + "left": "poly_empty", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "poly_empty", + "right": "mpt_z_nan_xy_member", + "expected": false + }, { "left": "mpt", "right": "pt_origin", @@ -6068,6 +6476,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "mpt", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "mpt", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "mpt", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "mpt_with_empty", "right": "pt_origin", @@ -6283,6 +6706,21 @@ "right": "gc_nan_nan_point", "expected": true }, + { + "left": "mpt_with_empty", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "mpt_with_empty", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "mpt_with_empty", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "mpt_empty", "right": "pt_origin", @@ -6498,6 +6936,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "mpt_empty", + "right": "pt_z_nan_xy", + "expected": false + }, + { + "left": "mpt_empty", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "mpt_empty", + "right": "mpt_z_nan_xy_member", + "expected": false + }, { "left": "mls", "right": "pt_origin", @@ -6713,6 +7166,21 @@ "right": "gc_nan_nan_point", "expected": true }, + { + "left": "mls", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "mls", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "mls", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "mpoly", "right": "pt_origin", @@ -6928,6 +7396,21 @@ "right": "gc_nan_nan_point", "expected": true }, + { + "left": "mpoly", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "mpoly", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "mpoly", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "mpoly_empty", "right": "pt_origin", @@ -7143,6 +7626,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "mpoly_empty", + "right": "pt_z_nan_xy", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "mpoly_empty", + "right": "mpt_z_nan_xy_member", + "expected": false + }, { "left": "gc_empty", "right": "pt_origin", @@ -7358,6 +7856,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "gc_empty", + "right": "pt_z_nan_xy", + "expected": false + }, + { + "left": "gc_empty", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "gc_empty", + "right": "mpt_z_nan_xy_member", + "expected": false + }, { "left": "gc_empty_parts", "right": "pt_origin", @@ -7573,6 +8086,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "gc_empty_parts", + "right": "pt_z_nan_xy", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "gc_empty_parts", + "right": "mpt_z_nan_xy_member", + "expected": false + }, { "left": "gc_mixed", "right": "pt_origin", @@ -7788,6 +8316,21 @@ "right": "gc_nan_nan_point", "expected": false }, + { + "left": "gc_mixed", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "gc_mixed", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "gc_mixed", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "gc_nested", "right": "pt_origin", @@ -8003,6 +8546,21 @@ "right": "gc_nan_nan_point", "expected": true }, + { + "left": "gc_nested", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "gc_nested", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "gc_nested", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "gc_nan_part", "right": "pt_origin", @@ -8218,6 +8776,21 @@ "right": "gc_nan_nan_point", "expected": true }, + { + "left": "gc_nan_part", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "gc_nan_part", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "gc_nan_part", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "ls_nan_nan_vertex", "right": "pt_origin", @@ -8433,6 +9006,21 @@ "right": "gc_nan_nan_point", "expected": true }, + { + "left": "ls_nan_nan_vertex", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "ls_nan_nan_vertex", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "ls_nan_nan_vertex", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "ls_all_nan", "right": "pt_origin", @@ -8648,6 +9236,21 @@ "right": "gc_nan_nan_point", "expected": true }, + { + "left": "ls_all_nan", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "ls_all_nan", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "ls_all_nan", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "ls_mixed_nan", "right": "pt_origin", @@ -8863,6 +9466,21 @@ "right": "gc_nan_nan_point", "expected": true }, + { + "left": "ls_mixed_nan", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "ls_mixed_nan", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "ls_mixed_nan", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "poly_nan_vertex", "right": "pt_origin", @@ -9078,6 +9696,21 @@ "right": "gc_nan_nan_point", "expected": true }, + { + "left": "poly_nan_vertex", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "poly_nan_vertex", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "poly_nan_vertex", + "right": "mpt_z_nan_xy_member", + "expected": true + }, { "left": "mpt_nan_member", "right": "pt_origin", @@ -9294,8 +9927,23 @@ "expected": false }, { - "left": "gc_nan_nan_point", - "right": "pt_origin", + "left": "mpt_nan_member", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "mpt_nan_member", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "mpt_nan_member", + "right": "mpt_z_nan_xy_member", + "expected": true + }, + { + "left": "gc_nan_nan_point", + "right": "pt_origin", "expected": false }, { @@ -9507,6 +10155,711 @@ "left": "gc_nan_nan_point", "right": "gc_nan_nan_point", "expected": true + }, + { + "left": "gc_nan_nan_point", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "gc_nan_nan_point", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "gc_nan_nan_point", + "right": "mpt_z_nan_xy_member", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "pt_origin", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "pt_one", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "pt_half", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "pt_far", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "pt_neg", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "pt_just_outside", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "pt_huge", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "pt_nan_x", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "pt_nan_y", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "pt_z_nan_xy", + "right": "pt_inf_x", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "pt_neginf_x", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "pt_empty", + "expected": false + }, + { + "left": "pt_z_nan_xy", + "right": "pt_z", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "pt_m", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "pt_zm", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "pt_z_nan_z", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "ls_diag", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "ls_edge", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "ls_far", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "ls_empty", + "expected": false + }, + { + "left": "pt_z_nan_xy", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "poly_unit", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "poly_far", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "poly_hole", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "poly_empty", + "expected": false + }, + { + "left": "pt_z_nan_xy", + "right": "mpt", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "mpt_with_empty", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "mpt_empty", + "expected": false + }, + { + "left": "pt_z_nan_xy", + "right": "mls", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "mpoly", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "pt_z_nan_xy", + "right": "gc_empty", + "expected": false + }, + { + "left": "pt_z_nan_xy", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "pt_z_nan_xy", + "right": "gc_mixed", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "gc_nested", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "gc_nan_part", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "mpt_nan_member", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "gc_nan_nan_point", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "pt_z_nan_xy", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "pt_z_nan_xy", + "right": "mpt_z_nan_xy_member", + "expected": true + }, + { + "left": "pt_z_all_nan", + "right": "pt_origin", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "pt_one", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "pt_half", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "pt_far", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "pt_neg", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "pt_just_outside", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "pt_huge", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "pt_nan_x", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "pt_nan_y", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "pt_inf_x", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "pt_neginf_x", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "pt_empty", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "pt_z", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "pt_m", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "pt_zm", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "pt_z_nan_z", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "ls_diag", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "ls_edge", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "ls_far", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "ls_empty", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "ls_nan_vertex", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "poly_unit", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "poly_far", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "poly_hole", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "poly_empty", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "mpt", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "mpt_with_empty", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "mpt_empty", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "mls", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "mpoly", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "gc_empty", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "gc_mixed", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "gc_nested", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "gc_nan_part", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "ls_nan_nan_vertex", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "ls_all_nan", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "ls_mixed_nan", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "poly_nan_vertex", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "mpt_nan_member", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "gc_nan_nan_point", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "pt_z_nan_xy", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "pt_z_all_nan", + "right": "mpt_z_nan_xy_member", + "expected": false + }, + { + "left": "mpt_z_nan_xy_member", + "right": "pt_origin", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "pt_one", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "pt_half", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "pt_far", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "pt_neg", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "pt_just_outside", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "pt_huge", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "pt_nan_x", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "pt_nan_y", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "pt_nan_xy", + "expected": false + }, + { + "left": "mpt_z_nan_xy_member", + "right": "pt_inf_x", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "pt_neginf_x", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "pt_empty", + "expected": false + }, + { + "left": "mpt_z_nan_xy_member", + "right": "pt_z", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "pt_m", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "pt_zm", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "pt_z_nan_z", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "ls_diag", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "ls_edge", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "ls_far", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "ls_empty", + "expected": false + }, + { + "left": "mpt_z_nan_xy_member", + "right": "ls_nan_vertex", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "poly_unit", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "poly_far", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "poly_hole", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "poly_empty", + "expected": false + }, + { + "left": "mpt_z_nan_xy_member", + "right": "mpt", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "mpt_with_empty", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "mpt_empty", + "expected": false + }, + { + "left": "mpt_z_nan_xy_member", + "right": "mls", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "mpoly", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "mpoly_empty", + "expected": false + }, + { + "left": "mpt_z_nan_xy_member", + "right": "gc_empty", + "expected": false + }, + { + "left": "mpt_z_nan_xy_member", + "right": "gc_empty_parts", + "expected": false + }, + { + "left": "mpt_z_nan_xy_member", + "right": "gc_mixed", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "gc_nested", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "gc_nan_part", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "ls_nan_nan_vertex", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "ls_all_nan", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "ls_mixed_nan", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "poly_nan_vertex", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "mpt_nan_member", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "gc_nan_nan_point", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "pt_z_nan_xy", + "expected": true + }, + { + "left": "mpt_z_nan_xy_member", + "right": "pt_z_all_nan", + "expected": false + }, + { + "left": "mpt_z_nan_xy_member", + "right": "mpt_z_nan_xy_member", + "expected": true } ] } \ No newline at end of file