Commit 998599e1 authored by BenceJanosSzabo's avatar BenceJanosSzabo
Browse files

XER: attributes decoded correctly when encoding attributes as qualified names



Change-Id: I4a45c4362a2b98652330946df09c545815e0958c
Signed-off-by: default avatarBenceJanosSzabo <bence.janos.szabo@ericsson.com>
parent c6fb7822
......@@ -10,6 +10,7 @@
* Baranyi, Botond
* Ormandi, Matyas
* Raduly, Csaba
* Szabo, Bence Janos
*
******************************************************************************/
#define DEFINE_XER_STRUCT
......@@ -84,8 +85,10 @@ const char* verify_name(XmlReaderWrap& reader, const XERdescriptor_t& p_td, int
}
else {
if (nsuri == 0) { // XML node has no namespace
TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_TAG,
"Missing namespace '%s'", expected_ns->ns);
if (p_td.my_module->get_ns(p_td.ns_index)->px[0] != 0) { // and module has namespace prefix
TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_TAG,
"Missing namespace '%s'", expected_ns->ns);
}
}
else { // and there is one, but is it the right one ?
if (strcmp(nsuri, expected_ns->ns)) {
......
/******************************************************************************
* 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:
* Bence Janos Szabo – initial implementation
*
******************************************************************************/
module AttributeFormDefaultWithNs {
type component CT {};
type record MyType {
integer attr1,
charstring attr2,
charstring field
}
with {
variant (attr1) "attribute";
variant (attr2) "attribute";
}
external function enc_MyType(in MyType pdu) return octetstring
with { extension "prototype (convert) encode(XER:XER_EXTENDED)" }
external function dec_MyType(in octetstring stream) return MyType
with { extension "prototype (convert) decode(XER:XER_EXTENDED)" }
const MyType c_instance := { attr1 := 3, attr2 := "attr", field := "field"};
const universal charstring c_result := "<myns:MyType xmlns:myns='schema:AttributeFormDefaultWithoutNs' myns:attr1='3' myns:attr2='attr'>\n\t<myns:field>field</myns:field>\n</myns:MyType>\n\n";
testcase tc_test() runs on CT {
var octetstring octet_result := enc_MyType(c_instance)
var universal charstring result := oct2unichar(octet_result);
if (result != c_result) {
setverdict(fail);
}
var MyType result_instance := dec_MyType(octet_result);
if (result_instance != c_instance) {
setverdict(fail);
}
setverdict(pass);
}
control {
execute(tc_test());
}
} with {
encode "XML";
variant "namespace as 'schema:AttributeFormDefaultWithoutNs' prefix 'myns'";
variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'";
variant "attributeFormQualified";
variant "elementFormQualified";
}
/******************************************************************************
* 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:
* Bence Janos Szabo – initial implementation
*
******************************************************************************/
module AttributeFormDefaultWithoutNs {
type component CT {};
type record MyType {
integer attr1,
charstring attr2,
charstring field
}
with {
variant (attr1) "attribute";
variant (attr2) "attribute";
}
external function enc_MyType(in MyType pdu) return octetstring
with { extension "prototype (convert) encode(XER:XER_EXTENDED)" }
external function dec_MyType(in octetstring stream) return MyType
with { extension "prototype (convert) decode(XER:XER_EXTENDED)" }
const MyType c_instance := { attr1 := 3, attr2 := "attr", field := "field"};
const universal charstring c_result := "<MyType xmlns='schema:AttributeFormDefaultWithoutNs' attr1='3' attr2='attr'>\n\t<field>field</field>\n</MyType>\n\n";
testcase tc_test() runs on CT {
var octetstring octet_result := enc_MyType(c_instance)
var universal charstring result := oct2unichar(octet_result);
if (result != c_result) {
setverdict(fail);
}
var MyType result_instance := dec_MyType(octet_result);
if (result_instance != c_instance) {
setverdict(fail);
}
setverdict(pass);
}
control {
execute(tc_test());
}
} with {
encode "XML";
variant "namespace as 'schema:AttributeFormDefaultWithoutNs'";
variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'";
variant "attributeFormQualified";
variant "elementFormQualified";
}
/******************************************************************************
* 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:
* Bence Janos Szabo – initial implementation
*
******************************************************************************/
module AttributeFormWithNs {
type component CT {};
type record MyType {
integer attr1,
charstring attr2,
charstring field
}
with {
variant (attr1) "attribute";
variant (attr1) "form as qualified"
variant (attr2) "attribute";
}
external function enc_MyType(in MyType pdu) return octetstring
with { extension "prototype (convert) encode(XER:XER_EXTENDED)" }
external function dec_MyType(in octetstring stream) return MyType
with { extension "prototype (convert) decode(XER:XER_EXTENDED)" }
const MyType c_instance := { attr1 := 3, attr2 := "attr", field := "field"};
const universal charstring c_result := "<myns:MyType xmlns:myns='schema:AttributeFormDefaultWithoutNs' myns:attr1='3' attr2='attr'>\n\t<myns:field>field</myns:field>\n</myns:MyType>\n\n";
testcase tc_test() runs on CT {
var octetstring octet_result := enc_MyType(c_instance)
var universal charstring result := oct2unichar(octet_result);
if (result != c_result) {
setverdict(fail);
}
var MyType result_instance := dec_MyType(octet_result);
if (result_instance != c_instance) {
setverdict(fail);
}
setverdict(pass);
}
control {
execute(tc_test());
}
} with {
encode "XML";
variant "namespace as 'schema:AttributeFormDefaultWithoutNs' prefix 'myns'";
variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'";
variant "elementFormQualified";
}
/******************************************************************************
* 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:
* Bence Janos Szabo – initial implementation
*
******************************************************************************/
module AttributeFormWithoutNs {
type component CT {};
type record MyType {
integer attr1,
charstring attr2,
charstring field
}
with {
variant (attr1) "attribute";
variant (attr1) "form as qualified"
variant (attr2) "attribute";
}
external function enc_MyType(in MyType pdu) return octetstring
with { extension "prototype (convert) encode(XER:XER_EXTENDED)" }
external function dec_MyType(in octetstring stream) return MyType
with { extension "prototype (convert) decode(XER:XER_EXTENDED)" }
const MyType c_instance := { attr1 := 3, attr2 := "attr", field := "field"};
const universal charstring c_result := "<MyType xmlns='schema:AttributeFormDefaultWithoutNs' attr1='3' attr2='attr'>\n\t<field>field</field>\n</MyType>\n\n";
testcase tc_test() runs on CT {
var octetstring octet_result := enc_MyType(c_instance)
var universal charstring result := oct2unichar(octet_result);
if (result != c_result) {
setverdict(fail);
}
var MyType result_instance := dec_MyType(octet_result);
if (result_instance != c_instance) {
setverdict(fail);
}
setverdict(pass);
}
control {
execute(tc_test());
}
} with {
encode "XML";
variant "namespace as 'schema:AttributeFormDefaultWithoutNs'";
variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'";
variant "elementFormQualified";
}
##############################################################################
# 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:
# Bence Janos Szabo – initial implementation
#
##############################################################################
TOPDIR = ../..
include ../../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 the C++ preprocessor (and makedepend as well):
#CPPFLAGS +=
# Flags for dependency generation
CXXDEPFLAGS = -MM
# Flags for the C++ compiler:
CXXFLAGS += -Wall
# Flags for the linker:
#LDFLAGS +=
# 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 = AttributeFormDefaultWithoutNs.ttcn AttributeFormDefaultWithNs.ttcn AttributeFormWithoutNs.ttcn AttributeFormWithNs.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)
# Other files of the project (Makefile, configuration files, etc.)
# that will be added to the archived source files:
OTHER_FILES = Makefile
# The name of the executable test suite:
TARGET = AttributeFormDefault
#
# Rules for building the executable...
#
all: $(TARGET) ;
objects: $(OBJECTS) compile;
$(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 distclean:
-$(RM) $(TARGET) $(OBJECTS) $(GENERATED_HEADERS) \
$(GENERATED_SOURCES) compile $(DEPFILES) \
tags *.log
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
###############################################################################
# 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:
# Szabo, Bence Janos
#
###############################################################################
[EXECUTE]
AttributeFormDefaultWithNs.control
AttributeFormDefaultWithoutNs.control
AttributeFormWithoutNs.control
AttributeFormWithNs.control
\ No newline at end of file
......@@ -29,7 +29,7 @@ endif
XDIRS := $(wildcard $(SHADOWED)) xsdConverter \
HM60295 HN15589 HQ30408 HR49727 HU13380 $(RT2_ONLY) \
XmlWorkflow tpdValidTest AbstractBlock UseNilLong
XmlWorkflow tpdValidTest AbstractBlock UseNilLong AttributeFormDefault
# List of fake targets:
.PHONY: all dep clean run $(XDIRS) $(addsuffix /, $(XDIRS)) profile
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment