/* * Copyright (C) 2011-2014 Chris Vest (mr.chrisvest@gmail.com) * * Licensed under the Apache License, Version 2.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://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package stormpot; import org.junit.Test; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static stormpot.ExpireKit.$expired; import static stormpot.ExpireKit.$fresh; import static stormpot.ExpireKit.expire; public class CompoundExpirationTest { @Test public void expiresWhenBothExpirationsExpire() throws Exception { CompoundExpiration<GenericPoolable> compoundExpiration = compoundExpiration(expire($expired), expire($expired)); assertTrue(compoundExpiration.hasExpired(mockSlotInfo())); } @Test public void expiresWhenOneExpirationExpires() throws Exception { CompoundExpiration<GenericPoolable> compoundExpiration = compoundExpiration(expire($expired), expire($fresh)); assertTrue(compoundExpiration.hasExpired(mockSlotInfo())); compoundExpiration = compoundExpiration(expire($fresh), expire($expired)); assertTrue(compoundExpiration.hasExpired(mockSlotInfo())); } @Test public void doesNotExpireWhenNoExpirationExpire() throws Exception { CompoundExpiration<GenericPoolable> compoundExpiration = compoundExpiration(expire($fresh), expire($fresh)); assertFalse(compoundExpiration.hasExpired(mockSlotInfo())); } private CompoundExpiration<GenericPoolable> compoundExpiration( Expiration<GenericPoolable> first, Expiration<GenericPoolable> second) { return new CompoundExpiration<>(first, second); } public MockSlotInfo mockSlotInfo() { return new MockSlotInfo(0); } }