package com.codiform.moo; import static org.junit.Assert.assertEquals; import org.junit.Test; public class HierarchyTranslationTest { @Test public void testTranslateIncludesSuperclassFields() { AthleteSource source = new AthleteSource("Geoffrey","Wiseman","Cycling"); AthleteDestination destination = new Moo().translate(source, AthleteDestination.class); assertEquals( "Geoffrey", destination.getFirstName()); assertEquals( "Wiseman", destination.getLastName()); assertEquals( "Cycling", destination.getSport()); } public static class AthleteDestination extends PersonDestination { private String sport; public String getSport() { return sport; } } public static class PersonDestination { private String firstName; private String lastName; public String getFirstName() { return firstName; } public String getLastName() { return lastName; } } public static class AthleteSource extends PersonSource { private String sport; public AthleteSource(String firstName, String lastName, String sport) { super(firstName, lastName); this.sport = sport; } public String getSport() { return sport; } } public static class PersonSource { private String firstName; private String lastName; public PersonSource(String firstName, String lastName) { this.firstName = firstName; this.lastName = lastName; } public String getFirstName() { return firstName; } public String getLastName() { return lastName; } } }