1 /*** 2 * Redistribution and use in source and binary forms, with or without 3 * modification, are permitted provided that the following conditions are 4 * met : 5 * 6 * . Redistributions of source code must retain the above copyright 7 * notice, this list of conditions and the following disclaimer. 8 * 9 * . Redistributions in binary form must reproduce the above copyright 10 * notice, this list of conditions and the following disclaimer in the 11 * documentation and/or other materials provided with the distribution. 12 * 13 * . The name of the author may not be used to endorse or promote products 14 * derived from this software without specific prior written permission. 15 * 16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 17 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 19 * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, 20 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 22 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 23 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 24 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 25 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 26 * POSSIBILITY OF SUCH DAMAGE. 27 * 28 * $Id: RecordBufferManagerTest.java 372 2005-12-28 04:22:43Z mat007 $ 29 */ 30 31 package palmed.buffer; 32 33 import java.io.ByteArrayInputStream; 34 import java.io.IOException; 35 import palmed.file.IFile; 36 import palmed.util.EasyMockTestCase; 37 38 /*** 39 * RecordBufferManager test case. 40 * 41 * @author Mathieu Champlon 42 * @version $Revision: 372 $ $Date: 2005-12-28 13:22:43 +0900 (mer., 28 déc. 2005) $ 43 */ 44 public class RecordBufferManagerTest extends EasyMockTestCase 45 { 46 /*** 47 * Tested object. 48 */ 49 private RecordBufferManager manager_; 50 /*** 51 * Mock objects. 52 */ 53 private IBufferFactory mockFactory_; 54 private IRecordBuffer mockBuffer_, mockBuffer2_; 55 private IFile mockFile_; 56 57 protected void setUp() throws IOException 58 { 59 mockFactory_ = (IBufferFactory)createMock( IBufferFactory.class ); 60 mockBuffer_ = (IRecordBuffer)createMock( IRecordBuffer.class ); 61 mockBuffer2_ = (IRecordBuffer)createMock( IRecordBuffer.class ); 62 mockFile_ = (IFile)createMock( IFile.class ); 63 manager_ = new RecordBufferManager( mockFactory_ ); 64 forceBufferCreation(); 65 } 66 67 private void forceBufferCreation() throws IOException 68 { 69 reset(); 70 mockFactory_.createBuffer(); 71 control( mockFactory_ ).setReturnValue( mockBuffer_ ); 72 mockBuffer_.restore(); 73 replay(); 74 manager_.unmarshall( new ByteArrayInputStream( new byte[0] ) ); 75 verify(); 76 } 77 78 public void testNextBufferWithOnlyOneBufferIsNoOp() throws Exception 79 { 80 replay(); 81 manager_.next(); 82 } 83 84 public void testPreviousBufferWithOnlyOneBufferIsNoOp() throws Exception 85 { 86 replay(); 87 manager_.previous(); 88 } 89 90 public void testOpenAddsAnotherBuffer() throws Exception 91 { 92 mockBuffer_.persist(); 93 mockFactory_.createBuffer(); 94 control( mockFactory_ ).setReturnValue( mockBuffer2_ ); 95 replay(); 96 manager_.open(); 97 } 98 99 public void testCloseLastBufferOpensNewOne() throws Exception 100 { 101 mockBuffer_.delete(); 102 mockFactory_.createBuffer(); 103 control( mockFactory_ ).setReturnValue( mockBuffer2_ ); 104 mockBuffer2_.restore(); 105 replay(); 106 manager_.close(); 107 } 108 109 public void testOpenAndCloseBuffer() throws Exception 110 { 111 mockBuffer_.persist(); 112 mockFactory_.createBuffer(); 113 control( mockFactory_ ).setReturnValue( mockBuffer2_ ); 114 replay(); 115 manager_.open(); 116 reset(); 117 mockBuffer2_.delete(); 118 mockBuffer_.restore(); 119 replay(); 120 manager_.close(); 121 } 122 123 public void testOpenAndNextSwapsBuffers() throws Exception 124 { 125 mockBuffer_.persist(); 126 mockFactory_.createBuffer(); 127 control( mockFactory_ ).setReturnValue( mockBuffer2_ ); 128 replay(); 129 manager_.open(); 130 reset(); 131 mockBuffer2_.persist(); 132 mockBuffer_.restore(); 133 replay(); 134 manager_.next(); 135 } 136 137 public void testOpenFileNotAlreadyOpenedCreatesBuffer() throws Exception 138 { 139 mockBuffer_.persist(); 140 mockBuffer_.hasFile( mockFile_ ); 141 control( mockBuffer_ ).setReturnValue( false ); 142 mockFactory_.createBuffer(); 143 mockBuffer_.open( mockFile_ ); 144 control( mockFactory_ ).setReturnValue( mockBuffer_ ); 145 replay(); 146 manager_.open( mockFile_ ); 147 } 148 149 public void testOpenFileAlreadyOpenedSwitchesToItsBuffer() throws Exception 150 { 151 mockBuffer_.persist(); 152 mockBuffer_.hasFile( mockFile_ ); 153 control( mockBuffer_ ).setReturnValue( true ); 154 mockBuffer_.restore(); 155 replay(); 156 manager_.open( mockFile_ ); 157 } 158 }