@Test public void testAddAll() { SimpleFeature f = (SimpleFeature) points1; RevFeature feature = RevFeature.builder().build(f); RevFeatureBuilder b = RevFeature.builder(); b.addAll(f.getAttributes()); RevFeature builtWithList = b.build(); assertEquals(feature, builtWithList); b.reset(); b.addAll(f.getAttributes().toArray(new Object[f.getAttributeCount()])); RevFeature builtWithArray = b.build(); assertEquals(feature, builtWithArray); for (int i = 0; i < f.getAttributeCount(); i++) { assertEquals(f.getAttribute(i), builtWithList.getValues().get(i).orNull()); } }
@Test public void testReset() { SimpleFeature f = (SimpleFeature) points1; RevFeature feature = RevFeature.builder().build(f); RevFeatureBuilder b = RevFeature.builder(); b.addValue(1000); b.addValue("str"); b.reset(); for (Property p : f.getProperties()) { b.addProperty(p); } RevFeature built = b.build(); assertEquals(feature, built); for (int i = 0; i < f.getAttributeCount(); i++) { assertEquals(f.getAttribute(i), built.getValues().get(i).orNull()); } }
@Test public void testEnforcesPolygonNormalization() throws Exception { // outer ring in cw order, inner rings in ccw order String normalizedWKT = "POLYGON((0 0, 0 9, 9 9, 9 0, 0 0), (3 3, 6 3, 6 6, 3 6, 3 3))"; // outer ring in ccw order, inner rings in cc order String reversedWKT = "POLYGON((0 0, 9 0, 9 9, 0 9, 0 0), (3 3, 3 6, 6 6, 6 3, 3 3))"; Geometry normalized = new WKTReader().read(normalizedWKT); Geometry reversed = new WKTReader().read(reversedWKT); assertTrue(normalized.equalsExact(normalized.norm())); assertFalse(reversed.equalsExact(reversed.norm())); RevFeatureBuilder builder = RevFeature.builder(); RevFeature norm = builder.addValue(normalized).build(); RevFeature rev = builder.reset().addValue(reversed).build(); Geometry expected = (Geometry) norm.getValues().get(0).get(); Geometry actual = (Geometry) rev.getValues().get(0).get(); assertTrue(normalized.equalsExact(expected)); assertTrue(normalized.equalsExact(actual)); }
RevFeature rev = builder.reset().addValue(reversed).build();