chiark / gitweb /
shapelib subst: Add test cases for subst()
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 14 May 2022 14:18:18 +0000 (15:18 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 14 May 2022 15:03:42 +0000 (16:03 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/shapelib.rs

index 4de0d671cb85f05701ff14c453c7e60cc6b2a66f..76e35f286f60e98f5be4fff4cad15c459ef319c3 100644 (file)
@@ -153,7 +153,7 @@ pub enum LibraryLoadMFIncompat {
 }
 pub use LibraryLoadMFIncompat as LLMI;
 
-#[derive(Error,Copy,Clone,Debug)]
+#[derive(Error,Copy,Clone,Debug,Eq,PartialEq)]
 pub enum SubstErrorKind {
   #[error("missing or unrecognised token {0}")] MissingToken (&'static str),
   #[error("repeated token {0}")]                RepeatedToken(&'static str),
@@ -1132,6 +1132,19 @@ fn subst(before: &str, needle: &'static str, replacement: &str)
     + rhs
 }
 
+#[test]
+fn test_subst() {
+  use SubstErrorKind as SEK;
+  assert_eq!(subst("a _colour die", "_colour", "blue").unwrap(),
+             "a blue die");
+  assert_eq!(subst("a _colour die", "_colour", "").unwrap(),
+             "a die");
+  assert_eq!(subst("a die", "_colour", "").unwrap_err().kind,
+             SEK::MissingToken("_colour"));
+  assert_eq!(subst("a _colour _colour die", "_colour", "").unwrap_err().kind,
+             SEK::RepeatedToken("_colour"));
+}
+
 #[throws(LibraryLoadError)]
 fn format_item_name(item_prefix: &str, fe: &FileData, item_suffix: &str)
                     -> GoodItemName {