1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  
18  package org.apache.commons.jci.stores;
19  
20  import org.apache.commons.jci.AbstractTestCase;
21  import org.apache.commons.lang.ArrayUtils;
22  
23  
24  /**
25   * 
26   * @author tcurdt
27   */
28  public final class ResourceStoreTestCase extends AbstractTestCase {
29  
30      public void testMemoryResourceStore() {
31          checkReadWrite(new MemoryResourceStore());
32          checkRemove(new MemoryResourceStore());
33      }
34  
35      public void testFileResourceStore() {
36          checkReadWrite(new FileResourceStore(directory));
37          checkRemove(new FileResourceStore(directory));
38      }
39  
40      public void testTransactionalFileResourceStore() {    	
41          checkReadWrite(new TransactionalResourceStore(new FileResourceStore(directory)));
42          checkRemove(new TransactionalResourceStore(new FileResourceStore(directory)));
43          
44          final ResourceStore rs = new FileResourceStore(directory);
45          final TransactionalResourceStore trs = new TransactionalResourceStore(rs);
46          assertEquals(rs.toString(), trs.toString());
47      }
48  
49      private void checkReadWrite( final ResourceStore pStore ) {
50          final byte[] data = { 1, 2, 3 };
51          pStore.write("key", data);
52          
53          final byte[] read = pStore.read("key");
54          
55          assertTrue(read != null);
56          assertTrue(ArrayUtils.isEquals(data, read));
57      }
58  
59      private void checkRemove( final ResourceStore pStore ) {
60          final byte[] data = { 1, 2, 3 };
61          pStore.write("key", data);
62          
63          final byte[] read = pStore.read("key");
64          
65          assertTrue(read != null);
66          assertTrue(ArrayUtils.isEquals(data, read));
67  
68          pStore.remove("key");
69  
70          final byte[] empty = pStore.read("key");
71          
72          assertTrue(empty == null);
73      }    
74  }