Stubbing separate compilation units
It is possible to create stubs for separate compilation units, such as procedures or packages, even for protected packages.
For the stubbing of a protected object to work, you must either:
-
Stub the package containing the protected object, or
-
A body exists for the package in which the protected body is declared as separate.
To stub a protected object you must use the following syntax:
DEFINE STUB SEPARATE(<package>) <compilation unit>
...
END DEFINE
If the compilation unit does contain an entry statement, the entry itself cannot be stubbed. In this case you must define the entry body within the DEFINE STUB block as in the following example:
DEFINE STUB SEPARATE(<package>) <compilation unit>
# entry body E1 ... is ...
END DEFINE
Example
The following example is a .ptu test script implementing a stub of a separate compilation unit. It is available in the StubAda example project provided with the product.
HEADER PARENT, ,
#With PARENT;
BEGIN
DEFINE STUB package
END DEFINE
DEFINE STUB SEPARATE(package) MY_VALUE
END DEFINE
SERVICE SOMETHING
SERVICE_TYPE extern
-- Declaration of service's parameters
#X : INTEGER;
#Ret : INTEGER;
TEST 1
FAMILY nominal
ELEMENT
-- stub of the protected object "get"
STUB My_Value.Get()2
Var X, Init = 0, ev = Init
Var Ret, Init = 0, ev = 2
#Ret := PARENT.SOMETHING(X);
END ELEMENT
END TEST -- TEST 1
END SERVICE -- SOMETHING
Related Topics
Advanced stubs | Creating Complex Stubs