/* * Copyright (c) 2012 Diamond Light Source Ltd. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html */ package uk.ac.diamond.scisoft.analysis.io.emulated; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import org.eclipse.dawnsci.analysis.api.io.IDataHolder; import org.eclipse.dawnsci.analysis.api.io.IFileLoader; import org.eclipse.dawnsci.analysis.api.io.ScanFileHolderException; import org.junit.Before; import org.junit.Test; import uk.ac.diamond.scisoft.analysis.io.DataHolder; public class FileSystemEmulatingFileLoaderTest { private IFileLoader mockLoader; private DataHolder loadDataHolder; private FileSystemEmulatingFileLoader fileSystemEmulatingFileLoader; @Before public void setUp() throws ScanFileHolderException { mockLoader = mock(IFileLoader.class); loadDataHolder = mock(DataHolder.class); when(mockLoader.loadFile()).thenReturn(loadDataHolder); } @Test public void testEmulatedLatency() throws ScanFileHolderException { fileSystemEmulatingFileLoader = new FileSystemEmulatingFileLoader(mockLoader, 1000, 0); verifyResultAndDelayWas1s(); } @Test public void testEmulatedFileloadTime() throws ScanFileHolderException { fileSystemEmulatingFileLoader = new FileSystemEmulatingFileLoader(mockLoader, 0, 1000); verifyResultAndDelayWas1s(); } @Test public void testEmulatedFileloadTimeToShort() throws ScanFileHolderException { fileSystemEmulatingFileLoader = new FileSystemEmulatingFileLoader(mockLoader, 1000, 0); verifyResultAndDelayWas1s(); } private void verifyResultAndDelayWas1s() throws ScanFileHolderException { long t = System.currentTimeMillis(); IDataHolder result = fileSystemEmulatingFileLoader.loadFile(); long dt = System.currentTimeMillis() - t; System.out.println(dt); assertTrue((dt<1100) && (dt>998)); /* 1000 is theoretically the lower bound, but accept 999 also as this is seen occasionally */ assertEquals(loadDataHolder, result); } }