### Question:
ChordStructureGenerator implements IChordStructureGenerator { public List<ProgressionType> getProgressionTypes(QueueItem queueItem) { List<ProgressionType> progressionTypes = new ArrayList<ProgressionType>(); for (ProgressionUnit progressionUnit : queueItem.getProgression().getStructure()) { if (!progressionTypes.contains(progressionUnit.getType())) { progressionTypes.add(progressionUnit.getType()); } } return progressionTypes; }  List<ProgressionType> getProgressionTypes(QueueItem queueItem); QueueState set(QueueState queueState); boolean setChordThree(List<ProgressionUnit> progressionUnits, List<HiveChord> hiveChordInDatabase); boolean setChordTwo(List<HiveChord> hiveChordInDatabase, List<ProgressionUnit> progressionUnits); boolean setChordFour(List<HiveChord> hiveChordInDatabase, List<ProgressionUnit> progressionUnits); boolean set2nd3rd4thChordsFor4BarLoops(List<ProgressionUnit> progressionUnits, HashMap<ProgressionType, List<HiveChord>> progressionTypeListHashMap); boolean setFirstChordInProgressions(List<ProgressionUnit> progressionUnits, HashMap<ProgressionType, HiveChord> typeAndFirstChord);  }### Answer:
@Test public void ShouldGetProgressionTypes() { setupTest(); List<ProgressionUnit.ProgressionType> progressionTypes = chordStructureGenerator.getProgressionTypes(mQueueItem); List<ProgressionUnit.ProgressionType> expected = new ArrayList<ProgressionUnit.ProgressionType>(); expected.add(ProgressionUnit.ProgressionType.VERSE); expected.add(ProgressionUnit.ProgressionType.CHORUS); expected.add(ProgressionUnit.ProgressionType.BRIDGE); assertEquals(expected, progressionTypes); }