|
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.