// $Id: TestBeans.java,v 1.2 2002/12/24 22:04:52 john Exp $ /* * Copyright 1998-2009 University Corporation for Atmospheric Research/Unidata * * Portions of this software were developed by the Unidata Program at the * University Corporation for Atmospheric Research. * * Access and use of this software shall impose the following obligations * and understandings on the user. The user is granted the right, without * any fee or cost, to use, copy, modify, alter, enhance and distribute * this software, and any derivative works thereof, and its supporting * documentation for any purpose whatsoever, provided that this entire * notice appears in all copies of the software, derivative works and * supporting documentation. Further, UCAR requests that the user credit * UCAR/Unidata in any publications that result from the use of this * software or in any product that includes this software. The names UCAR * and/or Unidata, however, may not be used in any advertising or publicity * to endorse or promote any products or commercial entity unless specific * written permission is obtained from UCAR/Unidata. The user also * understands that UCAR/Unidata is not obligated to provide the user with * any support, consulting, training or assistance of any kind with regard * to the use, operation and performance of this software nor to provide * the user with any updates, revisions, new versions or "bug fixes." * * THIS SOFTWARE IS PROVIDED BY UCAR/UNIDATA "AS IS" AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL UCAR/UNIDATA BE LIABLE FOR ANY SPECIAL, * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION * WITH THE ACCESS, USE OR PERFORMANCE OF THIS SOFTWARE. */ package ucar.util.prefs; import junit.framework.*; import java.awt.Rectangle; public class TestBeans extends TestCase { static { System.setProperty("java.util.prefs.PreferencesFactory", "ucar.util.prefs.PreferencesExtFactory"); } public TestBeans( String name) { super(name); } public void testDefault() { try { XMLStore store2 = XMLStore.createFromFile(TestAllPrefs.dir+"testBeans.xml", null); PreferencesExt prefs = store2.getPreferences(); TesterBean tbean = new TesterBean(); prefs.putBean( "default", tbean); prefs.putBeanObject( "defaultObject", tbean); store2.save(); } catch (Exception e) { assert false; System.out.println(e); e.printStackTrace(); } try { XMLStore store2 = XMLStore.createFromFile(TestAllPrefs.dir+"testBeans.xml", null); PreferencesExt prefs = store2.getPreferences(); TesterBean tbean = (TesterBean) prefs.getBean( "default", null); TesterBean tbeano = (TesterBean) prefs.getBean( "defaultObject", null); assert tbean != null; assert tbeano != null; assert tbean.getB() == tbeano.getB() : "boolean failed"; assert tbean.getByte() == tbeano.getByte() : "byte failed"; assert tbean.getShort() == tbeano.getShort() : "short failed"; assert tbean.getI() == tbeano.getI() : "int failed"; assert tbean.getL() == tbeano.getL() : "long failed"; assert tbean.getF() == tbeano.getF() : "float failed"; assert tbean.getD() == tbeano.getD() : "double failed"; assert tbean.getS().equals(tbeano.getS()) : "string failed"; } catch (Exception e) { assert false; System.out.println(e); e.printStackTrace(); } } public void testNonDefault() { try { XMLStore store2 = XMLStore.createFromFile(TestAllPrefs.dir+"testBeans.xml", null); PreferencesExt prefs = store2.getPreferences(); TesterBean tbean = new TesterBean(false, 9999, (short) 666, 123456789, .99f, .00001099, "nondefault"); prefs.putBean( "nondefault", tbean); prefs.putBeanObject( "nondefaultObject", tbean); store2.save(); } catch (Exception e) { assert false; System.out.println(e); e.printStackTrace(); } try { XMLStore store2 = XMLStore.createFromFile(TestAllPrefs.dir+"testBeans.xml", null); PreferencesExt prefs = store2.getPreferences(); TesterBean tbean = (TesterBean) prefs.getBean( "default", null); TesterBean tbeano = (TesterBean) prefs.getBean( "defaultObject", null); assert tbean.getB() == tbeano.getB() : "boolean failed"; assert tbean.getByte() == tbeano.getByte() : "byte failed"; assert tbean.getShort() == tbeano.getShort() : "short failed"; assert tbean.getI() == tbeano.getI() : "int failed"; assert tbean.getL() == tbeano.getL() : "long failed"; assert tbean.getF() == tbeano.getF() : "float failed"; assert tbean.getD() == tbeano.getD() : "double failed"; assert tbean.getS().equals(tbeano.getS()) : "string failed"; } catch (Exception e) { System.out.println(e); e.printStackTrace(); assert false; } } public void testChangedBean() { try { XMLStore store2 = XMLStore.createFromFile(TestAllPrefs.dir+"testBeans.xml", null); PreferencesExt prefs = store2.getPreferences(); TesterBean tbean = new TesterBean(false, 9999, (short) 666, 123456789, .99f, .00001099, "orig"); prefs.putBean( "changeableBean", tbean); prefs.putBeanObject( "changeableBeanObject", tbean); store2.save(); } catch (Exception e) { assert false; System.out.println(e); e.printStackTrace(); } try { XMLStore store2 = XMLStore.createFromFile(TestAllPrefs.dir+"testBeans.xml", null); PreferencesExt prefs = store2.getPreferences(); TesterBean tbean = (TesterBean) prefs.getBean( "changeableBean", null); TesterBean tbeano = (TesterBean) prefs.getBean( "changeableBeanObject", null); assert tbean.getS().equals("orig"); assert tbeano.getS().equals("orig"); // change the objects tbean.setS("changed"); tbeano.setS("changedo"); // note putBean not called store2.save(); } catch (Exception e) { assert false; System.out.println(e); e.printStackTrace(); } try { XMLStore store2 = XMLStore.createFromFile(TestAllPrefs.dir+"testBeans.xml", null); PreferencesExt prefs = store2.getPreferences(); TesterBean tbean = (TesterBean) prefs.getBean( "changeableBean", null); TesterBean tbeano = (TesterBean) prefs.getBean( "changeableBeanObject", null); assert tbean.getS().equals("changed"); assert tbeano.getS().equals("changedo"); } catch (Exception e) { assert false; System.out.println(e); e.printStackTrace(); } } public void testBadChars() { String baddies = "q>w<'e;&t\rl\"\nv"; try { XMLStore store2 = XMLStore.createFromFile(TestAllPrefs.dir+"testBeans.xml", null); PreferencesExt prefs = store2.getPreferences(); TesterBean tbean = new TesterBean(); tbean.setS( baddies); prefs.putBean( "bad", tbean); prefs.putBeanObject( "bado", tbean); store2.save(); } catch (Exception e) { assert false; System.out.println(e); e.printStackTrace(); } try { XMLStore store2 = XMLStore.createFromFile(TestAllPrefs.dir+"testBeans.xml", null); PreferencesExt prefs = store2.getPreferences(); TesterBean tbean = (TesterBean) prefs.getBean( "bad", null); TesterBean tbeano = (TesterBean) prefs.getBean( "bado", null); assert tbean.getS().equals(baddies) : "bean encoding failed" + tbean.getS(); assert tbeano.getS().equals(baddies) : "beanObject encoding failed" + tbeano.getS(); } catch (Exception e) { assert false; System.out.println(e); e.printStackTrace(); } } public void testNonBean() { try { XMLStore store2 = XMLStore.createFromFile(TestAllPrefs.dir+"testNBeans.xml", null); PreferencesExt prefs = store2.getPreferences(); Rectangle r = new Rectangle(1, 2); prefs.putBean( "rect", r); prefs.putBeanObject( "recto", r); store2.save(); } catch (Exception e) { assert false; System.out.println(e); e.printStackTrace(); } try { XMLStore store2 = XMLStore.createFromFile(TestAllPrefs.dir+"testNBeans.xml", null); PreferencesExt prefs = store2.getPreferences(); // just looking for exceptions Rectangle r = (Rectangle) prefs.getBean( "rect", null); Rectangle ro = (Rectangle) prefs.getBean( "recto", null); } catch (Exception e) { assert false; System.out.println(e); e.printStackTrace(); } } boolean closeD( double d1, double d2) { if (Math.abs(d1) > 1.0E-7) return (Math.abs(d1-d2) / d1) < 1.0E-7; else return (Math.abs(d1-d2)) < 1.0E-7; } boolean closeF( float d1, float d2) { return (Math.abs(d1-d2) / d1) < 1.0E-7; } } /* Change History: $Log: TestBeans.java,v $ Revision 1.2 2002/12/24 22:04:52 john add bean, beanObject methods Revision 1.1.1.1 2002/12/20 16:40:27 john start new cvs root: prefs */