aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authoriximeow <me@iximeow.net>2024-06-23 17:07:22 -0700
committeriximeow <me@iximeow.net>2024-06-23 17:07:22 -0700
commit1fb5a7903bb44d44e298959d2637d858b2ea8e38 (patch)
tree15ae7bb8f58eba0966b28448f563276c3df70455 /tests
parenta8ec2d655ca59d7118ca1ea47dada705183b5442 (diff)
document new AnsiDisplaySink, add more -arch tests for sinks
Diffstat (limited to 'tests')
-rw-r--r--tests/display.rs72
1 files changed, 49 insertions, 23 deletions
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)");
+}