OpenTTCN/Developer corner/Implementing external functions/Final/ef example module.ttcn
From OpenTTCN
Home | Developer's corner | Knowledge base | Working documents | Documentation | OpenTTCN IDE | Tutorials | Training | How do I | Frequently asked questions | Technical support |
ef_example_module.ttcn
module ef_example_module
{
///////////////////////////////////////////////////////////////////
// External function definitions
// returns a1 + a2
external function ef_calc_sum(integer a1, integer a2) return integer;
// returns a1 - a2
external function ef_calc_sub(integer a1, integer a2) return integer;
// returns a1 * a2
external function ef_calc_mul(integer a1, integer a2) return integer;
// returns a1 / a2
external function ef_calc_div(integer a1, integer a2) return integer;
/**
* Replaces all occurences of search_substr in str with new_substr.
*
* Both search_substr and new_substr must be of the same length.
*
* Returns the resulting string in the same str parameter.
*
* Upon return occurences_num contains number of actual replacements
* made, what is duplicated in the external function return value.
*/
external function ef_find_and_replace(
inout charstring str,
in charstring search_substr,
in charstring new_substr,
out integer occurences_num)
return integer;
///////////////////////////////////////////////////////////////////
// External functions testing
type component MTC { }
testcase TC_test_ef() runs on MTC
{
var integer result;
result := ef_calc_sum(5, 10);
log("5 + 10 = " & int2str(result));
if (result != 15) { setverdict(fail); stop; }
result := ef_calc_sub(5, 10);
log("5 - 10 = " & int2str(result));
if (result != -5) { setverdict(fail); stop; }
result := ef_calc_mul(5, 10);
log("5 * 10 = " & int2str(result));
if (result != 50) { setverdict(fail); stop; }
result := ef_calc_div(5, 10);
log("5 / 10 = " & int2str(result));
if (result != 0) { setverdict(fail); stop; }
setverdict(pass);
}
testcase TC_test_ef_find_and_replace() runs on MTC
{
var integer result, num_of_occurences;
var charstring s := "In the town he stayed for the purpose.";
log("original s = " & s);
result := ef_find_and_replace(s, "the", "thy", num_of_occurences);
log("modified s = " & s);
log("num_of_occurences = " & int2str(num_of_occurences));
log("result = " & int2str(result));
if (s != "In thy town he stayed for thy purpose.") { setverdict(fail); stop; }
if (num_of_occurences != 2) { setverdict(fail); stop; }
if (result != 2) { setverdict(fail); stop; }
setverdict(pass);
}
}
