package de.randi2.core.unit.randomization;
import static de.randi2.core.unit.randomization.RandomizationHelper.randomize;
import static de.randi2.utility.IntegerIterator.upto;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import de.randi2.model.TreatmentArm;
import de.randi2.model.Trial;
import de.randi2.model.TrialSubject;
import de.randi2.model.randomization.TruncatedBinomialDesignConfig;
public class TruncatedBinomialDesignTest {
private Trial trial;
private TrialSubject s;
private TruncatedBinomialDesignConfig conf;
@Before
public void setUp() {
trial = new Trial();
conf = new TruncatedBinomialDesignConfig();
trial.setRandomizationConfiguration(conf);
}
@Test
public void testOneSubjectAllocation() {
RandomizationHelper.addArms(trial, 10, 10);
s = new TrialSubject();
randomize(trial,s);
assertNotNull(s.getArm());
assertTrue(trial.getSubjects().contains(s));
}
@Test
public void testFourtySubjectAllocations() {
RandomizationHelper.addArms(trial, 20, 20);
s = new TrialSubject();
for (int i : upto(40)) {
randomize(trial,s);
}
List<TreatmentArm> arms = new ArrayList<TreatmentArm>(trial.getTreatmentArms());;
assertEquals(40, trial.getSubjects().size());
assertEquals(20, arms.get(0).getCurrentSubjectsAmount());
assertEquals(20, arms.get(1).getCurrentSubjectsAmount());
}
@Test
public void testSubjectAllocations1() {
RandomizationHelper.addArms(trial, 100, 100);
s = new TrialSubject();
List<TreatmentArm> arms = new ArrayList<TreatmentArm>(trial.getTreatmentArms());;
for (int i : upto(200)) {
randomize(trial,s);
if(arms.get(0).getCurrentSubjectsAmount() == 100 && !s.getArm().getName().equals(arms.get(0).getName())){
assertEquals(s.getArm().getName(), arms.get(1).getName());
}
if(arms.get(1).getCurrentSubjectsAmount() == 100 && !s.getArm().getName().equals(arms.get(1).getName())){
assertEquals(s.getArm().getName(), arms.get(0).getName());
}
}
assertEquals(200, trial.getSubjects().size());
assertEquals(100, arms.get(0).getCurrentSubjectsAmount());
assertEquals(100, arms.get(1).getCurrentSubjectsAmount());
}
}