assertInternalType('array', $result); $this->assertCount(3, $result); $this->assertArrayHasKey("settings", $result); $this->assertArrayHasKey("code", $result); $this->assertArrayHasKey("markup", $result); $this->assertEmpty($result["settings"]); $this->assertNull($result["code"]); $this->assertNotNull($result["markup"]); $this->assertEquals("this is a twig content", $result["markup"]); // Test two sections $result = SectionParser::parse("url = \"/blog/post/\" \n==\n this is a twig content"); $this->assertInternalType('array', $result); $this->assertCount(3, $result); $this->assertArrayHasKey("settings", $result); $this->assertArrayHasKey("code", $result); $this->assertArrayHasKey("markup", $result); $this->assertNotNull($result["markup"]); $this->assertNotNull($result["settings"]); $this->assertNull($result["code"]); $this->assertEquals("this is a twig content", $result["markup"]); $this->assertInternalType("array", $result["settings"]); $this->assertArrayHasKey("url", $result["settings"]); $this->assertEquals("/blog/post/", $result["settings"]["url"]); // Test three sections $result = SectionParser::parse("url = \"/blog/post/\"\n[section]\nindex = value \n===\n \$var = 23; \n phpinfo(); \n===\n this is a twig content"); $this->assertInternalType('array', $result); $this->assertCount(3, $result); $this->assertArrayHasKey("settings", $result); $this->assertArrayHasKey("code", $result); $this->assertArrayHasKey("markup", $result); $this->assertNotNull($result["settings"]); $this->assertNotNull($result["markup"]); $this->assertNotNull($result["code"]); $this->assertEquals("this is a twig content", $result["markup"]); $this->assertInternalType("array", $result["settings"]); $this->assertArrayHasKey("url", $result["settings"]); $this->assertEquals("/blog/post/", $result["settings"]["url"]); $this->assertContains("\$var = 23;", $result["code"]); $this->assertContains("phpinfo();", $result["code"]); $this->assertArrayHasKey("section", $result["settings"]); $this->assertInternalType("array", $result["settings"]["section"]); $this->assertArrayHasKey("index", $result["settings"]["section"]); $this->assertEquals("value", $result["settings"]["section"]["index"]); // Test zero sections $result = SectionParser::parse(""); $this->assertCount(3, $result); $this->assertArrayHasKey("settings", $result); $this->assertArrayHasKey("code", $result); $this->assertArrayHasKey("markup", $result); $this->assertEmpty($result["settings"]); $this->assertNotNull($result["markup"]); $this->assertNull($result["code"]); $this->assertEquals("", $result["markup"]); } public function testParseOffset() { // Test three sections $content = <<Line 7

ESC; $result = SectionParser::parseOffset($content); $this->assertArrayHasKey("settings", $result); $this->assertArrayHasKey("code", $result); $this->assertArrayHasKey("markup", $result); $this->assertNotNull($result["settings"]); $this->assertNotNull($result["code"]); $this->assertNotNull($result["markup"]); $this->assertEquals(1, $result["settings"]); $this->assertEquals(3, $result["code"]); $this->assertEquals(7, $result["markup"]); // Test two sections $content = <<Line 5

ESC; $result = SectionParser::parseOffset($content); $this->assertArrayHasKey("settings", $result); $this->assertArrayHasKey("code", $result); $this->assertArrayHasKey("markup", $result); $this->assertNotNull($result["markup"]); $this->assertNotNull($result["settings"]); $this->assertNull($result["code"]); $this->assertEquals(1, $result["settings"]); $this->assertEquals(5, $result["markup"]); // Test two sections with white space $content = <<Line 12

ESC; $result = SectionParser::parseOffset($content); $this->assertArrayHasKey("settings", $result); $this->assertArrayHasKey("code", $result); $this->assertArrayHasKey("markup", $result); $this->assertNotNull($result["markup"]); $this->assertNotNull($result["settings"]); $this->assertNull($result["code"]); $this->assertEquals(3, $result["settings"]); $this->assertEquals(12, $result["markup"]); // Test one section $content = <<Line 1

Line 2

Line 3

ESC; $result = SectionParser::parseOffset($content); $this->assertArrayHasKey("settings", $result); $this->assertArrayHasKey("code", $result); $this->assertArrayHasKey("markup", $result); $this->assertNotNull($result["markup"]); $this->assertNull($result["settings"]); $this->assertNull($result["code"]); $this->assertEquals(1, $result["markup"]); // Test empty PHP $content = <<Line 4

ESC; $result = SectionParser::parseOffset($content); $this->assertArrayHasKey("settings", $result); $this->assertArrayHasKey("code", $result); $this->assertArrayHasKey("markup", $result); $this->assertNotNull($result["settings"]); $this->assertNotNull($result["code"]); $this->assertNotNull($result["markup"]); $this->assertEquals(1, $result["settings"]); $this->assertEquals(3, $result["code"]); $this->assertEquals(4, $result["markup"]); // Test with PHP tags $content = << ==

Line 10

ESC; $result = SectionParser::parseOffset($content); $this->assertArrayHasKey("settings", $result); $this->assertArrayHasKey("code", $result); $this->assertArrayHasKey("markup", $result); $this->assertNotNull($result["settings"]); $this->assertNotNull($result["code"]); $this->assertNotNull($result["markup"]); $this->assertEquals(1, $result["settings"]); $this->assertEquals(5, $result["code"]); $this->assertEquals(10, $result["markup"]); // Test with PHP tags and whitespace $content = << ==

Line 18

ESC; $result = SectionParser::parseOffset($content); $this->assertArrayHasKey("settings", $result); $this->assertArrayHasKey("code", $result); $this->assertArrayHasKey("markup", $result); $this->assertNotNull($result["settings"]); $this->assertNotNull($result["code"]); $this->assertNotNull($result["markup"]); $this->assertEquals(1, $result["settings"]); $this->assertEquals(13, $result["code"]); $this->assertEquals(18, $result["markup"]); // Test with PHP tags and whitespace both sides $content = << ==

Line 25

ESC; $result = SectionParser::parseOffset($content); $this->assertArrayHasKey("settings", $result); $this->assertArrayHasKey("code", $result); $this->assertArrayHasKey("markup", $result); $this->assertNotNull($result["settings"]); $this->assertNotNull($result["code"]); $this->assertNotNull($result["markup"]); $this->assertEquals(1, $result["settings"]); $this->assertEquals(20, $result["code"]); $this->assertEquals(25, $result["markup"]); // Test with whitespace on PHP and Twig $content = <<Line 19

ESC; $result = SectionParser::parseOffset($content); $this->assertArrayHasKey("settings", $result); $this->assertArrayHasKey("code", $result); $this->assertArrayHasKey("markup", $result); $this->assertNotNull($result["settings"]); $this->assertNotNull($result["code"]); $this->assertNotNull($result["markup"]); $this->assertEquals(1, $result["settings"]); $this->assertEquals(8, $result["code"]); $this->assertEquals(19, $result["markup"]); // Test namespaces $content = <<Line 16

ESC; $result = SectionParser::parseOffset($content); $this->assertArrayHasKey("settings", $result); $this->assertArrayHasKey("code", $result); $this->assertArrayHasKey("markup", $result); $this->assertNotNull($result["settings"]); $this->assertNotNull($result["code"]); $this->assertNotNull($result["markup"]); $this->assertEquals(2, $result["settings"]); $this->assertEquals(7, $result["code"]); $this->assertEquals(16, $result["markup"]); } }