1 /*
   2  * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any
  23  * questions.
  24  */
  25 
  26 package test.javafx.beans.property;
  27 
  28 import static org.junit.Assert.*;
  29 import test.javafx.beans.Person;
  30 
  31 import org.junit.Before;
  32 import org.junit.Test;
  33 
  34 import com.sun.javafx.property.PropertyReference;
  35 
  36 public class PropertyReferenceTest {
  37         
  38         private Person person;
  39 
  40         @Before
  41         public void setUp() {
  42                 person = new Person();
  43         }
  44         
  45         @Test
  46         public void testInteger() {
  47                 final PropertyReference<Integer> property = new PropertyReference<Integer>(Person.class, "age");
  48                 assertTrue(property.isReadable());
  49                 assertTrue(property.isWritable());
  50                 assertTrue((int.class.equals(property.getType())) || (Integer.class.equals(property.getType())));
  51                 assertEquals(person.ageProperty(), property.getProperty(person));
  52                 
  53                 assertEquals(0, person.getAge());
  54                 assertEquals(Integer.valueOf(0), property.get(person));
  55                 
  56                 property.set(person, 42);
  57                 assertEquals(42, person.getAge());
  58                 assertEquals(Integer.valueOf(42), property.get(person));
  59         }
  60         
  61         @Test
  62         public void testNoRead() {
  63                 final PropertyReference<Integer> property = new PropertyReference<Integer>(Person.class, "noRead");
  64                 assertFalse(property.isReadable());
  65                 assertTrue(property.isWritable());
  66                 assertTrue((int.class.equals(property.getType())) || (Integer.class.equals(property.getType())));
  67                 
  68                 assertEquals(0, person.noRead.get());
  69                 property.set(person, -311);
  70                 assertEquals(-311, person.noRead.get());
  71         }
  72         
  73         @Test(expected=IllegalStateException.class)
  74         public void testNoRead_IllegalRead() {
  75                 Person.NO_READ.get(person);
  76         }
  77         
  78         @Test(expected=IllegalStateException.class)
  79         public void testNoRead_IllegalReadProperty() {
  80                 Person.NO_READ.getProperty(person);
  81         }
  82         
  83         @Test
  84         public void testNoWrite() {
  85                 final PropertyReference<Integer> property = new PropertyReference<Integer>(Person.class, "noWrite");
  86                 assertTrue(property.isReadable());
  87                 assertFalse(property.isWritable());
  88                 assertTrue((int.class.equals(property.getType())) || (Integer.class.equals(property.getType())));
  89                 assertEquals(person.noWriteProperty(), property.getProperty(person));
  90                 
  91                 assertEquals(0, person.getNoWrite());
  92                 assertEquals(Integer.valueOf(0), property.get(person));
  93                 
  94                 person.noWrite.set(5125);
  95                 assertEquals(5125, person.getNoWrite());
  96                 assertEquals(Integer.valueOf(5125), property.get(person));
  97         }
  98         
  99         @Test(expected=IllegalStateException.class)
 100         public void testNoWrite_IllegalWrite() {
 101                 Person.NO_WRITE.set(person, 1);
 102         }
 103         
 104         @Test
 105         public void testNoReadWrite() {
 106                 final PropertyReference<Integer> property = new PropertyReference<Integer>(Person.class, "noReadWrite");
 107                 assertFalse(property.isReadable());
 108                 assertFalse(property.isWritable());
 109         }
 110         
 111         @Test(expected=IllegalStateException.class)
 112         public void testNoReadWrite_IllegalRead() {
 113                 Person.NO_READ_WRITE.get(person);
 114         }
 115         
 116         @Test(expected=IllegalStateException.class)
 117         public void testNoReadWrite_IllegalWrite() {
 118                 Person.NO_READ_WRITE.set(person, 1);
 119         }
 120         
 121 }