OpenTTCN/Developer corner/Implementing external functions/Final/ef example module.ttcn

From OpenTTCN

Jump to: navigation, search

  OpenTTCN DocZone

  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


Back to main article >>

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);
}

}
Views
Personal tools