blob: 0b33b94787f5f312c837287758f3f7703f73ca2d [file] [log] [blame]
using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OfficeOpenXml.FormulaParsing.ExcelUtilities;
namespace EPPlusTest.ExcelUtilities
{
[TestClass]
public class ValueMatcherTests
{
private ValueMatcher _matcher;
[TestInitialize]
public void Setup()
{
_matcher = new ValueMatcher();
}
[TestMethod]
public void ShouldReturn1WhenFirstParamIsSomethingAndSecondParamIsNull()
{
object o1 = 1;
object o2 = null;
var result = _matcher.IsMatch(o1, o2);
Assert.AreEqual(1, result);
}
[TestMethod]
public void ShouldReturnMinus1WhenFirstParamIsNullAndSecondParamIsSomething()
{
object o1 = null;
object o2 = 1;
var result = _matcher.IsMatch(o1, o2);
Assert.AreEqual(-1, result);
}
[TestMethod]
public void ShouldReturn0WhenBothParamsAreNull()
{
object o1 = null;
object o2 = null;
var result = _matcher.IsMatch(o1, o2);
Assert.AreEqual(0, result);
}
[TestMethod]
public void ShouldReturn0WhenBothParamsAreEqual()
{
object o1 = 1d;
object o2 = 1d;
var result = _matcher.IsMatch(o1, o2);
Assert.AreEqual(0, result);
}
[TestMethod]
public void ShouldReturnMinus1WhenFirstParamIsLessThanSecondParam()
{
object o1 = 1d;
object o2 = 5d;
var result = _matcher.IsMatch(o1, o2);
Assert.AreEqual(-1, result);
}
[TestMethod]
public void ShouldReturn1WhenFirstParamIsGreaterThanSecondParam()
{
object o1 = 3d;
object o2 = 1d;
var result = _matcher.IsMatch(o1, o2);
Assert.AreEqual(1, result);
}
[TestMethod]
public void ShouldReturn0WhenWhenParamsAreEqualStrings()
{
object o1 = "T";
object o2 = "T";
var result = _matcher.IsMatch(o1, o2);
Assert.AreEqual(0, result);
}
[TestMethod]
public void ShouldReturn0WhenParamsAreEqualButDifferentTypes()
{
object o1 = "2";
object o2 = 2d;
var result = _matcher.IsMatch(o1, o2);
Assert.AreEqual(0, result, "IsMatch did not return 0 as expected when first param is a string and second a double");
o1 = 2d;
o2 = "2";
result = _matcher.IsMatch(o1, o2);
Assert.AreEqual(0, result, "IsMatch did not return 0 as expected when first param is a double and second a string");
}
[TestMethod]
public void ShouldReturnMînus2WhenTypesDifferAndStringConversionToDoubleFails()
{
object o1 = 2d;
object o2 = "T";
var result = _matcher.IsMatch(o1, o2);
Assert.AreEqual(-2, result);
}
}
}