blob: 6e6b75ecf07a1c5bcde5175fc4f42d5fc6ed039a [file] [log] [blame]
using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Rhino.Mocks;
using OfficeOpenXml.FormulaParsing.ExcelUtilities;
using OfficeOpenXml.FormulaParsing;
namespace EPPlusTest.ExcelUtilities
{
[TestClass]
public class RangeAddressFactoryTests
{
private RangeAddressFactory _factory;
private const int ExcelMaxRows = 1048576;
[TestInitialize]
public void Setup()
{
var provider = MockRepository.GenerateStub<ExcelDataProvider>();
provider.Stub(x => x.ExcelMaxRows).Return(ExcelMaxRows);
_factory = new RangeAddressFactory(provider);
}
[TestMethod, ExpectedException(typeof(ArgumentException))]
public void CreateShouldThrowIfSuppliedAddressIsNull()
{
_factory.Create(null);
}
[TestMethod]
public void CreateShouldReturnAndInstanceWithColPropertiesSet()
{
var address = _factory.Create("A2");
Assert.AreEqual(1, address.FromCol, "FromCol was not 1");
Assert.AreEqual(1, address.ToCol, "ToCol was not 1");
}
[TestMethod]
public void CreateShouldReturnAndInstanceWithRowPropertiesSet()
{
var address = _factory.Create("A2");
Assert.AreEqual(2, address.FromRow, "FromRow was not 2");
Assert.AreEqual(2, address.ToRow, "ToRow was not 2");
}
[TestMethod]
public void CreateShouldReturnAnInstanceWithFromAndToColSetWhenARangeAddressIsSupplied()
{
var address = _factory.Create("A1:B2");
Assert.AreEqual(1, address.FromCol);
Assert.AreEqual(2, address.ToCol);
}
[TestMethod]
public void CreateShouldReturnAnInstanceWithFromAndToRowSetWhenARangeAddressIsSupplied()
{
var address = _factory.Create("A1:B3");
Assert.AreEqual(1, address.FromRow);
Assert.AreEqual(3, address.ToRow);
}
[TestMethod]
public void CreateShouldSetWorksheetNameIfSuppliedInAddress()
{
var address = _factory.Create("Ws!A1");
Assert.AreEqual("Ws", address.Worksheet);
}
[TestMethod]
public void CreateShouldReturnAnInstanceWithStringAddressSet()
{
var address = _factory.Create(1, 1);
Assert.AreEqual("A1", address.ToString());
}
[TestMethod]
public void CreateShouldReturnAnInstanceWithFromAndToColSet()
{
var address = _factory.Create(1, 0);
Assert.AreEqual(1, address.FromCol);
Assert.AreEqual(1, address.ToCol);
}
[TestMethod]
public void CreateShouldReturnAnInstanceWithFromAndToRowSet()
{
var address = _factory.Create(0, 1);
Assert.AreEqual(1, address.FromRow);
Assert.AreEqual(1, address.ToRow);
}
[TestMethod]
public void CreateShouldReturnAnInstanceWithWorksheetSetToEmptyString()
{
var address = _factory.Create(0, 1);
Assert.AreEqual(string.Empty, address.Worksheet);
}
[TestMethod]
public void CreateShouldReturnEntireColumnRangeWhenNoRowsAreSpecified()
{
var address = _factory.Create("A:B");
Assert.AreEqual(1, address.FromCol);
Assert.AreEqual(2, address.ToCol);
Assert.AreEqual(1, address.FromRow);
Assert.AreEqual(ExcelMaxRows, address.ToRow);
}
}
}