From 5bb85d030d19d5ad7bb8cab624c2be7b23280607 Mon Sep 17 00:00:00 2001
From: Botond Baranyi <botond.baranyi@ericsson.com>
Date: Tue, 6 Apr 2021 16:23:35 +0200
Subject: [PATCH] Added test for bugfix 572603

Signed-off-by: Botond Baranyi <botond.baranyi@ericsson.com>
Change-Id: I60b3b736e8be207db132168ebea1234508c809ae
---
 .../EncodeDecode/RAW/Bug572603/.gitignore     |   8 +
 .../EncodeDecode/RAW/Bug572603/Bug572603.ttcn |  97 ++++++++++++
 .../EncodeDecode/RAW/Bug572603/Makefile       | 149 ++++++++++++++++++
 .../EncodeDecode/RAW/Bug572603/config.cfg     |  20 +++
 regression_test/EncodeDecode/RAW/Makefile     |   2 +-
 5 files changed, 275 insertions(+), 1 deletion(-)
 create mode 100644 regression_test/EncodeDecode/RAW/Bug572603/.gitignore
 create mode 100644 regression_test/EncodeDecode/RAW/Bug572603/Bug572603.ttcn
 create mode 100644 regression_test/EncodeDecode/RAW/Bug572603/Makefile
 create mode 100644 regression_test/EncodeDecode/RAW/Bug572603/config.cfg

