/*
* 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.entities;
import static org.drugis.addis.entities.AssertEntityEquals.assertEntityEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.drugis.addis.ExampleData;
import org.drugis.addis.entities.analysis.BenefitRiskAnalysis;
import org.drugis.addis.entities.analysis.MetaBenefitRiskAnalysis;
import org.drugis.addis.entities.analysis.NetworkMetaAnalysis;
import org.drugis.addis.entities.analysis.PairWiseMetaAnalysis;
import org.drugis.addis.entities.analysis.RandomEffectsMetaAnalysis;
import org.drugis.addis.entities.analysis.StudyBenefitRiskAnalysis;
import org.drugis.addis.entities.treatment.TreatmentCategorization;
import org.drugis.addis.entities.treatment.TreatmentDefinition;
import org.drugis.common.JUnitUtil;
import org.junit.Before;
import org.junit.Test;
import com.jgoodies.binding.list.ArrayListModel;
import com.jgoodies.binding.list.ObservableList;
public class DomainTest {
private Domain d_domain;
private Indication d_indication;
@Before
public void setUp() {
d_domain = new DomainImpl();
d_indication = new Indication(0L, "ind");
}
@Test
public void testEmptyDomain() {
assertTrue(d_domain.getEndpoints().isEmpty());
assertTrue(d_domain.getStudies().isEmpty());
assertTrue(d_domain.getDrugs().isEmpty());
assertTrue(d_domain.getIndications().isEmpty());
}
@Test(expected=NullPointerException.class)
public void testAddEndpointNull() {
d_domain.getEndpoints().add(null);
}
@Test(expected=NullPointerException.class)
public void testAddStudyNull() {
d_domain.getStudies().add(null);
}
@Test(expected=NullPointerException.class)
public void testAddDrugNull() {
d_domain.getStudies().add(null);
}
@Test(expected=NullPointerException.class)
public void testAddIndicationNull() {
d_domain.getIndications().add(null);
}
@Test(expected=NullPointerException.class)
public void testAddMetaAnalysisNull() throws NullPointerException, IllegalArgumentException, EntityIdExistsException {
d_domain.getMetaAnalyses().add(null);
}
@Test(expected=NullPointerException.class)
public void testAddVariableNull() {
d_domain.getPopulationCharacteristics().add(null);
}
@Test
public void testAddEndpoint() {
Endpoint e = new Endpoint("e", Endpoint.convertVarType(Variable.Type.RATE));
assertEquals(0, d_domain.getEndpoints().size());
d_domain.getEndpoints().add(e);
assertEquals(1, d_domain.getEndpoints().size());
assertEquals(Collections.singletonList(e), d_domain.getEndpoints());
}
@Test(expected=IllegalArgumentException.class)
public void testAddMetaAnalysisThrowsOnUnknownStudy() throws NullPointerException, IllegalArgumentException, EntityIdExistsException {
List<Study> studies = new ArrayList<Study>();
studies.add(ExampleData.buildStudyChouinard());
studies.add(ExampleData.buildStudyDeWilde());
studies.add(new Study("iiidddd", ExampleData.buildIndicationDepression()));
RandomEffectsMetaAnalysis ma = ExampleData.buildRandomEffectsMetaAnalysis("meta", ExampleData.buildEndpointHamd(), studies, TreatmentDefinition.createTrivial(ExampleData.buildDrugFluoxetine()), TreatmentDefinition.createTrivial(ExampleData.buildDrugParoxetine()));
d_domain.getMetaAnalyses().add(ma);
}
@Test
public void testAddStudy() {
d_domain.getIndications().add(d_indication);
Study s = new Study("X", d_indication);
assertEquals(0, d_domain.getStudies().size());
d_domain.getStudies().add(s);
assertEquals(1, d_domain.getStudies().size());
assertEquals(Collections.singletonList(s), d_domain.getStudies());
}
@Test
public void testAddStudyBenefitRiskAnalysis() throws Exception {
StudyBenefitRiskAnalysis sbr = ExampleData.buildStudyBenefitRiskAnalysis();
ExampleData.initDefaultData(d_domain);
d_domain.getBenefitRiskAnalyses().add(sbr);
assertTrue(d_domain.getBenefitRiskAnalyses().contains(sbr));
assertEntityEquals(sbr, d_domain.getBenefitRiskAnalyses().get(0));
}
@Test
public void testDeleteStudyBenefitRiskAnalysis() throws DependentEntitiesException {
StudyBenefitRiskAnalysis sbr = ExampleData.buildStudyBenefitRiskAnalysis();
ExampleData.initDefaultData(d_domain);
d_domain.getBenefitRiskAnalyses().add(sbr);
assertTrue(d_domain.getBenefitRiskAnalyses().contains(sbr));
assertEntityEquals(sbr, d_domain.getBenefitRiskAnalyses().get(0));
d_domain.deleteEntity(sbr);
assertFalse(d_domain.getBenefitRiskAnalyses().contains(sbr));
}
@Test
public void testAddMetaBenefitRiskAnalysis() throws Exception {
MetaBenefitRiskAnalysis mbr = ExampleData.buildMetaBenefitRiskAnalysis();
ExampleData.initDefaultData(d_domain);
d_domain.getMetaAnalyses().add(ExampleData.buildMetaAnalysisHamd());
d_domain.getMetaAnalyses().add(ExampleData.buildMetaAnalysisConv());
d_domain.getBenefitRiskAnalyses().add(mbr);
assertTrue(d_domain.getBenefitRiskAnalyses().contains(mbr));
assertEntityEquals(mbr, d_domain.getBenefitRiskAnalyses().get(0));
}
@Test
public void testDeleteMetaBenefitRiskAnalysis() throws DependentEntitiesException {
MetaBenefitRiskAnalysis mbr = ExampleData.buildMetaBenefitRiskAnalysis();
ExampleData.initDefaultData(d_domain);
d_domain.getMetaAnalyses().add(ExampleData.buildMetaAnalysisHamd());
d_domain.getMetaAnalyses().add(ExampleData.buildMetaAnalysisConv());
d_domain.getBenefitRiskAnalyses().add(mbr);
assertTrue(d_domain.getBenefitRiskAnalyses().contains(mbr));
assertEntityEquals(mbr, d_domain.getBenefitRiskAnalyses().get(0));
d_domain.deleteEntity(mbr);
assertFalse(d_domain.getBenefitRiskAnalyses().contains(mbr));
}
@Test
public void testAddMetaAnalysis() throws Exception {
assertEquals(0, d_domain.getMetaAnalyses().size());
ExampleData.initDefaultData(d_domain);
RandomEffectsMetaAnalysis s = addMetaAnalysisToDomain();
assertTrue(d_domain.getMetaAnalyses().contains(s));
assertEquals(1, d_domain.getMetaAnalyses().size());
}
private RandomEffectsMetaAnalysis addMetaAnalysisToDomain() throws Exception {
RandomEffectsMetaAnalysis ma = generateMetaAnalysis();
d_domain.getMetaAnalyses().add(ma);
return ma;
}
private NetworkMetaAnalysis addNetworkMetaAnalysisToDomain() throws Exception {
NetworkMetaAnalysis ma = ExampleData.buildNetworkMetaAnalysisHamD();
d_domain.getMetaAnalyses().add(ma);
return ma;
}
private RandomEffectsMetaAnalysis generateMetaAnalysis() {
List<Study> studies = new ArrayList<Study>();
studies.add(ExampleData.buildStudyChouinard());
studies.add(ExampleData.buildStudyDeWilde());
RandomEffectsMetaAnalysis ma = ExampleData.buildRandomEffectsMetaAnalysis("meta", ExampleData.buildEndpointHamd(), studies, TreatmentDefinition.createTrivial(ExampleData.buildDrugFluoxetine()), TreatmentDefinition.createTrivial(ExampleData.buildDrugParoxetine()));
return ma;
}
@Test(expected=IllegalArgumentException.class)
public void testAddMetaAnalysisThrowsOnDifferentIndication() throws NullPointerException, IllegalArgumentException, EntityIdExistsException {
List<Study> studies = new ArrayList<Study>();
studies.add(ExampleData.buildStudyChouinard());
Study study2 = ExampleData.buildStudyDeWilde();
study2.setIndication(ExampleData.buildIndicationChronicHeartFailure());
studies.add(study2);
RandomEffectsMetaAnalysis ma = ExampleData.buildRandomEffectsMetaAnalysis("meta", ExampleData.buildEndpointHamd(), studies, TreatmentDefinition.createTrivial(ExampleData.buildDrugFluoxetine()), TreatmentDefinition.createTrivial(ExampleData.buildDrugParoxetine()));
d_domain.getMetaAnalyses().add(ma);
}
@Test
public void testDeleteMetaAnalysis() throws Exception {
ExampleData.initDefaultData(d_domain);
RandomEffectsMetaAnalysis s = addMetaAnalysisToDomain();
assertTrue(d_domain.getMetaAnalyses().contains(s));
d_domain.deleteEntity(s);
assertFalse(d_domain.getMetaAnalyses().contains(s));
}
@Test
public void testAddDrug() {
Drug d = new Drug("name", "atc");
assertEquals(0, d_domain.getDrugs().size());
d_domain.getDrugs().add(d);
assertEquals(1, d_domain.getDrugs().size());
assertEquals(Collections.singletonList(d), d_domain.getDrugs());
}
@Test
public void testAddIndication() {
Indication i1 = new Indication(310497006L, "Severe depression");
assertEquals(0, d_domain.getIndications().size());
d_domain.getIndications().add(i1);
assertEquals(1, d_domain.getIndications().size());
assertEquals(Collections.singletonList(i1), d_domain.getIndications());
}
@Test
public void testGetStudiesByEndpoint() {
Endpoint e1 = new Endpoint("e1", Endpoint.convertVarType(Variable.Type.RATE));
Endpoint e2 = new Endpoint("e2", Endpoint.convertVarType(Variable.Type.RATE));
Endpoint e3 = new Endpoint("e3", Endpoint.convertVarType(Variable.Type.RATE));
List<Endpoint> l1 = new ArrayList<Endpoint>();
l1.add(e1);
Study s1 = new Study("X", d_indication);
s1.setName("s1");
s1.getEndpoints().clear();
s1.getEndpoints().addAll(Study.wrapVariables(l1));
ArrayList<Endpoint> l2 = new ArrayList<Endpoint>();
l2.add(e2);
l2.add(e1);
Study s2 = new Study("X", d_indication);
s2.setName("s2");
s2.getEndpoints().clear();
s2.getEndpoints().addAll(Study.wrapVariables(l2));
ObservableList<Study> e1Studies = d_domain.getStudies(e1);
ObservableList<Study> e2Studies = d_domain.getStudies(e2);
ObservableList<Study> e3Studies = d_domain.getStudies(e3);
d_domain.getIndications().add(d_indication);
d_domain.getEndpoints().addAll(Arrays.asList(e1, e2, e3));
d_domain.getStudies().add(s1);
d_domain.getStudies().add(s2);
assertEquals(2, e1Studies.size());
assertEquals(1, e2Studies.size());
assertEquals(0, e3Studies.size());
assertTrue(e1Studies.contains(s1));
assertTrue(e1Studies.contains(s2));
assertTrue(e2Studies.contains(s2));
}
@Test
public void testGetStudiesByIndication() {
Endpoint e1 = new Endpoint("e1", Endpoint.convertVarType(Variable.Type.RATE));
Endpoint e2 = new Endpoint("e2", Endpoint.convertVarType(Variable.Type.RATE));
ArrayList<Endpoint> l1 = new ArrayList<Endpoint>();
l1.add(e1);
Indication i1 = new Indication(0L, "");
d_domain.getIndications().add(i1);
Study s1 = new Study("s1", i1);
s1.getEndpoints().clear();
s1.getEndpoints().addAll(Study.wrapVariables(l1));
ArrayList<Endpoint> l2 = new ArrayList<Endpoint>();
l2.add(e2);
l2.add(e1);
Study s2 = new Study("s2", i1);
s2.getEndpoints().clear();
s2.getEndpoints().addAll(Study.wrapVariables(l2));
d_domain.getEndpoints().addAll(Arrays.asList(e1, e2));
d_domain.getStudies().add(s1);
d_domain.getStudies().add(s2);
Indication i2 = new Indication(007L,"This indication does not exist.");
d_domain.getIndications().add(i2);
ObservableList<Study> studies = d_domain.getStudies(i1);
assertEquals(2, studies.size());
assertEquals(0, d_domain.getStudies(i2).size());
assertTrue(studies.contains(s1));
assertTrue(studies.contains(s2));
Study s3 = new Study("s3", i1);
s3.getEndpoints().clear();
s3.getEndpoints().addAll(Study.wrapVariables(l2));
d_domain.getStudies().add(s3);
assertTrue(studies.contains(s3));
}
@Test
public void testGetStudiesByDrug() {
Drug d1 = new Drug("drug1", "atccode1");
Drug d2 = new Drug("drug2", "atccode2");
Drug d3 = new Drug("drug3", "atccode3");
Endpoint e = new Endpoint("Death", Endpoint.convertVarType(Variable.Type.RATE));
Study s1 = new Study("s1", d_indication);
ExampleData.addDefaultEpochs(s1);
s1.getEndpoints().clear();
s1.getEndpoints().addAll(Study.wrapVariables(Collections.singletonList(e)));
Arm g1 = s1.createAndAddArm("g1", 100, d1, new FixedDose(1.0, DoseUnit.createMilliGramsPerDay()));
BasicMeasurement m1 = new BasicRateMeasurement(10, g1.getSize());
ExampleData.addDefaultMeasurementMoments(s1);
s1.setMeasurement(s1.findStudyOutcomeMeasure(e), g1, m1);
d_domain.getIndications().add(d_indication);
Indication indic2 = new Indication(1L, "");
d_domain.getIndications().add(indic2);
Study s2 = new Study("s2", indic2);
ExampleData.addDefaultEpochs(s2);
s2.getEndpoints().clear();
s2.getEndpoints().addAll(Study.wrapVariables(Collections.singletonList(e)));
Arm g2 = s2.createAndAddArm("g2", 250, d1, new FixedDose(5.0, DoseUnit.createMilliGramsPerDay()));
Arm g3 = s2.createAndAddArm("g3", 250, d2, new FixedDose(5.0, DoseUnit.createMilliGramsPerDay()));
BasicMeasurement m2 = new BasicRateMeasurement(10, g2.getSize());
BasicMeasurement m3 = new BasicRateMeasurement(10, g3.getSize());
ExampleData.addDefaultMeasurementMoments(s2);
s2.setMeasurement(s2.findStudyOutcomeMeasure(e), g2, m2);
s2.setMeasurement(s2.findStudyOutcomeMeasure(e), g3, m3);
ObservableList<Study> d1Studies = d_domain.getStudies(d1);
ObservableList<Study> d2Studies = d_domain.getStudies(d2);
ObservableList<Study> d3Studies = d_domain.getStudies(d3);
d_domain.getEndpoints().add(e);
d_domain.getDrugs().addAll(Arrays.asList(d1, d2, d3));
d_domain.getStudies().add(s1);
d_domain.getStudies().add(s2);
assertEquals(2, d1Studies.size());
assertEquals(1, d2Studies.size());
assertEquals(0, d3Studies.size());
assertTrue(d1Studies.contains(s1));
assertTrue(d1Studies.contains(s2));
assertTrue(d2Studies.contains(s2));
}
@Test
public void testGetStudies() {
Drug d1 = new Drug("drug1", "atccode1");
Drug d2 = new Drug("drug2", "atccode2");
Endpoint e = new Endpoint("Death", Endpoint.convertVarType(Variable.Type.RATE));
Study s1 = new Study("s1", d_indication);
ExampleData.addDefaultEpochs(s1);
s1.getEndpoints().clear();
s1.getEndpoints().addAll(Study.wrapVariables(Collections.singletonList(e)));
Arm g1 = s1.createAndAddArm("g1", 100, d1, new FixedDose(1.0, DoseUnit.createMilliGramsPerDay()));
BasicMeasurement m1 = new BasicRateMeasurement(10, g1.getSize());
ExampleData.addDefaultMeasurementMoments(s1);
s1.setMeasurement(s1.findStudyOutcomeMeasure(e), g1, m1);
d_domain.getIndications().add(d_indication);
Indication indic2 = new Indication(1L, "");
d_domain.getIndications().add(indic2);
Study s2 = new Study("s2", indic2);
ExampleData.addDefaultEpochs(s2);
s2.getEndpoints().clear();
s2.getEndpoints().addAll(Study.wrapVariables(Collections.singletonList(e)));
Arm g2 = s2.createAndAddArm("g2", 250, d1, new FixedDose(5.0, DoseUnit.createMilliGramsPerDay()));
Arm g3 = s2.createAndAddArm("g3", 250, d2, new FixedDose(5.0, DoseUnit.createMilliGramsPerDay()));
BasicMeasurement m2 = new BasicRateMeasurement(10, g2.getSize());
BasicMeasurement m3 = new BasicRateMeasurement(10, g3.getSize());
ExampleData.addDefaultMeasurementMoments(s1);
s2.setMeasurement(s2.findStudyOutcomeMeasure(e), g2, m2);
s2.setMeasurement(s2.findStudyOutcomeMeasure(e), g3, m3);
d_domain.getEndpoints().add(e);
d_domain.getDrugs().addAll(Arrays.asList(d1, d2));
ObservableList<Study> studies = d_domain.getStudies();
d_domain.getStudies().add(s1);
d_domain.getStudies().add(s2);
assertEquals(2, studies.size());
assertTrue(studies.contains(s1));
assertTrue(studies.contains(s2));
}
@Test
public void testGetCategorization() {
Drug fluox = ExampleData.buildDrugFluoxetine();
TreatmentCategorization cats1 = TreatmentCategorization.createDefault("cats1", fluox, DoseUnit.createMilliGramsPerDay());
Drug parox = ExampleData.buildDrugParoxetine();
TreatmentCategorization cats2 = TreatmentCategorization.createDefault("cats2", parox, DoseUnit.createMilliGramsPerDay());
ObservableList<TreatmentCategorization> cats = d_domain.getTreatmentCategorizations();
cats.add(cats1);
cats.add(cats2);
JUnitUtil.assertAllAndOnly(Collections.singleton(cats1), d_domain.getCategorizations(fluox));
JUnitUtil.assertAllAndOnly(Collections.singleton(cats2), d_domain.getCategorizations(parox));
}
@Test
public void testEquals() {
Domain d1 = new DomainImpl();
Domain d2 = new DomainImpl();
assertEquals(d1, d2);
assertEquals(d1.hashCode(), d2.hashCode());
Endpoint e1 = new Endpoint("e1", Endpoint.convertVarType(Variable.Type.RATE));
Endpoint e2 = new Endpoint("e2", Endpoint.convertVarType(Variable.Type.RATE));
d1.getEndpoints().add(e1);
d1.getEndpoints().add(e2);
d2.getEndpoints().add(e1);
JUnitUtil.assertNotEquals(d1, d2);
d2.getEndpoints().add(e2);
assertEquals(d1, d2);
assertEquals(d1.hashCode(), d2.hashCode());
Drug d = new Drug("d1", "atc");
d1.getDrugs().add(d);
JUnitUtil.assertNotEquals(d1, d2);
d2.getDrugs().add(d);
assertEquals(d1, d2);
assertEquals(d1.hashCode(), d2.hashCode());
d1.getIndications().add(d_indication);
Study s = new Study("s1", d_indication);
d1.getStudies().add(s);
JUnitUtil.assertNotEquals(d1, d2);
d2.getIndications().add(d_indication);
d2.getStudies().add(s);
assertEquals(d1, d2);
assertEquals(d1.hashCode(), d2.hashCode());
}
@Test
public void testDeleteStudy() throws DependentEntitiesException {
Study s = new Study("X", d_indication);
d_domain.getIndications().add(d_indication);
d_domain.getStudies().add(s);
d_domain.deleteEntity(s);
assertTrue(d_domain.getStudies().isEmpty());
}
@Test(expected=DependentEntitiesException.class)
public void testDeleteStudyThrowsCorrectException() throws DependentEntitiesException, NullPointerException, IllegalArgumentException, EntityIdExistsException {
Drug fluox = ExampleData.buildDrugFluoxetine();
Drug parox = ExampleData.buildDrugParoxetine();
Study s1 = new Study("X", d_indication);
ExampleData.addDefaultEpochs(s1);
s1.createAndAddArm("fluox", 23, fluox, new FixedDose(20, DoseUnit.createMilliGramsPerDay()));
s1.createAndAddArm("parox", 23, parox, new FixedDose(20, DoseUnit.createMilliGramsPerDay()));
Study s2 = new Study("Y", d_indication);
ExampleData.addDefaultEpochs(s2);
s2.createAndAddArm("fluox", 23, fluox, new FixedDose(20, DoseUnit.createMilliGramsPerDay()));
s2.createAndAddArm("parox", 23, parox, new FixedDose(20, DoseUnit.createMilliGramsPerDay()));
d_domain.getIndications().add(d_indication);
d_domain.getDrugs().addAll(Arrays.asList(fluox, parox));
d_domain.getStudies().add(s1);
d_domain.getStudies().add(s2);
Endpoint e = new Endpoint("e", Endpoint.convertVarType(Variable.Type.RATE));
d_domain.getEndpoints().add(e);
s1.getEndpoints().add(new StudyOutcomeMeasure<Endpoint>(e));
s2.getEndpoints().add(new StudyOutcomeMeasure<Endpoint>(e));
ArrayList<Study> studies = new ArrayList<Study>(d_domain.getStudies());
RandomEffectsMetaAnalysis ma = ExampleData.buildRandomEffectsMetaAnalysis("meta", e, studies, TreatmentDefinition.createTrivial(fluox), TreatmentDefinition.createTrivial(parox));
d_domain.getMetaAnalyses().add(ma);
d_domain.deleteEntity(s1);
}
@Test
public void testDeleteDrug() throws DependentEntitiesException {
Drug d = new Drug("X", "atc");
d_domain.getDrugs().add(d);
d_domain.deleteEntity(d);
assertTrue(d_domain.getDrugs().isEmpty());
}
@Test(expected=DependentEntitiesException.class)
public void testDeleteDrugThrowsCorrectException() throws DependentEntitiesException {
Study s1 = new Study("X", d_indication);
ExampleData.addDefaultEpochs(s1);
d_domain.getIndications().add(d_indication);
d_domain.getStudies().add(s1);
Drug d = new Drug("d", "atc");
d_domain.getDrugs().add(d);
s1.createAndAddArm("g", 10, d, new FixedDose(10.0, DoseUnit.createMilliGramsPerDay()));
d_domain.deleteEntity(d);
}
@Test
public void testDeleteEndpoint() throws DependentEntitiesException {
Endpoint e = new Endpoint("e", Endpoint.convertVarType(Variable.Type.RATE));
d_domain.getEndpoints().add(e);
d_domain.deleteEntity(e);
assertTrue(d_domain.getEndpoints().isEmpty());
}
@Test(expected=DependentEntitiesException.class)
public void testDeleteEndpointThrowsCorrectException() throws DependentEntitiesException {
Study s1 = new Study("X", d_indication);
d_domain.getIndications().add(d_indication);
d_domain.getStudies().add(s1);
Endpoint e = new Endpoint("e", Endpoint.convertVarType(Variable.Type.RATE));
d_domain.getEndpoints().add(e);
s1.getEndpoints().add(new StudyOutcomeMeasure<Endpoint>(e));
d_domain.deleteEntity(e);
}
@Test
public void testDeleteIndication() throws DependentEntitiesException {
Indication i = new Indication(01L, "i");
d_domain.getIndications().add(i);
d_domain.deleteEntity(i);
assertTrue(d_domain.getIndications().isEmpty());
}
@Test(expected=DependentEntitiesException.class)
public void testDeleteIndicationThrowsCorrectException() throws DependentEntitiesException {
Indication indication = new Indication(5L, "");
Study s1 = new Study("X", indication);
d_domain.getIndications().add(indication);
d_domain.getStudies().add(s1);
d_domain.deleteEntity(indication);
}
@Test
public void testGetVariables() {
PopulationCharacteristic c = new PopulationCharacteristic("x", new CategoricalVariableType(Arrays.asList((new String[]{"x", "y", "z"}))));
d_domain.getPopulationCharacteristics().add(c);
assertEquals(Collections.singletonList(c), d_domain.getPopulationCharacteristics());
}
@Test(expected=NullPointerException.class)
public void testAddAdeNull() {
d_domain.getAdverseEvents().add(null);
}
@Test
public void testAddAde() {
AdverseEvent ade = new AdverseEvent("a", AdverseEvent.convertVarType(Variable.Type.RATE));
assertEquals(0, d_domain.getAdverseEvents().size());
d_domain.getAdverseEvents().add(ade);
assertEquals(1, d_domain.getAdverseEvents().size());
assertEquals(Collections.singletonList(ade), d_domain.getAdverseEvents());
}
@Test
public void testDeleteAde() throws DependentEntitiesException {
AdverseEvent e = new AdverseEvent("e", AdverseEvent.convertVarType(Variable.Type.RATE));
d_domain.getAdverseEvents().add(e);
d_domain.deleteEntity(e);
assertTrue(d_domain.getAdverseEvents().isEmpty());
}
@Test(expected=DependentEntitiesException.class)
public void testDeleteAdeThrowsCorrectException() throws DependentEntitiesException {
Study s1 = new Study("X", d_indication);
d_domain.getIndications().add(d_indication);
d_domain.getStudies().add(s1);
AdverseEvent a = new AdverseEvent("e", AdverseEvent.convertVarType(Variable.Type.RATE));
d_domain.getAdverseEvents().add(a);
s1.getAdverseEvents().add(new StudyOutcomeMeasure<AdverseEvent>(a));
d_domain.deleteEntity(a);
}
@Test
public void testGetCategories() {
assertEquals(11, d_domain.getCategories().size());
List<Class<?>> cats = Arrays.<Class<?>>asList(Unit.class, Indication.class, Drug.class, TreatmentCategorization.class, Endpoint.class, AdverseEvent.class, PopulationCharacteristic.class,
Study.class, PairWiseMetaAnalysis.class, NetworkMetaAnalysis.class, BenefitRiskAnalysis.class);
List<Class<?>> domainCats = new ArrayListModel<Class<?>>();
for (EntityCategory ec : d_domain.getCategories()) {
domainCats.add(ec.getEntityClass());
}
assertEquals(cats, domainCats);
}
@Test
public void testGetCategoryForClass() {
assertEquals(Indication.class, d_domain.getCategory(Indication.class).getEntityClass());
assertEquals(null, d_domain.getCategory(Arm.class));
assertEquals(Drug.class, d_domain.getCategory(Drug.class).getEntityClass());
assertEquals(PairWiseMetaAnalysis.class, d_domain.getCategory(PairWiseMetaAnalysis.class).getEntityClass());
assertEquals(NetworkMetaAnalysis.class, d_domain.getCategory(NetworkMetaAnalysis.class).getEntityClass());
}
@Test
public void testGetCategoryForEntity() {
ExampleData.initDefaultData(d_domain);
assertEquals(Indication.class, d_domain.getCategory(new Indication(13L, "indication")).getEntityClass());
assertEquals(null, d_domain.getCategory(new Arm("arm", 3)));
assertEquals(Drug.class, d_domain.getCategory(new Drug("drug", "")).getEntityClass());
assertEquals(BenefitRiskAnalysis.class,
d_domain.getCategory(ExampleData.buildMetaBenefitRiskAnalysis()).getEntityClass());
}
@Test
public void testGetCategoryContents() {
assertEquals(d_domain.getIndications(), d_domain.getCategoryContents(
d_domain.getCategory(Indication.class)));
assertEquals(d_domain.getDrugs(), d_domain.getCategoryContents(
d_domain.getCategory(Drug.class)));
assertEquals(d_domain.getEndpoints(), d_domain.getCategoryContents(
d_domain.getCategory(Endpoint.class)));
assertEquals(d_domain.getAdverseEvents(), d_domain.getCategoryContents(
d_domain.getCategory(AdverseEvent.class)));
assertEquals(d_domain.getPopulationCharacteristics(), d_domain.getCategoryContents(
d_domain.getCategory(PopulationCharacteristic.class)));
assertEquals(d_domain.getStudies(), d_domain.getCategoryContents(
d_domain.getCategory(Study.class)));
assertEquals(d_domain.getPairWiseMetaAnalyses(), d_domain.getCategoryContents(
d_domain.getCategory(PairWiseMetaAnalysis.class)));
assertEquals(d_domain.getBenefitRiskAnalyses(), d_domain.getCategoryContents(
d_domain.getCategory(BenefitRiskAnalysis.class)));
}
@Test
public void testGetCategoryContentsModel() {
assertSame(d_domain.getIndications(), d_domain.getCategoryContents(d_domain.getCategory(Indication.class)));
assertSame(d_domain.getDrugs(), d_domain.getCategoryContents(d_domain.getCategory(Drug.class)));
assertSame(d_domain.getEndpoints(), d_domain.getCategoryContents(d_domain.getCategory(Endpoint.class)));
}
@Test
public void testGetPairWiseMetaAnalyses() throws Exception {
ExampleData.initDefaultData(d_domain);
assertEquals(Collections.emptyList(), d_domain.getPairWiseMetaAnalyses());
PairWiseMetaAnalysis anl = addMetaAnalysisToDomain();
assertEquals(Collections.singletonList(anl), d_domain.getPairWiseMetaAnalyses());
d_domain.getAdverseEvents().add(ExampleData.buildAdverseEventSexualDysfunction());
d_domain.getStudies().add(ExampleData.buildStudyFava2002());
addNetworkMetaAnalysisToDomain();
assertEquals(Collections.singletonList(anl), d_domain.getPairWiseMetaAnalyses());
}
@Test
public void testGetNetworkMetaAnalyses() throws Exception {
ExampleData.initDefaultData(d_domain);
assertEquals(Collections.emptyList(), d_domain.getNetworkMetaAnalyses());
d_domain.getAdverseEvents().add(ExampleData.buildAdverseEventSexualDysfunction());
d_domain.getStudies().add(ExampleData.buildStudyFava2002());
NetworkMetaAnalysis anl = addNetworkMetaAnalysisToDomain();
assertEquals(Collections.singletonList(anl), d_domain.getNetworkMetaAnalyses());
addMetaAnalysisToDomain();
assertEquals(Collections.singletonList(anl), d_domain.getNetworkMetaAnalyses());
}
}