use v5.36; use Test::More; use FU::XMLWriter qw/:html5_ fragment/; is fragment {}, ''; is fragment { lit_ ''; txt_ '' }, '<hi>'; is fragment { tag_ 'br', undef }, '
'; is fragment { tag_ 'a', href => '/&ops', 't&xt' }, 't&xt'; is fragment { a_ href => '/&ops', 't&xt' }, 't&xt'; is fragment { txt_ "\x{1f973}" }, '🥳'; ok !eval { lit_ 'hi'; 1 }; ok !eval { txt_ 'hi'; 1 }; ok !eval { a_ 'hi'; 1 }; is fragment { ok !eval { a_; 1 }; ok !eval { lit_; 1 }; ok !eval { tag_ 'é'; 1 }; ok !eval { tag_ ';'; 1 }; ok !eval { tag_ ''; 1 }; ok !eval { tag_ 'a', 'é', 1, 1 }; ok !eval { tag_ 'a', ';', 1, 1 }; ok !eval { tag_ 'a', '', 1, 1 }; ok !eval { a_ undef, 1, 1 }; ok !eval { a_ [], 1, 1 }; }, '1'; is fragment { div_ x => 1, '+' => 2, '+', 3, undef }, '
'; is fragment { div_ x => 1, '+' => 2, '+', undef, undef }, '
'; is fragment { div_ x => 1, '+' => undef, '+', 3, undef }, '
'; is fragment { div_ x => 1, '+' => undef, y => undef, '+', 3, undef }, '
'; is fragment { div_ x => undef, '+' => undef, y => undef, '+', 3, undef }, '
'; is fragment { div_ x => undef, '+' => undef, '+', 1, undef }, '
'; ok !eval { fragment { div_ '+' => 1, undef } }; sub lit { lit_ ""; } sub t { is $_[0], 'arg'; div_ attr1 => $_[0], sub { is $_[0], 'arg'; span_ 'ab" < c &< d'; span_ \&lit; is fragment(\&lit), ""; is fragment { is fragment { br_ }, '
'; }, ''; eval { fragment { tag_ '', '' } }; like $@, qr/Invalid tag or attribute name/; txt_ "\x{1f973}"; }; } is fragment { t 'arg' }, '
ab" < c &< d🥳
'; done_testing;