-
Bug
-
Resolution: Fixed
-
Major
-
None
-
None
-
None
There seems to be an inconsistency with how the xs:integer() constructor function behaves depending on how the arguments are provided.
For example, if I create an element with
dfdl:inputValueCalc="{ xs:integer(xs:float(45.4)) }"
|
I get the following
<integer>45</integer>
|
which is what I would expect.
However, if I create a sequence of two elements, the first is a float, and the second is an integer with
dfdl:inputValueCalc="{ xs:integer(../ex:float) }"
|
with a document of 45.4, I get an error.
[error] Test edu.illinois.ncsa.daffodil.section23.dfdl_expressions.TestDFDLExpressions.test_integer_constructor_06 failed: edu.illinois.ncsa.daffodil.processors.ParseError: Parse Error: Expression evaluation failed. Details: net.sf.saxon.trans.XPathException: Cannot convert string "45.4" to an integer
|
[error] Schema context: element.intified Location line 25 column 107 in file:/tmp/daffodil_tmp_7865467733540051367.dfdl.xsd(no data location)
|
[error] at edu.illinois.ncsa.daffodil.processors.WithParseErrorThrowing$class.PE(Parser.scala:209)
|
[error] at edu.illinois.ncsa.daffodil.dsom.RuntimeExpression.PE(CompiledExpression.scala:121)
|
[error] at edu.illinois.ncsa.daffodil.processors.WithParseErrorThrowing$class.PE(Parser.scala:204)
|
[error] at edu.illinois.ncsa.daffodil.dsom.RuntimeExpression.PE(CompiledExpression.scala:121)
|
[error] at edu.illinois.ncsa.daffodil.dsom.RuntimeExpression.evaluate(CompiledExpression.scala:157)
|
[error] at edu.illinois.ncsa.daffodil.processors.ExpressionEvaluationParser.eval(Primitives.scala:1653)
|
[error] at edu.illinois.ncsa.daffodil.processors.IVCParser$$anonfun$parse$6.apply(Primitives.scala:1669)
|
[error] at edu.illinois.ncsa.daffodil.processors.IVCParser$$anonfun$parse$6.apply(Primitives.scala:1666)
|
[error] at edu.illinois.ncsa.daffodil.processors.WithParseErrorThrowing$class.withParseErrorThrowing(Parser.scala:223)
|
[error] at edu.illinois.ncsa.daffodil.processors.ExpressionEvaluationParser.withParseErrorThrowing(Primitives.scala:1645)
|
[error] at edu.illinois.ncsa.daffodil.processors.IVCParser.parse(Primitives.scala:1666)
|
[error] at edu.illinois.ncsa.daffodil.processors.Parser.parse1(Parser.scala:135)
|
[error] at edu.illinois.ncsa.daffodil.processors.SeqCompParser$$anonfun$parse$3.apply(Parser.scala:336)
|
[error] at edu.illinois.ncsa.daffodil.processors.SeqCompParser$$anonfun$parse$3.apply(Parser.scala:334)
|
[error] at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59)
|
[error] at scala.collection.immutable.List.foreach(List.scala:76)
|
[error] at edu.illinois.ncsa.daffodil.processors.SeqCompParser.parse(Parser.scala:334)
|
[error] at edu.illinois.ncsa.daffodil.processors.Parser.parse1(Parser.scala:135)
|
[error] at edu.illinois.ncsa.daffodil.processors.SeqCompParser$$anonfun$parse$3.apply(Parser.scala:336)
|
[error] at edu.illinois.ncsa.daffodil.processors.SeqCompParser$$anonfun$parse$3.apply(Parser.scala:334)
|
[error] at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59)
|
[error] at scala.collection.immutable.List.foreach(List.scala:76)
|
[error] at edu.illinois.ncsa.daffodil.processors.SeqCompParser.parse(Parser.scala:334)
|
[error] at edu.illinois.ncsa.daffodil.processors.Parser.parse1(Parser.scala:135)
|
[error] at edu.illinois.ncsa.daffodil.processors.DataProcessor$$anonfun$parse$3$$anon$1.liftedTree1$1(Runtime.scala:147)
|
[error] at edu.illinois.ncsa.daffodil.processors.DataProcessor$$anonfun$parse$3$$anon$1.<init>(Runtime.scala:146)
|
[error] at edu.illinois.ncsa.daffodil.processors.DataProcessor$$anonfun$parse$3.apply(Runtime.scala:143)
|
[error] at edu.illinois.ncsa.daffodil.processors.DataProcessor$$anonfun$parse$3.apply(Runtime.scala:142)
|
[error] at scala.util.DynamicVariable.withValue(DynamicVariable.scala:57)
|
[error] at edu.illinois.ncsa.daffodil.ExecutionMode$$anonfun$usingRuntimeMode$1.apply(ExecutionMode.scala:80)
|
[error] at edu.illinois.ncsa.daffodil.ExecutionMode$$anonfun$usingRuntimeMode$1.apply(ExecutionMode.scala:80)
|
[error] at edu.illinois.ncsa.daffodil.processors.DataProcessor.parse(Runtime.scala:142)
|
[error] at edu.illinois.ncsa.daffodil.processors.DataProcessor.parse(Runtime.scala:134)
|
[error] at edu.illinois.ncsa.daffodil.tdml.ParserTestCase.runParseExpectSuccess(TDMLRunner.scala:589)
|
[error] at edu.illinois.ncsa.daffodil.tdml.ParserTestCase.runProcessor(TDMLRunner.scala:470)
|
[error] at edu.illinois.ncsa.daffodil.tdml.TestCase.run(TDMLRunner.scala:407)
|
[error] at edu.illinois.ncsa.daffodil.tdml.DFDLTestSuite.runOneTestWithDataVolumes(TDMLRunner.scala:260)
|
[error] at edu.illinois.ncsa.daffodil.tdml.DFDLTestSuite.runOneTest(TDMLRunner.scala:251)
|
[error] at edu.illinois.ncsa.daffodil.section23.dfdl_expressions.TestDFDLExpressions.test_integer_constructor_06(TestDFDLExpressions.scala:159)
|
[error] ...
|
Please see the following tests:
test_integer_constructor_05
test_integer_constructor_06
test_integer_constructor_07
in the following files:
daffodil-test/src/test/resources/edu/illinois/ncsa/daffodil/section23/dfdl_functions/Functions.tdml
daffodil-test/src/test/scala-debug/edu/illinois/ncsa/daffodil/section23/dfdl_expressions/TestDFDLExpressionsDebug.scala
daffodil-test/src/test/scala/edu/illinois/ncsa/daffodil/section23/dfdl_expressions/TestDFDLExpressions.scala