/*
* 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.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import org.drugis.addis.ExampleData;
import org.drugis.addis.entities.Arm;
import org.drugis.addis.entities.Domain;
import org.drugis.addis.entities.DomainImpl;
import org.drugis.addis.entities.Endpoint;
import org.drugis.addis.entities.Measurement;
import org.drugis.addis.entities.Study;
import org.drugis.addis.entities.relativeeffect.BasicRelativeEffect;
import org.drugis.addis.entities.relativeeffect.RelativeEffect;
import org.junit.Test;
import com.jgoodies.binding.PresentationModel;
public abstract class RelativeEffectTableModelBaseTest {
protected Study d_standardStudy;
protected Study d_threeArmStudy;
protected AbstractRelativeEffectTableModel d_stdModel;
protected RelativeEffectTableModel d_threeArmModel;
protected Endpoint d_endpoint;
protected PresentationModelFactory d_pmf;
protected Class<? extends RelativeEffect<?>> d_relativeEffectClass;
@Test
public void testGetColumnCount() {
assertEquals(d_standardStudy.getArms().size(), d_stdModel.getColumnCount());
assertEquals(d_threeArmStudy.getArms().size(), d_threeArmModel.getColumnCount());
}
@Test
public void testGetRowCount() {
assertEquals(d_standardStudy.getArms().size(), d_stdModel.getRowCount());
assertEquals(d_threeArmStudy.getArms().size(), d_threeArmModel.getRowCount());
}
@SuppressWarnings("unchecked")
@Test
public void testGetValueAtUpperRightPart() {
assertEquals(3, d_threeArmStudy.getArms().size());
Arm pg0 = d_threeArmStudy.getArms().get(0);
Arm pg1 = d_threeArmStudy.getArms().get(1);
Arm pg2 = d_threeArmStudy.getArms().get(2);
PresentationModel<BasicRelativeEffect<?>> val01 = (PresentationModel<BasicRelativeEffect<?>>)d_threeArmModel.getValueAt(0, 1);
assertTrue(d_relativeEffectClass.isInstance(val01.getBean()));
assertEquals(d_threeArmStudy.getMeasurement(d_endpoint, pg0), val01.getBean().getBaseline());
assertEquals(d_threeArmStudy.getMeasurement(d_endpoint, pg1), val01.getBean().getSubject());
PresentationModel<BasicRelativeEffect<?>> val12 = (PresentationModel<BasicRelativeEffect<?>>)d_threeArmModel.getValueAt(1, 2);
assertTrue(d_relativeEffectClass.isInstance(val12.getBean()));
assertEquals(d_threeArmStudy.getMeasurement(d_endpoint, pg1), val12.getBean().getBaseline());
assertEquals(d_threeArmStudy.getMeasurement(d_endpoint, pg2), val12.getBean().getSubject());
}
@SuppressWarnings("unchecked")
@Test
public void testGetValueAtLowerLeftPart() {
assertEquals(3, d_threeArmStudy.getArms().size());
Arm pg0 = d_threeArmStudy.getArms().get(0);
Arm pg1 = d_threeArmStudy.getArms().get(1);
Arm pg2 = d_threeArmStudy.getArms().get(2);
PresentationModel<BasicRelativeEffect<?>> val20 = (PresentationModel<BasicRelativeEffect<?>>)d_threeArmModel.getValueAt(2, 0);
assertTrue(d_relativeEffectClass.isInstance(val20.getBean()));
assertEquals(d_threeArmStudy.getMeasurement(d_endpoint, pg2), val20.getBean().getBaseline());
assertEquals(d_threeArmStudy.getMeasurement(d_endpoint, pg0), val20.getBean().getSubject());
PresentationModel<BasicRelativeEffect<?>> val21 = (PresentationModel<BasicRelativeEffect<?>>)d_threeArmModel.getValueAt(2, 1);
assertTrue(d_relativeEffectClass.isInstance(val21.getBean()));
assertEquals(d_threeArmStudy.getMeasurement(d_endpoint, pg2), val21.getBean().getBaseline());
assertEquals(d_threeArmStudy.getMeasurement(d_endpoint, pg1), val21.getBean().getSubject());
}
@SuppressWarnings("rawtypes")
@Test
public void testGetValueAtDiagonal() {
for (int i = 0; i < d_standardStudy.getArms().size(); ++i) {
Object val = d_stdModel.getValueAt(i, i);
assertTrue("Instance of PresentationModel", val instanceof PresentationModel);
assertEquals(d_standardStudy.getArms().get(i), ((PresentationModel) val).getBean());
}
for (int i = 0; i < d_threeArmStudy.getArms().size(); ++i) {
Object val = d_threeArmModel.getValueAt(i, i);
assertTrue("Instance of PresentationModel", val instanceof PresentationModel);
assertEquals(d_threeArmStudy.getArms().get(i), ((PresentationModel) val).getBean());
}
}
@Test
public void testGetDescriptionAtDiagonal() {
assertNull(d_threeArmModel.getDescriptionAt(1, 1));
}
@Test
public void testGetDescriptionAt() {
LabeledPresentation pg0 = d_pmf.getLabeledModel(d_threeArmStudy.getArms().get(0));
LabeledPresentation pg1 = d_pmf.getLabeledModel(d_threeArmStudy.getArms().get(1));
String expected = "\"" + pg1.getLabelModel().getValue() + "\" relative to \"" +
pg0.getLabelModel().getValue() + "\"";
assertEquals(expected, d_threeArmModel.getDescriptionAt(0, 1));
}
@Test
public void testGetDescription() {
String description = d_threeArmModel.getTitle() + " for \"" + d_threeArmStudy.getName()
+ "\" on Endpoint \"" + d_endpoint.getName() + "\"";
assertEquals(description, d_threeArmModel.getDescription());
}
@Test
public void testGetPlotPresentation() {
ForestPlotPresentation pm = d_stdModel.getPlotPresentation(1, 0);
assertEquals(d_relativeEffectClass, pm.getRelativeEffectAt(0).getClass());
assertEquals(d_standardStudy.toString(), pm.getStudyLabelAt(0));
assertEquals(1, pm.getNumRelativeEffects());
Measurement bl = (Measurement) ((BasicRelativeEffect<?>) pm.getRelativeEffectAt(0)).getBaseline();
assertEquals(d_standardStudy.getArms().get(1).getSize(),
bl.getSampleSize());
Measurement subj = (Measurement) ((BasicRelativeEffect<?>) pm.getRelativeEffectAt(0)).getSubject();
assertEquals(d_standardStudy.getArms().get(0).getSize(),
subj.getSampleSize());
assertEquals(d_endpoint, pm.getOutcomeMeasure());
}
protected void baseSetUpRate() {
d_standardStudy = ExampleData.realBuildStudyDeWilde();
d_threeArmStudy = ExampleData.buildStudyAdditionalThreeArm();
d_endpoint = ExampleData.buildEndpointHamd();
Domain domain = new DomainImpl();
d_pmf = new PresentationModelFactory(domain);
}
protected void baseSetUpContinuous() {
d_standardStudy = ExampleData.buildStudyChouinard();
d_threeArmStudy = ExampleData.buildStudyAdditionalThreeArm();
d_endpoint = ExampleData.buildEndpointCgi();
Domain domain = new DomainImpl();
d_pmf = new PresentationModelFactory(domain);
}
}