From 36c80a181b589fcc0920b54f73185b3ca66833bd Mon Sep 17 00:00:00 2001 From: BenceJanosSzabo <bence.janos.szabo@ericsson.com> Date: Wed, 18 Jan 2017 12:05:25 +0100 Subject: [PATCH] xsd2ttcn: special fixed value of float elements are handled correctly (Bug 510589) Change-Id: I23a61eb05e72ef378579e02b71fb3d772f4c06ed Signed-off-by: BenceJanosSzabo <bence.janos.szabo@ericsson.com> --- .../www_example_org_fixed_value_e.ttcn | 21 +++++++++++++++++++ .../XML/XmlWorkflow/xsd/fixed_value.xsd | 3 +++ xsdconvert/SimpleType.cc | 12 +++++++++++ 3 files changed, 36 insertions(+) diff --git a/regression_test/XML/XmlWorkflow/XmlTest_expectedTtcns/www_example_org_fixed_value_e.ttcn b/regression_test/XML/XmlWorkflow/XmlTest_expectedTtcns/www_example_org_fixed_value_e.ttcn index 40f1fca2f..d3478eb1f 100644 --- a/regression_test/XML/XmlWorkflow/XmlTest_expectedTtcns/www_example_org_fixed_value_e.ttcn +++ b/regression_test/XML/XmlWorkflow/XmlTest_expectedTtcns/www_example_org_fixed_value_e.ttcn @@ -65,6 +65,27 @@ with { }; +type XSD.Float FloatType2 (infinity) +with { + variant "defaultForEmpty as 'INF'"; + variant "element"; +}; + + +type XSD.Float FloatType3 (-infinity) +with { + variant "defaultForEmpty as '-INF'"; + variant "element"; +}; + + +type XSD.Float FloatType4 (not_a_number) +with { + variant "defaultForEmpty as 'NaN'"; + variant "element"; +}; + + type XSD.Double DoubleType (7.0) with { variant "defaultForEmpty as '7.0'"; diff --git a/regression_test/XML/XmlWorkflow/xsd/fixed_value.xsd b/regression_test/XML/XmlWorkflow/xsd/fixed_value.xsd index a6f1a2fce..b7e4d7900 100644 --- a/regression_test/XML/XmlWorkflow/xsd/fixed_value.xsd +++ b/regression_test/XML/XmlWorkflow/xsd/fixed_value.xsd @@ -6,6 +6,9 @@ <xsd:element name="StringType" type="xsd:string" fixed="a"/> <xsd:element name="IntegerType" type="xsd:integer" fixed="7"/> <xsd:element name="FloatType" type="xsd:float" fixed="7.0"/> +<xsd:element name="FloatType2" type="xsd:float" fixed="INF"/> +<xsd:element name="FloatType3" type="xsd:float" fixed="-INF"/> +<xsd:element name="FloatType4" type="xsd:float" fixed="NaN"/> <xsd:element name="DoubleType" type="xsd:double" fixed="7.0"/> <xsd:element name="BooleanType" type="xsd:boolean" fixed="true"/> <xsd:element name="BooleanType2" type="xsd:boolean" fixed="0"/> diff --git a/xsdconvert/SimpleType.cc b/xsdconvert/SimpleType.cc index 1aa78caaf..b186c6b0f 100644 --- a/xsdconvert/SimpleType.cc +++ b/xsdconvert/SimpleType.cc @@ -1551,6 +1551,18 @@ void ValueType::printToFile(FILE * file) const { val = fixed_value; } fprintf(file, " (%s)", val.c_str()); + } else if (isFloatType(type)) { + Mstring val; + if (fixed_value == "INF") { + val = "infinity"; + } else if (fixed_value == "-INF") { + val = "-infinity"; + } else if (fixed_value == "NaN") { + val = "not_a_number"; + } else { + val = fixed_value; + } + fprintf(file, " (%s)", val.c_str()); } else { fprintf(file, " (%s)", fixed_value.c_str()); } -- GitLab