/**
 * Copyright (C) 2022 by Martin Robillard. See https://codesample.info/about.html
 */
package e2.chapter9;

import java.util.List;
import java.util.Optional;

/**
 * See section 9.5.
 *
 */
public interface CardSelectionStrategy {
	
	/**
	 * Select an instance of Card from pCards.
	 * 
	 * @param pCards
	 *            list of cards to choose from.
	 * @pre pCards != null && !pCards.isEmpty()
	 * @post If RETURN.isPresent(), pCards.contains(RETURN.get())
	 */
	Optional<Card> select(List<Card> pCards);

	static Optional<Card> first(List<Card> pCards) {
		return Optional.of(pCards.get(0));
	}

	static Optional<Card> lowestBlackCard(List<Card> pCards) { 
		return null; // This is a stub
	}

	 static Optional<Card> highestFaceCard(List<Card> pCards) { 
		return null; // This is a stub
	}
}