| 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)); | |
| } | |
| } | |
| } |