package hudson.plugins.tfs; import static org.junit.Assert.fail; import java.util.ArrayList; import java.util.List; import org.junit.Test; import org.kohsuke.stapler.export.Model; import org.kohsuke.stapler.export.ModelBuilder; import org.kohsuke.stapler.export.Property; public class TFSRevisionStateTest { @Test public void exportedProperties() { ModelBuilder mb = new ModelBuilder(); Model<TFSRevisionState> m = mb.get(TFSRevisionState.class); List<Property> actual = m.getProperties(); List<String> actualPropertyNames = new ArrayList<String>(); for (Property p : actual) { actualPropertyNames.add(p.name); } assertCollectionContains(actualPropertyNames, "changesetVersion", "projectPath"); } private static final String NewLine = System.getProperty("line.separator"); private static <T> void assertCollectionContains(Iterable<T> actual, T... expected) { ArrayList<T> expectedItems = new ArrayList<T>(expected.length); for (T t : expected) { expectedItems.add(t); } ArrayList<T> extraItems = new ArrayList<T>(); for (T a : actual) { if (expectedItems.contains(a)) { expectedItems.remove(a); } else { extraItems.add(a); } } StringBuilder sb = null; if (expectedItems.size() > 0) { sb = new StringBuilder(); sb.append("Expected the following item"); if (expectedItems.size() != 1) { sb.append('s'); } sb.append(':').append(NewLine); for (T t : expectedItems) { sb.append('<').append(t).append('>').append(NewLine); } } if (extraItems.size() > 0) { if (sb == null) { sb = new StringBuilder(); } sb.append("Did not expect the following item"); if (extraItems.size() != 1) { sb.append('s'); } sb.append(':').append(NewLine); for (T t : extraItems) { sb.append('<').append(t).append('>').append(NewLine); } } if (sb != null){ fail(sb.toString()); } } }