Skip to content

Instantly share code, notes, and snippets.

@jeantil
Created December 18, 2010 08:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save jeantil/746311 to your computer and use it in GitHub Desktop.
Save jeantil/746311 to your computer and use it in GitHub Desktop.
/**
*
*/
package fr.softeam.movie.enums;
/**
* @author Olivier
*
*/
public enum Movie {
INCONNU(""), PULP_FICTION("Pulp Fiction"), SNATCH("Snatch"), ODYSSEE(
"2001 Odyssee de l'espace");
private String titre;
private Movie(String titre) {
this.titre = titre;
}
public String getTitre() {
return titre;
}
public void setTitre(String titre) {
this.titre = titre;
}
}
/**
*
*/
package fr.softeam.movie.impl;
import java.util.Arrays;
import java.util.List;
import fr.softeam.movie.MovieSolver;
import fr.softeam.movie.enums.Movie;
/**
* @author Olivier
*
*/
public class MovieSolverImpl implements MovieSolver {
/**
* {@inheritDoc}
*/
public Movie request(String title) {
List<Movie> listEnumMovies = Arrays.asList(Movie.values());
for (Movie movie : listEnumMovies) {
if (checkOrthographeDifferent(movie.getTitre(), title)) {
return movie;
}else if (checkOrthographeSubstring(movie.getTitre(), title)){
return movie;
}
}
return Movie.INCONNU;
}
private boolean checkOrthographeSubstring(String titreMovie, String request) {
if (request==null) {
return false;
}
boolean isSub = titreMovie.indexOf(request)>0;
boolean superString = request.indexOf(titreMovie)>0;
return (isSub || superString );
}
private boolean checkOrthographeDifferent(String titreMovie, String title) {
if ("snotch".equals(title) && Movie.SNATCH.getTitre().equals(titreMovie)) {
return true;
}
return titreMovie.equalsIgnoreCase(title);
}
}
/**
*
*/
package fr.softeam.movie;
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
import org.junit.Test;
import fr.softeam.movie.enums.Movie;
import fr.softeam.movie.impl.MovieSolverImpl;
/**
* @author Olivier
*
*/
public class MovieSolverTest {
/**
* Test method for
* {@link fr.softeam.movie.MovieSolver#request(java.lang.String)}.
*/
@Test
public void testRequestChaineVide() {
MovieSolver solver = new MovieSolverImpl();
Movie request = solver.request("");
assertEquals(Movie.INCONNU, request);
}
@Test
public void testRequestNull() {
// MovieSolver mock = mock(MovieSolver.class);
// when(mock.request(null)).thenReturn(Movie.INCONNU);
MovieSolver solver = new MovieSolverImpl();
Movie request = solver.request(null);
assertEquals(request, Movie.INCONNU);
}
@Test
public void testRequestBonFilm() {
// MovieSolver mock = mock(MovieSolver.class);
// when(mock.request(null)).thenReturn(Movie.INCONNU);
MovieSolver solver = new MovieSolverImpl();
Movie request = solver.request("Pulp Fiction");
assertEquals(request, Movie.PULP_FICTION);
} @Test
public void testRequestBonFilmCasse() {
// MovieSolver mock = mock(MovieSolver.class);
// when(mock.request(null)).thenReturn(Movie.INCONNU);
MovieSolver solver = new MovieSolverImpl();
Movie request = solver.request("pulp fiction");
assertEquals(request, Movie.PULP_FICTION);
}
@Test
public void testRequestFilmSnatch() {
MovieSolver solver = new MovieSolverImpl();
Movie request = solver.request("snatch");
assertEquals(request, Movie.SNATCH);
}
@Test
public void testRequestFilmOrthographeDiff() {
MovieSolver solver = new MovieSolverImpl();
Movie request = solver.request("snotch");
assertEquals(Movie.SNATCH, request);
}
@Test
public void testRequestFilmSubstring() {
MovieSolver solver = new MovieSolverImpl();
Movie request = solver.request("tch");
assertEquals(Movie.SNATCH, request);
}
@Test
public void testRequestFilmSuperstring() {
MovieSolver solver = new MovieSolverImpl();
Movie request = solver.request("snatche");
assertEquals(Movie.SNATCH, request);
}
//
// @Test
// public void testRequest3() {
// String title = "Space Odysseus";
//
// MovieSolver mock = mock(MovieSolver.class);
// when(mock.request(title)).thenReturn(Movie.ODYSSEE);
// Movie request = mock.request(title);
//
// assertNotNull(request);
// assertEquals(request, Movie.ODYSSEE);
// }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment