blob: 6c7f71086b0c62ab595224507cb3ae9b34ad4be1 [file] [log] [blame]
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));
}
}
}