// 3rd_party_lib:commonmark4cj/build/release/commonmark4cj
// 3rd_party_lib_ohos:commonmark4cj/build/aarch64-linux-ohos/commonmark4cj
// dependence: z_test.cj
import commonmark4cj.commonmark.*
import std.unittest.*
import std.unittest.testmacro.*
import std.collection.*
import std.reflect.{TypeInfo}
class DelimitedAbstractVisitor <: AbstractVisitor {
var list: ArrayList<Delimited> = ArrayList<Delimited>()
init(list: ArrayList<Delimited>) {
this.list = list
}
public override func visit(node: Emphasis) {
list.add(node)
}
public override func visit(node: StrongEmphasis) {
list.add(node)
}
}
@Test
public class DelimitedTest {
@TestCase
public func emphasisDelimiters(): Unit {
let input: String = "* *emphasis* \n" + "* **strong** \n" + "* _important_ \n" + "* __CRITICAL__ \n"
let parser: Parser = Parser.builder().build()
let document: Node = parser.parse(input)
let list: ArrayList<Delimited> = ArrayList<Delimited>()
let visitor: DelimitedAbstractVisitor = DelimitedAbstractVisitor(list)
document.accept(visitor)
assertEquals(4, list.size)
let emphasis: Delimited = list.get(0)()
let strong: Delimited = list.get(1)()
let important: Delimited = list.get(2)()
let critical: Delimited = list.get(3)()
assertEquals("*", emphasis.getOpeningDelimiter()())
assertEquals("*", emphasis.getClosingDelimiter()())
assertEquals("**", strong.getOpeningDelimiter()())
assertEquals("**", strong.getClosingDelimiter()())
assertEquals("_", important.getOpeningDelimiter()())
assertEquals("_", important.getClosingDelimiter()())
assertEquals("__", critical.getOpeningDelimiter()())
assertEquals("__", critical.getClosingDelimiter()())
}
}