/* * Copyright (c) 2017 OBiBa. All rights reserved. * * This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0. * * 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.obiba.magma.support; import org.junit.Test; import org.obiba.magma.Disposable; import org.obiba.magma.Initialisable; import org.obiba.magma.MagmaRuntimeException; import com.google.common.collect.ImmutableList; import static org.easymock.EasyMock.createMock; import static org.easymock.EasyMock.expectLastCall; import static org.easymock.EasyMock.replay; import static org.easymock.EasyMock.verify; public class InitialisablesTest { @Test public void test_initialise_Initialisable() { Initialisable initialisable = createMock(Initialisable.class); initialisable.initialise(); expectLastCall().once(); replay(initialisable); Initialisables.initialise(initialisable); verify(initialisable); } @Test(expected = MagmaRuntimeException.class) public void test_initialise_throwsThrown() { Initialisable initialisable = createMock(Initialisable.class); initialisable.initialise(); expectLastCall().andThrow(new MagmaRuntimeException()).once(); replay(initialisable); Initialisables.initialise(initialisable); verify(initialisable); } @Test(expected = MagmaRuntimeException.class) public void test_initialise_throwsMagmaRuntimeException() { Initialisable initialisable = createMock(Initialisable.class); initialisable.initialise(); expectLastCall().andThrow(new RuntimeException()).once(); replay(initialisable); Initialisables.initialise(initialisable); verify(initialisable); } @Test public void test_initialise_InitialisableAsObject() { Initialisable initialisable = createMock(Initialisable.class); initialisable.initialise(); expectLastCall().once(); replay(initialisable); Initialisables.initialise((Object) initialisable); verify(initialisable); } @Test public void test_initialise_Object() { Disposable notInitialisable = createMock(Disposable.class); replay(notInitialisable); Initialisables.initialise(notInitialisable); verify(notInitialisable); } @Test public void test_initialise_Initialisables() { vararg(createMock(Initialisable.class), createMock(Initialisable.class), createMock(Initialisable.class)); } @Test public void test_initialise_Objects() { Initialisables.initialise(new Object(), new Object()); } @Test public void test_initialise_Iterable() { iterable(ImmutableList .of(createMock(Initialisable.class), createMock(Initialisable.class), createMock(Initialisable.class))); } private void vararg(Initialisable... mocks) { for(Initialisable initialisable : mocks) { initialisable.initialise(); expectLastCall().once(); } replay((Object[]) mocks); Initialisables.initialise(mocks); verify((Object[]) mocks); } private void iterable(Iterable<Initialisable> mocks) { for(Initialisable initialisable : mocks) { initialisable.initialise(); expectLastCall().once(); replay(initialisable); } Initialisables.initialise(mocks); for(Initialisable initialisable : mocks) { verify(initialisable); } } }