Skip to content

Commit

Permalink
More HierarchyPass coverage
Browse files Browse the repository at this point in the history
  • Loading branch information
reid-spencer committed May 15, 2024
1 parent d2d6792 commit 577674d
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 4 deletions.
3 changes: 2 additions & 1 deletion passes/src/main/scala/com/ossuminc/riddl/passes/Pass.scala
Original file line number Diff line number Diff line change
Expand Up @@ -328,7 +328,8 @@ abstract class HierarchyPass(input: PassInput, outputs: PassesOutput) extends Pa
closeContainer(container, parents.toSeq)
case include: Include[?] =>
include.contents.foreach { item => traverse(item, parents) }
case value: RiddlValue => processValue(value, parents.toSeq)
case value: RiddlValue =>
processValue(value, parents.toSeq)
}
}
}
Expand Down
27 changes: 24 additions & 3 deletions passes/src/test/scala/com/ossuminc/riddl/passes/PassTest.scala
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package com.ossuminc.riddl.passes
import com.ossuminc.riddl.language.AST.*
import com.ossuminc.riddl.language.Messages.Messages
import com.ossuminc.riddl.language.Messages.Accumulator
import com.ossuminc.riddl.language.parsing.RiddlParserInput
import com.ossuminc.riddl.language.parsing.{RiddlParserInput, TopLevelParser}
import com.ossuminc.riddl.language.{CommonOptions, Messages}
import com.ossuminc.riddl.passes.*
import com.ossuminc.riddl.passes.resolve.{ReferenceMap, ResolutionOutput, Usages}
Expand Down Expand Up @@ -62,12 +62,12 @@ class PassTest extends AnyWordSpec with Matchers {
def postProcess(root: com.ossuminc.riddl.language.AST.Root): Unit = ???

protected def process(definition: RiddlValue, parents: Symbols.ParentStack): Unit = {

}

def result: com.ossuminc.riddl.passes.PassOutput = ???
}

object TestPass2 extends PassInfo[PassOptions] {
val name: String = "TestPass2"
override def creator(options:PassOptions): PassCreator = (input, output) => new TestPass2(input, output)
Expand Down Expand Up @@ -146,6 +146,27 @@ class PassTest extends AnyWordSpec with Matchers {
opens.mustBe(47)
values.mustBe(19)
leaves.mustBe(22)
}
"traverses partial trees" in {
val input = RiddlParserInput(
"""domain foo is { context bar is {
| /* comment */
| term baz is briefly "a character in a play"
|}}
|""".stripMargin
)
Riddl.parseAndValidate(input) match
case Left(messages) => fail(messages.justErrors.format)
case Right(result: PassesResult) =>
val input = PassInput(result.root)
val outputs = PassesOutput()
val hp = TestHierarchyPass(input, outputs)
val out: PassOutput = Pass.runPass[PassOutput](input, outputs, hp)
val (opens, closes, leaves, values) = hp.processForTest(result.root, mutable.Stack.empty)
opens must be(closes)
opens must be(3)
values must be(1)
leaves must be(1)

}
}
Expand Down

0 comments on commit 577674d

Please sign in to comment.