Add tests parsing conditions that caused problems

This commit is contained in:
Oliver Hamlet
2018-12-22 22:50:15 +00:00
parent 4f1b1c0bf0
commit 31d870df9c
3 changed files with 52 additions and 2 deletions
-1
View File
@@ -12,7 +12,6 @@ install:
- rustfmt --version
before_script:
- mkdir tests
- cd tests
- wget https://github.com/WrinklyNinja/testing-plugins/archive/1.4.1.tar.gz
-1
View File
@@ -16,7 +16,6 @@ install:
- rustup component add rustfmt-preview
- rustfmt --version
- ps: mkdir tests
- cd tests
- ps: (New-Object Net.WebClient).DownloadFile('https://github.com/WrinklyNinja/testing-plugins/archive/1.4.0.zip', "$PWD/1.4.0.zip")
+52
View File
@@ -0,0 +1,52 @@
extern crate loot_condition_interpreter;
use std::str::FromStr;
use loot_condition_interpreter::{Error, Expression};
fn expression(string: &str) -> Result<Expression, Error> {
Expression::from_str(string)
}
#[test]
fn expression_parsing_should_ignore_whitespace_between_function_arguments() {
let e = expression("version(\"Cargo.toml\", \"1.2\", ==)");
assert!(e.is_ok());
let e = expression("version(\"Unofficial Oblivion Patch.esp\",\"3.4.0\",>=)");
assert!(e.is_ok());
let e = expression("version(\"Unofficial Skyrim Patch.esp\", \"2.0\", >=)");
assert!(e.is_ok());
let e = expression("version(\"..\\TESV.exe\", \"1.8\", >) and not checksum(\"EternalShineArmorAndWeapons.esp\",3E85A943)");
assert!(e.is_ok());
let e = expression("version(\"..\\TESV.exe\",\"1.8\",>) and not checksum(\"EternalShineArmorAndWeapons.esp\",3E85A943)");
assert!(e.is_ok());
let e = expression("checksum(\"HM_HotkeyMod.esp\",374C564C)");
assert!(e.is_ok());
let e = expression("checksum(\"HM_HotkeyMod.esp\",CF00AFFD)");
assert!(e.is_ok());
let e = expression(
"checksum(\"HM_HotkeyMod.esp\",374C564C) or checksum(\"HM_HotkeyMod.esp\",CF00AFFD)",
);
assert!(e.is_ok());
let e = expression(
"( checksum(\"HM_HotkeyMod.esp\",374C564C) or checksum(\"HM_HotkeyMod.esp\",CF00AFFD) )",
);
assert!(e.is_ok());
let e = expression("file(\"UFO - Ultimate Follower Overhaul.esp\")");
assert!(e.is_ok());
let e = expression("( checksum(\"HM_HotkeyMod.esp\",374C564C) or checksum(\"HM_HotkeyMod.esp\",CF00AFFD) ) and file(\"UFO - Ultimate Follower Overhaul.esp\")");
assert!(e.is_ok());
let e = expression("many(\"Deeper Thoughts (\\(Curie\\)|- (Expressive )?Curie)\\.esp\")");
assert!(e.is_ok());
}