Skip to content

Commit 7a33bc3

Browse files
author
Madhavan
committed
bugfix: Assert on WKT representation instead of object equality which changed in 4.19.3
1 parent 507d591 commit 7a33bc3

2 files changed

Lines changed: 61 additions & 35 deletions

File tree

codecs/api/src/test/java/com/datastax/oss/dsbulk/codecs/api/util/CodecUtilsTest.java

Lines changed: 47 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -59,12 +59,7 @@
5959
import static org.mockito.Mockito.mock;
6060
import static org.mockito.Mockito.when;
6161

62-
import com.datastax.dse.driver.api.core.data.geometry.LineString;
63-
import com.datastax.dse.driver.api.core.data.geometry.Polygon;
6462
import com.datastax.dse.driver.api.core.data.time.DateRange;
65-
import com.datastax.dse.driver.internal.core.data.geometry.DefaultLineString;
66-
import com.datastax.dse.driver.internal.core.data.geometry.DefaultPoint;
67-
import com.datastax.dse.driver.internal.core.data.geometry.DefaultPolygon;
6863
import com.datastax.oss.driver.api.core.data.ByteUtils;
6964
import com.datastax.oss.driver.api.core.uuid.Uuids;
7065
import com.datastax.oss.driver.shaded.guava.common.collect.ImmutableMap;
@@ -1010,75 +1005,97 @@ void should_parse_point() {
10101005
assertThat(CodecUtils.parsePoint(null)).isNull();
10111006
assertThat(CodecUtils.parsePoint("")).isNull();
10121007
assertThat(CodecUtils.parsePoint("POINT (-1.1 -2.2)"))
1013-
.isEqualTo(new DefaultPoint(-1.1d, -2.2d));
1008+
.isNotNull()
1009+
.extracting(p -> p.asWellKnownText())
1010+
.isEqualTo("POINT (-1.1 -2.2)");
10141011
assertThat(CodecUtils.parsePoint("'POINT (-1.1 -2.2)'"))
1015-
.isEqualTo(new DefaultPoint(-1.1d, -2.2d));
1012+
.isNotNull()
1013+
.extracting(p -> p.asWellKnownText())
1014+
.isEqualTo("POINT (-1.1 -2.2)");
10161015
assertThat(CodecUtils.parsePoint("{\"type\":\"Point\",\"coordinates\":[-1.1,-2.2]}"))
1017-
.isEqualTo(new DefaultPoint(-1.1d, -2.2d));
1016+
.isNotNull()
1017+
.extracting(p -> p.asWellKnownText())
1018+
.isEqualTo("POINT (-1.1 -2.2)");
10181019
assertThat(CodecUtils.parsePoint("AQEAAACamZmZmZnxv5qZmZmZmQHA"))
1019-
.isEqualTo(new DefaultPoint(-1.1d, -2.2d));
1020+
.isNotNull()
1021+
.extracting(p -> p.asWellKnownText())
1022+
.isEqualTo("POINT (-1.1 -2.2)");
10201023
assertThat(CodecUtils.parsePoint("0x01010000009a9999999999f1bf9a999999999901c0"))
1021-
.isEqualTo(new DefaultPoint(-1.1d, -2.2d));
1024+
.isNotNull()
1025+
.extracting(p -> p.asWellKnownText())
1026+
.isEqualTo("POINT (-1.1 -2.2)");
10221027
assertThatThrownBy(() -> CodecUtils.parsePoint("not a valid point"))
10231028
.isInstanceOf(IllegalArgumentException.class)
10241029
.hasMessageContaining("Invalid point literal");
10251030
}
10261031

10271032
@Test
10281033
void should_parse_line_string() {
1029-
LineString lineString =
1030-
new DefaultLineString(
1031-
new DefaultPoint(30, 10), new DefaultPoint(10, 30), new DefaultPoint(40, 40));
10321034
assertThat(CodecUtils.parseLineString(null)).isNull();
10331035
assertThat(CodecUtils.parseLineString("")).isNull();
10341036
assertThat(CodecUtils.parseLineString("LINESTRING (30 10, 10 30, 40 40)"))
1035-
.isEqualTo(lineString);
1037+
.isNotNull()
1038+
.extracting(ls -> ls.asWellKnownText())
1039+
.isEqualTo("LINESTRING (30 10, 10 30, 40 40)");
10361040
assertThat(CodecUtils.parseLineString("'LINESTRING (30 10, 10 30, 40 40)'"))
1037-
.isEqualTo(lineString);
1041+
.isNotNull()
1042+
.extracting(ls -> ls.asWellKnownText())
1043+
.isEqualTo("LINESTRING (30 10, 10 30, 40 40)");
10381044
assertThat(
10391045
CodecUtils.parseLineString(
10401046
"{\"type\":\"LineString\",\"coordinates\":[[30.0,10.0],[10.0,30.0],[40.0,40.0]]}"))
1041-
.isEqualTo(lineString);
1047+
.isNotNull()
1048+
.extracting(ls -> ls.asWellKnownText())
1049+
.isEqualTo("LINESTRING (30 10, 10 30, 40 40)");
10421050
assertThat(
10431051
CodecUtils.parseLineString(
10441052
"AQIAAAADAAAAAAAAAAAAPkAAAAAAAAAkQAAAAAAAACRAAAAAAAAAPkAAAAAAAABEQAAAAAAAAERA"))
1045-
.isEqualTo(lineString);
1053+
.isNotNull()
1054+
.extracting(ls -> ls.asWellKnownText())
1055+
.isEqualTo("LINESTRING (30 10, 10 30, 40 40)");
10461056
assertThat(
10471057
CodecUtils.parseLineString(
10481058
"0x0102000000030000000000000000003e40000000000000244000000000000024400000000000003e4000000000000044400000000000004440"))
1049-
.isEqualTo(lineString);
1059+
.isNotNull()
1060+
.extracting(ls -> ls.asWellKnownText())
1061+
.isEqualTo("LINESTRING (30 10, 10 30, 40 40)");
10501062
assertThatThrownBy(() -> CodecUtils.parseLineString("not a valid line string"))
10511063
.isInstanceOf(IllegalArgumentException.class)
10521064
.hasMessageContaining("Invalid line string literal");
10531065
}
10541066

