X
One
Two
One
\nTwo
\nOne
Quote
One
\n", $htmlBack); + $this->assertStringContainsString('Quote
', $htmlBack); + } + + public function testListItemWithOnlyCodeBlockKeepsIndentedCodeFence(): void + { + $html = ''; + $result = $this->converter->convert($html); + + $this->assertSame("- \n\n ```\n code\n ```\n", $result); + $htmlBack = (new DjotConverter())->convert($result); + $this->assertStringContainsString("
code\n code", $htmlBack); + } + + public function testEmptyListItemWithAttributesKeepsIndentedAttributeBlock(): void + { + $html = ''; + $result = $this->converter->convert($html); + + $this->assertSame("- \n {#empty}\n", $result); + } + + public function testListItemWithDetailsKeepsIndentedTaggedContainer(): void + { + $html = '
'; + $result = $this->converter->convert($html); + + $this->assertSame("- \n\n ::: details\n Title\n\n Body\n :::\n", $result); + } + + public function testListItemWithHeadingKeepsIndentedHeadingBlock(): void + { + $html = '
Title
Body
'; + $result = $this->converter->convert($html); + + $this->assertSame("- \n\n ## Head\n", $result); + } + + public function testHtml5BlockContainerWithoutAttributesFallsBackToPlainBlock(): void + { + $html = '
Head
'; + $result = $this->converter->convert($html); + + $this->assertSame("X\n", $result); + } + public function testDeeplyNestedList(): void { $html = ' X
'; @@ -1013,6 +1076,7 @@ public function testDetailsElement(): void $html = '
- Level 1
- Level 2
- Level 3
'; $result = $this->converter->convert($html); + $this->assertStringContainsString("::: details\n", $result); $this->assertStringContainsString('Click to expand', $result); $this->assertStringContainsString('Hidden content here', $result); } @@ -1084,10 +1148,22 @@ public function testHtml5BlockElementsWithAttributes(): void $html = 'Click to expand
Hidden content here
'; $result = $this->converter->convert($html); + $this->assertStringContainsString('{#q1 .faq}', $result); + $this->assertStringContainsString("::: details\n", $result); $this->assertStringContainsString('Question?', $result); $this->assertStringContainsString('Answer.', $result); } + public function testHtml5BlockContainerWithAttributesUsesTaggedFencedDiv(): void + { + $html = 'Question?
Answer.
'; + $result = $this->converter->convert($html); + + $this->assertStringContainsString('{#a1 data-kind=post}', $result); + $this->assertStringContainsString("::: article\n", $result); + $this->assertStringContainsString("X\n", $result); + } + // ==================== Round-trip Table Separators ==================== public function testTableSeparatorWidthsRoundTrip(): void X