| using System; | 
 | using System.Collections.Generic; | 
 | using Microsoft.VisualStudio.TestTools.UnitTesting; | 
 | using OfficeOpenXml.FormulaParsing; | 
 | using OfficeOpenXml.FormulaParsing.Excel.Functions.Database; | 
 | using Rhino.Mocks; | 
 |  | 
 | namespace EPPlusTest.FormulaParsing.Excel.Functions.Database | 
 | { | 
 |     [TestClass] | 
 |     public class RowMatcherTests | 
 |     { | 
 |         private ExcelDatabaseCriteria GetCriteria(Dictionary<ExcelDatabaseCriteriaField, object> items) | 
 |         { | 
 |             var provider = MockRepository.GenerateStub<ExcelDataProvider>(); | 
 |             var criteria = MockRepository.GenerateStub<ExcelDatabaseCriteria>(provider, string.Empty); | 
 |              | 
 |             criteria.Stub(x => x.Items).Return(items); | 
 |             return criteria; | 
 |         } | 
 |         [TestMethod] | 
 |         public void IsMatchShouldReturnTrueIfCriteriasMatch() | 
 |         { | 
 |             var data = new ExcelDatabaseRow(); | 
 |             data["Crit1"] = 1; | 
 |             data["Crit2"] = 2; | 
 |             data["Crit3"] = 3; | 
 |  | 
 |             var crit = new Dictionary<ExcelDatabaseCriteriaField, object>(); | 
 |             crit[new ExcelDatabaseCriteriaField("Crit1")] = 1; | 
 |             crit[new ExcelDatabaseCriteriaField("Crit3")] = 3; | 
 |  | 
 |             var matcher = new RowMatcher(); | 
 |  | 
 |             var criteria = GetCriteria(crit); | 
 |  | 
 |             Assert.IsTrue(matcher.IsMatch(data, criteria)); | 
 |         } | 
 |  | 
 |         [TestMethod] | 
 |         public void IsMatchShouldReturnFalseIfCriteriasDoesNotMatch() | 
 |         { | 
 |             var data = new ExcelDatabaseRow(); | 
 |             data["Crit1"] = 1; | 
 |             data["Crit2"] = 2; | 
 |             data["Crit3"] = 3; | 
 |  | 
 |             var crit = new Dictionary<ExcelDatabaseCriteriaField, object>(); | 
 |             crit[new ExcelDatabaseCriteriaField("Crit1")] = 1; | 
 |             crit[new ExcelDatabaseCriteriaField("Crit3")] = 4; | 
 |  | 
 |             var matcher = new RowMatcher(); | 
 |  | 
 |             var criteria = GetCriteria(crit); | 
 |  | 
 |             Assert.IsFalse(matcher.IsMatch(data, criteria)); | 
 |         } | 
 |  | 
 |         [TestMethod] | 
 |         public void IsMatchShouldMatchStrings1() | 
 |         { | 
 |             var data = new ExcelDatabaseRow(); | 
 |             data["Crit1"] = "1"; | 
 |             data["Crit2"] = 2; | 
 |             data["Crit3"] = 3; | 
 |  | 
 |             var crit = new Dictionary<ExcelDatabaseCriteriaField, object>(); | 
 |             crit[new ExcelDatabaseCriteriaField("Crit1")] = "1"; | 
 |             crit[new ExcelDatabaseCriteriaField("Crit3")] = 3; | 
 |  | 
 |             var matcher = new RowMatcher(); | 
 |  | 
 |             var criteria = GetCriteria(crit); | 
 |  | 
 |             Assert.IsTrue(matcher.IsMatch(data, criteria)); | 
 |         } | 
 |  | 
 |         [TestMethod] | 
 |         public void IsMatchShouldMatchStrings2() | 
 |         { | 
 |             var data = new ExcelDatabaseRow(); | 
 |             data["Crit1"] = "2"; | 
 |             data["Crit2"] = 2; | 
 |             data["Crit3"] = 3; | 
 |  | 
 |             var crit = new Dictionary<ExcelDatabaseCriteriaField, object>(); | 
 |             crit[new ExcelDatabaseCriteriaField("Crit1")] = "1"; | 
 |             crit[new ExcelDatabaseCriteriaField("Crit3")] = 3; | 
 |  | 
 |             var matcher = new RowMatcher(); | 
 |  | 
 |             var criteria = GetCriteria(crit); | 
 |  | 
 |             Assert.IsFalse(matcher.IsMatch(data, criteria)); | 
 |         } | 
 |  | 
 |         [TestMethod] | 
 |         public void IsMatchShouldMatchWildcardStrings() | 
 |         { | 
 |             var data = new ExcelDatabaseRow(); | 
 |             data["Crit1"] = "test"; | 
 |             data["Crit2"] = 2; | 
 |             data["Crit3"] = 3; | 
 |  | 
 |             var crit = new Dictionary<ExcelDatabaseCriteriaField, object>(); | 
 |             crit[new ExcelDatabaseCriteriaField("Crit1")] = "t*t"; | 
 |             crit[new ExcelDatabaseCriteriaField("Crit3")] = 3; | 
 |  | 
 |             var matcher = new RowMatcher(); | 
 |  | 
 |             var criteria = GetCriteria(crit); | 
 |  | 
 |             Assert.IsTrue(matcher.IsMatch(data, criteria)); | 
 |         } | 
 |  | 
 |         [TestMethod] | 
 |         public void IsMatchShouldMatchNumericExpression() | 
 |         { | 
 |             var data = new ExcelDatabaseRow(); | 
 |             data["Crit1"] = "test"; | 
 |             data["Crit2"] = 2; | 
 |             data["Crit3"] = 3; | 
 |  | 
 |             var crit = new Dictionary<ExcelDatabaseCriteriaField, object>(); | 
 |             crit[new ExcelDatabaseCriteriaField("Crit2")] = "<3"; | 
 |             crit[new ExcelDatabaseCriteriaField("Crit3")] = 3; | 
 |  | 
 |             var matcher = new RowMatcher(); | 
 |  | 
 |             var criteria = GetCriteria(crit); | 
 |  | 
 |             Assert.IsTrue(matcher.IsMatch(data, criteria)); | 
 |         } | 
 |  | 
 |         [TestMethod] | 
 |         public void IsMatchShouldHandleFieldIndex() | 
 |         { | 
 |             var data = new ExcelDatabaseRow(); | 
 |             data["Crit1"] = "test"; | 
 |             data["Crit2"] = 2; | 
 |             data["Crit3"] = 3; | 
 |  | 
 |             var crit = new Dictionary<ExcelDatabaseCriteriaField, object>(); | 
 |             crit[new ExcelDatabaseCriteriaField(2)] = "<3"; | 
 |             crit[new ExcelDatabaseCriteriaField("Crit3")] = 3; | 
 |  | 
 |             var matcher = new RowMatcher(); | 
 |  | 
 |             var criteria = GetCriteria(crit); | 
 |  | 
 |             Assert.IsTrue(matcher.IsMatch(data, criteria)); | 
 |         } | 
 |     } | 
 | } |