OutlineImpl implements Outline<T> { @Override public Collection<String> propertyNames() { return getProperties().keySet(); } OutlineImpl(T members, boolean camelCased); @Override String camelCasedName(); @Override String camelCasedPluralName(); @Override A getAnnotation(Class<A> annotationClass); @Override boolean hasAnnotation(Class<? extends Annotation> annotationClass); @Override Collection<foundation.stack.datamill.reflection.Method> methods(); @Override Member member(Consumer<T> memberInvoker); @Override String name(); @Override String pluralName(); @Override Property property(Consumer<T> memberInvoker); @Override Collection<String> propertyNames(); @Override Collection<Property> properties(); @Override String snakeCasedName(); @Override String snakeCasedPluralName(); @Override Bean<T> wrap(T instance); @Override Outline<T> withPluralName(String pluralName);  }
@Test public void propertyNamesCamelCased() { assertThat(OutlineBuilder.DEFAULT.defaultCamelCased().build(TestBeanClass.class).propertyNames(), hasItems("readWriteProperty", "readOnlyProperty", "booleanProperty")); assertEquals(0, actualBeanMethodInvocations); }
@Test public void propertyNamesSnakeCased() { assertThat(OutlineBuilder.DEFAULT.defaultSnakeCased().build(TestBeanClass.class).propertyNames(), hasItems("read_write_property", "read_only_property", "boolean_property")); assertEquals(0, actualBeanMethodInvocations); }