diff --git a/README.md b/README.md index fd0b677..4b2f011 100644 --- a/README.md +++ b/README.md @@ -192,6 +192,7 @@ You can replace this DSL with your own (eg. use JSON instead) by implementing an | `@=*` | Case-insensitive string Contains | | `_=*` | Case-insensitive string Starts with | | `==*` | Case-insensitive string Equals | +| `!=*` | Case-insensitive string Not equals | | `!@=*` | Case-insensitive string does not Contains | | `!_=*` | Case-insensitive string does not Starts with | diff --git a/Sieve/Models/FilterTerm.cs b/Sieve/Models/FilterTerm.cs index 69395ed..77bfeec 100644 --- a/Sieve/Models/FilterTerm.cs +++ b/Sieve/Models/FilterTerm.cs @@ -13,6 +13,7 @@ namespace Sieve.Models private static readonly string[] Operators = new string[] { "!@=*", "!_=*", + "!=*", "!@=", "!_=", "==*", diff --git a/SieveUnitTests/General.cs b/SieveUnitTests/General.cs index 471b216..d7f2bf5 100644 --- a/SieveUnitTests/General.cs +++ b/SieveUnitTests/General.cs @@ -96,6 +96,20 @@ namespace SieveUnitTests Assert.IsTrue(result.Count() == 1); } + [TestMethod] + public void NotEqualsCanBeCaseInsensitive() + { + var model = new SieveModel() + { + Filters = "Title!=*a" + }; + + var result = _processor.Apply(model, _posts); + + Assert.AreEqual(result.First().Id, 1); + Assert.IsTrue(result.Count() == 3); + } + [TestMethod] public void ContainsIsCaseSensitive() {