|
What this is
Other links
The source code/* * Sun Public License Notice * * The contents of this file are subject to the Sun Public License * Version 1.0 (the "License"). You may not use this file except in * compliance with the License. A copy of the License is available at * http://www.sun.com/ * * The Original Code is NetBeans. The Initial Developer of the Original * Code is Sun Microsystems, Inc. Portions Copyright 1997-2000 Sun * Microsystems, Inc. All Rights Reserved. */ /* * DataObjectTest.java * * Here are implemented separated tests methos, testing manipulating operations with DataObejcts. * Other classes in this packages use them in the logic chain to create meaningfull testcases. * * Created on June 13, 2001, 1:19 PM */ package DataLoaderTests.DataObjectTest; import java.io.FileNotFoundException; import org.openide.filesystems.FileObject; import org.openide.filesystems.FileUtil; import org.openide.loaders.DataObject; import org.openide.loaders.DataShadow; import org.openide.loaders.DataFolder; import org.openide.loaders.DataLoader; import org.openide.loaders.DataNode; import org.openide.util.HelpCtx; import org.openide.util.Lookup; import java.io.*; import java.util.Enumeration; import java.util.Properties; import junit.framework.*; import org.netbeans.junit.*; import org.openide.loaders.DataObjectNotFoundException; public class DataObjectTest extends NbTestCase { DataFolder resources = null; /** * teporary data folder */ DataFolder temp = null; /** Creates new DataObjectTest */ public DataObjectTest(java.lang.String testName) { super(testName); } boolean successful = true; /**This methods write an output to log stream*/ public void writeLog(String text) { log(text); System.out.println(text); if (text.equals(FAILED)) successful = false; } /**This methods write an output to reference stream*/ public void writeRef(String text) { ref(text); System.out.println(text); if (text.equals(FAILED)) successful = false; } /**This methods write an output to reference stream and asserts success of the test fragment*/ public void writeRef(String text, String inf) { ref(text); System.out.println(text); if (inf.equals(FAILED)) successful = false; assertTrue(text,successful); } /**If enabled, prints exception to the output and to the ref stream*/ void printException(Exception e) { // if(PRINT_EXCEPTIONS) { e.printStackTrace(); e.printStackTrace(getRef()); // } } /**overrides parent definition of this methot, *so this new works in this way - returns work filed *that should have been set by user of this utility class */ public String getWorkDirPath() { if (work == null) fail("Working directory not set!"); //always return what a someone else has set return work; } /** *Performs initializing before own tests starts */ void prepare() throws Exception { //initializing ide //when not in XTest harness -> woring directory will be under actual userdir successful = true; String xtestData = System.getProperty("xtest.data"); File dataDir = new File (xtestData,"DataObjectTest"); assertTrue(dataDir.exists()); if (dataDir.exists() == false ) { throw new FileNotFoundException(dataDir.getPath()); } FileObject fo = FileUtil.toFileObject(dataDir); assertNotNull(fo); resources = DataFolder.findFolder(fo); System.err.println("resources:" + resources); temp = DataFolder.findFolder(FileUtil.toFileObject(new File (System.getProperty("xtest.tmpdir")))); assertNotNull("No temporary folder found.",temp); } /** *Performs clean up */ void clean() { //Put some cleaning stuff here ... } /** *Performs waiting of current thread for time in millis *@param millist integer number - time in millis to wait */ void dummyWait(int millis) { try { Thread.sleep(millis); } catch (Exception ex) { printException(ex); } } DataObject getDataObject(FileObject fo) { DataObject dob = null; try{ dob = DataObject.find(fo); }catch(Exception ex){ printException(ex); writeRef("DataObject.find has failed!",FAILED); return null; } DataLoader loader = dob.getLoader(); return getDataObject(fo,loader.getDisplayName()); } DataObject getDataObject(FileObject fo, String moduleName) { writeRef("\nGetting DataObject started ..."); DataLoader loader = null; try { loader = new DataLoaderTests.LoaderPoolTest.LoaderPoolTest("x").getDataLoader(moduleName); }catch(Exception ex){ //simple do nothing } DataObject do1 = null; try{ do1 = DataObject.find(fo); }catch(Exception ex){ printException(ex); writeRef("DataObject.find has failed",FAILED); return null; } DataLoader loader2 = do1.getLoader(); if ((loader!=null) && (loader2!=null)) { if (! loader.equals(loader2)) { writeRef("DLs do not equals!",FAILED); return null; } else { writeRef(PASSED); return do1; } } else { if (loader2 != null) {writeRef(PASSED);return do1;} } writeRef("Both DLs null!?!",FAILED); return null; } boolean containsFO(DataObject dob, FileObject fob){ writeRef("\nDoes files contain FO ..."); java.util.Iterator it = dob.files().iterator(); while (it.hasNext()) { if (fob.equals(it.next())) { writeRef(PASSED); return true; } } writeRef("Files() doesn't contain the FO!",FAILED); return false; } boolean isInFolder(DataObject dob, DataFolder df){ writeRef("\nIs this DO in that DF ..."); if (dob.getFolder().equals(df)) { writeRef(PASSED); return true; } else{ writeRef("This DO isn't in the DF!",FAILED); return false; } } boolean testHelpCtx(DataObject dob){ writeRef("\nAsking for HelpCtx ..."); HelpCtx hc = dob.getHelpCtx(); assertTrue(dob.isValid()); System.out.println(dob.getClass()); if ( ( (dob instanceof DataFolder) && hc == null ) || ( (hc.getHelpID()==null)&&(hc.getHelp()!=null) ) || ( (hc.getHelpID()!=null)&&(hc.getHelp()==null) ) ) { writeRef(PASSED); return true; } else{ writeRef("HelpCtx error!",FAILED); return false; } } void getName(DataObject dob){ writeRef("\nGetting name ..."); writeRef("\n" + dob.getName()); writeRef(PASSED); } void testDelegate(DataObject dob){ //very simple test this test tests DO not Nodes ;-) writeRef("\nTesting DataObject's node delegate ..."); DataNode dn = (DataNode) dob.getNodeDelegate(); DataObjectTest.PChL l = new DataObjectTest.PChL(); dob.addPropertyChangeListener(l); writeRef("\nDisplayName: " + dn.getDisplayName()); writeRef("Name: " + dn.getName()); writeRef("ShortDescription: " + dn.getShortDescription()); writeRef("ShowFileExtensions: " + dn.getShowFileExtensions()); writeRef("Preferred: " + dn.isPreferred()); //writeRef("ParentNode name: " + dn.getParentNode().getName()); writeRef("Expert: " + dn.isExpert()); writeRef("Hidden: " + dn.isHidden()); writeRef("Leaf: " + dn.isLeaf()); String dsn = dn.getDisplayName(); String n = dn.getName(); String sd = dn.getShortDescription(); boolean sfe = dn.getShowFileExtensions(); boolean p = dn.isPreferred(); //new settings dn.setDisplayName("Oleee"); dn.setName("Hmmm",true); dn.setShortDescription("A short description."); dn.setShowFileExtensions(true); dn.setPreferred(true); writeRef("\nnew DisplayName: " + dn.getDisplayName()); writeRef("new Name: " + dn.getName()); writeRef("new ShortDescription: " + dn.getShortDescription()); writeRef("new ShowFileExtensions: " + dn.getShowFileExtensions()); writeRef("new Preferred: " + dn.isPreferred()); dummyWait(1000); dob.removePropertyChangeListener(l); //restoring old settings dn.setDisplayName(dsn); dn.setName(n,true); dn.setShortDescription(sd); dn.setShowFileExtensions(sfe); dn.setPreferred(p); writeRef(PASSED); } class PChL implements java.beans.PropertyChangeListener{ public void propertyChange(java.beans.PropertyChangeEvent propertyChangeEvent) { writeRef("\nFrom DO's property listener: " + propertyChangeEvent.getPropertyName() + "(" + propertyChangeEvent.getOldValue() + " -> " + propertyChangeEvent.getNewValue() + ")"); } } class VChL implements java.beans.VetoableChangeListener{ public void vetoableChange(java.beans.PropertyChangeEvent propertyChangeEvent) throws java.beans.PropertyVetoException { if ( DataObject.PROP_VALID.equals(propertyChangeEvent.getPropertyName()) && (propertyChangeEvent.getNewValue()== Boolean.FALSE) ) { writeRef("\nGoing to veto this change ..."); throw new java.beans.PropertyVetoException("This change is not allowed ;-)", propertyChangeEvent); } else { writeRef("\nNot vetoing this change."); } } } boolean inModifiedContainer(DataObject dob){ writeRef("\nShould be in modified container ..."); java.util.Iterator it = dob.getRegistry().getModifiedSet().iterator(); while (it.hasNext()) { if (dob.equals(it.next())) { writeRef(PASSED); return true; } } writeRef("This DO isn't in modified container!",FAILED); return false; } boolean notInModifiedContainer(DataObject dob){ writeRef("\nShould not be in modified container ..."); java.util.Iterator it = dob.getRegistry().getModifiedSet().iterator(); while (it.hasNext()) { if (dob.equals(it.next())) { writeRef("This DO is in modified container!",FAILED); return false; } } writeRef(PASSED); return true; } class ChL implements javax.swing.event.ChangeListener{ public void stateChanged(javax.swing.event.ChangeEvent e) { writeRef("\nSome change over set of modified DOs!"); writeRef("Registry: " + e.getSource().toString()); } } public boolean checkModifyAbility(DataObject dob) throws Exception { writeRef("\nChecking modify marking facility ..."); javax.swing.event.ChangeListener l = new DataObjectTest.ChL(); dob.getRegistry().addChangeListener(l); performDelete(dob); dummyWait(1000); if(!dob.isModified()){ if(notInModifiedContainer(dob)){ writeRef("\nMarking as modified ..."); dob.setModified(true); dummyWait(1000); if(inModifiedContainer(dob)){ writeRef(PASSED); writeRef("\nMarking as not modified ..."); dob.setModified(false); } else { writeRef("Now should be in modified container but isn't!",FAILED); return false; } } else { writeRef("Modified but not in the modified registry!",FAILED); return false; } } else { writeRef("I have thought that it shouldn't be in modified registry.!",FAILED); return false; } dummyWait(1000); if(!notInModifiedContainer(dob)){ writeRef("Shouldn't be in modified registry!!",FAILED); return false; } else writeRef(PASSED); dummyWait(1000); dob.getRegistry().removeChangeListener(l); writeRef(PASSED); return true; } public void checkValidity(DataObject dob) throws Exception { writeRef("\nTesting validity ..."); if (!dob.isValid()) { writeRef("DO have to be valid for this test!!",FAILED); return; } DataObject newDO = null; if (dob.isCopyAllowed()) { newDO = dob.copy(temp); } else { writeRef("\nCopy not allowed!"); return; } if (!newDO.isValid()) { writeRef("Newly created working DO have to be valid for this test!",FAILED); return; } DataObjectTest.VChL v = new DataObjectTest.VChL(); newDO.addVetoableChangeListener(v); writeRef("\nChecking vetoableChangeListener ..."); try{ newDO.setValid(false); writeRef("This change should have been vetoed!",FAILED); }catch(Exception ex){ writeRef(ex.getMessage()); writeRef(PASSED); } dummyWait(2000); newDO.removeVetoableChangeListener(v); if (!newDO.isValid()) { writeRef("setValid(false) should have been vetoed, but isn't, now is newDO invalid, cannot continue!",FAILED); return; } if (newDO.isDeleteAllowed()){ try{ newDO.delete(); }catch(Exception ex){ printException(ex); writeRef("Deleting of copied object failed!",FAILED); return; } } else { writeRef("\nDelete not allowed!"); return; } if (newDO.isValid()) { writeRef("newDO should not be valid at the end of this test!",FAILED); return; } writeRef(PASSED); } public boolean performCopy(DataObject dob) throws Exception { writeRef("\nNow copying ..."); DataObject newDO = null; if (dob.isCopyAllowed()) { newDO = dob.copy(temp); } else { writeRef("\nCopy not allowed!"); return false; } if (! newDO.getName().equals(dob.getName())) { writeRef("Old and new name differ!",FAILED); return false; } if (newDO.isDeleteAllowed()){ newDO.delete(); } else { writeRef("\nDelete not allowed!"); return false; } writeRef(PASSED); return true; } public boolean performMove(DataObject dob){ writeRef("\nNow moving ..."); if (dob.isMoveAllowed()) { try{ dob.move(temp); }catch(Exception ex){ printException(ex); writeRef("Moving failed!",FAILED); return false; } } else { writeRef("\nMove not allowed!"); return false; } if (dob.isMoveAllowed()){ try{ dob.move(resources); }catch(Exception ex){ printException(ex); writeRef("Moving back failed!",FAILED); return false; } } else { writeRef("\nMove not allowed!"); return false; } writeRef(PASSED); return true; } public boolean performRename(DataObject dob){ writeRef("\nNow renaming ..."); final String newName = "NewName"; String oldName = dob.getName(); if (dob.isRenameAllowed()) { try{ dob.rename(newName); }catch(Exception ex){ printException(ex); writeRef("Renaming failed!",FAILED); return false; } } else { writeRef("\nRename not allowed!"); return false; } if (! newName.equals(dob.getName())) { writeRef("New name not set!",FAILED); return false; } if (dob.isRenameAllowed()){ try{ dob.rename(oldName); }catch(Exception ex){ printException(ex); writeRef("Renaming back failed!",FAILED); return false; } } else { writeRef("\nRename not allowed!"); return false; } writeRef(PASSED); return true; } public boolean performDelete(DataObject dob) throws Exception { writeRef("\nNow deleting ..."); String oldName = dob.getName(); DataObject backup = null; if (dob.isCopyAllowed()) { backup = dob.copy(temp); } else { writeRef("\nCopy not allowed!"); return false; } if (dob.isDeleteAllowed()) { dob.delete(); } else { writeRef("\nDelete not allowed!"); return false; } if (backup.isMoveAllowed()) { backup.move(resources); } else { writeRef("\nMove not allowed!"); return false; } writeRef(PASSED); return true; } boolean checkManipulationOperations(DataObject dob) throws Exception { writeRef("\nChecking manipulating operations for " + dob.getName() + " ..."); return performCopy(dob) && performMove(dob) && performRename(dob) && performDelete(dob); } public boolean checkTemplate(DataObject dob){ writeRef("\nNow checking template ..."); if(!dob.isTemplate()){ try{ dob.setTemplate(true); }catch(Exception ex){ printException(ex); writeRef("Setting template failed!",FAILED); return false; } if(!dob.isTemplate()) { writeRef("DO should be template but isn't!",FAILED); return false; } try{ dob.setTemplate(false); }catch(Exception ex){ printException(ex); writeRef("Unsetting template failed!",FAILED); return false; } } else writeRef("\nIs a template."); writeRef(PASSED); return true; } public DataShadow shadowMe(DataObject dob) throws Exception{ return shadowMe(dob,null); } public DataShadow shadowMe(DataObject dob, String name) throws Exception { writeRef("\nCreating shadow from " + dob.getName() + " ..."); if(dob.isShadowAllowed()){ // try{ DataShadow ds = null; ds = DataShadow.create(temp, name, dob); writeRef(PASSED); return ds; // }catch(Exception ex){ // printException(ex); // writeRef("Creating of shadow failed!",FAILED); // return null; // } } else { writeRef("\nThis DO cannot be shadowed!"); writeRef(PASSED); return null; } } public static void showFilesRecursively(File f, PrintStream ps) { ps.println(f); if (f.isDirectory()) { File files [] = f.listFiles(); for (int i = 0 ; i < files.length ; i++) { showFilesRecursively(files[i],ps); } } } public static DataObject findResource(String name) throws Exception { String xtestData = System.getProperty("xtest.data"); if (! xtestData.endsWith(File.separator) ) { xtestData = xtestData + "/"; } String fileName = xtestData + name.substring(1).replace('/',File.separatorChar); System.out.println("fileName:" + fileName); if (new File(fileName).exists() == false ) { throw new FileNotFoundException(fileName); } FileObject fo = org.openide.filesystems.FileUtil.toFileObject(new File(fileName)); if (fo == null) { throw new NullPointerException("No resource found for " + fileName); } try { return DataObject.find(fo); } catch (Exception e) { e.printStackTrace(); throw new NullPointerException("No resource found for " + fileName); } } /**ONLY FOR TESTING PURPOSES *REAL TESTS ARE IN SEPARATED CLASSES */ //if you want print exceptions into log file, put here true. public final boolean PRINT_EXCEPTIONS = true; public final String PASSED = "passed.\n"; public final String FAILED = "failed.\n"; //workdir, this hould be set by an user of this class //user of this class shouldn't use their own ref and log public static String work = null; } |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.