123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- /* *******************************************************************
- * Copyright (c) 2002 Palo Alto Research Center, Incorporated (PARC).
- * 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
- *
- * Contributors:
- * PARC initial implementation
- * ******************************************************************/
-
- package org.aspectj.weaver.patterns;
-
- import java.io.ByteArrayInputStream;
- import java.io.ByteArrayOutputStream;
- import java.io.IOException;
- import java.lang.reflect.Modifier;
-
- import org.aspectj.weaver.CompressingDataOutputStream;
- import org.aspectj.weaver.VersionedDataInputStream;
- import org.aspectj.weaver.World;
- import org.aspectj.weaver.reflect.ReflectionWorld;
-
- public class ModifiersPatternTestCase extends PatternsTestCase {
-
- public void testMatch() {
- int[] publicMatches = new int[] { Modifier.PUBLIC, Modifier.PUBLIC | Modifier.STATIC,
- Modifier.PUBLIC | Modifier.STATIC | Modifier.STRICT | Modifier.FINAL, };
-
- int[] publicFailures = new int[] { Modifier.PRIVATE, 0, Modifier.STATIC | Modifier.STRICT | Modifier.FINAL, };
-
- int[] publicStaticMatches = new int[] { Modifier.PUBLIC | Modifier.STATIC,
- Modifier.PUBLIC | Modifier.STATIC | Modifier.FINAL | Modifier.STRICT, };
-
- int[] publicStaticFailures = new int[] { 0, Modifier.PUBLIC, Modifier.STATIC, };
-
- int[] trickMatches = new int[] { Modifier.PRIVATE, Modifier.PRIVATE | Modifier.ABSTRACT, Modifier.PRIVATE | Modifier.FINAL, };
-
- int[] trickFailures = new int[] { Modifier.PUBLIC, Modifier.PRIVATE | Modifier.STATIC, Modifier.PRIVATE | Modifier.STRICT, };
-
- int[] none = new int[0];
-
- checkMatch("", publicMatches, none);
- checkMatch("", publicFailures, none);
- checkMatch("!public", publicFailures, publicMatches);
- checkMatch("public", publicMatches, publicFailures);
- checkMatch("public static", none, publicFailures);
- checkMatch("public static", publicStaticMatches, publicStaticFailures);
-
- checkMatch("private !static !strictfp", trickMatches, trickFailures);
- checkMatch("private !static !strictfp", none, publicMatches);
- checkMatch("private !static !strictfp", none, publicStaticMatches);
- }
-
- private ModifiersPattern makeModifiersPattern(String pattern) {
- return new PatternParser(pattern).parseModifiersPattern();
- }
-
- private void checkMatch(String pattern, int[] shouldMatch, int[] shouldFail) {
- ModifiersPattern p = makeModifiersPattern(pattern);
- checkMatch(p, shouldMatch, true);
- checkMatch(p, shouldFail, false);
- }
-
- private void checkMatch(ModifiersPattern p, int[] matches, boolean shouldMatch) {
- for (int i = 0; i < matches.length; i++) {
- boolean result = p.matches(matches[i]);
- String msg = "matches " + p + " to " + Modifier.toString(matches[i]) + " expected ";
- if (shouldMatch) {
- assertTrue(msg + shouldMatch, result);
- } else {
- assertTrue(msg + shouldMatch, !result);
- }
- }
- }
-
- public void testSerialization() throws IOException {
- String[] patterns = new String[] { "", "!public", "public", "public static", "private !static !strictfp", };
-
- for (int i = 0, len = patterns.length; i < len; i++) {
- checkSerialization(patterns[i]);
- }
- }
-
- /**
- * Method checkSerialization.
- *
- * @param string
- */
- private void checkSerialization(String string) throws IOException {
- ModifiersPattern p = makeModifiersPattern(string);
- ByteArrayOutputStream bo = new ByteArrayOutputStream();
- ConstantPoolSimulator cps = new ConstantPoolSimulator();
- CompressingDataOutputStream out = new CompressingDataOutputStream(bo, cps);
- p.write(out);
- out.close();
-
- ByteArrayInputStream bi = new ByteArrayInputStream(bo.toByteArray());
- VersionedDataInputStream in = new VersionedDataInputStream(bi, cps);
- ModifiersPattern newP = ModifiersPattern.read(in);
-
- assertEquals("write/read", p, newP);
- }
-
- public World getWorld() {
- return new ReflectionWorld(true, this.getClass().getClassLoader());
- }
-
- }
|