package musicxmltestsuite.tests.utils; import com.xenoage.zong.core.music.Part; import com.xenoage.zong.core.music.StavesList; import com.xenoage.zong.core.music.group.BarlineGroup; import com.xenoage.zong.core.music.group.BracketGroup; import java.util.List; import java.util.function.Function; import static com.xenoage.utils.kernel.Range.range; import static org.junit.Assert.*; /** * Tests on {@link StavesList} data. * * @author Andreas Wenger */ public class StavesListTest { public static void checkPartNames(StavesList stavesList, String... expectedPartNames) { checkPartProperty(stavesList, expectedPartNames, Part::getName); } public static void checkPartAbbreviations(StavesList stavesList, String... expectedPartAbbreviations) { checkPartProperty(stavesList, expectedPartAbbreviations, Part::getAbbreviation); } private static void checkPartProperty(StavesList stavesList, String[] expectedValues, Function<Part, String> property) { List<Part> parts = stavesList.getParts(); assertEquals(expectedValues.length, parts.size()); for (int i : range(parts)) { assertEquals(expectedValues[i], property.apply(parts.get(i))); } } public static void checkBracketGroups(StavesList stavesList, BracketGroup... expectedBracketGroups) { List<BracketGroup> groups = stavesList.getBracketGroups(); for (BracketGroup expectedGroup : expectedBracketGroups) assertContains(groups, expectedGroup); assertEquals(expectedBracketGroups.length, groups.size()); } public static void checkBarlineGroups(StavesList stavesList, BarlineGroup... expectedBarlineGroups) { List<BarlineGroup> groups = stavesList.getBarlineGroups(); for (BarlineGroup expectedGroup : expectedBarlineGroups) assertContains(groups, expectedGroup); assertEquals(expectedBarlineGroups.length, groups.size()); } private static <T> void assertContains(List<T> list, T expectedElement) { if (false == list.contains(expectedElement)) fail("Expected group not found: " + expectedElement); } }