10551067
@Test
10561068
void should_parse_polygon() {
1057-
Polygon polygon =
1058-
new DefaultPolygon(
1059-
new DefaultPoint(30, 10),
1060-
new DefaultPoint(10, 20),
1061-
new DefaultPoint(20, 40),
1062-
new DefaultPoint(40, 40));
1069+
String poligonString = "POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))";
10631070
assertThat(CodecUtils.parsePolygon(null)).isNull();
10641071
assertThat(CodecUtils.parsePolygon("")).isNull();
1065-
assertThat(CodecUtils.parsePolygon("POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))"))
1066-
.isEqualTo(polygon);
1072+
assertThat(CodecUtils.parsePolygon(poligonString))
1073+
.isNotNull()
1074+
.extracting(p -> p.asWellKnownText())
1075+
.isEqualTo(poligonString);
10671076
assertThat(CodecUtils.parsePolygon("'POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))'"))
1068-
.isEqualTo(polygon);
1077+
.isNotNull()
1078+
.extracting(p -> p.asWellKnownText())
1079+
.isEqualTo(poligonString);
10691080
assertThat(
10701081
CodecUtils.parsePolygon(
10711082
"{\"type\":\"Polygon\",\"coordinates\":[[[30.0,10.0],[10.0,20.0],[20.0,40.0],[40.0,40.0],[30.0,10.0]]]}"))
1072-
.isEqualTo(polygon);
1083+
.isNotNull()
1084+
.extracting(p -> p.asWellKnownText())
1085+
.isEqualTo(poligonString);
10731086
assertThat(
10741087
CodecUtils.parsePolygon(
10751088
"AQMAAAABAAAABQAAAAAAAAAAAD5AAAAAAAAAJEAAAAAAAABEQAAAAAAAAERAAAAAAAAANEAAAAAAAABEQAAAAAAAACRAAAAAAAAANEAAAAAAAAA+QAAAAAAAACRA"))
1076-
.isEqualTo(polygon);
1089+
.isNotNull()
1090+
.extracting(p -> p.asWellKnownText())
1091+
.isEqualTo(poligonString);
10771092
assertThat(
10781093
CodecUtils.parsePolygon(
10791094
"0x010300000001000000050000000000000000003e4000000000000024400000000000004440000000000000444"
10801095
+ "000000000000034400000000000004440000000000000244000000000000034400000000000003e400000000000002440"))
1081-
.isEqualTo(polygon);
1096+
.isNotNull()
1097+
.extracting(p -> p.asWellKnownText())
1098+
.isEqualTo(poligonString);
10821099
assertThatThrownBy(() -> CodecUtils.parsePolygon("not a valid polygon"))
10831100
.isInstanceOf(IllegalArgumentException.class)
10841101
.hasMessageContaining("Invalid polygon literal");

tests/src/main/java/com/datastax/oss/dsbulk/tests/assertions/ConvertingCodecAssert.java

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import static org.assertj.core.api.Assertions.assertThat;
1919
import static org.assertj.core.api.Assertions.fail;
2020

21+
import com.datastax.dse.driver.api.core.data.geometry.Geometry;
2122
import com.datastax.oss.dsbulk.codecs.api.ConvertingCodec;
2223
import org.assertj.core.api.AbstractObjectAssert;
2324

@@ -95,11 +96,19 @@ public class ConvertsToInternalAssert extends ConvertingCodecAssert<EXTERNAL, IN
9596
}
9697

9798
public ConvertingCodecAssert<EXTERNAL, INTERNAL> toInternal(INTERNAL internal) {
98-
assertThat(this.internal)
99-
.overridingErrorMessage(
100-
"Expecting codec to convert from external %s to internal %s but it converted to %s",
101-
external, internal, this.internal)
102-
.isEqualTo(internal);
99+
if (this.internal instanceof Geometry && internal instanceof Geometry) {
100+
assertThat(((Geometry) this.internal).asWellKnownText())
101+
.overridingErrorMessage(
102+
"Expecting codec to convert from external %s to internal %s but it converted to %s",
103+
external, internal, this.internal)
104+
.isEqualTo(((Geometry) internal).asWellKnownText());
105+
} else {
106+
assertThat(this.internal)
107+
.overridingErrorMessage(
108+
"Expecting codec to convert from external %s to internal %s but it converted to %s",
109+
external, internal, this.internal)
110+
.isEqualTo(internal);
111+
}
103112
return this;
104113
}
105114
}

0 commit comments

Comments
 (0)