about summary refs log tree commit diff
path: root/src/libregex/test
diff options
context:
space:
mode:
authorAndrew Gallant <jamslam@gmail.com>2014-06-03 23:04:59 -0400
committerAndrew Gallant <jamslam@gmail.com>2014-06-03 23:04:59 -0400
commit9d39178f2f60b6076e4bd00e263f2304084f34b4 (patch)
tree79d7933e3f1461c45acb51d1162e7cbcae50dba0 /src/libregex/test
parentf5ead0dd66ab7c3aaaaabcc34e1726a4acd74b07 (diff)
downloadrust-9d39178f2f60b6076e4bd00e263f2304084f34b4.tar.gz
rust-9d39178f2f60b6076e4bd00e263f2304084f34b4.zip
Fixes #13843.
An empty regex is a valid regex that always matches. This behavior
is consistent with at least Go and Python.

A couple regression tests are included.
Diffstat (limited to 'src/libregex/test')
-rw-r--r--src/libregex/test/tests.rs14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/libregex/test/tests.rs b/src/libregex/test/tests.rs
index 68d43156ae6..35cb7c3c5b0 100644
--- a/src/libregex/test/tests.rs
+++ b/src/libregex/test/tests.rs
@@ -28,6 +28,20 @@ fn split() {
     assert_eq!(subs, vec!("cauchy", "plato", "tyler", "binx"));
 }
 
+#[test]
+fn empty_regex_empty_match() {
+    let re = regex!("");
+    let ms = re.find_iter("").collect::<Vec<(uint, uint)>>();
+    assert_eq!(ms, vec![(0, 0)]);
+}
+
+#[test]
+fn empty_regex_nonempty_match() {
+    let re = regex!("");
+    let ms = re.find_iter("abc").collect::<Vec<(uint, uint)>>();
+    assert_eq!(ms, vec![(0, 0), (1, 1), (2, 2), (3, 3)]);
+}
+
 macro_rules! replace(
     ($name:ident, $which:ident, $re:expr,
      $search:expr, $replace:expr, $result:expr) => (