summaryrefslogtreecommitdiffstats
path: root/src/features
diff options
context:
space:
mode:
authorDan Davison <dandavison7@gmail.com>2020-06-23 11:21:44 -0400
committerDan Davison <dandavison7@gmail.com>2020-06-25 12:35:07 -0400
commit8ca7d67058b8beeb4472e904fb19feb0934b5327 (patch)
treed1439a794ccbce60ce0828ef99901d7ae11aba70 /src/features
parent3c33aec4f8d811ddab20dc8934550b50081184c2 (diff)
Start adding tests of numbers feature
Diffstat (limited to 'src/features')
-rw-r--r--src/features/mod.rs1
-rw-r--r--src/features/numbers.rs105
2 files changed, 106 insertions, 0 deletions
diff --git a/src/features/mod.rs b/src/features/mod.rs
index c05f740a..67596633 100644
--- a/src/features/mod.rs
+++ b/src/features/mod.rs
@@ -73,6 +73,7 @@ pub mod color_only;
pub mod diff_highlight;
pub mod diff_so_fancy;
pub mod navigate;
+pub mod numbers;
#[cfg(test)]
pub mod tests {
diff --git a/src/features/numbers.rs b/src/features/numbers.rs
new file mode 100644
index 00000000..401118b1
--- /dev/null
+++ b/src/features/numbers.rs
@@ -0,0 +1,105 @@
+#[cfg(test)]
+pub mod tests {
+ use console::strip_ansi_codes;
+
+ use crate::tests::integration_test_utils::integration_test_utils::{make_config, run_delta};
+
+ #[test]
+ fn test_two_minus_lines() {
+ let config = make_config(&[
+ "--number",
+ "--number-left-format",
+ "%lm⋮",
+ "--number-right-format",
+ "%lp│",
+ ]);
+ let output = run_delta(TWO_MINUS_LINES_DIFF, &config);
+ let output = strip_ansi_codes(&output);
+ let mut lines = output.lines().skip(4);
+ assert_eq!(lines.next().unwrap(), " 1 ⋮ │a = 1");
+ assert_eq!(lines.next().unwrap(), " 2 ⋮ │b = 2");
+ }
+
+ #[test]
+ fn test_two_plus_lines() {
+ let config = make_config(&[
+ "--number",
+ "--number-left-format",
+ "%lm⋮",
+ "--number-right-format",
+ "%lp│",
+ ]);
+ let output = run_delta(TWO_PLUS_LINES_DIFF, &config);
+ let output = strip_ansi_codes(&output);
+ let mut lines = output.lines().skip(4);
+ assert_eq!(lines.next().unwrap(), " ⋮ 1 │a = 1");
+ assert_eq!(lines.next().unwrap(), " ⋮ 2 │b = 2");
+ }
+
+ #[test]
+ fn test_one_minus_one_plus_line() {
+ let config = make_config(&[
+ "--number",
+ "--number-left-format",
+ "%lm⋮",
+ "--number-right-format",
+ "%lp│",
+ ]);
+ let output = run_delta(ONE_MINUS_ONE_PLUS_LINE_DIFF, &config);
+ let output = strip_ansi_codes(&output);
+ let mut lines = output.lines().skip(4);
+ assert_eq!(lines.next().unwrap(), " 1 ⋮ 1 │a = 1");
+ assert_eq!(lines.next().unwrap(), " 2 ⋮ │b = 2");
+ assert_eq!(lines.next().unwrap(), " ⋮ 2 │bb = 2");
+ }
+
+ #[test]
+ fn test_repeated_placeholder() {
+ let config = make_config(&[
+ "--number",
+ "--number-left-format",
+ "%lm %lm⋮",
+ "--number-right-format",
+ "%lp│",
+ ]);
+ let output = run_delta(ONE_MINUS_ONE_PLUS_LINE_DIFF, &config);
+ println!("{}", output);
+ let output = strip_ansi_codes(&output);
+ let mut lines = output.lines().skip(4);
+ assert_eq!(lines.next().unwrap(), " 1 1 ⋮ 1 │a = 1");
+ assert_eq!(lines.next().unwrap(), " 2 2 ⋮ │b = 2");
+ assert_eq!(lines.next().unwrap(), " ⋮ 2 │bb = 2");
+ }
+
+ const TWO_MINUS_LINES_DIFF: &str = "\
+diff --git i/a.py w/a.py
+index 223ca50..e69de29 100644
+--- i/a.py
++++ w/a.py
+@@ -1,2 +0,0 @@
+-a = 1
+-b = 2
+";
+
+ const TWO_PLUS_LINES_DIFF: &str = "\
+diff --git c/a.py i/a.py
+new file mode 100644
+index 0000000..223ca50
+--- /dev/null
++++ i/a.py
+@@ -0,0 +1,2 @@
++a = 1
++b = 2
+";
+
+ const ONE_MINUS_ONE_PLUS_LINE_DIFF: &str = "\
+diff --git i/a.py w/a.py
+index 223ca50..367a6f6 100644
+--- i/a.py
++++ w/a.py
+@@ -1,2 +1,2 @@
+ a = 1
+-b = 2
++bb = 2
+";
+}