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