+ my $ok = true;
+ foreach my $attr (@attrs) {
+ $ok &= qx(printf %s "$attr" | $program green --attr=$attr | $valgrind_cmd$program $switch) eq $attr;
+ }
+ ok($ok, "$type attribute");
+
+ my $attrs = join ',', @attrs;
+ is(qx(printf %s "$attrs" | $program green --attr=$attrs | $valgrind_cmd$program $switch), $attrs, "$type attributes");
+ }
+
+ ok(qx(printf %s "\e[\e[33m" | $valgrind_cmd$program $switch) eq "\e[", "$type with invalid sequence");
+ };
+
+ $check_clean->($_) foreach qw(clean clean-all);
+
+ is(qx(printf %s "\e[4munderline\e[24m" | $valgrind_cmd$program --clean-all), 'underline', 'clean-all color sequences');
+
+ my $check_clean_buf = sub
+ {
+ my ($program_buf, $type) = @_;
+
+ my $switch = "--$type";
+
+ # Check that line chunks are printed when cleaning text without sequences