Skip to content

Instantly share code, notes, and snippets.

@takai
Created August 4, 2011 21:45
Show Gist options
  • Save takai/1126371 to your computer and use it in GitHub Desktop.
Save takai/1126371 to your computer and use it in GitHub Desktop.
package app;
import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;
import static org.junit.Assume.*;
import org.junit.experimental.theories.DataPoints;
import org.junit.experimental.theories.Theories;
import org.junit.experimental.theories.Theory;
import org.junit.runner.RunWith;
enum Gender {
MALE, FEMALE
}
enum Category {
C, T, F1, F2, F3, M1, M2, M3
}
class Audience {
private final Gender gender;
private final int age;
public Audience(Gender gender, int age) {
this.gender = gender;
this.age = age;
}
public Category getCategory() {
if (age < 13) {
return Category.C;
} else if (age < 20) {
return Category.T;
} else if (age < 35) {
return gender == Gender.MALE ? Category.M1 : Category.F1;
} else if (age < 50) {
return gender == Gender.MALE ? Category.M2 : Category.F2;
} else {
return gender == Gender.MALE ? Category.M3 : Category.F3;
}
}
}
@RunWith(Theories.class)
public class AudienceTest {
@DataPoints
public static int[] AGES = { 0, 12, 13, 19, 20, 34, 35, 49, 50, 60 };
@DataPoints
public static Gender[] GENDERS = { Gender.MALE, Gender.FEMALE };
@Theory
public void categoryIsC(Gender gender, int age) throws Exception {
assumeTrue(age < 13);
Audience audience = new Audience(gender, age);
assertThat(audience.getCategory(), is(Category.C));
}
@Theory
public void categoryIsT(Gender gender, int age) throws Exception {
assumeTrue(12 < age && age < 20);
Audience audience = new Audience(gender, age);
assertThat(audience.getCategory(), is(Category.T));
}
@Theory
public void categoryIsM1(Gender gender, int age) throws Exception {
assumeThat(gender, is(Gender.MALE));
assumeTrue(19 < age && age < 35);
Audience audience = new Audience(gender, age);
assertThat(audience.getCategory(), is(Category.M1));
}
@Theory
public void categoryIsF1(Gender gender, int age) throws Exception {
assumeThat(gender, is(Gender.FEMALE));
assumeTrue(19 < age && age < 35);
Audience audience = new Audience(gender, age);
assertThat(audience.getCategory(), is(Category.F1));
}
@Theory
public void categoryIsM2(Gender gender, int age) throws Exception {
assumeThat(gender, is(Gender.MALE));
assumeTrue(34 < age && age < 50);
Audience audience = new Audience(gender, age);
assertThat(audience.getCategory(), is(Category.M2));
}
@Theory
public void categoryIsF2(Gender gender, int age) throws Exception {
assumeThat(gender, is(Gender.FEMALE));
assumeTrue(34 < age && age < 50);
Audience audience = new Audience(gender, age);
assertThat(audience.getCategory(), is(Category.F2));
}
@Theory
public void categoryIsM3(Gender gender, int age) throws Exception {
assumeThat(gender, is(Gender.MALE));
assumeTrue(49 < age);
Audience audience = new Audience(gender, age);
assertThat(audience.getCategory(), is(Category.M3));
}
@Theory
public void categoryIsF3(Gender gender, int age) throws Exception {
assumeThat(gender, is(Gender.FEMALE));
assumeTrue(49 < age);
Audience audience = new Audience(gender, age);
assertThat(audience.getCategory(), is(Category.F3));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment