Package org.apache.harmony.pack200.tests

Source Code of org.apache.harmony.pack200.tests.SegmentConstantPoolTest$MockSegmentConstantPool

/*
*  Licensed to the Apache Software Foundation (ASF) under one or more
*  contributor license agreements.  See the NOTICE file distributed with
*  this work for additional information regarding copyright ownership.
*  The ASF licenses this file to You under the Apache License, Version 2.0
*  (the "License"); you may not use this file except in compliance with
*  the License.  You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
*  Unless required by applicable law or agreed to in writing, software
*  distributed under the License is distributed on an "AS IS" BASIS,
*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*  See the License for the specific language governing permissions and
*  limitations under the License.
*/
package org.apache.harmony.pack200.tests;

import junit.framework.TestCase;

import org.apache.harmony.pack200.CpBands;
import org.apache.harmony.pack200.Segment;
import org.apache.harmony.pack200.SegmentConstantPool;

/**
* Tests for org.apache.harmony.pack200.SegmentConstantPool.
*/
public class SegmentConstantPoolTest extends TestCase {

    public class MockSegmentConstantPool extends SegmentConstantPool {
        public MockSegmentConstantPool() {
          super(new CpBands(new Segment()));
        };
       
        public int matchSpecificPoolEntryIndex(String[] classNameArray, String desiredClassName, int desiredIndex) {
          return super.matchSpecificPoolEntryIndex(classNameArray, desiredClassName, desiredIndex);
        };

        public int matchSpecificPoolEntryIndex(String[] classNameArray, String[] methodNameArray, String desiredClassName, String desiredMethodRegex, int desiredIndex) {
          return super.matchSpecificPoolEntryIndex(classNameArray, methodNameArray, desiredClassName, desiredMethodRegex, desiredIndex);
        };
    }

  String[] testClassArray = {"Object", "Object" , "java/lang/String", "java/lang/String", "Object", "Other" };
  String[] testMethodArray = {"<init>()", "clone()" , "equals()", "<init>", "isNull()", "Other" };

  public void testMatchSpecificPoolEntryIndex_SingleArray() throws Exception {
    MockSegmentConstantPool mockInstance = new MockSegmentConstantPool();
    // Elements should be found at the proper position.
    assertEquals(0, mockInstance.matchSpecificPoolEntryIndex(testClassArray, "Object", 0));
    assertEquals(1, mockInstance.matchSpecificPoolEntryIndex(testClassArray, "Object", 1));
    assertEquals(2, mockInstance.matchSpecificPoolEntryIndex(testClassArray, "java/lang/String", 0));
    assertEquals(3, mockInstance.matchSpecificPoolEntryIndex(testClassArray, "java/lang/String", 1));
    assertEquals(4, mockInstance.matchSpecificPoolEntryIndex(testClassArray, "Object", 2));
    assertEquals(5, mockInstance.matchSpecificPoolEntryIndex(testClassArray, "Other", 0));
   
    // Elements that don't exist shouldn't be found
    assertEquals(-1, mockInstance.matchSpecificPoolEntryIndex(testClassArray, "NotThere", 0));
   
    // Elements that exist but don't have the requisite number
    // of hits shouldn't be found.
    assertEquals(-1, mockInstance.matchSpecificPoolEntryIndex(testClassArray, "java/lang/String", 2));   
  }

  public void testMatchSpecificPoolEntryIndex_DoubleArray() throws Exception {
    MockSegmentConstantPool mockInstance = new MockSegmentConstantPool();
    // Elements should be found at the proper position.
    assertEquals(0, mockInstance.matchSpecificPoolEntryIndex(testClassArray, testMethodArray, "Object", "<init>.*", 0));
    assertEquals(1, mockInstance.matchSpecificPoolEntryIndex(testClassArray, testMethodArray, "Object", "clone.*", 0));
    assertEquals(2, mockInstance.matchSpecificPoolEntryIndex(testClassArray, testMethodArray, "java/lang/String", "equals.*", 0));
    assertEquals(3, mockInstance.matchSpecificPoolEntryIndex(testClassArray, testMethodArray, "java/lang/String", "<init>.*", 0));
    assertEquals(4, mockInstance.matchSpecificPoolEntryIndex(testClassArray, testMethodArray, "Object", "isNull.*", 0));
    assertEquals(5, mockInstance.matchSpecificPoolEntryIndex(testClassArray, testMethodArray, "Other", "Other", 0));
   
    // Elements that don't exist shouldn't be found
    assertEquals(-1, mockInstance.matchSpecificPoolEntryIndex(testClassArray, testMethodArray, "NotThere", "NotThere", 0));
    assertEquals(-1, mockInstance.matchSpecificPoolEntryIndex(testClassArray, testMethodArray, "Object", "NotThere", 0));
   
    // Elements that exist but don't have the requisite number
    // of hits shouldn't be found.
    assertEquals(-1, mockInstance.matchSpecificPoolEntryIndex(testClassArray, testMethodArray, "java/lang/String", "<init>.*", 1));   
  }

}
TOP

Related Classes of org.apache.harmony.pack200.tests.SegmentConstantPoolTest$MockSegmentConstantPool

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.