    1   /*
    2    * Copyright 2004-2009 the Seasar Foundation and the Others.
    3    *
    4    * Licensed under the Apache License, Version 2.0 (the "License");
    5    * you may not use this file except in compliance with the License.
    6    * You may obtain a copy of the License at
    7    *
    8    *     http://www.apache.org/licenses/LICENSE-2.0
    9    *
    10   * Unless required by applicable law or agreed to in writing, software
    11   * distributed under the License is distributed on an "AS IS" BASIS,
    12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
    13   * either express or implied. See the License for the specific language
    14   * governing permissions and limitations under the License.
    15   */
    16  package org.seasar.cubby.plugins.s2.beans;
    17
    18  import static org.junit.Assert.assertEquals;
    19  import static org.junit.Assert.fail;
    20
    21  import java.math.BigDecimal;
    22  import java.net.URL;
    23  import java.sql.Timestamp;
    24  import java.util.Calendar;
    25
    26  import org.junit.Test;
    27  import org.seasar.cubby.plugins.s2.spi.S2BeanDescProvider;
    28  import org.seasar.cubby.spi.BeanDescProvider;
    29  import org.seasar.cubby.spi.beans.Attribute;
    30  import org.seasar.cubby.spi.beans.BeanDesc;
    31  import org.seasar.cubby.spi.beans.IllegalAttributeException;
    32
    33  public class S2BeanDescProviderPropertyDescTest {
    34
    35  	BeanDescProvider beanDescProvider = new S2BeanDescProvider();
    36
    37  	@Test
    38  	public void setValue() throws Exception {
    39  		final MyBean myBean = new MyBean();
    40  		final BeanDesc beanDesc = beanDescProvider.getBeanDesc(MyBean.class);
    41  		final Attribute attribute = beanDesc.getPropertyAttribute("fff");
    42  		attribute.setValue(myBean, new BigDecimal(2));
    43  		assertEquals(2, myBean.getFff());
    44  	}
    45
    46  	@Test
    47  	public void setValue_null() throws Exception {
    48  		final MyBean myBean = new MyBean();
    49  		final BeanDesc beanDesc = beanDescProvider.getBeanDesc(MyBean.class);
    50  		final Attribute attribute = beanDesc.getPropertyAttribute("fff");
    51  		attribute.setValue(myBean, null);
    52  		assertEquals(0, myBean.getFff());
    53  	}
    54
    55  	@Test
    56  	public void setValue_notWritable() throws Exception {
    57  		final MyBean myBean = new MyBean();
    58  		final BeanDesc beanDesc = beanDescProvider.getBeanDesc(MyBean.class);
    59  		final Attribute attribute = beanDesc.getPropertyAttribute("aaa");
    60  		try {
    61  			attribute.setValue(myBean, null);
    62  			fail();
    63  		} catch (final IllegalAttributeException e) {
    64  			System.out.println(e);
    65  		}
    66  	}
    67
    68  	@Test
    69  	public void setValue_notWritableWithField() throws Exception {
    70  		final MyBean myBean = new MyBean();
    71  		final BeanDesc beanDesc = beanDescProvider.getBeanDesc(MyBean.class);
    72  		final Attribute attribute = beanDesc.getPropertyAttribute("jjj");
    73  		try {
    74  			attribute.setValue(myBean, null);
    75  			fail();
    76  		} catch (final IllegalAttributeException e) {
    77  			System.out.println(e);
    78  		}
    79  	}
    80
    81  	@Test
    82  	public void getValue_notReable() throws Exception {
    83  		final MyBean myBean = new MyBean();
    84  		final BeanDesc beanDesc = beanDescProvider.getBeanDesc(MyBean.class);
    85  		final Attribute attribute = beanDesc.getPropertyAttribute("iii");
    86  		try {
    87  			attribute.getValue(myBean);
    88  			fail();
    89  		} catch (final IllegalAttributeException e) {
    90  			System.out.println(e);
    91  		}
    92  	}
    93
    94  	@Test
    95  	public void getValue_notReableWithField() throws Exception {
    96  		final MyBean myBean = new MyBean();
    97  		final BeanDesc beanDesc = beanDescProvider.getBeanDesc(MyBean.class);
    98  		final Attribute attribute = beanDesc.getPropertyAttribute("kkk");
    99  		try {
    100 			attribute.getValue(myBean);
    101 			fail();
    102 		} catch (final IllegalAttributeException e) {
    103 			System.out.println(e);
    104 		}
    105 	}
    106
    107 	@Test
    108 	public void setIllegalValue() throws Exception {
    109 		final MyBean myBean = new MyBean();
    110 		final BeanDesc beanDesc = beanDescProvider.getBeanDesc(MyBean.class);
    111 		final Attribute attribute = beanDesc.getPropertyAttribute("fff");
    112 		try {
    113 			attribute.setValue(myBean, "hoge");
    114 			fail("1");
    115 		} catch (final IllegalAttributeException ex) {
    116 			System.out.println(ex);
    117 		}
    118 	}
    119
    120 	/**
    121      *
    122      */
    123 	public static class MyBean {
    124
    125 		private int fff_;
    126
    127 		private BigDecimal ggg_;
    128
    129 		private Timestamp hhh_;
    130
    131 		private String jjj;
    132
    133 		String kkk;
    134
    135 		private URL url_;
    136
    137 		private Calendar cal;
    138
    139 		/**
    140          *
    141          */
    142 		public String str;
    143
    144 		/**
    145 		 * @return
    146 		 */
    147 		public String getAaa() {
    148 			return null;
    149 		}
    150
    151 		/**
    152 		 * @param a
    153 		 * @return
    154 		 */
    155 		public String getBbb(final Object a) {
    156 			return null;
    157 		}
    158
    159 		/**
    160 		 * @return
    161 		 */
    162 		public boolean isCCC() {
    163 			return true;
    164 		}
    165
    166 		/**
    167 		 * @return
    168 		 */
    169 		public Object isDdd() {
    170 			return null;
    171 		}
    172
    173 		/**
    174 		 * @return
    175 		 */
    176 		public String getEee() {
    177 			return null;
    178 		}
    179
    180 		/**
    181 		 * @param eee
    182 		 */
    183 		public void setEee(final String eee) {
    184 		}
    185
    186 		/**
    187 		 * @return
    188 		 */
    189 		public int getFff() {
    190 			return fff_;
    191 		}
    192
    193 		/**
    194 		 * @param fff
    195 		 */
    196 		public void setFff(final int fff) {
    197 			fff_ = fff;
    198 		}
    199
    200 		/**
    201 		 * @return
    202 		 */
    203 		public String getJjj() {
    204 			return jjj;
    205 		}
    206
    207 		/**
    208 		 * @param kkk
    209 		 */
    210 		public void setKkk(final String kkk) {
    211 			this.kkk = kkk;
    212 		}
    213
    214 		/**
    215 		 * @param arg1
    216 		 * @param arg2
    217 		 * @return
    218 		 */
    219 		public Number add(final Number arg1, final Number arg2) {
    220 			return Integer.valueOf(3);
    221 		}
    222
    223 		/**
    224 		 * @return
    225 		 */
    226 		public BigDecimal getGgg() {
    227 			return ggg_;
    228 		}
    229
    230 		/**
    231 		 * @param ggg
    232 		 */
    233 		public void setGgg(final BigDecimal ggg) {
    234 			this.ggg_ = ggg;
    235 		}
    236
    237 		/**
    238 		 * @return
    239 		 */
    240 		public Timestamp getHhh() {
    241 			return hhh_;
    242 		}
    243
    244 		/**
    245 		 * @param hhh
    246 		 */
    247 		public void setHhh(final Timestamp hhh) {
    248 			this.hhh_ = hhh;
    249 		}
    250
    251 		/**
    252 		 * @param iii
    253 		 */
    254 		public void setIii(final String iii) {
    255 		}
    256
    257 		/**
    258 		 * @return
    259 		 */
    260 		public URL getURL() {
    261 			return url_;
    262 		}
    263
    264 		/**
    265 		 * @param url
    266 		 */
    267 		public void setURL(final URL url) {
    268 			url_ = url;
    269 		}
    270
    271 		/**
    272 		 * @return Returns the cal.
    273 		 */
    274 		public Calendar getCal() {
    275 			return cal;
    276 		}
    277
    278 		/**
    279 		 * @param cal
    280 		 *            The cal to set.
    281 		 */
    282 		public void setCal(final Calendar cal) {
    283 			this.cal = cal;
    284 		}
    285 	}
    286
    287 }