/*******************************************************************************
* This file is protected by Copyright.
* Please refer to the COPYRIGHT file distributed with this source distribution.
*
* This file is part of REDHAWK IDE.
*
* All rights reserved. This program and the accompanying materials are made available under
* the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*******************************************************************************/
// BEGIN GENERATED CODE
package gov.redhawk.model.sca.tests;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.IJobChangeEvent;
import org.eclipse.core.runtime.jobs.IJobChangeListener;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.core.runtime.jobs.JobChangeAdapter;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.transaction.util.TransactionUtil;
import org.junit.Assert;
import org.omg.CORBA.Any;
import CF.PropertySetPackage.InvalidConfiguration;
import CF.PropertySetPackage.PartialConfiguration;
import gov.redhawk.model.sca.ScaAbstractProperty;
import gov.redhawk.model.sca.ScaPackage;
import gov.redhawk.model.sca.commands.ScaModelCommand;
import gov.redhawk.model.sca.impl.ScaAbstractPropertyImpl;
import mil.jpeojtrs.sca.prf.AccessType;
/**
* <!-- begin-user-doc -->
* A test case for the model object '<em><b>Abstract Property</b></em>'.
* <!-- end-user-doc -->
* <p>
* The following features are tested:
* <ul>
* <li>{@link gov.redhawk.model.sca.ScaAbstractProperty#isIgnoreRemoteSet() <em>Ignore Remote Set</em>}</li>
* </ul>
* </p>
* <p>
* The following operations are tested:
* <ul>
* <li>{@link gov.redhawk.model.sca.ScaAbstractProperty#toAny() <em>To Any</em>}</li>
* <li>{@link gov.redhawk.model.sca.ScaAbstractProperty#fromAny(org.omg.CORBA.Any) <em>From Any</em>}</li>
* <li>{@link gov.redhawk.model.sca.ScaAbstractProperty#setRemoteValue(org.omg.CORBA.Any) <em>Set Remote Value</em>}
* </li>
* <li>{@link gov.redhawk.model.sca.ScaAbstractProperty#getProperty() <em>Get Property</em>}</li>
* <li>{@link gov.redhawk.model.sca.ScaAbstractProperty#isDefaultValue() <em>Is Default Value</em>}</li>
* <li>{@link gov.redhawk.model.sca.ScaAbstractProperty#restoreDefaultValue() <em>Restore Default Value</em>}</li>
* <li>{@link gov.redhawk.model.sca.ScaAbstractProperty#valueEquals(org.omg.CORBA.Any) <em>Value Equals</em>}</li>
* <li>{@link gov.redhawk.model.sca.ScaAbstractProperty#createPropertyRef() <em>Create Property Ref</em>}</li>
* </ul>
* </p>
* @generated
*/
public abstract class ScaAbstractPropertyTest extends IStatusProviderTest {
/**
* Constructs a new Abstract Property test case with the given name.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public ScaAbstractPropertyTest(String name) {
super(name);
}
/**
* Returns the fixture for this Abstract Property test case.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
protected ScaAbstractProperty< ? > getFixture() {
return (ScaAbstractProperty< ? >) fixture;
}
/**
* Tests the '{@link gov.redhawk.model.sca.ScaAbstractProperty#getId() <em>Id</em>}' feature getter.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see gov.redhawk.model.sca.ScaAbstractProperty#getId()
* @generated NOT
*/
public void testGetId() {
ScaModelCommand.execute(getFixture(), new ScaModelCommand() {
@Override
public void execute() {
Assert.assertNotNull(getFixture().getId());
((ScaAbstractPropertyImpl< ? >) getFixture()).setDefinition(null);
}
});
ScaModelCommand.execute(getFixture(), new ScaModelCommand() {
@Override
public void execute() {
Assert.assertNull(getFixture().getId());
}
});
}
public void testCopy() {
ScaAbstractProperty< ? > copy = EcoreUtil.copy(getFixture());
Assert.assertNotNull(copy.getDefinition());
Assert.assertNotNull(copy.getId());
Assert.assertNotNull(copy.getName());
Assert.assertNotNull(copy.getMode());
Assert.assertNotNull(copy.getProperty());
// Test to ensure the copied object is unprotected
copy.setStatus(ScaPackage.Literals.SCA_ABSTRACT_PROPERTY__ID, Status.CANCEL_STATUS);
}
/**
* Tests the '{@link gov.redhawk.model.sca.ScaAbstractProperty#getName() <em>Name</em>}' feature getter.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see gov.redhawk.model.sca.ScaAbstractProperty#getName()
* @generated NOT
*/
public void testGetName() {
ScaModelCommand.execute(getFixture(), new ScaModelCommand() {
@Override
public void execute() {
Assert.assertNotNull(getFixture().getName());
((ScaAbstractPropertyImpl< ? >) getFixture()).setDefinition(null);
}
});
ScaModelCommand.execute(getFixture(), new ScaModelCommand() {
@Override
public void execute() {
Assert.assertNull(getFixture().getName());
}
});
}
/**
* Tests the '{@link gov.redhawk.model.sca.ScaAbstractProperty#isIgnoreRemoteSet() <em>Ignore Remote Set</em>}'
* feature getter.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see gov.redhawk.model.sca.ScaAbstractProperty#isIgnoreRemoteSet()
* @generated NOT
*/
public void testIsIgnoreRemoteSet() {
// END GENERATED CODE
getFixture().isIgnoreRemoteSet();
// BEGIN GENERATED CODE
}
/**
* Tests the '{@link gov.redhawk.model.sca.ScaAbstractProperty#setIgnoreRemoteSet(boolean) <em>Ignore Remote
* Set</em>}' feature setter.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see gov.redhawk.model.sca.ScaAbstractProperty#setIgnoreRemoteSet(boolean)
* @generated NOT
*/
public void testSetIgnoreRemoteSet() {
// END GENERATED CODE
ScaModelCommand.execute(getFixture(), new ScaModelCommand() {
@Override
public void execute() {
getFixture().setIgnoreRemoteSet(true);
Assert.assertTrue(getFixture().isIgnoreRemoteSet());
getFixture().setIgnoreRemoteSet(true);
Assert.assertTrue(getFixture().isIgnoreRemoteSet());
getFixture().setIgnoreRemoteSet(false);
Assert.assertTrue(getFixture().isIgnoreRemoteSet());
getFixture().setIgnoreRemoteSet(false);
Assert.assertFalse(getFixture().isIgnoreRemoteSet());
}
});
// END GENERATED CODE
}
/**
* Tests the '{@link gov.redhawk.model.sca.ScaAbstractProperty#toAny() <em>To Any</em>}' operation.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see gov.redhawk.model.sca.ScaAbstractProperty#toAny()
* @generated NOT
*/
public void testToAny() {
// END GENERATED CODE
Assert.assertNotNull(getFixture().toAny());
// BEGIN GENERATED CODE
}
/**
* Tests the '{@link gov.redhawk.model.sca.ScaAbstractProperty#fromAny(org.omg.CORBA.Any) <em>From Any</em>}'
* operation.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see gov.redhawk.model.sca.ScaAbstractProperty#fromAny(org.omg.CORBA.Any)
* @generated NOT
*/
public void testFromAny__Any() {
// END GENERATED CODE
ScaModelCommand.execute(getFixture(), new ScaModelCommand() {
@Override
public void execute() {
getFixture().fromAny(getFixture().toAny());
}
});
// BEGIN GENERATED CODE
}
/**
* Tests the '{@link gov.redhawk.model.sca.ScaAbstractProperty#setRemoteValue(org.omg.CORBA.Any) <em>Set Remote
* Value</em>}' operation.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @throws InvalidConfiguration
* @throws PartialConfiguration
* @see gov.redhawk.model.sca.ScaAbstractProperty#setRemoteValue(org.omg.CORBA.Any)
* @generated NOT
*/
public void testSetRemoteValue__Any() throws PartialConfiguration, InvalidConfiguration {
// END GENERATED CODE
getFixture().setRemoteValue(getFixture().toAny());
// BEGIN GENERATED CODE
}
/**
* Tests the '{@link gov.redhawk.model.sca.ScaAbstractProperty#getProperty() <em>Get Property</em>}' operation.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see gov.redhawk.model.sca.ScaAbstractProperty#getProperty()
* @generated NOT
*/
public void testGetProperty() {
// END GENERATED CODE
Assert.assertNotNull(getFixture().getProperty());
// BEGIN GENERATED CODE
}
/**
* Tests the '{@link gov.redhawk.model.sca.ScaAbstractProperty#isDefaultValue() <em>Is Default Value</em>}'
* operation.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see gov.redhawk.model.sca.ScaAbstractProperty#isDefaultValue()
* @generated NOT
*/
public void testIsDefaultValue() {
// END GENERATED CODE
Assert.assertTrue(getFixture().isDefaultValue());
// BEGIN GENERATED CODE
}
/**
* Tests the '{@link gov.redhawk.model.sca.ScaAbstractProperty#restoreDefaultValue() <em>Restore Default Value</em>}
* ' operation.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see gov.redhawk.model.sca.ScaAbstractProperty#restoreDefaultValue()
* @generated NOT
*/
public void testRestoreDefaultValue() {
// END GENERATED CODE
ScaModelCommand.execute(getFixture(), new ScaModelCommand() {
@Override
public void execute() {
getFixture().restoreDefaultValue();
Assert.assertTrue(getFixture().isDefaultValue());
}
});
// BEGIN GENERATED CODE
}
/**
* Tests the '{@link gov.redhawk.model.sca.ScaAbstractProperty#valueEquals(org.omg.CORBA.Any) <em>Value Equals</em>}
* ' operation.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see gov.redhawk.model.sca.ScaAbstractProperty#valueEquals(org.omg.CORBA.Any)
* @generated NOT
*/
public void testValueEquals__Any() {
// END GENERATED CODE
Any any = getFixture().toAny();
Assert.assertTrue(getFixture().valueEquals(any));
// BEGIN GENERATED CODE
}
/**
* Tests the '{@link gov.redhawk.model.sca.ScaAbstractProperty#createPropertyRef() <em>Create Property Ref</em>}'
* operation.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see gov.redhawk.model.sca.ScaAbstractProperty#createPropertyRef()
* @generated NOT
*/
public abstract void testCreatePropertyRef();
/**
* Tests the '{@link gov.redhawk.model.sca.ScaAbstractProperty#getDescription() <em>Description</em>}' feature
* getter.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see gov.redhawk.model.sca.ScaAbstractProperty#getDescription()
* @generated NOT
*/
public void testGetDescription() {
ScaModelCommand.execute(getFixture(), new ScaModelCommand() {
@Override
public void execute() {
Assert.assertNotNull(getFixture().getDescription());
((ScaAbstractPropertyImpl< ? >) getFixture()).setDefinition(null);
}
});
ScaModelCommand.execute(getFixture(), new ScaModelCommand() {
@Override
public void execute() {
Assert.assertNull(getFixture().getDescription());
}
});
}
/**
* Tests the '{@link gov.redhawk.model.sca.ScaAbstractProperty#getMode() <em>Mode</em>}' feature getter.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see gov.redhawk.model.sca.ScaAbstractProperty#getMode()
* @generated NOT
*/
public void testGetMode() {
ScaModelCommand.execute(getFixture(), new ScaModelCommand() {
@Override
public void execute() {
Assert.assertNotNull(getFixture().getMode());
((ScaAbstractPropertyImpl< ? >) getFixture()).setDefinition(null);
}
});
ScaModelCommand.execute(getFixture(), new ScaModelCommand() {
@Override
public void execute() {
Assert.assertEquals(AccessType.WRITEONLY, getFixture().getMode());
}
});
}
/**
* Tests the '
* {@link gov.redhawk.model.sca.ScaAbstractProperty#fetchAttributes(org.eclipse.core.runtime.IProgressMonitor)
* <em>Fetch Attributes</em>}' operation.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see gov.redhawk.model.sca.ScaAbstractProperty#fetchAttributes(org.eclipse.core.runtime.IProgressMonitor)
* @generated NOT
*/
public void testFetchAttributes__IProgressMonitor() {
// END GENERATED CODE
ScaModelCommand.execute(getFixture(), new ScaModelCommand() {
@Override
public void execute() {
((ScaAbstractPropertyImpl< ? >) getFixture()).setDefinition(null);
}
});
// BEGIN GENERATED CODE
}
@Override
public void testProtected() {
Assert.assertNotNull(TransactionUtil.getEditingDomain(getFixture()));
final String oldId = getFixture().getId();
try {
getFixture().setId("hello");
getFixture().setId("world");
Assert.fail("Object not protected");
} catch (final IllegalStateException e) {
Assert.assertEquals("Cannot modify resource set without a write transaction", e.getMessage());
} finally {
ScaModelCommand.execute(getFixture(), new ScaModelCommand() {
@Override
public void execute() {
getFixture().setId(oldId);
}
});
}
}
private volatile boolean testSetDefintionAfterValue_remoteSetScheduled;
private volatile boolean testSetDefintionAfterValue_remoteSetDone;
/**
* IDE-1589
* Setting the property definition after a property already has a value should not cause the value to be remotely
* set.
*/
public void testSetDefintionAfterValue() throws InterruptedException {
final Object doneLock = new Object();
IJobChangeListener listener = new JobChangeAdapter() {
@Override
public void scheduled(IJobChangeEvent event) {
if ("Setting Property Value".equals(event.getJob().getName())) {
testSetDefintionAfterValue_remoteSetScheduled = true;
}
}
@Override
public void done(IJobChangeEvent event) {
if ("Setting Property Value".equals(event.getJob().getName())) {
synchronized (doneLock) {
testSetDefintionAfterValue_remoteSetDone = true;
doneLock.notifyAll();
}
}
}
};
Job.getJobManager().addJobChangeListener(listener);
// Ensure setting the value triggers remote value set
synchronized (doneLock) {
testSetDefintionAfterValue_remoteSetDone = false;
setNewValue();
doneLock.wait(5000);
Assert.assertTrue(testSetDefintionAfterValue_remoteSetDone);
}
// Ensure changing the definition does NOT trigger remote value set
testSetDefintionAfterValue_remoteSetScheduled = false;
clearAndResetDefintion();
Assert.assertFalse(testSetDefintionAfterValue_remoteSetScheduled);
Job.getJobManager().removeJobChangeListener(listener);
}
/**
* This should call <code>setValue()</code> on the property (or some part of it if a struct / struct seq)
*/
protected abstract void setNewValue();
/**
* This should use {@link ScaAbstractProperty#getDefinition()} and
* {@link ScaAbstractProperty#setDefinition(mil.jpeojtrs.sca.prf.AbstractProperty)} to set the definition to null,
* and then to set it back to its original value.
*/
protected abstract void clearAndResetDefintion();
} //ScaAbstractPropertyTest