diff --git a/samples/docx/TestIfStatement.docx b/samples/docx/TestIfStatement.docx index 23fab8a..d446559 100644 Binary files a/samples/docx/TestIfStatement.docx and b/samples/docx/TestIfStatement.docx differ diff --git a/src/MiniWord/MiniWord.Implment.cs b/src/MiniWord/MiniWord.Implment.cs index ffe2a6f..751ed5b 100644 --- a/src/MiniWord/MiniWord.Implment.cs +++ b/src/MiniWord/MiniWord.Implment.cs @@ -233,8 +233,9 @@ private static bool EvaluateStatement(string tagValue, string comparisonOperator var tagValueEvaluation = EvaluateValue(tagValue); switch (tagValueEvaluation) - { - case double dtg when double.TryParse(value, out var doubleNumber): + { + case double dtg: + if(double.TryParse(value, out var doubleNumber)) { switch (comparisonOperator) { case "==": @@ -256,9 +257,14 @@ private static bool EvaluateStatement(string tagValue, string comparisonOperator checkStatement = dtg <= doubleNumber; break; } + } else { + checkStatement = comparisonOperator == "!="; + } - break; - case int itg when int.TryParse(value, out var intNumber): + break; + case int itg: + if(int.TryParse(value, out var intNumber)) + { switch (comparisonOperator) { case "==": @@ -280,9 +286,14 @@ private static bool EvaluateStatement(string tagValue, string comparisonOperator checkStatement = itg <= intNumber; break; } + } else { + checkStatement = comparisonOperator == "!="; + } - break; - case DateTime dttg when DateTime.TryParse(value, out var date): + break; + case DateTime dttg: + if(DateTime.TryParse(value, out var date)) + { switch (comparisonOperator) { case "==": @@ -304,18 +315,22 @@ private static bool EvaluateStatement(string tagValue, string comparisonOperator checkStatement = dttg <= date; break; } + } else { + checkStatement = comparisonOperator == "!="; + } + + break; + case string stg: + switch (comparisonOperator) + { + case "==": + checkStatement = stg == value; + break; + case "!=": + checkStatement = stg != value; + break; + } - break; - case string stg: - switch (comparisonOperator) - { - case "==": - checkStatement = stg == value; - break; - case "!=": - checkStatement = stg != value; - break; - } break; case bool btg when bool.TryParse(value, out var boolean): switch (comparisonOperator) @@ -327,7 +342,7 @@ private static bool EvaluateStatement(string tagValue, string comparisonOperator checkStatement = btg == boolean; break; } - + break; } diff --git a/tests/MiniWordTests/MiniWordTests.cs b/tests/MiniWordTests/MiniWordTests.cs index 78cf72d..3114407 100644 --- a/tests/MiniWordTests/MiniWordTests.cs +++ b/tests/MiniWordTests/MiniWordTests.cs @@ -144,6 +144,7 @@ public void MiniWordIfStatement_FirstIf() ["VIP"] = true, ["Points"] = 123, ["APP"] = "Demo APP", + ["NullVal"] = null, }; MiniWord.SaveAsByTemplate(path, templatePath, value); //Console.WriteLine(path); @@ -153,6 +154,9 @@ public void MiniWordIfStatement_FirstIf() Assert.Contains("Points are greater than 100", docXml); Assert.Contains("CreateDate is not less than 2021", docXml); Assert.DoesNotContain("CreateDate is not greater than 2021", docXml); + Assert.Contains("CreateDate is not equal to MiniSofteware", docXml); + Assert.Contains("CreateDate is not NULL", docXml); + Assert.Contains("NullVal is NULL", docXml); } [Fact]