Uploaded image for project: 'Daffodil'
  1. Daffodil
  2. DFDL-819

xs:integer constructor function limitations

XMLWordPrintableJSON

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Major Major
    • s15
    • 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

              jchab Jessie Chab
              jchab Jessie Chab
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated:
                Resolved: