1// © 2016 and later: Unicode, Inc. and others. 2// License & terms of use: http://www.unicode.org/copyright.html#License 3/* 4****************************************************************************** 5* Copyright (C) 2007-2010, International Business Machines Corporation and * 6* others. All Rights Reserved. * 7****************************************************************************** 8*/ 9 10// Copyright 2006 Google Inc. All Rights Reserved. 11 12package com.ibm.icu.dev.test.duration; 13 14import org.junit.Test; 15 16import com.ibm.icu.dev.test.TestFmwk; 17import com.ibm.icu.impl.duration.Period; 18import com.ibm.icu.impl.duration.TimeUnit; 19 20public class PeriodTest extends TestFmwk { 21 @Test 22 public void testIsSet() { 23 Period p = Period.at(0, TimeUnit.YEAR); 24 assertTrue(null, p.isSet()); 25 assertTrue(null, p.isSet(TimeUnit.YEAR)); 26 assertFalse(null, p.isSet(TimeUnit.MONTH)); 27 assertEquals(null, 0f, p.getCount(TimeUnit.YEAR), .1f); 28 p = p.omit(TimeUnit.YEAR); 29 assertFalse(null, p.isSet(TimeUnit.YEAR)); 30 } 31 32 @Test 33 public void testMoreLessThan() { 34 Period p = Period.moreThan(1, TimeUnit.YEAR); 35 assertTrue(null, p.isMoreThan()); 36 assertFalse(null, p.isLessThan()); 37 p = p.at(); 38 assertFalse(null, p.isMoreThan()); 39 assertFalse(null, p.isLessThan()); 40 p = p.lessThan(); 41 assertFalse(null, p.isMoreThan()); 42 assertTrue(null, p.isLessThan()); 43 p = p.moreThan(); 44 assertTrue(null, p.isMoreThan()); 45 assertFalse(null, p.isLessThan()); 46 47 p = Period.lessThan(1, TimeUnit.YEAR); 48 assertFalse(null, p.isMoreThan()); 49 assertTrue(null, p.isLessThan()); 50 51 p = Period.at(1, TimeUnit.YEAR); 52 assertFalse(null, p.isMoreThan()); 53 assertFalse(null, p.isLessThan()); 54 55 assertEquals(null, 1f, p.getCount(TimeUnit.YEAR), .1f); 56 } 57 58 @Test 59 public void testFuturePast() { 60 Period p = Period.at(1, TimeUnit.YEAR).inFuture(); 61 assertTrue(null, p.isInFuture()); 62 p = p.inPast(); 63 assertFalse(null, p.isInFuture()); 64 p = p.inFuture(true); 65 assertTrue(null, p.isInFuture()); 66 p = p.inFuture(false); 67 assertFalse(null, p.isInFuture()); 68 } 69 70 @Test 71 public void testAnd() { 72 Period p = Period.at(1, TimeUnit.YEAR).and(3, TimeUnit.MONTH) 73 .inFuture(); 74 assertTrue(null, p.isSet(TimeUnit.YEAR)); 75 assertTrue(null, p.isSet(TimeUnit.MONTH)); 76 assertEquals(null, 3f, p.getCount(TimeUnit.MONTH), .1f); 77 p = p.and(2, TimeUnit.MONTH); 78 assertEquals(null, 2f, p.getCount(TimeUnit.MONTH), .1f); 79 } 80 81 @Test 82 public void testInvalidCount() { 83 try { 84 Period.at(-1, TimeUnit.YEAR); 85 fail("at -1"); 86 } catch (IllegalArgumentException e) { 87 // passed 88 } 89 try { 90 Period.moreThan(-1, TimeUnit.YEAR); 91 fail("moreThan -1"); 92 } catch (IllegalArgumentException e) { 93 // passed 94 } 95 try { 96 Period.lessThan(-1, TimeUnit.YEAR); 97 fail("lessThan -1"); 98 } catch (IllegalArgumentException e) { 99 // passed 100 } 101 Period p = Period.at(1, TimeUnit.YEAR); 102 try { 103 p = p.and(-1, TimeUnit.MONTH); 104 fail("and -1"); 105 } catch (IllegalArgumentException e) { 106 // passed 107 } 108 } 109} 110