From 31d870df9cb2d6dc8d31c13a1f46be99782a26b2 Mon Sep 17 00:00:00 2001 From: Oliver Hamlet Date: Sat, 22 Dec 2018 18:41:10 +0000 Subject: [PATCH] Add tests parsing conditions that caused problems --- .travis.yml | 1 - appveyor.yml | 1 - tests/parsing.rs | 52 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 52 insertions(+), 2 deletions(-) create mode 100644 tests/parsing.rs diff --git a/.travis.yml b/.travis.yml index 4f38760..92a4347 100644 --- a/.travis.yml +++ b/.travis.yml @@ -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 diff --git a/appveyor.yml b/appveyor.yml index 1b0d609..0aab82c 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -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") diff --git a/tests/parsing.rs b/tests/parsing.rs new file mode 100644 index 0000000..d89ed6c --- /dev/null +++ b/tests/parsing.rs @@ -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::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()); +}