/*
* This file is part of ADDIS (Aggregate Data Drug Information System).
* ADDIS is distributed from http://drugis.org/.
* Copyright © 2009 Gert van Valkenhoef, Tommi Tervonen.
* Copyright © 2010 Gert van Valkenhoef, Tommi Tervonen, Tijs Zwinkels,
* Maarten Jacobs, Hanno Koeslag, Florin Schimbinschi, Ahmad Kamal, Daniel
* Reid.
* Copyright © 2011 Gert van Valkenhoef, Ahmad Kamal, Daniel Reid, Florin
* Schimbinschi.
* Copyright © 2012 Gert van Valkenhoef, Daniel Reid, Joël Kuiper, Wouter
* Reckman.
* Copyright © 2013 Gert van Valkenhoef, Joël Kuiper.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.drugis.addis.presentation;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import org.drugis.addis.ExampleData;
import org.drugis.addis.entities.Domain;
import org.drugis.addis.entities.DomainImpl;
import org.drugis.addis.entities.DoseUnit;
import org.drugis.addis.entities.Study;
import org.drugis.addis.entities.treatment.Category;
import org.drugis.addis.entities.treatment.TreatmentCategorization;
import org.drugis.addis.entities.treatment.LeafNode;
import org.drugis.addis.entities.treatment.RangeEdge;
import org.drugis.addis.presentation.wizard.TreatmentCategorizationWizardPresentation;
import org.junit.Before;
import org.junit.Test;
import com.jgoodies.binding.list.ObservableList;
import edu.uci.ics.jung.graph.util.Pair;
public class TreatmentCategorizationPresentationTest {
private TreatmentCategorization d_tc;
private TreatmentCategorizationPresentation d_pm;
private Domain d_domain;
private TreatmentCategorizationWizardPresentation d_wpm;
@Before
public void setUp() {
d_tc = TreatmentCategorization.createDefault("HD/LD", ExampleData.buildDrugFluoxetine(), DoseUnit.createMilliGramsPerDay());
d_domain = new DomainImpl();
ExampleData.initDefaultData(d_domain);
d_wpm = new TreatmentCategorizationWizardPresentation(d_tc, d_domain);
}
@Test
public void testIncludedStudies() {
final Study studyBennie = ExampleData.buildStudyBennie(); //dose 20
final Study studyChouinard = ExampleData.buildStudyChouinard(); //dose 27.5
final Study studyFava2002 = ExampleData.buildStudyFava2002(); //dose 30
final Category foo = new Category(d_tc, "foo");
final Category bar = new Category(d_tc, "bar");
final Category baz = new Category(d_tc, "baz");
// NOTE: studies Bennie and Chouinard have already been added by default, so just add Fava2002 and its dependencies here
d_domain.getAdverseEvents().add(ExampleData.buildAdverseEventSexualDysfunction());
d_domain.getStudies().add(studyFava2002);
d_wpm.getCategories().add(foo);
d_wpm.getCategories().add(bar);
d_wpm.getCategories().add(baz);
d_wpm.getModelForFixedDose().setValue(d_wpm.getFixedRangeNode());
d_wpm.addDefaultRangeEdge(d_wpm.getFixedRangeNode());
Pair<RangeEdge> splits = d_wpm.splitRange((RangeEdge) d_wpm.getOutEdges(d_wpm.getFixedRangeNode()).get(0), 21.0, false);
d_wpm.getModelForEdge(splits.getFirst()).setValue(new LeafNode(foo));
d_wpm.getModelForEdge(splits.getSecond()).setValue(new LeafNode(bar));
d_pm = new TreatmentCategorizationPresentation(d_tc, d_domain);
final ObservableList<Study> fooStudies = d_pm.getCategorizedStudyList(foo).getIncludedStudies();
final ObservableList<Study> barStudies = d_pm.getCategorizedStudyList(bar).getIncludedStudies();
final ObservableList<Study> bazStudies = d_pm.getCategorizedStudyList(baz).getIncludedStudies();
assertTrue(fooStudies.contains(studyBennie));
assertFalse(fooStudies.contains(studyChouinard));
assertFalse(fooStudies.contains(studyFava2002));
assertTrue(barStudies.contains(studyChouinard));
assertTrue(barStudies.contains(studyFava2002));
assertTrue(bazStudies.isEmpty());
}
}