From 1fb5a7903bb44d44e298959d2637d858b2ea8e38 Mon Sep 17 00:00:00 2001 From: iximeow Date: Sun, 23 Jun 2024 17:07:22 -0700 Subject: document new AnsiDisplaySink, add more -arch tests for sinks --- tests/display.rs | 72 ++++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 49 insertions(+), 23 deletions(-) (limited to 'tests') diff --git a/tests/display.rs b/tests/display.rs index 887db53..a6d6eb1 100644 --- a/tests/display.rs +++ b/tests/display.rs @@ -1,27 +1,5 @@ -/* -#[test] -fn sinks_are_equivalent() { - use yaxpeax_arch::display::NoColorsSink; - use yaxpeax_arch::testkit::DisplaySinkWriteComparator; - - let mut bare = String::new(); - let mut through_sink = String::new(); - for i in 0..u64::MAX { - bare.clear(); - through_sink.clear(); - let mut out = NoColorsSink { - out: &mut through_sink - }; - let mut comparator = DisplaySinkWriteComparator { - sink1: &mut out, - sink1_check: |sink| { sink.out.as_str() }, - sink2: &mut bare, - sink2_check: |sink| { sink.as_str() }, - }; - } -} -*/ +// this was something of a misfeature for these formatters.. #[test] #[allow(deprecated)] fn formatters_are_not_feature_gated() { @@ -86,3 +64,51 @@ fn display_sink_write_hex_helpers() { assert_eq!(buf, expected); } } + +#[cfg(feature="alloc")] +#[test] +fn sinks_are_equivalent() { + use yaxpeax_arch::display::{DisplaySink, FmtSink}; + use yaxpeax_arch::testkit::DisplaySinkWriteComparator; + + let mut bare = String::new(); + let mut through_sink = String::new(); + for i in 0..u16::MAX { + bare.clear(); + through_sink.clear(); + let mut out = FmtSink::new(&mut through_sink); + let mut comparator = DisplaySinkWriteComparator::new( + &mut out, + |sink| { sink.inner_ref().as_str() }, + &mut bare, + |sink| { sink.as_str() }, + ); + comparator.write_u16(i).expect("write succeeds"); + comparator.write_prefixed_u16(i).expect("write succeeds"); + comparator.write_prefixed_i16(i as i16).expect("write succeeds"); + } +} + +#[cfg(all(feature="alloc", feature="color-new"))] +#[test] +fn ansi_sink_works() { + use yaxpeax_arch::color_new::ansi::AnsiDisplaySink; + use yaxpeax_arch::display::DisplaySink; + + let mut buf = String::new(); + + let mut ansi_sink = AnsiDisplaySink::new(&mut buf, yaxpeax_arch::color_new::DefaultColors); + + ansi_sink.span_start_immediate(); + ansi_sink.write_prefixed_u8(0x80).expect("write succeeds"); + ansi_sink.span_end_immediate(); + ansi_sink.write_fixed_size("(").expect("write succeeds"); + ansi_sink.span_start_register(); + ansi_sink.write_fixed_size("rbp").expect("write succeeds"); + ansi_sink.span_end_register(); + ansi_sink.write_fixed_size(")").expect("write succeeds"); + + drop(ansi_sink); + + assert_eq!(buf, "\x1b[37m0x80\x1b[39m(\x1b[38;5;6mrbp\x1b[39m)"); +} -- cgit v1.1