public class TypeTest extends Discard
An actor that can be used for regression test of the type resolution system. During the initialize phase, after type resolution has been performed, this actor compares resolved types in the model with types stored in several parameters. If the types are the same, then the actor does nothing. However, if the types are different, then the actor throws an exception. Hence, as with the Test actor, this actor can be easily used to build automatically executed tests of the type system from within Vergil.
The types expected by this actor are stored in two parameters, each parameter contains a record of record of strings. The outer record contains labels corresponding to the names of actors in the same level of hierarchy as this actor. The inner record contains labels corresponding to the names of typeable objects in the appropriate actor. The strings in the record correspond to string representations of the types of the typeable objects. For the portTypes parameter, the typeable objects are assumed to be ports, and for the parameterTypes parameter, the objects are assumed to be parameters.
Note that this actor only tests type resolution at one level of opaque hierarchy. Hierarchical models should include multiple instances of this actor. Since filling in the types manually is difficult, this actor includes a training mode, similar to the NonStrictTest actor. This mode automatically fills in the type parameters. Also note that it is not necessary to specify the types of all typeable objects. Any objects for which no type is specified are not checked.
During runtime, this actor consumes and ignores any input tokens. This makes it very easy to add this actor to an existing model without changing the behavior of the model.
Note: For some reason, the way this actor reaches into other actors is not thread safe. This actor does not work with PN or Rendezvous, therefore.
Test
Red (ssachs) |
Red (eal) |
Entity.ContainedObjectsIterator
Modifier and Type | Field and Description |
---|---|
Parameter |
parameterTypes
A record of record of strings representing the types of
parameters of actors in the model.
|
Parameter |
portTypes
A record of record of strings representing the types of ports
of actors in the model.
|
Parameter |
trainingMode
If true, then do not check inputs, but rather collect them
into the portTypes and parameterTypes arrays.
|
_typesValid
_actorFiringListeners, _initializables, _notifyingActorFiring, _stopRequested
_changeListeners, _changeLock, _changeRequests, _debugging, _debugListeners, _deferChangeRequests, _elementName, _isPersistent, _verbose, _workspace, ATTRIBUTES, CLASSNAME, COMPLETE, CONTENTS, DEEP, FULLNAME, LINKS
COMPLETED, NOT_READY, STOP_ITERATING
Constructor and Description |
---|
TypeTest(CompositeEntity container,
java.lang.String name)
Construct an actor with an input multiport.
|
Modifier and Type | Method and Description |
---|---|
void |
initialize()
Initialize this actor.
|
configure, fire, getConfigureSource, getConfigureText
_containedTypeConstraints, _customTypeConstraints, _defaultTypeConstraints, _fireAt, _fireAt, attributeTypeChanged, clone, clone, isBackwardTypeInferenceEnabled, newPort, typeConstraintList, typeConstraints
_actorFiring, _actorFiring, _declareDelayDependency, addActorFiringListener, addInitializable, connectionsChanged, createReceivers, declareDelayDependency, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, isFireFunctional, isStrict, iterate, newReceiver, outputPortList, postfire, prefire, preinitialize, pruneDependencies, recordFiring, removeActorFiringListener, removeDependency, removeInitializable, setContainer, stop, stopFire, terminate, wrapup
_adjustDeferrals, _checkContainer, _getContainedObject, _propagateExistence, getContainer, instantiate, isAtomic, isOpaque, moveDown, moveToFirst, moveToIndex, moveToLast, moveUp, propagateExistence, setName
_addPort, _description, _exportMoMLContents, _removePort, _validateSettables, connectedPortList, connectedPorts, containedObjectsIterator, getAttribute, getPort, getPorts, linkedRelationList, linkedRelations, portList, removeAllPorts, setClassDefinition, uniqueName
_setParent, exportMoML, getChildren, getElementName, getParent, getPrototypeList, isClassDefinition, isWithinClassDefinition
_addAttribute, _adjustOverride, _attachText, _cloneFixAttributeFields, _containedDecorators, _copyChangeRequestList, _debug, _debug, _debug, _debug, _debug, _executeChangeRequests, _getIndentPrefix, _isMoMLSuppressed, _markContentsDerived, _notifyHierarchyListenersAfterChange, _notifyHierarchyListenersBeforeChange, _propagateValue, _removeAttribute, _splitName, _stripNumericSuffix, addChangeListener, addDebugListener, addHierarchyListener, attributeChanged, attributeDeleted, attributeList, attributeList, decorators, deepContains, depthInHierarchy, description, description, event, executeChangeRequests, exportMoML, exportMoML, exportMoML, exportMoML, exportMoMLPlain, getAttribute, getAttributes, getChangeListeners, getClassName, getDecoratorAttribute, getDecoratorAttributes, getDerivedLevel, getDerivedList, getDisplayName, getFullName, getModelErrorHandler, getName, getName, getSource, handleModelError, isDeferringChangeRequests, isOverridden, isPersistent, lazyContainedObjectsIterator, message, notifyOfNameChange, propagateValue, propagateValues, removeAttribute, removeChangeListener, removeDebugListener, removeHierarchyListener, requestChange, setClassName, setDeferringChangeRequests, setDerivedLevel, setDisplayName, setModelErrorHandler, setPersistent, setSource, sortContainedObjects, toplevel, toString, validateSettables, workspace
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
createReceivers, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, newReceiver, outputPortList
isFireFunctional, isStrict, iterate, postfire, prefire, stop, stopFire, terminate
addInitializable, preinitialize, removeInitializable, wrapup
description, getContainer, getDisplayName, getFullName, getName, getName, setName
getDerivedLevel, getDerivedList, propagateValue
public Parameter parameterTypes
public Parameter portTypes
public Parameter trainingMode
public TypeTest(CompositeEntity container, java.lang.String name) throws NameDuplicationException, IllegalActionException
container
- The container.name
- The name of this actor.IllegalActionException
- If the actor cannot be contained
by the proposed container.NameDuplicationException
- If the container already has an
actor with this name.public void initialize() throws IllegalActionException
initialize
in interface Initializable
initialize
in class AtomicActor<TypedIOPort>
IllegalActionException
- If the test fails.