/* * 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.analysis; import static org.junit.Assert.assertEquals; import java.util.Arrays; import java.util.HashMap; import java.util.Map; import org.apache.commons.collections15.Transformer; import org.drugis.addis.ExampleData; import org.drugis.addis.entities.Arm; import org.drugis.addis.entities.Drug; import org.drugis.addis.entities.DrugTreatment; import org.drugis.addis.entities.Study; import org.drugis.addis.entities.StudyActivity; import org.drugis.addis.entities.TreatmentActivity; import org.drugis.addis.entities.treatment.Category; import org.drugis.addis.entities.treatment.TreatmentDefinition; import org.junit.Before; import org.junit.Test; public class NetworkBuilderFactoryTest { private Transformer<TreatmentDefinition, String> d_transformer; @Before public void setUp() { d_transformer = new NetworkBuilderFactory.NameTransformer(); } @Test public void testTransformCombinationTreatment() { TreatmentDefinition treatment = TreatmentDefinition.createTrivial( Arrays.asList(ExampleData.buildDrugCandesartan(), ExampleData.buildDrugFluoxetine())); assertEquals("Candesartan_Fluoxetine", d_transformer.transform(treatment)); } @Test public void testTransformTreatmentWithIllegalCharacters() { TreatmentDefinition treatment = TreatmentDefinition.createTrivial(Arrays.asList(new Drug("My Drug!", "3"), ExampleData.buildDrugFluoxetine())); assertEquals("Fluoxetine_MyDrug", d_transformer.transform(treatment)); } @Test public void testTransformTreatmentDuplicateCleanName() { TreatmentDefinition treatment1 = TreatmentDefinition.createTrivial(new Drug("My Drug!", "3")); TreatmentDefinition treatment2 = TreatmentDefinition.createTrivial(new Drug("My!Drug", "4")); assertEquals("MyDrug", d_transformer.transform(treatment1)); assertEquals("MyDrug2", d_transformer.transform(treatment2)); } @Test public void testTransformWithCategory() { Category cat = Category.createTrivial(new Drug("My Drug!", "3")); cat.setName("AA"); TreatmentDefinition treatment1 = new TreatmentDefinition(cat); assertEquals("MyDrugAA", d_transformer.transform(treatment1)); } @Test public void testTransformWithCategories() { Category cat1 = Category.createTrivial(new Drug("My Drug!", "1")); Category cat2 = Category.createTrivial(new Drug("My Poison!", "2")); cat1.setName("SomeCat!!!"); cat2.setName("Garfield Poison"); TreatmentDefinition treatment1 = new TreatmentDefinition(Arrays.asList(cat1, cat2)); assertEquals("MyDrugSomeCat_MyPoisonGarfieldPoison", d_transformer.transform(treatment1)); } @Test public void testBuilderUsesTransform() { Study study = ExampleData.buildStudyMcMurray().clone(); DrugTreatment ta1 = new DrugTreatment(ExampleData.buildDrugCandesartan(), null); DrugTreatment ta2 = new DrugTreatment(ExampleData.buildDrugFluoxetine(), null); StudyActivity activity = new StudyActivity("DRUGS", new TreatmentActivity(Arrays.asList(ta1, ta2))); study.getStudyActivities().add(activity); study.setStudyActivityAt(study.getArms().get(0), study.findTreatmentEpoch(), activity); Map<Study, Map<TreatmentDefinition, Arm>> armMap = new HashMap<Study, Map<TreatmentDefinition, Arm>>(); Map<TreatmentDefinition, Arm> drugArmMap = new HashMap<TreatmentDefinition, Arm>(); for (Arm a : study.getArms()) { drugArmMap.put(study.getTreatmentDefinition(a), a); } armMap.put(study, drugArmMap); NetworkMetaAnalysis nma = new NetworkMetaAnalysis("don'tcare", study.getIndication(), study.getOutcomeMeasures().get(0), armMap); TreatmentDefinition treatment = TreatmentDefinition.createTrivial(Arrays.asList(ExampleData.buildDrugCandesartan(), ExampleData.buildDrugFluoxetine())); assertEquals("Candesartan_Fluoxetine", nma.getBuilder().getTreatmentMap().get(treatment).getId()); assertEquals("Candesartan + Fluoxetine", nma.getBuilder().getTreatmentMap().get(treatment).getDescription()); } }