diff --git a/regression_test/EncodeDecode/RAW/Bug572603/.gitignore b/regression_test/EncodeDecode/RAW/Bug572603/.gitignore
new file mode 100644
index 000000000..3dc6342ac
--- /dev/null
+++ b/regression_test/EncodeDecode/RAW/Bug572603/.gitignore
@@ -0,0 +1,8 @@
+Bug572603
+Bug572603.exe
+Bug572603*.cc
+Bug572603*.hh
+*.d
+compile
+Bug572603*.log
+result.txt
diff --git a/regression_test/EncodeDecode/RAW/Bug572603/Bug572603.ttcn b/regression_test/EncodeDecode/RAW/Bug572603/Bug572603.ttcn
new file mode 100644
index 000000000..fbfc34947
--- /dev/null
+++ b/regression_test/EncodeDecode/RAW/Bug572603/Bug572603.ttcn
@@ -0,0 +1,97 @@
+/******************************************************************************
+ * Copyright (c) 2000-2021 Ericsson Telecom AB
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
+ *
+ * Contributors:
+ *   Baranyi, Botond – initial implementation
+ *
+ ******************************************************************************/
+
+module Bug572603 {
+
+type record UnknownIE {
+  integer   ie_code,
+  integer   ie_length,
+  octetstring ie_data
+} with {
+  variant (ie_length) "LENGTHTO(ie_data)"
+}
+
+type record of UnknownIE UnknownIE_list
+
+type record IE1 {
+  integer   ie_code,
+  integer   ie_length,
+  octetstring ie_data
+} with {
+  variant "PRESENCE(ie_code = 1)"
+  variant (ie_length) "LENGTHTO(ie_data)"
+}
+
+type record of IE1 IE1_list
+
+type record IE2 {
+  integer   ie_code,
+  integer   ie_length,
+  octetstring ie_data
+} with {
+  variant "PRESENCE(ie_code = 2)"
+  variant (ie_length) "LENGTHTO(ie_data)"
+}
+
+type record of IE2 IE2_list
+
+type record IE3 {
+  integer   ie_code,
+  integer   ie_length,
+  octetstring ie_data
+} with {
+  variant "PRESENCE(ie_code = 3)"
+  variant (ie_length) "LENGTHTO(ie_data)"
+}
+
+type record of IE3 IE3_list
+
+
+type set PDU{
+  IE1 f_ie1,
+  IE2_list f_ie2_list optional,
+  IE3 f_ie3,
+  UnknownIE_list f_other optional
+} with {
+  variant (f_ie2_list) "REPEATABLE(yes)"
+  variant (f_other) "REPEATABLE(yes)"
+}
+
+external function enc_PDU(in PDU pdu) return octetstring
+with { extension "prototype(convert)" extension "encode(RAW)" }
+
+external function dec_PDU(in octetstring stream) return PDU
+with { extension "prototype(convert)" extension "decode(RAW)" }
+
+type component CT {}
+
+testcase tc_bug572603() runs on CT {
+  var PDU v_pdu1 := { f_ie1 := { 1, 1, 'AA'O }, f_ie2_list := { { 2, 1, 'BB'O }, { 2, 1, 'BB'O } }, f_ie3 := { 3, 1, 'CC'O }, f_other := { { 4, 1, 'DD'O } } }   
+  var PDU v_pdu2
+  var octetstring v_oct := '0101AA0201BB0401DD0201BB0301CC'O;
+  v_pdu2 := dec_PDU(v_oct);
+  log(v_pdu1);
+  log(v_pdu2);
+  if (v_pdu1 == v_pdu2) {
+    setverdict(pass);
+  } else {
+    setverdict(fail, v_pdu2);
+  }
+}
+
+control {
+  execute(tc_bug572603());
+}
+
+} with {
+  encode "RAW"
+}
diff --git a/regression_test/EncodeDecode/RAW/Bug572603/Makefile b/regression_test/EncodeDecode/RAW/Bug572603/Makefile
new file mode 100644
index 000000000..f05619974
--- /dev/null
+++ b/regression_test/EncodeDecode/RAW/Bug572603/Makefile
@@ -0,0 +1,149 @@
+##############################################################################
+# Copyright (c) 2000-2021 Ericsson Telecom AB
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
+#
+# Contributors:
+#   Botond, Baranyi
+#
+##############################################################################
+TOPDIR := ../../..
+include $(TOPDIR)/Makefile.regression
+
+# WARNING! This Makefile can be used with GNU make only.
+# Other versions of make may report syntax errors in it.
+
+#
+# Do NOT touch this line...
+#
+.PHONY: all archive check clean dep objects
+
+.SUFFIXES: .d
+
+#
+# Set these variables...
+#
+
+# Flags for dependency generation
+CXXDEPFLAGS = -MM
+
+ifeq ($(PLATFORM), WIN32)
+# Silence linker warnings.
+# Overridden by Makefile.cfg
+endif
+
+# Flags for the TTCN-3 and ASN.1 compiler:
+COMPILER_FLAGS += 
+
+# Execution mode: (either ttcn3 or ttcn3-parallel)
+TTCN3_LIB = ttcn3$(RT2_SUFFIX)$(DYNAMIC_SUFFIX)
+
+
+#
+# You may change these variables. Add your files if necessary...
+#
+
+# TTCN-3 modules of this project:
+TTCN3_MODULES = Bug572603.ttcn
+
+# ASN.1 modules of this project:
+ASN1_MODULES =
+
+# C++ source & header files generated from the TTCN-3 & ASN.1 modules of
+# this project:
+GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.cc) $(ASN1_MODULES:.asn=.cc)
+GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh)
+ifdef SPLIT_TO_SLICES
+POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_))
+POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc))
+GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES)))
+GENERATED_SOURCES += $(GENERATED_SOURCES2)
+endif
+# C/C++ Source & header files of Test Ports, external functions and
+# other modules:
+USER_SOURCES =
+USER_HEADERS = $(USER_SOURCES:.cc=.hh)
+
+# Object files of this project that are needed for the executable test suite:
+OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS)
+
+GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o)
+
+USER_OBJECTS = $(USER_SOURCES:.cc=.o)
+
+DEPFILES = $(USER_OBJECTS:.o=.d)  $(GENERATED_OBJECTS:.o=.d)
+
+
+# The name of the executable test suite:
+TARGET = Bug572603$(EXESUFFIX)
+
+
+# Rules for building the executable...
+#
+
+all: $(TARGET)
+
+objects: $(OBJECTS) ;
+
+$(TARGET): $(OBJECTS)
+	if $(CXX) $(LDFLAGS) -o $@ $^ \
+	-L$(TTCN3_DIR)/lib -l$(TTCN3_LIB) \
+	-L$(OPENSSL_DIR)/lib -lcrypto \
+	-L$(XMLDIR)/lib $($(PLATFORM)_LIBS); \
+	then : ; else $(TTCN3_DIR)/bin/titanver $(OBJECTS); exit 1; fi
+
+.cc.o .c.o:
+	$(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $<
+
+.cc.d .c.d:
+	@echo Creating dependency file for '$<'; set -e; \
+	$(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \
+	| sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \
+	[ -s $@ ] || rm -f $@
+
+$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile
+	@if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi
+
+compile: $(TTCN3_MODULES) $(ASN1_MODULES)
+	$(TTCN3_COMPILER) $(COMPILER_FLAGS) $^ - $?
+	touch $@
+
+
+clean:
+	-$(RM) $(TARGET) $(OBJECTS) $(GENERATED_HEADERS) \
+	$(GENERATED_SOURCES) compile $(DEPFILES) \
+	tags *.log
+
+distclean: clean
+	-$(RM) $(DEPFILES)
+
+
+dep: $(GENERATED_SOURCES) $(USER_SOURCES) ;
+
+ifeq ($(findstring n,$(MAKEFLAGS)),)
+ifeq ($(filter clean distclean check compile archive diag,$(MAKECMDGOALS)),)
+-include $(DEPFILES)
+endif
+endif
+
+
+
+diag:
+	$(TTCN3_COMPILER) -v 2>&1
+	$(TTCN3_DIR)/bin/mctr_cli -v 2>&1
+	$(CXX) -v 2>&1
+	@echo TTCN3_DIR=$(TTCN3_DIR)
+	@echo OPENSSL_DIR=$(OPENSSL_DIR)
+	@echo XMLDIR=$(XMLDIR)
+	@echo PLATFORM=$(PLATFORM)
+
+#
+# Add your rules here if necessary...
+#
+
+run: $(TARGET) ./config.cfg
+	./$^ 2> result.txt
+	cat result.txt
+	grep "Overall verdict: pass" result.txt
diff --git a/regression_test/EncodeDecode/RAW/Bug572603/config.cfg b/regression_test/EncodeDecode/RAW/Bug572603/config.cfg
new file mode 100644
index 000000000..d14794274
--- /dev/null
+++ b/regression_test/EncodeDecode/RAW/Bug572603/config.cfg
@@ -0,0 +1,20 @@
+###############################################################################
+# Copyright (c) 2000-2021 Ericsson Telecom AB
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
+#
+# Contributors:
+#   Botond, Baranyi
+#
+###############################################################################
+[LOGGING]
+LogFile := "Bug572603.log"
+FileMask := LOG_ALL
+ConsoleMask := TTCN_ERROR | TTCN_TESTCASE | TTCN_STATISTICS
+LogSourceInfo := Yes
+[EXECUTE]
+Bug572603.control
+
+[TESTPORT_PARAMETERS]
diff --git a/regression_test/EncodeDecode/RAW/Makefile b/regression_test/EncodeDecode/RAW/Makefile
index 2584a2702..31bcd4f69 100644
--- a/regression_test/EncodeDecode/RAW/Makefile
+++ b/regression_test/EncodeDecode/RAW/Makefile
@@ -20,7 +20,7 @@ include $(TOPDIR)/Makefile.regression
 
 RDIRS = Examples HN25015 HQ26535 HQ49956 HS16977 ustr Annex_E_variants Bug521125 \
         Lengthto_Offset Bug522656  RAW_bitstring RAW_EncDec RAW_integer RAW_repeat  ForceOmit Bug546231 \
-        Bug547385 IntX CSN1_LH
+        Bug547385 IntX CSN1_LH Bug572603
 
 all dep clean run distclean:
 	for dir in $(RDIRS); do (cd $$dir && $(MAKE) $@) || exit; done
-- 
GitLab