diff --git a/Cargo.lock b/Cargo.lock index 2a43692..5b0782e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -60,7 +60,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "690a62be8920ccf773ee00ef0968649b0e724cda8bd5b12286302b4ae955fdf5" dependencies = [ "backtrace-sys", - "cfg-if", + "cfg-if 0.1.10", "libc", "rustc-demangle", ] @@ -119,6 +119,12 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + [[package]] name = "cgmath" version = "0.16.1" @@ -161,7 +167,7 @@ version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04973fa96e96579258a5091af6003abde64af786b860f18622b82e026cca60e6" dependencies = [ - "cfg-if", + "cfg-if 0.1.10", "lazy_static 1.4.0", ] @@ -355,7 +361,7 @@ version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" dependencies = [ - "cfg-if", + "cfg-if 0.1.10", ] [[package]] @@ -410,7 +416,7 @@ checksum = "6c722bee1037d430d0f8e687bbdbf222f27cc6e4e68d5caf630857bb2b6dbdce" dependencies = [ "bitflags", "cc", - "cfg-if", + "cfg-if 0.1.10", "libc", "void", ] @@ -428,7 +434,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2ad2a91a8e869eeb30b9cb3119ae87773a8f4ae617f41b1eb9c154b2905f7bd6" dependencies = [ "memchr", - "version_check", + "version_check 0.1.5", ] [[package]] @@ -567,9 +573,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.4" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afdc77cc74ec70ed262262942ebb7dac3d479e9e5cfa2da1841c0806f6cdabcc" +checksum = "edc3358ebc67bc8b7fa0c007f945b0b18226f78437d61bec735a9eb96b61ee70" dependencies = [ "unicode-xid 0.2.0", ] @@ -585,11 +591,11 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.2" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe" +checksum = "38bc8cc6a5f2e3655e0899c1b848643b2562f853f114bfec7be120678e3ace05" dependencies = [ - "proc-macro2 1.0.4", + "proc-macro2 1.0.30", ] [[package]] @@ -848,6 +854,7 @@ dependencies = [ "schala-repl", "stopwatch", "take_mut", + "test-case", ] [[package]] @@ -905,9 +912,9 @@ version = "1.0.101" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4b133a43a1ecd55d4086bd5b4dc6c1751c68b1bfbeba7a5040442022c7e7c02e" dependencies = [ - "proc-macro2 1.0.4", - "quote 1.0.2", - "syn 1.0.5", + "proc-macro2 1.0.30", + "quote 1.0.10", + "syn 1.0.80", ] [[package]] @@ -964,12 +971,12 @@ dependencies = [ [[package]] name = "syn" -version = "1.0.5" +version = "1.0.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66850e97125af79138385e9b88339cbcd037e3f28ceab8c5ad98e64f0f1f80bf" +checksum = "d010a1623fbd906d51d650a9916aaefc05ffa0e4053ff7fe601167f3e715d194" dependencies = [ - "proc-macro2 1.0.4", - "quote 1.0.2", + "proc-macro2 1.0.30", + "quote 1.0.10", "unicode-xid 0.2.0", ] @@ -1003,6 +1010,19 @@ dependencies = [ "phf_codegen", ] +[[package]] +name = "test-case" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b114ece25254e97bf48dd4bfc2a12bad0647adacfe4cae1247a9ca6ad302cec" +dependencies = [ + "cfg-if 1.0.0", + "proc-macro2 1.0.30", + "quote 1.0.10", + "syn 1.0.80", + "version_check 0.9.3", +] + [[package]] name = "thread_local" version = "0.3.6" @@ -1057,6 +1077,12 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" +[[package]] +name = "version_check" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe" + [[package]] name = "void" version = "1.0.2" diff --git a/schala-lang/language/Cargo.toml b/schala-lang/language/Cargo.toml index 3794ffe..8363f70 100644 --- a/schala-lang/language/Cargo.toml +++ b/schala-lang/language/Cargo.toml @@ -17,3 +17,6 @@ assert_matches = "1.5" schala-lang-codegen = { path = "../codegen" } schala-repl = { path = "../../schala-repl" } + +[dev-dependencies] +test-case = "1.2.0" diff --git a/schala-lang/language/src/tree_walk_eval/test.rs b/schala-lang/language/src/tree_walk_eval/test.rs index e83bb07..82cea92 100644 --- a/schala-lang/language/src/tree_walk_eval/test.rs +++ b/schala-lang/language/src/tree_walk_eval/test.rs @@ -1,4 +1,5 @@ #![cfg(test)] +use test_case::test_case; use crate::symbol_table::SymbolTable; use crate::tree_walk_eval::State; @@ -98,18 +99,21 @@ let d = if "xxx" is "yyy" then { 20 } else { 30 } eval_assert(source, "(255, 256, 10, 30)"); } -#[test] -fn basic_patterns_2() { - let source = r#" -let x = "hella" +#[test_case("sanchez", "1")] +#[test_case("mouri", "2")] +#[test_case("hella", "3")] +#[test_case("cyrus", "4")] +fn basic_patterns_2(input: &str, expected: &str) { + let mut source = format!(r#"let x = "{}""#, input); + source.push_str(r#" if x { - is "sanchez" then 23 - is "mouri" then 99 - is "hella" then 2 - is _ then 94 + is "sanchez" then 1 + is "mouri" then 2 + is "hella" then 3 + is _ then 4 } -"#; - eval_assert(source, "2"); +"#); + eval_assert(&source, expected); } #[test]