From cd9cb6436975cff6572ef0fd007399f809bc2298 Mon Sep 17 00:00:00 2001
From: Botond Baranyi <botond.baranyi@ericsson.com>
Date: Wed, 17 Jan 2018 17:51:36 +0100
Subject: [PATCH] Changed ttcn2string to no longer display the charstring value
 of printable octetstrings (bug 529655)

Change-Id: Iec73dd7ed079bec08414fd1947cce86701d0fa61
Signed-off-by: Botond Baranyi <botond.baranyi@ericsson.com>
---
 core/Octetstring.cc                           |  2 +-
 .../octetstrOper/ToctetstrOper.ttcn           | 30 +++++++++++++++++++
 2 files changed, 31 insertions(+), 1 deletion(-)

diff --git a/core/Octetstring.cc b/core/Octetstring.cc
index 204203d7e..bb50c2239 100644
--- a/core/Octetstring.cc
+++ b/core/Octetstring.cc
@@ -509,7 +509,7 @@ OCTETSTRING::operator const unsigned char*() const
 void OCTETSTRING::log() const
 {
   if (val_ptr != NULL) {
-    boolean only_printable = TRUE;
+    boolean only_printable = TTCN_Logger::get_log_format() == TTCN_Logger::LF_LEGACY;
     TTCN_Logger::log_char('\'');
     for (int i = 0; i < val_ptr->n_octets; i++) {
       unsigned char octet = val_ptr->octets_ptr[i];
diff --git a/regression_test/octetstrOper/ToctetstrOper.ttcn b/regression_test/octetstrOper/ToctetstrOper.ttcn
index 78c38e688..bdc72b1b8 100644
--- a/regression_test/octetstrOper/ToctetstrOper.ttcn
+++ b/regression_test/octetstrOper/ToctetstrOper.ttcn
@@ -517,6 +517,34 @@ testcase tc_simple_octetstring_unbound() runs on octetstrOper_comptype {
   if(isbound(vl_o3)) {setverdict(pass)} else {setverdict(fail)}
 }
 
+const octetstring c_printable := '616263'O; // "abc"
+
+// Testing log2str on a printable octetstring.
+// In this case the charstring value is displayed in brackets after the octetstring value.
+testcase tc_printable_octetstring_log2str() runs on octetstrOper_comptype {
+  var charstring res := log2str(c_printable);
+  var charstring exp := "'616263'O (\"abc\")";
+  if (res != exp) {
+    setverdict(fail, "Expected: ", exp, ", got: ", res);
+  }
+  else {
+    setverdict(pass);
+  }
+}
+
+// Testing ttcn2string on a printable octetstring.
+// In this case the charstring value is not displayed.
+testcase tc_printable_octetstring_ttcn2string() runs on octetstrOper_comptype {
+  var charstring res := ttcn2string(c_printable);
+  var charstring exp := "'616263'O";
+  if (res != exp) {
+    setverdict(fail, "Expected: ", exp, ", got: ", res);
+  }
+  else {
+    setverdict(pass);
+  }
+}
+
 control {
   const octetstring cl_1:='AA11'O;
   var octetstring vl_1;
@@ -564,5 +592,7 @@ control {
   execute(octetstrIsvalue());
   execute(octetstrIsbound());
   execute(tc_simple_octetstring_unbound());
+  execute(tc_printable_octetstring_log2str());
+  execute(tc_printable_octetstring_ttcn2string());
 }
 }
-- 
GitLab