01: package org.apache.lucene.store;
02:
03: /**
04: * Licensed to the Apache Software Foundation (ASF) under one or more
05: * contributor license agreements. See the NOTICE file distributed with
06: * this work for additional information regarding copyright ownership.
07: * The ASF licenses this file to You under the Apache License, Version 2.0
08: * (the "License"); you may not use this file except in compliance with
09: * the License. You may obtain a copy of the License at
10: *
11: * http://www.apache.org/licenses/LICENSE-2.0
12: *
13: * Unless required by applicable law or agreed to in writing, software
14: * distributed under the License is distributed on an "AS IS" BASIS,
15: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16: * See the License for the specific language governing permissions and
17: * limitations under the License.
18: */
19:
20: import org.apache.lucene.util.LuceneTestCase;
21: import java.lang.reflect.Method;
22:
23: public class TestMMapDirectory extends LuceneTestCase {
24:
25: // Simply verify that if there is a method in FSDirectory
26: // that returns IndexInput or a subclass, that
27: // MMapDirectory overrides it.
28: public void testIndexInputMethods() throws ClassNotFoundException {
29:
30: Class FSDirectory = Class
31: .forName("org.apache.lucene.store.FSDirectory");
32: Class IndexInput = Class
33: .forName("org.apache.lucene.store.IndexInput");
34: Class MMapDirectory = Class
35: .forName("org.apache.lucene.store.MMapDirectory");
36:
37: Method[] methods = FSDirectory.getDeclaredMethods();
38: for (int i = 0; i < methods.length; i++) {
39: Method method = methods[i];
40: if (IndexInput.isAssignableFrom(method.getReturnType())) {
41: // There is a method that returns IndexInput or a
42: // subclass of IndexInput
43: try {
44: Method m = MMapDirectory.getMethod(
45: method.getName(), method
46: .getParameterTypes());
47: if (m.getDeclaringClass() != MMapDirectory) {
48: fail("FSDirectory has method "
49: + method
50: + " but MMapDirectory does not override");
51: }
52: } catch (NoSuchMethodException e) {
53: // Should not happen
54: fail("unexpected NoSuchMethodException");
55: }
56: }
57: }
58: }
59: }
|