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