blob: 2a0f23e601d6c667343a30e2a65224a845fe9942 [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 AddressTranslatorTests
{
private AddressTranslator _addressTranslator;
private ExcelDataProvider _excelDataProvider;
private const int ExcelMaxRows = 1356;
[TestInitialize]
public void Setup()
{
_excelDataProvider = MockRepository.GenerateStub<ExcelDataProvider>();
_excelDataProvider.Stub(x => x.ExcelMaxRows).Return(ExcelMaxRows);
_addressTranslator = new AddressTranslator(_excelDataProvider);
}
[TestMethod, ExpectedException(typeof(ArgumentNullException))]
public void ConstructorShouldThrowIfProviderIsNull()
{
new AddressTranslator(null);
}
[TestMethod]
public void ShouldTranslateRowNumber()
{
int col, row;
_addressTranslator.ToColAndRow("A2", out col, out row);
Assert.AreEqual(2, row);
}
[TestMethod]
public void ShouldTranslateLettersToColumnIndex()
{
int col, row;
_addressTranslator.ToColAndRow("C1", out col, out row);
Assert.AreEqual(3, col);
_addressTranslator.ToColAndRow("AA2", out col, out row);
Assert.AreEqual(27, col);
_addressTranslator.ToColAndRow("BC1", out col, out row);
Assert.AreEqual(55, col);
}
[TestMethod]
public void ShouldTranslateLetterAddressUsingMaxRowsFromProviderLower()
{
int col, row;
_addressTranslator.ToColAndRow("A", out col, out row);
Assert.AreEqual(1, row);
}
[TestMethod]
public void ShouldTranslateLetterAddressUsingMaxRowsFromProviderUpper()
{
int col, row;
_addressTranslator.ToColAndRow("A", out col, out row, AddressTranslator.RangeCalculationBehaviour.LastPart);
Assert.AreEqual(ExcelMaxRows, row);
}
}
}