|
| 1 | +package geoscript.geom.io |
| 2 | + |
| 3 | +import geoscript.geom.* |
| 4 | +import org.junit.jupiter.api.Test |
| 5 | + |
| 6 | +import static org.junit.jupiter.api.Assertions.assertArrayEquals |
| 7 | +import static org.junit.jupiter.api.Assertions.assertEquals |
| 8 | + |
| 9 | +/** |
| 10 | + * The TwkbWriter UnitTest |
| 11 | + */ |
| 12 | +class TWkbWriterTest { |
| 13 | + |
| 14 | + @Test void writePoint() { |
| 15 | + TWkbWriter writer = new TWkbWriter() |
| 16 | + Point p = new Point(111,-47) |
| 17 | + String expected = "E108018086CAA208FF859DC00300" |
| 18 | + String actual = writer.write(p) |
| 19 | + assertEquals expected, actual |
| 20 | + |
| 21 | + byte[] expecteds = [-31, 8, 1, -128, -122, -54, -94, 8, -1, -123, -99, -64, 3, 0] as byte[] |
| 22 | + byte[] actuals = writer.writeBytes(p) |
| 23 | + assertArrayEquals(expecteds, actuals) |
| 24 | + } |
| 25 | + |
| 26 | + @Test void writeLineString() { |
| 27 | + TWkbWriter writer = new TWkbWriter() |
| 28 | + LineString l = new LineString([[111.0, -47],[123.0, -48],[110.0, -47]]) |
| 29 | + String expected = "E20801038086CAA208FF859DC0030080B8B872FFD9C40900FF91FD7B80DAC40900" |
| 30 | + String actual = writer.write(l) |
| 31 | + assertEquals expected, actual |
| 32 | + |
| 33 | + byte[] expecteds = [-30, 8, 1, 3, -128, -122, -54, -94, 8, -1, -123, -99, -64, 3, 0, -128, -72, -72, 114, -1, -39, -60, 9, 0, -1, -111, -3, 123, -128, -38, -60, 9, 0] as byte[] |
| 34 | + byte[] actuals = writer.writeBytes(l) |
| 35 | + assertArrayEquals(expecteds, actuals) |
| 36 | + } |
| 37 | + |
| 38 | + @Test void writeLinearRing() { |
| 39 | + TWkbWriter writer = new TWkbWriter() |
| 40 | + LinearRing l = new LinearRing([[111.0, -47],[123.0, -48],[110.0, -47],[111.0, -47]]) |
| 41 | + String expected = "E20801048086CAA208FF859DC0030080B8B872FFD9C40900FF91FD7B80DAC4090080DAC4090000" |
| 42 | + String actual = writer.write(l) |
| 43 | + assertEquals expected, actual |
| 44 | + |
| 45 | + byte[] expecteds = [-30, 8, 1, 4, -128, -122, -54, -94, 8, -1, -123, -99, -64, 3, 0, -128, -72, -72, 114, -1, -39, -60, 9, 0, -1, -111, -3, 123, -128, -38, -60, 9, 0, -128, -38, -60, 9, 0, 0] as byte[] |
| 46 | + byte[] actuals = writer.writeBytes(l) |
| 47 | + assertArrayEquals(expecteds, actuals) |
| 48 | + } |
| 49 | + |
| 50 | + @Test void writePolygon() { |
| 51 | + TWkbWriter writer = new TWkbWriter() |
| 52 | + Polygon p = new Polygon(new LinearRing([1,1], [10,1], [10,10], [1,10], [1,1]), |
| 53 | + [ |
| 54 | + new LinearRing([2,2], [4,2], [4,4], [2,4], [2,2]), |
| 55 | + new LinearRing([5,5], [6,5], [6,6], [5,6], [5,5]) |
| 56 | + ] |
| 57 | + ) |
| 58 | + String expected = "E30801030580DAC40980DAC4090080AAEA5500000080AAEA5500FFA9EA55000000FFA9EA55000580DAC40980DAC4090080B4891300000080B4891300FFB38913000000FFB389130005808ECE1C808ECE1C0080DAC40900000080DAC40900FFD9C409000000FFD9C40900" |
| 59 | + String actual = writer.write(p) |
| 60 | + assertEquals expected, actual |
| 61 | + |
| 62 | + byte[] expecteds = [-29, 8, 1, 3, 5, -128, -38, -60, 9, -128, -38, -60, 9, 0, -128, -86, -22, 85, 0, 0, 0, -128, -86, -22, 85, 0, -1, -87, -22, 85, 0, 0, 0, -1, -87, -22, 85, 0, 5, -128, -38, -60, 9, -128, -38, -60, 9, 0, -128, -76, -119, 19, 0, 0, 0, -128, -76, -119, 19, 0, -1, -77, -119, 19, 0, 0, 0, -1, -77, -119, 19, 0, 5, -128, -114, -50, 28, -128, -114, -50, 28, 0, -128, -38, -60, 9, 0, 0, 0, -128, -38, -60, 9, 0, -1, -39, -60, 9, 0, 0, 0, -1, -39, -60, 9, 0] as byte[] |
| 63 | + byte[] actuals = writer.writeBytes(p) |
| 64 | + assertArrayEquals(expecteds, actuals) |
| 65 | + } |
| 66 | + |
| 67 | + @Test void writeMultiPoint() { |
| 68 | + TWkbWriter writer = new TWkbWriter() |
| 69 | + MultiPoint p = new MultiPoint([111,-47],[110,-46.5]) |
| 70 | + String expected = "E40801028086CAA208FF859DC00300FFD9C40980ADE20400" |
| 71 | + String actual = writer.write(p) |
| 72 | + assertEquals expected, actual |
| 73 | + |
| 74 | + byte[] expecteds = [-28, 8, 1, 2, -128, -122, -54, -94, 8, -1, -123, -99, -64, 3, 0, -1, -39, -60, 9, -128, -83, -30, 4, 0] as byte[] |
| 75 | + byte[] actuals = writer.writeBytes(p) |
| 76 | + assertArrayEquals(expecteds, actuals) |
| 77 | + } |
| 78 | + |
| 79 | + @Test void writeMultiLineString() { |
| 80 | + TWkbWriter writer = new TWkbWriter() |
| 81 | + MultiLineString m = new MultiLineString(new LineString([1,2],[3,4]), new LineString([5,6],[7,8])) |
| 82 | + String expected = "E50801020280DAC40980B489130080B4891380B48913000280B4891380B489130080B4891380B4891300" |
| 83 | + String actual = writer.write(m) |
| 84 | + assertEquals expected, actual |
| 85 | + |
| 86 | + byte[] expecteds = [-27, 8, 1, 2, 2, -128, -38, -60, 9, -128, -76, -119, 19, 0, -128, -76, -119, 19, -128, -76, -119, 19, 0, 2, -128, -76, -119, 19, -128, -76, -119, 19, 0, -128, -76, -119, 19, -128, -76, -119, 19, 0] as byte[] |
| 87 | + byte[] actuals = writer.writeBytes(m) |
| 88 | + assertArrayEquals(expecteds, actuals) |
| 89 | + } |
| 90 | + |
| 91 | + @Test void writeMultiPolygon() { |
| 92 | + TWkbWriter writer = new TWkbWriter() |
| 93 | + MultiPolygon mp = new MultiPolygon([[[[1,2],[3,4],[5,6],[1,2]]], [[[7,8],[9,10],[11,12],[7,8]]]]) |
| 94 | + String expected = "E6080102010480DAC40980B489130080B4891380B489130080B4891380B4891300FFE79226FFE79226000104809C9C39809C9C390080B4891380B489130080B4891380B4891300FFE79226FFE7922600" |
| 95 | + String actual = writer.write(mp) |
| 96 | + assertEquals expected, actual |
| 97 | + |
| 98 | + byte[] expecteds = [-26, 8, 1, 2, 1, 4, -128, -38, -60, 9, -128, -76, -119, 19, 0, -128, -76, -119, 19, -128, -76, -119, 19, 0, -128, -76, -119, 19, -128, -76, -119, 19, 0, -1, -25, -110, 38, -1, -25, -110, 38, 0, 1, 4, -128, -100, -100, 57, -128, -100, -100, 57, 0, -128, -76, -119, 19, -128, -76, -119, 19, 0, -128, -76, -119, 19, -128, -76, -119, 19, 0, -1, -25, -110, 38, -1, -25, -110, 38, 0] as byte[] |
| 99 | + byte[] actuals = writer.writeBytes(mp) |
| 100 | + assertArrayEquals(expecteds, actuals) |
| 101 | + } |
| 102 | + |
| 103 | + @Test void writeGeometryCollection() { |
| 104 | + TWkbWriter writer = new TWkbWriter() |
| 105 | + GeometryCollection gc = new GeometryCollection(new Point(100.0, 0.0), new LineString([101.0, 0.0], [102.0,1.0])) |
| 106 | + String expected = "E7080102E1080180A8D6B9070000E208010280829BC307000080DAC40980DAC40900" |
| 107 | + String actual = writer.write(gc) |
| 108 | + assertEquals expected, actual |
| 109 | + |
| 110 | + byte[] expecteds = [-25, 8, 1, 2, -31, 8, 1, -128, -88, -42, -71, 7, 0, 0, -30, 8, 1, 2, -128, -126, -101, -61, 7, 0, 0, -128, -38, -60, 9, -128, -38, -60, 9, 0] as byte[] |
| 111 | + byte[] actuals = writer.writeBytes(gc) |
| 112 | + assertArrayEquals(expecteds, actuals) |
| 113 | + } |
| 114 | + |
| 115 | +} |
0 commit comments