001 /* 002 * $Id: StaticsAndConstructorsTest.java 1198683 2011-11-07 09:52:34Z mcucchiara $ 003 * Licensed to the Apache Software Foundation (ASF) under one 004 * or more contributor license agreements. See the NOTICE file 005 * distributed with this work for additional information 006 * regarding copyright ownership. The ASF licenses this file 007 * to you under the Apache License, Version 2.0 (the 008 * "License"); you may not use this file except in compliance 009 * with the License. You may obtain a copy of the License at 010 * 011 * http://www.apache.org/licenses/LICENSE-2.0 012 * 013 * Unless required by applicable law or agreed to in writing, 014 * software distributed under the License is distributed on an 015 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 016 * KIND, either express or implied. See the License for the 017 * specific language governing permissions and limitations 018 * under the License. 019 */ 020 package org.apache.commons.ognl.test; 021 022 import org.apache.commons.ognl.test.objects.Root; 023 import org.apache.commons.ognl.test.objects.Simple; 024 import org.junit.Test; 025 import org.junit.runner.RunWith; 026 import org.junit.runners.Parameterized; 027 import org.junit.runners.Parameterized.Parameters; 028 029 import java.util.ArrayList; 030 import java.util.Collection; 031 032 @RunWith(value = Parameterized.class) 033 public class StaticsAndConstructorsTest 034 extends OgnlTestCase 035 { 036 private static Root ROOT = new Root(); 037 038 private static Object[][] TESTS = 039 { 040 { "@java.lang.Class@forName(\"java.lang.Object\")", Object.class }, 041 { "@java.lang.Integer@MAX_VALUE", Integer.MAX_VALUE }, 042 { "@@max(3,4)", 4 }, 043 { "new java.lang.StringBuilder().append(55).toString()", "55" }, 044 { "class", ROOT.getClass() }, 045 { "@org.apache.commons.ognl.test.objects.Root@class", ROOT.getClass() }, 046 { "class.getName()", ROOT.getClass().getName() }, 047 { "@org.apache.commons.ognl.test.objects.Root@class.getName()", ROOT.getClass().getName() }, 048 { "@org.apache.commons.ognl.test.objects.Root@class.name", ROOT.getClass().getName() }, 049 { "class.getSuperclass()", ROOT.getClass().getSuperclass() }, 050 { "class.superclass", ROOT.getClass().getSuperclass() }, 051 { "class.name", ROOT.getClass().getName() }, 052 { "getStaticInt()", Root.getStaticInt() }, 053 { "@org.apache.commons.ognl.test.objects.Root@getStaticInt()", Root.getStaticInt() }, 054 { "new org.apache.commons.ognl.test.objects.Simple(property).getStringValue()", 055 new Simple().getStringValue() }, 056 { "new org.apache.commons.ognl.test.objects.Simple(map['test'].property).getStringValue()", 057 new Simple().getStringValue() }, 058 { "map.test.getCurrentClass(@org.apache.commons.ognl.test.StaticsAndConstructorsTest@KEY.toString())", 059 "size stop" }, 060 { "new org.apache.commons.ognl.test.StaticsAndConstructorsTest$IntWrapper(index)", 061 new IntWrapper( ROOT.getIndex() ) }, 062 { "new org.apache.commons.ognl.test.StaticsAndConstructorsTest$IntObjectWrapper(index)", 063 new IntObjectWrapper( ROOT.getIndex() ) }, 064 { "new org.apache.commons.ognl.test.StaticsAndConstructorsTest$A(#root)", new A( ROOT ) }, 065 { "@org.apache.commons.ognl.test.StaticsAndConstructorsTest$Animals@values().length != 2", Boolean.TRUE }, 066 { "isOk(@org.apache.commons.ognl.test.objects.SimpleEnum@ONE, null)", Boolean.TRUE }, }; 067 068 public static final String KEY = "size"; 069 070 public static class IntWrapper 071 { 072 public IntWrapper( int value ) 073 { 074 this.value = value; 075 } 076 077 private final int value; 078 079 public String toString() 080 { 081 return Integer.toString( value ); 082 } 083 084 public boolean equals( Object o ) 085 { 086 if ( this == o ) 087 return true; 088 if ( o == null || getClass() != o.getClass() ) 089 return false; 090 091 IntWrapper that = (IntWrapper) o; 092 093 return value == that.value; 094 } 095 } 096 097 public static class IntObjectWrapper 098 { 099 100 public IntObjectWrapper( Integer value ) 101 { 102 this.value = value; 103 } 104 105 private final Integer value; 106 107 public String toString() 108 { 109 return value.toString(); 110 } 111 112 public boolean equals( Object o ) 113 { 114 if ( this == o ) 115 return true; 116 if ( o == null || getClass() != o.getClass() ) 117 return false; 118 119 IntObjectWrapper that = (IntObjectWrapper) o; 120 121 return value.equals( that.value ); 122 } 123 } 124 125 public static class A 126 { 127 String key = "A"; 128 129 public A( Root root ) 130 { 131 132 } 133 134 public boolean equals( Object o ) 135 { 136 if ( this == o ) 137 return true; 138 if ( o == null || getClass() != o.getClass() ) 139 return false; 140 141 A a = (A) o; 142 143 return !( key != null ? !key.equals( a.key ) : a.key != null ); 144 145 } 146 } 147 148 public enum Animals 149 { 150 151 Dog, Cat, Wallabee, Bear 152 } 153 154 /* 155 * =================================================================== Public static methods 156 * =================================================================== 157 */ 158 @Parameters 159 public static Collection<Object[]> data() 160 { 161 Collection<Object[]> data = new ArrayList<Object[]>(TESTS.length); 162 for ( Object[] TEST : TESTS ) 163 { 164 Object[] tmp = new Object[6]; 165 tmp[0] = TEST[0] + " (" + TEST[1] + ")"; 166 tmp[1] = ROOT; 167 tmp[2] = TEST[0]; 168 tmp[3] = TEST[1]; 169 170 data.add( tmp ); 171 } 172 return data; 173 } 174 175 /* 176 * =================================================================== Constructors 177 * =================================================================== 178 */ 179 public StaticsAndConstructorsTest( String name, Object root, String expressionString, Object expectedResult, 180 Object setValue, Object expectedAfterSetResult ) 181 { 182 super( name, root, expressionString, expectedResult, setValue, expectedAfterSetResult ); 183 } 184 185 @Test 186 187 @Override 188 public void runTest() 189 throws Exception 190 { 191 super.runTest(); 192 } 193 }