/** * The contents of this file are subject to the OpenMRS Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://license.openmrs.org * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the * License for the specific language governing rights and limitations * under the License. * * Copyright (C) OpenMRS, LLC. All Rights Reserved. */ package org.openmrs.logic.result; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.junit.Assert; import org.junit.Test; import org.openmrs.Encounter; import org.openmrs.api.context.Context; import org.openmrs.logic.LogicException; /** * Tests all methods on the {@link Result} object * * @see Result */ public class ResultTest { /** * @verifies {@link Result#toObject()} test = should return resultObject for single results */ @SuppressWarnings("deprecation") @Test public void toObject_shouldReturnResultObjectForSingleResults() throws Exception { Result firstResult = new Result(new Date("2008/08/12"), "some value", new Encounter(123)); Assert.assertEquals(new Encounter(123), firstResult.toObject()); } /** * @verifies {@link Result#Result(List<QResult;>)} test = should not fail with null list */ @SuppressWarnings("unchecked") @Test public void Result_shouldNotFailWithNullList() throws Exception { new Result((List) null); } /** * @verifies {@link Result#Result(List<QResult;>)} test = should not fail with empty list */ @SuppressWarnings("unchecked") @Test public void Result_shouldNotFailWithEmptyList() throws Exception { new Result(new ArrayList()); } /** * @verifies {@link Result#Result(Result)} test = should not fail with null result */ @Test public void Result_shouldNotFailWithNullResult() throws Exception { new Result((Result) null); } /** * @verifies {@link Result#earliest()} test = should get the first result given multiple results */ @Test public void earliest_shouldGetTheFirstResultGivenMultipleResults() throws Exception { Result parentResult = new Result(); Result secondResult = new Result(Context.getDateFormat().parse("15/08/2008"), "some other value", new Encounter(124)); Result firstResult = new Result(Context.getDateFormat().parse("12/08/2008"), "some value", new Encounter(123)); parentResult.add(firstResult); parentResult.add(secondResult); Assert.assertEquals("some value", parentResult.earliest().toString()); } /** * @verifies {@link Result#earliest()} test = should get the result given a single result */ @Test public void earliest_shouldGetTheResultGivenASingleResult() throws Exception { Result parentResult = new Result(); Result secondResult = new Result(Context.getDateFormat().parse("15/08/2008"), "some other value", new Encounter(124)); Result firstResult = new Result(Context.getDateFormat().parse("12/08/2008"), "some value", new Encounter(123)); parentResult.add(firstResult); parentResult.add(secondResult); Assert.assertEquals("some value", parentResult.earliest().toString()); } /** * @verifies {@link Result#earliest()} test = should get an empty result given an empty result */ @Test public void earliest_shouldGetAnEmptyResultGivenAnEmptyResult() throws Exception { Result parentResult = new EmptyResult(); Assert.assertEquals(new EmptyResult(), parentResult.earliest()); } /** * @verifies {@link Result#earliest()} test = should not get the result with null result date * given other results */ @Test public void earliest_shouldNotGetTheResultWithNullResultDateGivenOtherResults() throws Exception { Result parentResult = new Result(); Result secondResult = new Result(null, "some value", new Encounter(123)); Result firstResult = new Result(Context.getDateFormat().parse("12/08/2008"), "some other value", new Encounter(124)); parentResult.add(firstResult); parentResult.add(secondResult); Assert.assertEquals("some other value", parentResult.earliest().toString()); } /** * @verifies {@link Result#earliest()} test = should get one result with null result dates for * all results */ @Test public void earliest_shouldGetOneResultWithNullResultDatesForAllResults() throws Exception { Result parentResult = new Result(); Result firstResult = new Result(null, "some value", new Encounter(123)); Result secondResult = new Result(null, "some other value", new Encounter(124)); parentResult.add(firstResult); parentResult.add(secondResult); Assert.assertEquals("some value", parentResult.earliest().toString()); } /** * @verifies {@link Result#equals(Object)} test = should return true on two empty results */ @Test public void equals_shouldReturnTrueOnTwoEmptyResults() throws Exception { Assert.assertTrue(new EmptyResult().equals(new Result())); } /** * @verifies {@link Result#get(int)} test = should get empty result for indexes out of range */ @Test public void get_shouldGetEmptyResultForIndexesOutOfRange() throws Exception { Result parentResult = new Result(); Result secondResult = new Result(null, "some value", new Encounter(123)); Result firstResult = new Result(Context.getDateFormat().parse("12/08/2008"), "some other value", new Encounter(124)); parentResult.add(firstResult); parentResult.add(secondResult); // 3 is greater than the number of entries in the parentResult Assert.assertEquals(new EmptyResult(), parentResult.get(3)); } /** * @verifies {@link Result#isNull()} test = should return false */ @Test public void isNull_shouldReturnFalse() throws Exception { Assert.assertFalse(new Result().isNull()); } /** * @verifies {@link Result#latest()} test = should get the most recent result given multiple * results */ @Test public void latest_shouldGetTheMostRecentResultGivenMultipleResults() throws Exception { Result parentResult = new Result(); Result firstResult = new Result(Context.getDateFormat().parse("12/08/2008"), "some other value", new Encounter(124)); Result secondResult = new Result(Context.getDateFormat().parse("15/08/2008"), "some value", new Encounter(123)); parentResult.add(firstResult); parentResult.add(secondResult); Assert.assertEquals("some value", parentResult.latest().toString()); } /** * @verifies {@link Result#latest()} test = should get the result given a single result */ @Test public void latest_shouldGetTheResultGivenASingleResult() throws Exception { Result result = new Result(Context.getDateFormat().parse("12/08/2008"), "some other value", new Encounter(124)); Assert.assertEquals("some other value", result.latest().toString()); } /** * @verifies {@link Result#latest()} test = should get an empty result given an empty result */ @Test public void latest_shouldGetAnEmptyResultGivenAnEmptyResult() throws Exception { Assert.assertEquals(new EmptyResult(), new Result().latest()); } /** * @verifies {@link Result#latest()} test = should get the result with null result date */ @Test public void latest_shouldGetTheResultWithNullResultDate() throws Exception { Result parentResult = new Result(); Result firstResult = new Result(Context.getDateFormat().parse("15/08/2008"), "some value", new Encounter(123)); Result secondResult = new Result(null, "some other value", new Encounter(124)); parentResult.add(firstResult); parentResult.add(secondResult); Assert.assertEquals("some value", parentResult.latest().toString()); } /** * @verifies {@link Result#toObject()} test = should fail when contains multiple results */ @Test(expected = LogicException.class) public void toObject_shouldFailWhenContainsMultipleResults() throws Exception { Result parentResult = new Result(); Result firstResult = new Result(Context.getDateFormat().parse("12/08/2008"), "some value", new Encounter(123)); Result secondResult = new Result(Context.getDateFormat().parse("15/08/2008"), "some other value", new Encounter(124)); parentResult.add(firstResult); parentResult.add(secondResult); Object toObject = parentResult.toObject(); Assert.assertNull(toObject); } }