diff --git a/regression_test/octetstrOper/ToctetstrOper.ttcn b/regression_test/octetstrOper/ToctetstrOper.ttcn
index 85915a5f81575157b5093a748c2c403d8f44ea3f..9367386edff3cf18920e8cbb35ec54c842d2f59c 100644
--- a/regression_test/octetstrOper/ToctetstrOper.ttcn
+++ b/regression_test/octetstrOper/ToctetstrOper.ttcn
@@ -545,6 +545,83 @@ testcase tc_printable_octetstring_ttcn2string() runs on octetstrOper_comptype {
   }
 }
 
+// === String_Element tests ===
+
+type component CT{
+  port OSPort  OS
+  timer T
+}
+
+type port OSPort message {
+  inout octetstring
+} with { extension "internal" }
+
+function f_os(in octetstring os) return octetstring {
+  return os;
+}
+
+testcase tc_os() runs on CT {
+	var octetstring vl_os1 := '0102'O, vl_os2;
+	vl_os2 := f_os(vl_os1[0]);
+	if( vl_os2 == '01'O ) {setverdict(pass)} else { setverdict(fail)}
+}
+
+altstep as_os(in octetstring str) runs on CT {
+  var template octetstring vl_str := ?;
+  var octetstring r;
+  [] OS.receive(vl_str) -> value r { if ( r == str) { setverdict(pass) } }
+  [] T.timeout { setverdict(fail, "timeout")}
+}
+
+testcase tc_altstep_os() runs on CT {
+	var octetstring vl_str := '01'O;
+	connect(self:OS, self:OS);
+	T.start(1.0);
+	OS.send(vl_str);
+	as_os(vl_str);
+	T.stop;
+}
+
+testcase tc_altstep_os_idx() runs on CT {
+	var octetstring vl_str := '0001'O
+	connect(self:OS, self:OS);
+	T.start(1.0);
+	OS.send(vl_str[0]); //<====== This is compiled for an erroneous code
+	as_os(vl_str[0]);
+	T.stop;
+}
+
+altstep as_os_template(in template octetstring str) runs on CT {
+  var template octetstring vl_str := ?;
+  var octetstring r;
+  [] OS.receive(vl_str) -> value r { if ( r == valueof(str)) { setverdict(pass) } }
+  [] T.timeout { setverdict(fail, "timeout")}
+}
+
+testcase tc_altstep_os_template() runs on CT {
+	var template octetstring  vl_str := '0001'O;
+	connect(self:OS, self:OS);
+	T.start(1.0);
+	OS.send(vl_str);
+	as_os_template(vl_str);
+	T.stop;
+}
+
+testcase tc__value_list_os() runs on CT {
+	var octetstring vl_cs1 := '0001'O, vl_cs2
+	var template octetstring vlt_cs := (vl_cs1[0], vl_cs1[1]);
+	vl_cs2 := '00'O;
+	if( match(vl_cs2,vlt_cs)) {setverdict(pass)} else { setverdict(fail)}
+	vl_cs2 := '01'O;
+	if( match(vl_cs2,vlt_cs)) {setverdict(pass)} else { setverdict(fail)}
+}
+
+testcase tc__match_os_idx() runs on CT {
+	var octetstring vl_cs1 := '0001'O;
+	var template octetstring vlt_cs := ('00'O,'01'O); 
+	if( match(vl_cs1[0],vlt_cs)) {setverdict(pass)} else { setverdict(fail)}
+}
+
 control {
   const octetstring cl_1:='AA11'O;
   var octetstring vl_1;
@@ -594,5 +671,12 @@ control {
   execute(tc_simple_octetstring_unbound());
   execute(tc_printable_octetstring_log2str());
   execute(tc_printable_octetstring_ttcn2string());
+
+  execute(tc_os());
+  execute(tc_altstep_os());
+  execute(tc_altstep_os_idx());
+  execute(tc_altstep_os_template());
+  execute(tc__value_list_os());
+  execute(tc__match_os_idx());
 }
 }