| 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()); |
| } |
| } |
| } |