This is an automated email from the ASF dual-hosted git repository.
olabusayo pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/daffodil.git
The following commit(s) were added to refs/heads/main by this push:
new 36826799a Enable dfdl:extraEscapedCharcaters to take an expression
36826799a is described below
commit 36826799a81861e0577e657cacf0a95e3865be83
Author: olabusayoT <[email protected]>
AuthorDate: Wed Mar 20 16:39:29 2024 -0400
Enable dfdl:extraEscapedCharcaters to take an expression
- implement Ev val and class for extraEscapedCharacters similar to
escapeCharacter and escapeEscapeCharacter
- add optimization to DynamicEscapeSchemeCombinatorElement adding
isConstant to checks
- fix bug in hasDynamicEscapeScheme by adding consideration for
escapeSchemeUnparseEv
- add optionExtraEscapedCharsEv to localElementPropertyReferencedElements
- add tests for literal and expression examples
- refactor extraEscaoedCgarCooked to evalAndConvertExtraEscapedCharacters
to more closely match other Evs
- add test for escapeBlocks and literal and expressioned extraEscapeChars
DAFFODIL-2876
---
.../daffodil/core/dsom/DFDLEscapeScheme.scala | 25 +++-
.../RawCommonRuntimeValuedPropertiesMixin.scala | 5 +-
.../daffodil/core/dsom/RuntimePropertyMixins.scala | 11 +-
.../core/grammar/ElementBaseGrammarMixin.scala | 2 +-
.../primitives/DelimiterAndEscapeRelated.scala | 10 +-
.../runtime1/processors/EvEscapeSchemes.scala | 40 ++++--
.../section07/escapeScheme/escapeScheme.tdml | 157 +++++++++++++++++++++
.../section07/escapeScheme/TestEscapeScheme.scala | 4 +
8 files changed, 230 insertions(+), 24 deletions(-)
diff --git
a/daffodil-core/src/main/scala/org/apache/daffodil/core/dsom/DFDLEscapeScheme.scala
b/daffodil-core/src/main/scala/org/apache/daffodil/core/dsom/DFDLEscapeScheme.scala
index 79b944d7f..23f896969 100644
---
a/daffodil-core/src/main/scala/org/apache/daffodil/core/dsom/DFDLEscapeScheme.scala
+++
b/daffodil-core/src/main/scala/org/apache/daffodil/core/dsom/DFDLEscapeScheme.scala
@@ -35,6 +35,7 @@ import
org.apache.daffodil.runtime1.processors.EscapeSchemeCharParseEv
import org.apache.daffodil.runtime1.processors.EscapeSchemeCharUnparseEv
import org.apache.daffodil.runtime1.processors.EscapeSchemeParseEv
import org.apache.daffodil.runtime1.processors.EscapeSchemeUnparseEv
+import org.apache.daffodil.runtime1.processors.ExtraEscapedCharsEv
final class DFDLEscapeScheme(
node: Node,
@@ -120,10 +121,26 @@ final class DFDLEscapeScheme(
}
}.value
- final lazy val optionExtraEscapedCharacters =
LV('optionExtraEscapedCharacters) {
+ final lazy val optionExtraEscapedCharactersEv =
LV('optionExtraEscapedCharacters) {
+ val qn = this.qNameForProperty("extraEscapedCharacters")
extraEscapedCharactersRaw match {
case Found("", _, _, _) => Nope
- case Found(v, _, _, _) => One(v)
+ case found @ Found(v, _, _, _) => {
+ val typeIfStaticallyKnown = NodeInfo.String
+ val typeIfRuntimeKnown = NodeInfo.NonEmptyString
+ val ci = defES.pointOfUse.dpathCompileInfo
+ val expr = ExpressionCompilers.String.compileDelimiter(
+ qn,
+ typeIfStaticallyKnown,
+ typeIfRuntimeKnown,
+ found,
+ this,
+ ci,
+ )
+ val ev = new ExtraEscapedCharsEv(expr, ci)
+ ev.compile(tunable)
+ One(ev)
+ }
}
}.value
@@ -150,7 +167,7 @@ final class DFDLEscapeScheme(
escapeBlockStart,
escapeBlockEnd,
optionEscapeEscapeCharacterEv,
- optionExtraEscapedCharacters,
+ optionExtraEscapedCharactersEv,
generateEscapeBlock,
ci,
)
@@ -158,7 +175,7 @@ final class DFDLEscapeScheme(
new EscapeSchemeCharUnparseEv(
escapeCharacterEv,
optionEscapeEscapeCharacterEv,
- optionExtraEscapedCharacters,
+ optionExtraEscapedCharactersEv,
ci,
)
}
diff --git
a/daffodil-core/src/main/scala/org/apache/daffodil/core/dsom/RawCommonRuntimeValuedPropertiesMixin.scala
b/daffodil-core/src/main/scala/org/apache/daffodil/core/dsom/RawCommonRuntimeValuedPropertiesMixin.scala
index e4a416f0b..265208ad8 100644
---
a/daffodil-core/src/main/scala/org/apache/daffodil/core/dsom/RawCommonRuntimeValuedPropertiesMixin.scala
+++
b/daffodil-core/src/main/scala/org/apache/daffodil/core/dsom/RawCommonRuntimeValuedPropertiesMixin.scala
@@ -94,9 +94,8 @@ trait RawEscapeSchemeRuntimeValuedPropertiesMixin extends
PropertyMixin {
protected final lazy val escapeBlockStartRaw =
requireProperty(optionEscapeBlockStartRaw)
protected final lazy val optionEscapeBlockEndRaw =
findPropertyOption("escapeBlockEnd")
protected final lazy val escapeBlockEndRaw =
requireProperty(optionEscapeBlockEndRaw)
- protected final lazy val optionExtraEscapedCharactersRaw =
findPropertyOption(
- "extraEscapedCharacters",
- )
+ protected final lazy val optionExtraEscapedCharactersRaw =
+ findPropertyOption("extraEscapedCharacters", expressionAllowed = true)
protected final lazy val extraEscapedCharactersRaw = requireProperty(
optionExtraEscapedCharactersRaw,
)
diff --git
a/daffodil-core/src/main/scala/org/apache/daffodil/core/dsom/RuntimePropertyMixins.scala
b/daffodil-core/src/main/scala/org/apache/daffodil/core/dsom/RuntimePropertyMixins.scala
index 82ad4a720..e04bca9c5 100644
---
a/daffodil-core/src/main/scala/org/apache/daffodil/core/dsom/RuntimePropertyMixins.scala
+++
b/daffodil-core/src/main/scala/org/apache/daffodil/core/dsom/RuntimePropertyMixins.scala
@@ -637,7 +637,16 @@ trait ElementRuntimeValuedPropertiesMixin
f(es.optionEscapeEscapeCharacterEv.get)
else
ReferencedElementInfos.None
- ee ++ propExprElts(es.optionEscapeCharacterRaw, es.escapeCharacterEv,
f)
+ val extraEscapeChars =
+ if (es.optionExtraEscapedCharactersEv.isDefined)
+ f(es.optionExtraEscapedCharactersEv.get)
+ else
+ ReferencedElementInfos.None
+ ee ++ extraEscapeChars ++ propExprElts(
+ es.optionEscapeCharacterRaw,
+ es.escapeCharacterEv,
+ f,
+ )
} else {
ReferencedElementInfos.None
}
diff --git
a/daffodil-core/src/main/scala/org/apache/daffodil/core/grammar/ElementBaseGrammarMixin.scala
b/daffodil-core/src/main/scala/org/apache/daffodil/core/grammar/ElementBaseGrammarMixin.scala
index f34f1e1bd..f94daf153 100644
---
a/daffodil-core/src/main/scala/org/apache/daffodil/core/grammar/ElementBaseGrammarMixin.scala
+++
b/daffodil-core/src/main/scala/org/apache/daffodil/core/grammar/ElementBaseGrammarMixin.scala
@@ -1409,7 +1409,7 @@ trait ElementBaseGrammarMixin
}
private lazy val hasDynamicEscapeScheme =
- this.optionEscapeScheme.isDefined &&
!this.optionEscapeScheme.get.escapeSchemeParseEv.isConstant
+ this.optionEscapeScheme.isDefined &&
(!this.optionEscapeScheme.get.escapeSchemeParseEv.isConstant ||
!this.optionEscapeScheme.get.escapeSchemeUnparseEv.isConstant)
private def withEscapeScheme(body: Gram) = {
if (hasDynamicEscapeScheme) DynamicEscapeSchemeCombinatorElement(this,
body)
diff --git
a/daffodil-core/src/main/scala/org/apache/daffodil/core/grammar/primitives/DelimiterAndEscapeRelated.scala
b/daffodil-core/src/main/scala/org/apache/daffodil/core/grammar/primitives/DelimiterAndEscapeRelated.scala
index 88036ff30..6c0fe81ed 100644
---
a/daffodil-core/src/main/scala/org/apache/daffodil/core/grammar/primitives/DelimiterAndEscapeRelated.scala
+++
b/daffodil-core/src/main/scala/org/apache/daffodil/core/grammar/primitives/DelimiterAndEscapeRelated.scala
@@ -120,18 +120,20 @@ case class DynamicEscapeSchemeCombinatorElement(e:
ElementBase, body: Gram)
val schemeParseOpt = e.optionEscapeScheme.map { _.escapeSchemeParseEv }
val schemeUnparseOpt = e.optionEscapeScheme.map { _.escapeSchemeUnparseEv }
- Assert.invariant(schemeParseOpt.isDefined && !schemeParseOpt.get.isConstant)
- Assert.invariant(schemeUnparseOpt.isDefined &&
!schemeUnparseOpt.get.isConstant)
+ val schemeParseIsConstant = schemeParseOpt.map(_.isConstant).getOrElse(true)
+ val schemeUnparseIsConstant =
schemeUnparseOpt.map(_.isConstant).getOrElse(true)
+
+ Assert.invariant(!schemeParseIsConstant || !schemeUnparseIsConstant)
lazy val parser: DaffodilParser = {
val p = body.parser
- if (p.isEmpty) p
+ if (p.isEmpty || schemeParseIsConstant) p
else new DynamicEscapeSchemeParser(schemeParseOpt.get, e.termRuntimeData,
p)
}
override lazy val unparser: DaffodilUnparser = {
val u = body.unparser
- if (u.isEmpty) u
+ if (u.isEmpty || schemeUnparseIsConstant) u
else new DynamicEscapeSchemeUnparser(schemeUnparseOpt.get,
e.termRuntimeData, u)
}
}
diff --git
a/daffodil-runtime1/src/main/scala/org/apache/daffodil/runtime1/processors/EvEscapeSchemes.scala
b/daffodil-runtime1/src/main/scala/org/apache/daffodil/runtime1/processors/EvEscapeSchemes.scala
index 0f3472094..a4bdb885b 100644
---
a/daffodil-runtime1/src/main/scala/org/apache/daffodil/runtime1/processors/EvEscapeSchemes.scala
+++
b/daffodil-runtime1/src/main/scala/org/apache/daffodil/runtime1/processors/EvEscapeSchemes.scala
@@ -41,6 +41,15 @@ class EscapeEscapeCharEv(expr: CompiledExpression[String],
ci: DPathCompileInfo)
with InfosetCachedEvaluatable[String] {
override lazy val runtimeDependencies = Vector()
}
+class ExtraEscapedCharsEv(expr: CompiledExpression[String], ci:
DPathCompileInfo)
+ extends EvaluatableConvertedExpression[String, Seq[String]](
+ expr,
+ ExtraEscapedCharactersCooker,
+ ci,
+ )
+ with InfosetCachedEvaluatable[Seq[String]] {
+ override lazy val runtimeDependencies = Vector()
+}
trait EscapeSchemeCommonEv {
def optEscapeEscapeChar: Maybe[EscapeEscapeCharEv]
@@ -74,13 +83,14 @@ abstract class EscapeSchemeUnparseEv(ci: DPathCompileInfo)
state.asInstanceOf[UState].escapeSchemeEVCache
}
- def extraEscapedChars: Maybe[String]
+ def extraEscapedChars: Maybe[ExtraEscapedCharsEv]
- val extraEscapedCharsCooked = {
+ def evalAndConvertExtraEscapedCharacters(state: ParseOrUnparseState):
Seq[Char] = {
if (extraEscapedChars.isDefined) {
- ExtraEscapedCharactersCooker
- .convertConstant(extraEscapedChars.get, ci, forUnparse = true)
- .map { _.charAt(0) }
+ val extEscChar = extraEscapedChars.get
+ .evaluate(state)
+ .map(_.charAt(0))
+ extEscChar
} else {
Seq()
}
@@ -105,16 +115,23 @@ class EscapeSchemeCharParseEv(
class EscapeSchemeCharUnparseEv(
escapeChar: EscapeCharEv,
override val optEscapeEscapeChar: Maybe[EscapeEscapeCharEv],
- override val extraEscapedChars: Maybe[String],
+ override val extraEscapedChars: Maybe[ExtraEscapedCharsEv],
ci: DPathCompileInfo,
) extends EscapeSchemeUnparseEv(ci) {
- override val runtimeDependencies = Vector(escapeChar) ++
optEscapeEscapeChar.toList
+ override val runtimeDependencies =
+ Vector(escapeChar) ++ optEscapeEscapeChar.toList ++
extraEscapedChars.toList
def compute(state: ParseOrUnparseState) = {
val escChar = escapeChar.evaluate(state).charAt(0)
val optEscEscChar = evalAndConvertEEC(state)
- new EscapeSchemeCharUnparserHelper(escChar, optEscEscChar,
extraEscapedCharsCooked, ci)
+ val extEscChars = evalAndConvertExtraEscapedCharacters(state)
+ new EscapeSchemeCharUnparserHelper(
+ escChar,
+ optEscEscChar,
+ extEscChars,
+ ci,
+ )
}
}
@@ -140,23 +157,24 @@ class EscapeSchemeBlockUnparseEv(
blockStart: String,
blockEnd: String,
override val optEscapeEscapeChar: Maybe[EscapeEscapeCharEv],
- override val extraEscapedChars: Maybe[String],
+ override val extraEscapedChars: Maybe[ExtraEscapedCharsEv],
generateEscapeBlock: GenerateEscape,
ci: DPathCompileInfo,
) extends EscapeSchemeUnparseEv(ci) {
- override val runtimeDependencies = optEscapeEscapeChar.toList
+ override val runtimeDependencies = optEscapeEscapeChar.toList ++
extraEscapedChars.toList
val bs = EscapeBlockStartCooker.convertConstant(blockStart, ci, forUnparse =
true)
val be = EscapeBlockEndCooker.convertConstant(blockEnd, ci, forUnparse =
true)
def compute(state: ParseOrUnparseState) = {
val optEscEscChar = evalAndConvertEEC(state)
+ val extEscChars = evalAndConvertExtraEscapedCharacters(state)
new EscapeSchemeBlockUnparserHelper(
optEscEscChar,
bs,
be,
- extraEscapedCharsCooked,
+ extEscChars,
generateEscapeBlock,
ci,
)
diff --git
a/daffodil-test/src/test/resources/org/apache/daffodil/section07/escapeScheme/escapeScheme.tdml
b/daffodil-test/src/test/resources/org/apache/daffodil/section07/escapeScheme/escapeScheme.tdml
index 1b560c20c..54c7bf6b9 100644
---
a/daffodil-test/src/test/resources/org/apache/daffodil/section07/escapeScheme/escapeScheme.tdml
+++
b/daffodil-test/src/test/resources/org/apache/daffodil/section07/escapeScheme/escapeScheme.tdml
@@ -314,6 +314,24 @@
escapeKind="escapeCharacter" escapeEscapeCharacter="{
xs:string(xs:int(fn:ceiling(xs:float(../tns:escapeEscapeChar)))) }"
extraEscapedCharacters="" generateEscapeBlock="whenNeeded" />
</dfdl:defineEscapeScheme>
+ <dfdl:defineEscapeScheme name="fromData4">
+ <dfdl:escapeScheme
+ escapeCharacter="{ xs:string(xs:int(../tns:escapeChar) - 3) }"
+ escapeKind="escapeCharacter"
+ escapeEscapeCharacter="{
xs:string(xs:int(fn:ceiling(xs:float(../tns:escapeEscapeChar)))) }"
+ extraEscapedCharacters="{ xs:string(../tns:extraEscapedChars) }"
+ generateEscapeBlock="whenNeeded" />
+ </dfdl:defineEscapeScheme>
+
+ <dfdl:defineEscapeScheme name="fromData5">
+ <dfdl:escapeScheme
+ escapeCharacter="{ xs:string(xs:int(../tns:escapeChar) - 3) }"
+ escapeKind="escapeCharacter"
+ escapeEscapeCharacter="{
xs:string(xs:int(fn:ceiling(xs:float(../tns:escapeEscapeChar)))) }"
+ extraEscapedCharacters="1 3"
+ generateEscapeBlock="whenNeeded" />
+ </dfdl:defineEscapeScheme>
+
<xs:element name="e1">
<xs:complexType>
<xs:sequence dfdl:separator=",">
@@ -359,6 +377,27 @@
</xs:sequence>
</xs:complexType>
</xs:element>
+
+ <xs:element name="e4">
+ <xs:complexType>
+ <xs:sequence dfdl:separator=",">
+ <xs:element name="escapeChar" type="xs:int"/>
+ <xs:element name="escapeEscapeChar" type="xs:float"/>
+ <xs:element name="extraEscapedChars" type="xs:string"/>
+ <xs:element name="strng" type="xs:string"
dfdl:lengthKind="delimited" minOccurs="1" maxOccurs="5"
dfdl:escapeSchemeRef="tns:fromData4"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="e5">
+ <xs:complexType>
+ <xs:sequence dfdl:separator=",">
+ <xs:element name="escapeChar" type="xs:int"/>
+ <xs:element name="escapeEscapeChar" type="xs:float"/>
+ <xs:element name="strng" type="xs:string"
dfdl:lengthKind="delimited" minOccurs="1" maxOccurs="5"
dfdl:escapeSchemeRef="tns:fromData5"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
</defineSchema>
@@ -532,6 +571,57 @@
</infoset>
</parserTestCase>
+ <!--
+ Test Name: escapeExpressions_07
+ Schema: escapeSchemeExpressions
+ Root: e5
+ Purpose: This test demonstrates that you can use an expression to
define an escapeCharacter, escapeEscapeCharacter and a literal for
extraEscapedCharacters
+ -->
+
+ <parserTestCase name="escapeExpressions_07" model="escapeSchemeExpressions"
+ description="Section 13 - escapeCharacter" root="e5">
+ <document>5,3.2,212,000,52,000,642,5230,500</document>
+ <infoset>
+ <dfdlInfoset>
+ <tns:e5 xmlns:tns="http://example.com">
+ <tns:escapeChar>5</tns:escapeChar>
+ <tns:escapeEscapeChar>3.2</tns:escapeEscapeChar>
+ <tns:strng>1,000</tns:strng>
+ <tns:strng>5,000</tns:strng>
+ <tns:strng>62</tns:strng>
+ <tns:strng>530</tns:strng>
+ <tns:strng>500</tns:strng>
+ </tns:e5>
+ </dfdlInfoset>
+ </infoset>
+ </parserTestCase>
+
+ <!--
+ Test Name: escapeExpressions_08
+ Schema: escapeSchemeExpressions
+ Root: e4
+ Purpose: This test demonstrates that you can use an expression to
define an escapeCharacter, escapeEscapeCharacter and an extraEscapedCharacters
+ -->
+
+ <parserTestCase name="escapeExpressions_08" model="escapeSchemeExpressions"
+ description="Section 13 - escapeCharacter" root="e4">
+ <document>5,3.2,1 3,212,000,52,000,642,5230,500</document>
+ <infoset>
+ <dfdlInfoset>
+ <tns:e4 xmlns:tns="http://example.com">
+ <tns:escapeChar>5</tns:escapeChar>
+ <tns:escapeEscapeChar>3.2</tns:escapeEscapeChar>
+ <tns:extraEscapedChars>1 3</tns:extraEscapedChars>
+ <tns:strng>1,000</tns:strng>
+ <tns:strng>5,000</tns:strng>
+ <tns:strng>62</tns:strng>
+ <tns:strng>530</tns:strng>
+ <tns:strng>500</tns:strng>
+ </tns:e4>
+ </dfdlInfoset>
+ </infoset>
+ </parserTestCase>
+
<!--
Test Name: escBlkAllQuotes
Schema: eBlkAllQuotes
@@ -590,6 +680,18 @@
escapeEscapeCharacter=")" extraEscapedCharacters=""
generateEscapeBlock="whenNeeded"/>
</dfdl:defineEscapeScheme>
+ <dfdl:defineEscapeScheme name="eBlkEndParen_eecExp">
+ <dfdl:escapeScheme escapeBlockStart="("
+ escapeBlockEnd=")" escapeKind="escapeBlock"
+ escapeEscapeCharacter=")"
extraEscapedCharacters="{../tns:extraEscapedCharacters }"
generateEscapeBlock="whenNeeded"/>
+ </dfdl:defineEscapeScheme>
+
+ <dfdl:defineEscapeScheme name="eBlkEndParen_eecLit">
+ <dfdl:escapeScheme escapeBlockStart="("
+ escapeBlockEnd=")" escapeKind="escapeBlock"
+ escapeEscapeCharacter=")" extraEscapedCharacters="? *"
generateEscapeBlock="whenNeeded"/>
+ </dfdl:defineEscapeScheme>
+
<xs:element name="record">
<xs:complexType>
<xs:sequence dfdl:separator="," >
@@ -598,6 +700,27 @@
</xs:sequence>
</xs:complexType>
</xs:element>
+
+ <xs:element name="record2">
+ <xs:complexType>
+ <xs:sequence dfdl:separator="," >
+ <xs:element name="extraEscapedCharacters" type="xs:string"/>
+ <xs:element name="item" type="xs:string" dfdl:lengthKind="delimited"
maxOccurs="5"
+ dfdl:escapeSchemeRef="tns:eBlkEndParen_eecExp" />
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="record3">
+ <xs:complexType>
+ <xs:sequence dfdl:separator="," >
+ <xs:element name="extraEscapedCharacters" type="xs:string"/>
+ <xs:element name="item" type="xs:string" dfdl:lengthKind="delimited"
maxOccurs="5"
+ dfdl:escapeSchemeRef="tns:eBlkEndParen_eecLit" />
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
</defineSchema>
<parserTestCase name="escBlkEndSame" model="eBlkEndSame"
@@ -616,6 +739,40 @@
</infoset>
</parserTestCase>
+ <unparserTestCase name="escBlkEndSame2" model="eBlkEndSame"
+ description="Section 7 defineEscapeScheme - escapeBlock with expression
extraEscapedCharacters" root="record2" roundTrip="true">
+ <document>? *,1,(Column Number? Two*),3,4,5</document>
+ <infoset>
+ <dfdlInfoset>
+ <tns:record2>
+ <tns:extraEscapedCharacters>? *</tns:extraEscapedCharacters>
+ <tns:item>1</tns:item>
+ <tns:item>Column Number? Two*</tns:item>
+ <tns:item>3</tns:item>
+ <tns:item>4</tns:item>
+ <tns:item>5</tns:item>
+ </tns:record2>
+ </dfdlInfoset>
+ </infoset>
+ </unparserTestCase>
+
+ <unparserTestCase name="escBlkEndSame3" model="eBlkEndSame"
+ description="Section 7 defineEscapeScheme - escapeBlock with literal
extraEscapedCharacters" root="record3" roundTrip="true">
+ <document>? *,1,(Column Number? Two*),3,4,5</document>
+ <infoset>
+ <dfdlInfoset>
+ <tns:record3>
+ <tns:extraEscapedCharacters>? *</tns:extraEscapedCharacters>
+ <tns:item>1</tns:item>
+ <tns:item>Column Number? Two*</tns:item>
+ <tns:item>3</tns:item>
+ <tns:item>4</tns:item>
+ <tns:item>5</tns:item>
+ </tns:record3>
+ </dfdlInfoset>
+ </infoset>
+ </unparserTestCase>
+
<!--
Test Name: escBlkMultipleEEC
Schema: eBlkMultipleEEC
diff --git
a/daffodil-test/src/test/scala/org/apache/daffodil/section07/escapeScheme/TestEscapeScheme.scala
b/daffodil-test/src/test/scala/org/apache/daffodil/section07/escapeScheme/TestEscapeScheme.scala
index 98d143199..28ee31dea 100644
---
a/daffodil-test/src/test/scala/org/apache/daffodil/section07/escapeScheme/TestEscapeScheme.scala
+++
b/daffodil-test/src/test/scala/org/apache/daffodil/section07/escapeScheme/TestEscapeScheme.scala
@@ -59,6 +59,8 @@ class TestEscapeScheme {
@Test def test_escapeExpressions_04(): Unit = {
runner.runOneTest("escapeExpressions_04") }
@Test def test_escapeExpressions_05(): Unit = {
runner.runOneTest("escapeExpressions_05") }
@Test def test_escapeExpressions_06(): Unit = {
runner.runOneTest("escapeExpressions_06") }
+ @Test def test_escapeExpressions_07(): Unit = {
runner.runOneTest("escapeExpressions_07") }
+ @Test def test_escapeExpressions_08(): Unit = {
runner.runOneTest("escapeExpressions_08") }
@Test def test_escapeSchemeNeg(): Unit = {
runnerNeg.runOneTest("escapeSchemeNeg") }
@@ -98,6 +100,8 @@ class TestEscapeScheme {
@Test def test_escBlkAllQuotes(): Unit = {
runner.runOneTest("escBlkAllQuotes") }
@Test def test_escBlkEndSame(): Unit = { runner.runOneTest("escBlkEndSame") }
+ @Test def test_escBlkEndSame2(): Unit = {
runner.runOneTest("escBlkEndSame2") }
+ @Test def test_escBlkEndSame3(): Unit = {
runner.runOneTest("escBlkEndSame3") }
// @Test def test_escBlkMultipleEEC() {
runner.runOneTest("escBlkMultipleEEC") } // DAFFODIL-1972
@Test def test_escapeScheme_with_comment(): Unit = {