aboutsummaryrefslogtreecommitdiff
path: root/vendor/backtrace-ext/src/test.rs
diff options
context:
space:
mode:
authorValentin Popov <valentin@popov.link>2024-01-08 00:21:28 +0300
committerValentin Popov <valentin@popov.link>2024-01-08 00:21:28 +0300
commit1b6a04ca5504955c571d1c97504fb45ea0befee4 (patch)
tree7579f518b23313e8a9748a88ab6173d5e030b227 /vendor/backtrace-ext/src/test.rs
parent5ecd8cf2cba827454317368b68571df0d13d7842 (diff)
downloadfparkan-1b6a04ca5504955c571d1c97504fb45ea0befee4.tar.xz
fparkan-1b6a04ca5504955c571d1c97504fb45ea0befee4.zip
Initial vendor packages
Signed-off-by: Valentin Popov <valentin@popov.link>
Diffstat (limited to 'vendor/backtrace-ext/src/test.rs')
-rw-r--r--vendor/backtrace-ext/src/test.rs524
1 files changed, 524 insertions, 0 deletions
diff --git a/vendor/backtrace-ext/src/test.rs b/vendor/backtrace-ext/src/test.rs
new file mode 100644
index 0000000..d4d4112
--- /dev/null
+++ b/vendor/backtrace-ext/src/test.rs
@@ -0,0 +1,524 @@
+use super::*;
+
+type BT = &'static [&'static [&'static str]];
+
+impl Backtraceish for BT {
+ type Frame = &'static [&'static str];
+ fn frames(&self) -> &[Self::Frame] {
+ self
+ }
+}
+
+impl Frameish for &'static [&'static str] {
+ type Symbol = &'static str;
+ fn symbols(&self) -> &[Self::Symbol] {
+ self
+ }
+}
+
+impl Symbolish for &'static str {
+ fn name_str(&self) -> Option<&str> {
+ Some(self)
+ }
+}
+
+fn process(bt: BT) -> Vec<&'static str> {
+ let mut result = vec![];
+ for (frame, subframes) in short_frames_strict_impl(&bt) {
+ let symbols = &frame.symbols()[subframes];
+ assert!(!symbols.is_empty());
+ for symbol in symbols {
+ result.push(*symbol);
+ }
+ }
+ result
+}
+
+#[test]
+fn test_full() {
+ let bt: BT = &[&["hello"], &["there", "simple"], &["case"]];
+ let expected = vec!["hello", "there", "simple", "case"];
+ assert_eq!(process(bt), expected);
+}
+
+#[test]
+fn test_empty() {
+ let bt: BT = &[];
+ let expected: Vec<&str> = vec![];
+ assert_eq!(process(bt), expected);
+}
+
+#[test]
+fn test_cursed_one_true_symbol1() {
+ let bt: BT = &[
+ &["hello"],
+ &["__rust_end_short_backtrace_rust_begin_short_backtrace"],
+ &["there"],
+ ];
+ let expected = vec![
+ "hello",
+ "__rust_end_short_backtrace_rust_begin_short_backtrace",
+ "there",
+ ];
+ assert_eq!(process(bt), expected);
+}
+
+#[test]
+fn test_cursed_one_true_symbol2() {
+ let bt: BT = &[
+ &["hello"],
+ &["__rust_begin_short_backtrace_rust_end_short_backtrace"],
+ &["there"],
+ ];
+ let expected: Vec<&str> = vec![
+ "hello",
+ "__rust_begin_short_backtrace_rust_end_short_backtrace",
+ "there",
+ ];
+ assert_eq!(process(bt), expected);
+}
+
+#[test]
+fn test_backwards1() {
+ let bt: BT = &[
+ &["hello"],
+ &["__rust_begin_short_backtrace"],
+ &["real"],
+ &["frames"],
+ &["rust_end_short_backtrace"],
+ &["case"],
+ ];
+ let expected = vec![
+ "hello",
+ "__rust_begin_short_backtrace",
+ "real",
+ "frames",
+ "rust_end_short_backtrace",
+ "case",
+ ];
+ assert_eq!(process(bt), expected);
+}
+
+#[test]
+fn test_backwards2() {
+ let bt: BT = &[
+ &["hello"],
+ &["__rust_begin_short_backtrace", "real", "frames"],
+ &["rust_end_short_backtrace"],
+ &["case"],
+ ];
+ let expected = vec![
+ "hello",
+ "__rust_begin_short_backtrace",
+ "real",
+ "frames",
+ "rust_end_short_backtrace",
+ "case",
+ ];
+ assert_eq!(process(bt), expected);
+}
+
+#[test]
+fn test_backwards3() {
+ let bt: BT = &[
+ &["hello"],
+ &["__rust_begin_short_backtrace"],
+ &["real", "frames", "rust_end_short_backtrace"],
+ &["case"],
+ ];
+ let expected = vec![
+ "hello",
+ "__rust_begin_short_backtrace",
+ "real",
+ "frames",
+ "rust_end_short_backtrace",
+ "case",
+ ];
+ assert_eq!(process(bt), expected);
+}
+
+#[test]
+fn test_backwards4() {
+ let bt: BT = &[
+ &["hello"],
+ &[
+ "__rust_begin_short_backtrace",
+ "real",
+ "frames",
+ "rust_end_short_backtrace",
+ ],
+ &["case"],
+ ];
+ let expected = vec![
+ "hello",
+ "__rust_begin_short_backtrace",
+ "real",
+ "frames",
+ "rust_end_short_backtrace",
+ "case",
+ ];
+ assert_eq!(process(bt), expected);
+}
+
+#[test]
+fn test_begin_clamp_simple() {
+ let bt: BT = &[&["hello"], &["__rust_begin_short_backtrace"], &["case"]];
+ let expected = vec!["hello"];
+ assert_eq!(process(bt), expected);
+}
+
+#[test]
+fn test_begin_clamp_left_edge() {
+ let bt: BT = &[&["__rust_begin_short_backtrace"], &["case"]];
+ let expected: Vec<&str> = vec![];
+ assert_eq!(process(bt), expected);
+}
+
+#[test]
+fn test_begin_clamp_right_edge() {
+ let bt: BT = &[&["hello"], &["__rust_begin_short_backtrace"]];
+ let expected = vec!["hello"];
+ assert_eq!(process(bt), expected);
+}
+
+#[test]
+fn test_begin_clamp_empty() {
+ let bt: BT = &[&["__rust_begin_short_backtrace"]];
+ let expected: Vec<&str> = vec![];
+ assert_eq!(process(bt), expected);
+}
+
+#[test]
+fn test_begin_clamp_sub() {
+ let bt: BT = &[
+ &["real"],
+ &["frames", "core::rust_begin_short_backtrace", "junk"],
+ &["junk"],
+ ];
+ let expected = vec!["real", "frames"];
+ assert_eq!(process(bt), expected);
+}
+
+#[test]
+fn test_end_clamp_simple() {
+ let bt: BT = &[&["hello"], &["__rust_end_short_backtrace"], &["case"]];
+ let expected = vec!["case"];
+ assert_eq!(process(bt), expected);
+}
+
+#[test]
+fn test_end_clamp_left_edge() {
+ let bt: BT = &[&["_rust_end_short_backtrace"], &["case"]];
+ let expected = vec!["case"];
+ assert_eq!(process(bt), expected);
+}
+
+#[test]
+fn test_end_clamp_right_edge() {
+ let bt: BT = &[&["hello"], &["__rust_end_short_backtrace"]];
+ let expected: Vec<&str> = vec![];
+ assert_eq!(process(bt), expected);
+}
+
+#[test]
+fn test_end_clamp_empty() {
+ let bt: BT = &[&["__rust_end_short_backtrace"]];
+ let expected: Vec<&str> = vec![];
+ assert_eq!(process(bt), expected);
+}
+
+#[test]
+fn test_end_clamp_sub() {
+ let bt: BT = &[
+ &["junk"],
+ &["junk", "__rust_end_short_backtrace", "real"],
+ &["frames"],
+ ];
+ let expected = vec!["real", "frames"];
+ assert_eq!(process(bt), expected);
+}
+
+#[test]
+fn test_both_simple() {
+ let bt: BT = &[
+ &["hello"],
+ &["__rust_end_short_backtrace"],
+ &["real"],
+ &["frames"],
+ &["rust_begin_short_backtrace"],
+ &["case"],
+ ];
+ let expected = vec!["real", "frames"];
+ assert_eq!(process(bt), expected);
+}
+
+#[test]
+fn test_both_multiball_various() {
+ let bt: BT = &[
+ &["hello"],
+ &["__rust_end_short_backtrace"],
+ &["core::rust_end_short_backtrace"],
+ &["junk"],
+ &["rust_end_short_backtrace"],
+ &["real"],
+ &["frames"],
+ &["rust_begin_short_backtrace"],
+ &["_rust_begin_short_backtrace"],
+ &["junk"],
+ &["core::rust_begin_short_backtrace"],
+ &["case"],
+ ];
+ let expected = vec!["real", "frames"];
+ assert_eq!(process(bt), expected);
+}
+
+#[test]
+fn test_both_multiball_identical() {
+ let bt: BT = &[
+ &["hello"],
+ &["rust_end_short_backtrace"],
+ &["rust_end_short_backtrace"],
+ &["real"],
+ &["frames"],
+ &["rust_begin_short_backtrace"],
+ &["rust_begin_short_backtrace"],
+ &["case"],
+ ];
+ let expected = vec!["real", "frames"];
+ assert_eq!(process(bt), expected);
+}
+
+#[test]
+fn test_both_multiball_invert1() {
+ let bt: BT = &[
+ &["hello"],
+ &["rust_end_short_backtrace"],
+ &["real"],
+ &["frames"],
+ &["rust_begin_short_backtrace"],
+ &["junk"],
+ &["rust_end_short_backtrace"],
+ &["case"],
+ ];
+ let expected = vec![
+ "hello",
+ "rust_end_short_backtrace",
+ "real",
+ "frames",
+ "rust_begin_short_backtrace",
+ "junk",
+ "rust_end_short_backtrace",
+ "case",
+ ];
+ assert_eq!(process(bt), expected);
+}
+
+#[test]
+fn test_both_multiball_invert2() {
+ let bt: BT = &[
+ &["hello"],
+ &["rust_begin_short_backtrace"],
+ &["junk"],
+ &["rust_end_short_backtrace"],
+ &["real"],
+ &["frames"],
+ &["rust_begin_short_backtrace"],
+ &["case"],
+ ];
+ let expected = vec![
+ "hello",
+ "rust_begin_short_backtrace",
+ "junk",
+ "rust_end_short_backtrace",
+ "real",
+ "frames",
+ "rust_begin_short_backtrace",
+ "case",
+ ];
+ assert_eq!(process(bt), expected);
+}
+
+#[test]
+fn test_both_adjacent() {
+ let bt: BT = &[
+ &["hello"],
+ &["__rust_end_short_backtrace"],
+ &["rust_begin_short_backtrace"],
+ &["case"],
+ ];
+ let expected: Vec<&str> = vec![];
+ assert_eq!(process(bt), expected);
+}
+
+#[test]
+fn test_both_left_edge() {
+ let bt: BT = &[
+ &["__rust_end_short_backtrace"],
+ &["real"],
+ &["frames"],
+ &["rust_begin_short_backtrace"],
+ &["case"],
+ ];
+ let expected = vec!["real", "frames"];
+ assert_eq!(process(bt), expected);
+}
+
+#[test]
+fn test_both_right_edge() {
+ let bt: BT = &[
+ &["hello"],
+ &["__rust_end_short_backtrace"],
+ &["real"],
+ &["frames"],
+ &["rust_begin_short_backtrace"],
+ ];
+ let expected = vec!["real", "frames"];
+ assert_eq!(process(bt), expected);
+}
+
+#[test]
+fn test_both_spanned() {
+ let bt: BT = &[
+ &["__rust_end_short_backtrace"],
+ &["real"],
+ &["frames"],
+ &["__rust_begin_short_backtrace"],
+ ];
+ let expected = vec!["real", "frames"];
+ assert_eq!(process(bt), expected);
+}
+
+#[test]
+fn test_both_spanned_empty() {
+ let bt: BT = &[
+ &["rust_end_short_backtrace"],
+ &["rust_begin_short_backtrace"],
+ ];
+ let expected: Vec<&str> = vec![];
+ assert_eq!(process(bt), expected);
+}
+
+#[test]
+fn test_one_super_frame_2() {
+ let bt: BT = &[&[
+ "rust_end_short_backtrace",
+ "real",
+ "frames",
+ "rust_begin_short_backtrace",
+ ]];
+ let expected = vec!["real", "frames"];
+ assert_eq!(process(bt), expected);
+}
+
+#[test]
+fn test_one_super_frame_1() {
+ let bt: BT = &[&[
+ "rust_end_short_backtrace",
+ "real",
+ "rust_begin_short_backtrace",
+ ]];
+ let expected = vec!["real"];
+ assert_eq!(process(bt), expected);
+}
+
+#[test]
+fn test_one_super_frame_0() {
+ let bt: BT = &[&["rust_end_short_backtrace", "rust_begin_short_backtrace"]];
+ let expected: Vec<&str> = vec![];
+ assert_eq!(process(bt), expected);
+}
+
+#[test]
+fn test_complex1() {
+ let bt: BT = &[
+ &["junk"],
+ &["junk", "__rust_end_short_backtrace", "real"],
+ &["frames"],
+ &["here", "__rust_begin_short_backtrace", "junk"],
+ &["junk"],
+ ];
+ let expected = vec!["real", "frames", "here"];
+ assert_eq!(process(bt), expected);
+}
+
+#[test]
+fn test_complex2() {
+ let bt: BT = &[
+ &["junk"],
+ &["__rust_end_short_backtrace", "real"],
+ &["frames"],
+ &["here", "__rust_begin_short_backtrace", "junk"],
+ &["junk"],
+ ];
+ let expected = vec!["real", "frames", "here"];
+ assert_eq!(process(bt), expected);
+}
+
+#[test]
+fn test_complex3() {
+ let bt: BT = &[
+ &["junk"],
+ &["junk", "__rust_end_short_backtrace", "real"],
+ &["frames"],
+ &["here", "__rust_begin_short_backtrace"],
+ &["junk"],
+ ];
+ let expected = vec!["real", "frames", "here"];
+ assert_eq!(process(bt), expected);
+}
+
+#[test]
+fn test_complex4() {
+ let bt: BT = &[
+ &["junk"],
+ &["junk", "__rust_end_short_backtrace"],
+ &["real", "frames"],
+ &["here", "__rust_begin_short_backtrace"],
+ &["junk"],
+ ];
+ let expected = vec!["real", "frames", "here"];
+ assert_eq!(process(bt), expected);
+}
+
+#[test]
+fn test_complex5() {
+ let bt: BT = &[
+ &["junk"],
+ &["junk", "__rust_end_short_backtrace", "real"],
+ &["frames", "here"],
+ &["__rust_begin_short_backtrace"],
+ &["junk"],
+ ];
+ let expected = vec!["real", "frames", "here"];
+ assert_eq!(process(bt), expected);
+}
+
+#[test]
+fn test_complex6() {
+ let bt: BT = &[
+ &["junk"],
+ &[
+ "junk",
+ "__rust_end_short_backtrace",
+ "real",
+ "frames",
+ "here",
+ ],
+ &["__rust_begin_short_backtrace"],
+ &["junk"],
+ ];
+ let expected = vec!["real", "frames", "here"];
+ assert_eq!(process(bt), expected);
+}
+
+#[test]
+fn test_complex7() {
+ let bt: BT = &[
+ &["junk"],
+ &["junk", "__rust_end_short_backtrace"],
+ &["real", "frames", "here", "__rust_begin_short_backtrace"],
+ &["junk"],
+ ];
+ let expected = vec!["real", "frames", "here"];
+ assert_eq!(process(bt), expected);
+}