Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
replacer_SW.ttcn 9.26 KiB
/******************************************************************************
 * Copyright (c) 2000-2016 Ericsson Telecom AB
 * 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
 *
 * Contributors:
 *   Balasko, Jeno
 *   Raduly, Csaba
 *
 ******************************************************************************/
module replacer_SW {	//^In TTCN-3 module `replacer_SW'://

type component PDTestComponent {};

/* replace on BITSTRING values.  Examples from C.34 of ETSI ES 201 873-1
   V3.3.1 (2008-02).  */

const integer a := 0
const integer b := 1
const bitstring bs_1 := replace('00000110'B, 1, 3, '111'B)            // returns '01110110'B
const bitstring bs_2 := replace('00000110'B, b + a, b + b + b, '111'B)// returns '01110110'B

testcase replace_bitstr() runs on PDTestComponent { //^In testcase definition//
  if (bs_1 == '01110110'B) { setverdict(pass) }
  else { setverdict(fail) } //^In else statement// \
                            //^warning\: Control never reaches this code because of previous effective condition\(s\)//
  if (bs_1 == bs_2) { setverdict(pass) }
  else { setverdict(fail) } //^In else statement// \
                            //^warning\: Control never reaches this code because of previous effective condition\(s\)//
}

/* replace on HEXSTRING values.  */

const hexstring hs_1 := replace('ABCDEF'H, 0, 2, '123'H)    // returns '123CDEF'H
const hexstring hs_2 := replace('ABCDEF'H, a, b + 1, '123'H)// returns '123CDEF'H

testcase replace_hexstr() runs on PDTestComponent { //^In testcase definition//
  if (hs_1 == '123CDEF'H) { setverdict(pass) }
  else { setverdict(fail) } //^In else statement// \
                            //^warning\: Control never reaches this code because of previous effective condition\(s\)//
  if (hs_1 == hs_2) { setverdict(pass) }
  else { setverdict(fail) } //^In else statement// \
                            //^warning\: Control never reaches this code because of previous effective condition\(s\)//
}

/* replace on OCTETSTRING values.  */

const octetstring c := 'FF96'O
const octetstring os_0 := '01AB23CD'O
const octetstring os_1 := replace('01AB23CD'O, 2, 1, 'FF96'O)    // returns '01ABFF96CD'O
const octetstring os_2 := replace('01AB23CD'O, a + 2, b, 'FF96'O)// returns '01ABFF96CD'O
const octetstring os_3 := replace(os_0, 2, b, c)                 // returns '01ABFF96CD'O

testcase replace_octetstr() runs on PDTestComponent { //^In testcase definition//
  if (os_1 == '01ABFF96CD'O) { setverdict(pass) }
  else { setverdict(fail) } //^In else statement// \
                            //^warning\: Control never reaches this code because of previous effective condition\(s\)//
  if (os_2 == '01ABFF96CD'O) { setverdict(pass) }
  else { setverdict(fail) } //^In else statement// \
                            //^warning\: Control never reaches this code because of previous effective condition\(s\)//
  if (os_1 == os_2) { setverdict(pass) }
  else { setverdict(fail) } //^In else statement// \
                            //^warning\: Control never reaches this code because of previous effective condition\(s\)//
  if (os_2 == os_3) { setverdict(pass) }
  else { setverdict(fail) } //^In else statement// \
                            //^warning\: Control never reaches this code because of previous effective condition\(s\)//
}

/* replace on CHARSTRING values.  */

const charstring x := "x"
const charstring cs_0 := "My name is JJ"
const charstring cs_1 := replace("My name is JJ", 11, 1, "xx")    // returns "My name is xxJ"
const charstring cs_2 := replace("My name is JJ", 11, b - 1, "xx")// returns "My name is xxJJ"
const charstring cs_3 := replace("My name is JJ", 2, 2, "x")      // returns "Myxame is JJ"
const charstring cs_4 := replace("My name is JJ", b + 1, b + 1, x)// returns "Myxame is JJ"
const charstring cs_5 := replace("My name is JJ", 13, 0, "xx")    // returns "My name is JJxx"
const charstring cs_6 := replace(cs_0, 13, a, "xx")               // returns "My name is JJxx"
/*
TODO: move to _SE const charstring cs_7 := replace("My name is JJ", 12, 2, "xx") // produces test case error (compile error)
     -"-          const charstring cs_8 := replace("My name is JJ", 13, 2, "xx") // produces test case error (compile error)
*/
testcase replace_charstr() runs on PDTestComponent { //In testcase definition//
  if (cs_1 == "My name is xxJ") { setverdict(pass) }
  else { setverdict(fail) } //^In else statement// \
                            //^warning\: Control never reaches this code because of previous effective condition\(s\)//
  if (cs_2 == "My name is xxJJ") { setverdict(pass) }
  else { setverdict(fail) } //^In else statement// \
                            //^warning\: Control never reaches this code because of previous effective condition\(s\)//
  if (cs_3 == "Myxame is JJ") { setverdict(pass) }
  else { setverdict(fail) } //^In else statement// \
                            //^warning\: Control never reaches this code because of previous effective condition\(s\)//
  if (cs_4 == "Myxame is JJ") { setverdict(pass) }
  else { setverdict(fail) } //^In else statement// \
                            //^warning\: Control never reaches this code because of previous effective condition\(s\)//
  if (cs_3 == cs_4) { setverdict(pass) }
  else { setverdict(fail) } //^In else statement// \
                            //^warning\: Control never reaches this code because of previous effective condition\(s\)//
  if (cs_5 == "My name is JJxx") { setverdict(pass) }
  else { setverdict(fail) } //^In else statement// \
                            //^warning\: Control never reaches this code because of previous effective condition\(s\)//
  if (cs_6 == "My name is JJxx") { setverdict(pass) }
  else { setverdict(fail) } //^In else statement// \
                            //^warning\: Control never reaches this code because of previous effective condition\(s\)//
  if (cs_5 == cs_6) { setverdict(pass) }
  else { setverdict(fail) } //^In else statement// \
                            //^warning\: Control never reaches this code because of previous effective condition\(s\)//
}

/* replace on UNIVERSAL_CHARSTRING values.  */

const universal charstring u := char(0, 0, 0, 120) & ""
const universal charstring us_0 := char(0, 0, 0, 77) & "y name is JJ"
const universal charstring us_1 := replace(char(0, 0, 0, 77) & "y name is JJ", 11, 1, char(0, 0, 0, 120) & "x")    // returns "My name is xxJ"
const universal charstring us_2 := replace(char(0, 0, 0, 77) & "y name is JJ", 11, b - 1, char(0, 0, 0, 120) & "x")// returns "My name is xxJJ"
const universal charstring us_3 := replace(char(0, 0, 0, 77) & "y name is JJ", 2, 2, char(0, 0, 0, 120) & "")      // returns "Myxame is JJ"
const universal charstring us_4 := replace(char(0, 0, 0, 77) & "y name is JJ", b + 1, b + 1, u)                    // returns "Myxame is JJ"
const universal charstring us_5 := replace(char(0, 0, 0, 77) & "y name is JJ", 13, 0, char(0, 0, 0, 120) & "x")    // returns "My name is JJxx"
const universal charstring us_6 := replace(us_0, 13, a, char(0, 0, 0, 120) & "x")                                  // returns "My name is JJxx"

testcase replace_ucharstr() runs on PDTestComponent { //In testcase definition//
  if (us_1 == char(0, 0, 0, 77) & "y name is xxJ") { setverdict(pass) }
  else { setverdict(fail) } //^In else statement// \
                            //^warning\: Control never reaches this code because of previous effective condition\(s\)//
  if (us_2 == char(0, 0, 0, 77) & "y name is xxJJ") { setverdict(pass) }
  else { setverdict(fail) } //^In else statement// \
                            //^warning\: Control never reaches this code because of previous effective condition\(s\)//
  if (us_3 == char(0, 0, 0, 77) & "yxame is JJ") { setverdict(pass) }
  else { setverdict(fail) } //^In else statement// \
                            //^warning\: Control never reaches this code because of previous effective condition\(s\)//
  if (us_4 == char(0, 0, 0, 77) & "yxame is JJ") { setverdict(pass) }
  else { setverdict(fail) } //^In else statement// \
                            //^warning\: Control never reaches this code because of previous effective condition\(s\)//
  if (us_3 == us_4) { setverdict(pass) }
  else { setverdict(fail) } //^In else statement// \
                            //^warning\: Control never reaches this code because of previous effective condition\(s\)//
  if (us_5 == char(0, 0, 0, 77) & "y name is JJxx") { setverdict(pass) }
  else { setverdict(fail) } //^In else statement// \
                            //^warning\: Control never reaches this code because of previous effective condition\(s\)//
  if (us_6 == char(0, 0, 0, 77) & "y name is JJxx") { setverdict(pass) }
  else { setverdict(fail) } //^In else statement// \
                            //^warning\: Control never reaches this code because of previous effective condition\(s\)//
  if (us_5 == us_6) { setverdict(pass) }
  else { setverdict(fail) } //^In else statement// \
                            //^warning\: Control never reaches this code because of previous effective condition\(s\)//
}

control {
	execute (replace_bitstr());
	execute (replace_hexstr());
	execute (replace_octetstr());
	execute (replace_charstr());
	execute (replace_ucharstr());
}

}