1 /*
   2  * Copyright (c) 2014, 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.
   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  */
  23 package test.rowset.serial;
  24 
  25 import java.sql.Ref;
  26 import java.sql.SQLException;
  27 import java.util.HashMap;
  28 import java.util.Map;
  29 import javax.sql.rowset.serial.SerialRef;
  30 import static org.testng.Assert.*;
  31 import org.testng.annotations.BeforeMethod;
  32 import org.testng.annotations.Test;
  33 import util.BaseTest;
  34 import util.StubRef;
  35 import util.SuperHero;
  36 
  37 public class SerialRefTests extends BaseTest {
  38 
  39     private static Map<String, Class<?>> map = new HashMap<>();
  40     private Ref ref;
  41     private final String sqlType = "SUPERHERO";
  42     private SuperHero hero;
  43 
  44     @BeforeMethod
  45     public void setUpMethod() throws Exception {
  46         map.put(sqlType, Class.forName("util.SuperHero"));
  47         hero = new SuperHero(sqlType, "Bruce", "Wayne", 1939, "Batman");
  48         ref = new StubRef(sqlType, hero);
  49     }
  50 
  51     /*
  52      * Validate that a SQLException() is thrown if the Ref is null
  53      */
  54     @Test(expectedExceptions = SQLException.class)
  55     public void test01() throws Exception {
  56         SerialRef sr = new SerialRef(null);
  57     }
  58 
  59     /*
  60      * Validate that a SQLException() is thrown if the typeName is null in the
  61      * Ref used to create the SerialRef
  62      */
  63     @Test(expectedExceptions = SQLException.class)
  64     public void test02() throws Exception {
  65         SerialRef sr = new SerialRef(new StubRef(null, hero));
  66     }
  67 
  68     /*
  69      * Validate that getBaseTypeName() returns the same SQLType specified
  70      * to create the Ref
  71      */
  72     @Test
  73     public void test03() throws Exception {
  74         SerialRef sr = new SerialRef(ref);
  75         assertEquals(sr.getBaseTypeName(), sqlType);
  76     }
  77 
  78     /*
  79      * Validate that getObject() returns the same object used to create the Ref
  80      */
  81     @Test
  82     public void test04() throws Exception {
  83         SerialRef sr = new SerialRef(ref);
  84         assertTrue(hero.equals(sr.getObject()));
  85     }
  86 
  87     /*
  88      * Validate that getObject() returns the same object used to create the Ref
  89      */
  90     @Test(enabled = false)
  91     public void test05() throws Exception {
  92         SerialRef sr = new SerialRef(ref);
  93         assertTrue(hero.equals(sr.getObject(map)));
  94     }
  95 
  96     /*
  97      * Validate that setObject() can be used to change the value of the object
  98      * pointed to by the SerialRef
  99      */
 100     @Test
 101     public void test06() throws Exception {
 102         SerialRef sr = new SerialRef(ref);
 103         assertTrue(hero.equals(sr.getObject()));
 104         SuperHero h = new SuperHero(sqlType, "Dick", "Grayson", 1940, "Robin");
 105         sr.setObject(h);
 106         assertFalse(hero.equals(sr.getObject()));
 107     }
 108 
 109     /*
 110      * clone() a SerialRef and check that it is equal to the
 111      * object it was cloned from
 112      */
 113     @Test
 114     public void test09() throws Exception {
 115         SerialRef sr = new SerialRef(ref);
 116         SerialRef sr1 = (SerialRef) sr.clone();
 117         assertTrue(sr.equals(sr1));
 118     }
 119 
 120     /**
 121      * Validate that a SerialRef that is serialized & deserialized is equal to
 122      * itself for the Object & baseTypeName
 123      */
 124     @Test
 125     public void test10() throws Exception {
 126         SerialRef sr = new SerialRef(ref);
 127         SerialRef sr1 = serializeDeserializeObject(sr);
 128         assertTrue(sr1.getObject().equals(sr.getObject())
 129                 && sr1.getBaseTypeName().equals(sr.getBaseTypeName()));
 130     }
 131 }