blob: 2ff6ce6c4622be7b242d0a829fccf6a0c17b29e3 [file] [log] [blame]
using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OfficeOpenXml.FormulaParsing;
using Rhino.Mocks;
using OfficeOpenXml.FormulaParsing.ExcelUtilities;
namespace EPPlusTest.FormulaParsing
{
[TestClass]
public class ParsingScopesTest
{
private ParsingScopes _parsingScopes;
private IParsingLifetimeEventHandler _lifeTimeEventHandler;
[TestInitialize]
public void Setup()
{
_lifeTimeEventHandler = MockRepository.GenerateStub<IParsingLifetimeEventHandler>();
_parsingScopes = new ParsingScopes(_lifeTimeEventHandler);
}
[TestMethod]
public void CreatedScopeShouldBeCurrentScope()
{
using (var scope = _parsingScopes.NewScope(RangeAddress.Empty))
{
Assert.AreEqual(_parsingScopes.Current, scope);
}
}
[TestMethod]
public void CurrentScopeShouldHandleNestedScopes()
{
using (var scope1 = _parsingScopes.NewScope(RangeAddress.Empty))
{
Assert.AreEqual(_parsingScopes.Current, scope1);
using (var scope2 = _parsingScopes.NewScope(RangeAddress.Empty))
{
Assert.AreEqual(_parsingScopes.Current, scope2);
}
Assert.AreEqual(_parsingScopes.Current, scope1);
}
Assert.IsNull(_parsingScopes.Current);
}
[TestMethod]
public void CurrentScopeShouldBeNullWhenScopeHasTerminated()
{
using (var scope = _parsingScopes.NewScope(RangeAddress.Empty))
{ }
Assert.IsNull(_parsingScopes.Current);
}
[TestMethod]
public void NewScopeShouldSetParentOnCreatedScopeIfParentScopeExisted()
{
using (var scope1 = _parsingScopes.NewScope(RangeAddress.Empty))
{
using (var scope2 = _parsingScopes.NewScope(RangeAddress.Empty))
{
Assert.AreEqual(scope1, scope2.Parent);
}
}
}
[TestMethod]
public void LifetimeEventHandlerShouldBeCalled()
{
using (var scope = _parsingScopes.NewScope(RangeAddress.Empty))
{ }
_lifeTimeEventHandler.AssertWasCalled(x => x.ParsingCompleted());
}
}
}