/* * Copyright (c) 2026-present, the Ladybird developers. * * SPDX-License-Identifier: BSD-2-Clause */ #include #include #include #include static String highlight_source(String const& source, Syntax::Language language) { auto url = URL::Parser::basic_parse("https://example.com/source.html"sv).release_value(); auto base_url = URL::Parser::basic_parse("https://example.com/base/"sv).release_value(); return WebView::highlight_source(url, base_url, source, language); } TEST_CASE(highlight_script_with_braces) { // Regression test for https://github.com/LadybirdBrowser/ladybird/issues/8529 auto source = ""_string; auto result = highlight_source(source, Syntax::Language::HTML); EXPECT(!result.is_empty()); } TEST_CASE(highlight_html_with_non_ascii_before_linkified_attribute) { auto source = "

ok

"_string; auto result = highlight_source(source, Syntax::Language::HTML); EXPECT(result.contains("\xF0\x9F\x98\x80"sv)); EXPECT(result.contains("href"sv)); EXPECT(result.contains("\"next.html\""sv)); } TEST_CASE(highlight_css_with_non_ascii_before_token) { auto source = ".caf\xC3\xA9 { color: red; }"_string; auto result = highlight_source(source, Syntax::Language::CSS); EXPECT(result.contains(".caf\xC3\xA9"sv)); EXPECT(result.contains("color"sv)); } TEST_CASE(highlight_javascript_with_non_bmp_before_token) { auto source = "const smile = \"\xF0\x9F\x98\x80\"; const answer = 42;"_string; auto result = highlight_source(source, Syntax::Language::JavaScript); EXPECT(result.contains("\xF0\x9F\x98\x80"sv)); EXPECT(result.contains("answer"sv)); EXPECT(result.contains("42"sv)); } TEST_CASE(declares_utf8_and_preserves_non_ascii_text) { auto source = ""_string; auto result = highlight_source(source, Syntax::Language::HTML); EXPECT(result.contains(""sv)); EXPECT(result.contains("Caf\xC3\xA9 cr\xC3\xA8me - \xE6\x9D\xB1\xE4\xBA\xAC - \xF0\x9F\x98\x80"sv)); EXPECT(!result.contains("Caf\xC3\x83\xC2\xA9"sv)); }