namespace STVrogue.TestInfrastructure
{
///
/// NOTE: This is for Part-2 of the project.
///
///
/// A GamePlay represents a recorded run of a game, which can be replayed
/// again to check some correctness property. The method
/// runs a replay, and as it goes checks the property you give to it, whether
/// the property is satisfied by the run, or violated.
///
/// Being an interface, here we only define
/// the signature of the methods relevant for doing a replay. To actually do a replay
/// you need to implement this interface.
/// The class has been designed to implement
/// this interface.
///
///
///
/// The type of the state of the game
/// whose runs we want to replay.
///
public interface GamePlay
{
///
/// Reset the recorded game-play.
///
/// NOTE: reset your random generators too, if the replays
/// might call them.
///
public void ResetReplayState();
///
/// Return the id/name of this gameplay.
///
public string ReplayId();
///
/// Replay this recorded gameplay to check the given correctness property.
/// It returns Valid if the gameplay satisfied the property, or Invalid if the property
/// is violated.
/// It returns Inconclusive if neither Valid nor Invalid can be concluded.
///
///
/// The correctness property to check. It is exprrssed as
/// an instance of .
///
public Judgement Satisfies(TemporalProperty phi);
}
}