/* * 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.junit.Assert.*; import javax.xml.datatype.Duration; import org.drugis.addis.entities.WhenTaken.RelativeTo; import org.drugis.addis.util.EntityUtil; import org.drugis.common.JUnitUtil; import org.junit.Before; import org.junit.Test; public class WhenTakenTest { private Epoch d_epoch1; private Epoch d_epoch2; private WhenTaken d_wt; private Duration d_duration1; @Before public void setUp() { d_epoch1 = new Epoch("Je moeder", EntityUtil.createDuration("P31D")); d_epoch2 = new Epoch("Je vader", EntityUtil.createDuration("P33D")); d_duration1 = EntityUtil.createDuration("P29D"); d_wt = new WhenTaken(d_duration1, RelativeTo.FROM_EPOCH_START, d_epoch1); } @Test public void testSetEpoch() { JUnitUtil.testSetter(d_wt, WhenTaken.PROPERTY_EPOCH, d_epoch1, d_epoch2); } @Test public void testSetRelativeTo() { JUnitUtil.testSetter(d_wt, WhenTaken.PROPERTY_RELATIVE_TO, RelativeTo.FROM_EPOCH_START, RelativeTo.BEFORE_EPOCH_END); } @Test public void testSetOffset() { Duration duration2 = EntityUtil.createDuration("P28D"); JUnitUtil.testSetter(d_wt, WhenTaken.PROPERTY_OFFSET, d_duration1, duration2); } @Test public void testCompare() { WhenTaken wt2 = new WhenTaken(d_duration1, RelativeTo.FROM_EPOCH_START, d_epoch2); assertTrue(d_wt.compareTo(wt2) < 0); assertTrue(d_wt.compareTo(d_wt) == 0); d_wt.setEpoch(d_epoch2); assertTrue(d_wt.compareTo(wt2) == 0); wt2.setRelativeTo(RelativeTo.BEFORE_EPOCH_END); assertTrue(d_wt.compareTo(wt2) < 0); wt2.setRelativeTo(RelativeTo.FROM_EPOCH_START); wt2.setDuration(EntityUtil.createDuration("P20D")); assertTrue(d_wt.compareTo(wt2) > 0); } @Test public void testCloneRemovesCommit() { d_wt.commit(); WhenTaken wt = d_wt.clone(); wt.setEpoch(d_epoch2); wt.setRelativeTo(RelativeTo.BEFORE_EPOCH_END); wt.setDuration(EntityUtil.createDuration("PT12H")); } @Test(expected=UnsupportedOperationException.class) public void testSetEpochNotAllowedAfterCommit() { d_wt.commit(); d_wt.setEpoch(d_epoch2); } @Test(expected=UnsupportedOperationException.class) public void testSetRelativeToNotAllowedAfterCommit() { d_wt.commit(); d_wt.setRelativeTo(RelativeTo.BEFORE_EPOCH_END); } @Test(expected=UnsupportedOperationException.class) public void testSetOffsetNotAllowedAfterCommit() { d_wt.commit(); d_wt.setDuration(EntityUtil.createDuration("PT12H")); } }