public void CreateFromPathOperation_FileModeAndFileAccessAndFileShareAndBufferSizeAndFileOptions_CalledOnce() { var attr = (FsFactAttribute)Attribute.GetCustomAttribute(MethodBase.GetCurrentMethod(), typeof(FsFactAttribute)); var fileSystemMock = attr.GetMock <IFileSystem>(); var txFileSystem = new TxFileSystem(fileSystemMock.Object); var fileName = UnitTestUtils.GetTempFileName(txFileSystem); var fileMode = FileMode.OpenOrCreate; var fileAccess = FileAccess.ReadWrite; var fileShare = FileShare.Read; var bufferSize = 512; var fileOptions = FileOptions.SequentialScan; var fileStreamMock = new Mock <FileStream>(MockBehavior.Loose, fileName, fileMode, fileAccess, fileShare, bufferSize, fileOptions); fileSystemMock.Setup(fs => fs.FileStream.Create(It.Is <string>((f) => f == fileName), It.Is <FileMode>((m) => m == fileMode), It.Is <FileAccess>((a) => a == fileAccess), It.Is <FileShare>((s) => s == fileShare), It.Is <int>((s) => s == bufferSize), It.Is <FileOptions>((o) => o == fileOptions))) .Returns(fileStreamMock.Object); var fileStreamReturned = txFileSystem.FileStream.Create(fileName, fileMode, fileAccess, fileShare, bufferSize, fileOptions); fileSystemMock.Verify(fs => fs.FileStream.Create(It.Is <string>((f) => f == fileName), It.Is <FileMode>((m) => m == fileMode), It.Is <FileAccess>((a) => a == fileAccess), It.Is <FileShare>((s) => s == fileShare), It.Is <int>((s) => s == bufferSize), It.Is <FileOptions>((o) => o == fileOptions)), Times.Once); Assert.Equal(fileStreamMock.Object, fileStreamReturned); }
public void CreateFromPathOperation_Open_ContentsChanged() { var fileSystem = new FileSystem(); var txFileSystem = new TxFileSystem(fileSystem); string fileName = UnitTestUtils.GetTempFileName(txFileSystem); var streamWriter = txFileSystem.File.CreateText(fileName); streamWriter.Write("Original contents" + Environment.NewLine); streamWriter.Flush(); streamWriter.Close(); Stream fileStream = null; using (var transactionScope = new TransactionScope()) { txFileSystem = new TxFileSystem(fileSystem); fileStream = txFileSystem.FileStream.Create(fileName, FileMode.Open); var data = Encoding.Default.GetBytes("Written" + Environment.NewLine); fileStream.Seek(fileStream.Length, SeekOrigin.Begin); fileStream.SetLength(fileStream.Length + data.Length); fileStream.Write(data, 0, data.Length); fileStream.Flush(); transactionScope.Complete(); } fileStream.Close(); Assert.Equal("Original contents" + Environment.NewLine + "Written" + Environment.NewLine, txFileSystem.File.ReadAllText(fileName)); txFileSystem.File.Delete(fileName); }
public void CreateFromSafeFileHandleOperation_BufferSizeAndIsAsync_CalledOnce() { var attr = (FsFactAttribute)Attribute.GetCustomAttribute(MethodBase.GetCurrentMethod(), typeof(FsFactAttribute)); var fileSystemMock = attr.GetMock <IFileSystem>(); var txFileSystem = new TxFileSystem(fileSystemMock.Object); var ownsHandle = true; var fileAccess = FileAccess.ReadWrite; var fileName = UnitTestUtils.GetTempFileName(new TxFileSystem()); var filePtr = NativeMethods.CreateFile(fileName, fileAccess, FileShare.ReadWrite, IntPtr.Zero, FileMode.OpenOrCreate, FileAttributes.Normal, IntPtr.Zero); var safeFileHandle = new SafeFileHandle(filePtr, ownsHandle: ownsHandle); var bufferSize = 512; var isAsync = false; var fileStreamMock = new Mock <FileStream>(MockBehavior.Loose, safeFileHandle, fileAccess, bufferSize, isAsync); fileSystemMock.Setup(f => f.FileStream.Create(It.Is <SafeFileHandle>((p) => p == safeFileHandle), It.Is <FileAccess>((a) => a == fileAccess), It.Is <int>((s) => s == bufferSize), It.Is <bool>((a) => a == isAsync))) .Returns(fileStreamMock.Object); var fileStreamReturned = txFileSystem.FileStream.Create(safeFileHandle, fileAccess, bufferSize, isAsync); fileSystemMock.Verify(f => f.FileStream.Create(It.Is <SafeFileHandle>((p) => p == safeFileHandle), It.Is <FileAccess>((a) => a == fileAccess), It.Is <int>((s) => s == bufferSize), It.Is <bool>((a) => a == isAsync)), Times.Once); Assert.Equal(fileStreamMock.Object, fileStreamReturned); NativeMethods.CloseHandle(filePtr); new TxFileSystem().File.Delete(fileName); }
public void TestInitialize() { UnitTestUtils.ConfigureThreadPoolSettingsForStorageTests(); // Pre-create table, if required manager = new UnitTestAzureTableDataManager(StorageTestConstants.DataConnectionString); PartitionKey = "PK-AzureTableDataManagerTests-" + Guid.NewGuid(); }
public async Task ResubscriptionTest(Guid streamGuid, string streamNamespace) { // get producer and consumer ISampleStreaming_ProducerGrain producer = SampleStreaming_ProducerGrainFactory.GetGrain(Guid.NewGuid()); IMultipleSubscriptionConsumerGrain consumer = MultipleSubscriptionConsumerGrainFactory.GetGrain(Guid.NewGuid()); await producer.BecomeProducer(streamGuid, streamNamespace, streamProviderName); // setup one subscription and send messsages StreamSubscriptionHandle <int> firstSubscriptionHandle = await consumer.BecomeConsumer(streamGuid, streamNamespace, streamProviderName); await producer.StartPeriodicProducing(); Thread.Sleep(1000); await producer.StopPeriodicProducing(); await UnitTestUtils.WaitUntilAsync(lastTry => CheckCounters(producer, consumer, 1, lastTry), Timeout); // Resume StreamSubscriptionHandle <int> resumeHandle = await consumer.Resume(firstSubscriptionHandle); Assert.AreEqual(firstSubscriptionHandle, resumeHandle, "Handle matches"); await producer.StartPeriodicProducing(); Thread.Sleep(1000); await producer.StopPeriodicProducing(); await UnitTestUtils.WaitUntilAsync(lastTry => CheckCounters(producer, consumer, 1, lastTry), Timeout); // remove subscription await consumer.StopConsuming(resumeHandle); }
public void CreateFromFileHandleOperation_OwnsHandle_CalledOnce() { if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { var attr = (FsFactAttribute)Attribute.GetCustomAttribute(MethodBase.GetCurrentMethod(), typeof(FsFactAttribute)); var fileSystemMock = attr.GetMock <IFileSystem>(); var txFileSystem = new TxFileSystem(fileSystemMock.Object); string fileName = UnitTestUtils.GetTempFileName(txFileSystem); var fileAccess = FileAccess.ReadWrite; var filePtr = NativeMethods.CreateFile(fileName, fileAccess, FileShare.ReadWrite, IntPtr.Zero, FileMode.OpenOrCreate, FileAttributes.Normal, IntPtr.Zero); var ownsHandle = false; var fileStreamMock = new Mock <FileStream>(MockBehavior.Loose, filePtr, fileAccess, ownsHandle); fileSystemMock.Setup(f => f.FileStream.Create(It.Is <IntPtr>((p) => p == filePtr), It.Is <FileAccess>((a) => a == fileAccess), It.Is <bool>((o) => o == ownsHandle))) .Returns(fileStreamMock.Object); var fileStreamReturned = txFileSystem.FileStream.Create(filePtr, fileAccess, ownsHandle); fileSystemMock.Verify(f => f.FileStream.Create(It.Is <IntPtr>((p) => p == filePtr), It.Is <FileAccess>((a) => a == fileAccess), It.Is <bool>((o) => o == ownsHandle)), Times.Once); Assert.Equal(fileStreamMock.Object, fileStreamReturned); NativeMethods.CloseHandle(filePtr); new FileSystem().File.Delete(fileName); } }
public void BeforeTests() { UnitTestUtils.LoadOfflineData(); UnitTestUtils.LoadMockPlayerData(); mBuildingUnderTest = BuildingUpgradeTests.GetTestBuilding(); }
public async Task MultipleSubscriptionTest(Guid streamGuid, string streamNamespace) { // get producer and consumer ISampleStreaming_ProducerGrain producer = SampleStreaming_ProducerGrainFactory.GetGrain(Guid.NewGuid()); IMultipleSubscriptionConsumerGrain consumer = MultipleSubscriptionConsumerGrainFactory.GetGrain(Guid.NewGuid()); // setup two subscriptions StreamSubscriptionHandle <int> firstSubscriptionHandle = await consumer.BecomeConsumer(streamGuid, streamNamespace, streamProviderName); StreamSubscriptionHandle <int> secondSubscriptionHandle = await consumer.BecomeConsumer(streamGuid, streamNamespace, streamProviderName); // produce some messages await producer.BecomeProducer(streamGuid, streamNamespace, streamProviderName); await producer.StartPeriodicProducing(); Thread.Sleep(1000); await producer.StopPeriodicProducing(); // check await UnitTestUtils.WaitUntilAsync(lastTry => CheckCounters(producer, consumer, 2, lastTry), Timeout); // unsubscribe await consumer.StopConsuming(firstSubscriptionHandle); await consumer.StopConsuming(secondSubscriptionHandle); }
public async void JapaneseFilenameCheck() { // 日本語名のファイルが正しく取得できていることを確認する var path = await UnitTestUtils.GetVersionedFiles(); Assert.True(path.Where(v => v.EndsWith("日本語のファイル.md")).Count() == 1); Assert.True(path.Where(v => v.EndsWith("日本語のファイルだみー.md")).Count() == 0); }
public void BeforeTests() { UnitTestUtils.LoadOfflineData(); mUnit = new Unit(GenericDataLoader.GetData <UnitData>(GenericDataLoader.TEST_UNIT), new UnitProgress() { Level = 1, Trainers = 1 }, new ViewModel()); }
private StackTraceDeminifier GetStackTraceDeminifierWithDependencies() { var sourceMapProviderMock = new Mock <ISourceMapProvider>(); sourceMapProviderMock .Setup(x => x.GetSourceMapContentsForCallstackUrl("http://localhost:11323/closurecrashcauser.minified.js")) .Returns(UnitTestUtils.StreamReaderFromString(SourceMapString)); var sourceMapProvider = sourceMapProviderMock.Object; return(StackTraceDeminfierFactory.GetStackTraceDeminfier(sourceMapProvider)); }
public void TestCallBachelier(int dim, SobolDirection direction) { var gaussianGen = RandomGenerators.GaussianSobol(direction).Build(dim); var chrono = new Stopwatch(); chrono.Start(); var atmCalls = new double[dim]; var strikeCall1 = new double[dim]; var strikeCall2 = new double[dim]; var strikePut1 = new double[dim]; var strikePut2 = new double[dim]; const int nbPaths = 1000000; for (int index = 0; index < nbPaths; index++) { var sample = gaussianGen.Next(); for (int i = 0; i < dim; i++) { var gaussian = sample[i]; atmCalls[i] += Math.Max(0.0, gaussian); strikeCall1[i] += Math.Max(0.0, gaussian - 1.0); strikeCall2[i] += Math.Max(0.0, gaussian - 2.0); strikePut1[i] += Math.Max(0.0, -1.0 - gaussian); strikePut2[i] += Math.Max(0.0, -2.0 - gaussian); } } for (int i = 0; i < dim; i++) { atmCalls[i] /= nbPaths; strikeCall1[i] /= nbPaths; strikeCall2[i] /= nbPaths; strikePut1[i] /= nbPaths; strikePut2[i] /= nbPaths; } chrono.Stop(); Console.WriteLine("Elapsed " + chrono.Elapsed); var refAtmCalls = atmCalls.Select(c => BachelierOption.Price(0.0, 0.0, 1.0, 1.0, 1)).ToArray(); var refStrikeCall1 = atmCalls.Select(c => BachelierOption.Price(0.0, 1.0, 1.0, 1.0, 1)).ToArray(); var refStrikeCall2 = atmCalls.Select(c => BachelierOption.Price(0.0, 2.0, 1.0, 1.0, 1)).ToArray(); var refStrikePut1 = atmCalls.Select(c => BachelierOption.Price(0.0, -1.0, 1.0, 1.0, -1)).ToArray(); var refStrikePut2 = atmCalls.Select(c => BachelierOption.Price(0.0, -2.0, 1.0, 1.0, -1)).ToArray(); UnitTestUtils.EqualDoubleArray(atmCalls, refAtmCalls, 2.0e-5, true); UnitTestUtils.EqualDoubleArray(strikeCall1, refStrikeCall1, 8.0e-5, true); UnitTestUtils.EqualDoubleArray(strikeCall2, refStrikeCall2, 6.0e-4, true); UnitTestUtils.EqualDoubleArray(strikePut1, refStrikePut1, 8.0e-5, true); UnitTestUtils.EqualDoubleArray(strikePut2, refStrikePut2, 6.0e-4, true); }
public async Task AddAndRemoveSubscriptionTest(Guid streamGuid, string streamNamespace) { // get producer and consumer ISampleStreaming_ProducerGrain producer = SampleStreaming_ProducerGrainFactory.GetGrain(Guid.NewGuid()); IMultipleSubscriptionConsumerGrain consumer = MultipleSubscriptionConsumerGrainFactory.GetGrain(Guid.NewGuid()); await producer.BecomeProducer(streamGuid, streamNamespace, streamProviderName); // setup one subscription and send messsages StreamSubscriptionHandle <int> firstSubscriptionHandle = await consumer.BecomeConsumer(streamGuid, streamNamespace, streamProviderName); await producer.StartPeriodicProducing(); Thread.Sleep(1000); await producer.StopPeriodicProducing(); await UnitTestUtils.WaitUntilAsync(lastTry => CheckCounters(producer, consumer, 1, lastTry), Timeout); // clear counts await consumer.ClearNumberConsumed(); await producer.ClearNumberProduced(); // setup second subscription and send messages StreamSubscriptionHandle <int> secondSubscriptionHandle = await consumer.BecomeConsumer(streamGuid, streamNamespace, streamProviderName); await producer.StartPeriodicProducing(); Thread.Sleep(1000); await producer.StopPeriodicProducing(); await UnitTestUtils.WaitUntilAsync(lastTry => CheckCounters(producer, consumer, 2, lastTry), Timeout); // clear counts await consumer.ClearNumberConsumed(); await producer.ClearNumberProduced(); // remove first subscription and send messages await consumer.StopConsuming(firstSubscriptionHandle); await producer.StartPeriodicProducing(); Thread.Sleep(1000); await producer.StopPeriodicProducing(); await UnitTestUtils.WaitUntilAsync(lastTry => CheckCounters(producer, consumer, 1, lastTry), Timeout); // remove second subscription await consumer.StopConsuming(secondSubscriptionHandle); }
private void State_StateChanged(object sender, ParserStateEventArgs e) { if (e.State != ParserState.ResolvedDeclarations) { return; } _dispatcher.Invoke(() => { var tests = UnitTestUtils.GetAllTests(_vbe, _state).ToList(); var removedTests = Tests.Where(test => !tests.Any(t => t.Declaration.ComponentName == test.Declaration.ComponentName && t.Declaration.IdentifierName == test.Declaration.IdentifierName && t.Declaration.ProjectId == test.Declaration.ProjectId)).ToList(); // remove old tests foreach (var test in removedTests) { Tests.Remove(test); } // update declarations for existing tests--declarations are immutable foreach (var test in Tests.Except(removedTests)) { var declaration = tests.First(t => t.Declaration.ComponentName == test.Declaration.ComponentName && t.Declaration.IdentifierName == test.Declaration.IdentifierName && t.Declaration.ProjectId == test.Declaration.ProjectId).Declaration; test.SetDeclaration(declaration); } // add new tests foreach (var test in tests) { if (!Tests.Any(t => t.Declaration.ComponentName == test.Declaration.ComponentName && t.Declaration.IdentifierName == test.Declaration.IdentifierName && t.Declaration.ProjectId == test.Declaration.ProjectId)) { Tests.Add(test); } } }); OnTestsRefreshed(); }
public void BeforeTest() { UnitTestUtils.LoadOfflineData(); mTestModel = new ViewModel(); UpgradeData testUpgradeData = new UpgradeData(); testUpgradeData.MaxLevel = 50; testUpgradeData.PropertyName = "Level"; testUpgradeData.BaseXpToLevel = 1000; mUpgradeable = new PointsUpgradeable(); mUpgradeable.SetPropertyToUpgrade(mTestModel, testUpgradeData); mUpgradeable.Value = 1; }
public void Discovery_IgnoresNonAnnotatedTestMethods() { var testMethods = @"Public Sub TestMethod1() End Sub"; var builder = new MockVbeBuilder(); var project = builder.ProjectBuilder("TestProject1", ProjectProtection.Unprotected) .AddComponent("TestModule1", ComponentType.StandardModule, GetTestModuleInput + testMethods); var vbe = builder.AddProject(project.Build()).Build().Object; using (var state = MockParser.CreateAndParse(vbe)) { Assert.IsFalse(UnitTestUtils.GetAllTests(vbe, state).Any()); } }
public void BeforeTest() { UnitTestUtils.LoadOfflineData(); mTestModel = new ViewModel(); UpgradeData testUpgradeData = new UpgradeData(); testUpgradeData.MaxLevel = 50; testUpgradeData.PropertyName = "Level"; testUpgradeData.ResourcesToUpgrade = new Dictionary <string, int>() { { "Gold", 1000 } }; mUpgrade = new Upgradeable(); mUpgrade.SetPropertyToUpgrade(mTestModel, testUpgradeData); }
public void BeforeTests() { UnitTestUtils.LoadOfflineData(); mUnit = new Unit(GenericDataLoader.GetData <UnitData>(GenericDataLoader.TEST_UNIT), new UnitProgress() { Level = 1, Trainers = 1 }, new ViewModel()); mModData = new UnitModificationData(); mModData.BaseModifier = DEFAULT_BASE_MODIFIER; mModData.UnitsModified = new List <string>() { GenericDataLoader.TEST_UNIT }; mModData.StatModified = TestUnitStats.TEST_STAT_1; }
public void CreateFromFileHandleOperation_ExceptionThrown_ContentsUnchanged() { if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { var fileSystem = new FileSystem(); var txFileSystem = new TxFileSystem(fileSystem); string fileName = UnitTestUtils.GetTempFileName(txFileSystem); var streamWriter = txFileSystem.File.CreateText(fileName); streamWriter.Write("Original contents" + Environment.NewLine); streamWriter.Flush(); streamWriter.Close(); var filePtr = NativeMethods.CreateFile(fileName, FileAccess.ReadWrite, FileShare.ReadWrite, IntPtr.Zero, FileMode.OpenOrCreate, FileAttributes.Normal, IntPtr.Zero); Stream fileStream = null; var data = Encoding.Default.GetBytes("Written" + Environment.NewLine); Assert.ThrowsAny <Exception>(() => { using (var transactionScope = new TransactionScope()) { txFileSystem = new TxFileSystem(fileSystem); fileStream = txFileSystem.FileStream.Create(filePtr, FileAccess.ReadWrite); fileStream.Seek(fileStream.Length, SeekOrigin.Begin); fileStream.SetLength(fileStream.Length + data.Length); fileStream.Write(data, 0, data.Length); fileStream.Flush(); throw new Exception("Error occurred right after writing to stream"); } }); NativeMethods.CloseHandle(filePtr); fileStream.Close(); Assert.Equal("Original contents" + Environment.NewLine, txFileSystem.File.ReadAllText(fileName)); txFileSystem.File.Delete(fileName); } }
private async Task StreamingTests_Consumer_Producer(Guid streamId, string streamProvider) { // consumer joins first, producer later ISampleStreaming_ConsumerGrain consumer = SampleStreaming_ConsumerGrainFactory.GetGrain(Guid.NewGuid()); await consumer.BecomeConsumer(streamId, StreamNamespace, streamProvider); ISampleStreaming_ProducerGrain producer = SampleStreaming_ProducerGrainFactory.GetGrain(Guid.NewGuid()); await producer.BecomeProducer(streamId, StreamNamespace, streamProvider); await producer.StartPeriodicProducing(); Thread.Sleep(1000); await producer.StopPeriodicProducing(); await UnitTestUtils.WaitUntilAsync(lastTry => CheckCounters(producer, consumer, lastTry), _timeout); await consumer.StopConsuming(); }
public void Discovery_IgnoresNonAnnotatedTestMethods() { var testMethods = @"Public Sub TestMethod1() End Sub"; var builder = new MockVbeBuilder(); var project = builder.ProjectBuilder("TestProject1", ProjectProtection.Unprotected) .AddComponent("TestModule1", ComponentType.StandardModule, GetTestModuleInput + testMethods); var vbe = builder.AddProject(project.Build()).Build().Object; var parser = MockParser.Create(vbe); parser.Parse(new CancellationTokenSource()); if (parser.State.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); } Assert.IsFalse(UnitTestUtils.GetAllTests(vbe, parser.State).Any()); }
public void CreateFromSafeFileHandleOperation_ContentsChanged() { var fileSystem = new FileSystem(); var txFileSystem = new TxFileSystem(fileSystem); string fileName = UnitTestUtils.GetTempFileName(txFileSystem); var streamWriter = txFileSystem.File.CreateText(fileName); streamWriter.Write("Original contents" + Environment.NewLine); streamWriter.Flush(); streamWriter.Close(); var filePtr = NativeMethods.CreateFile(fileName, FileAccess.ReadWrite, FileShare.ReadWrite, IntPtr.Zero, FileMode.OpenOrCreate, FileAttributes.Normal, IntPtr.Zero); var safeFileHandle = new SafeFileHandle(filePtr, ownsHandle: true); Stream fileStream = null; using (var transactionScope = new TransactionScope()) { txFileSystem = new TxFileSystem(fileSystem); fileStream = txFileSystem.FileStream.Create(safeFileHandle, FileAccess.ReadWrite); var data = Encoding.Default.GetBytes("Written" + Environment.NewLine); fileStream.Seek(fileStream.Length, SeekOrigin.Begin); fileStream.SetLength(fileStream.Length + data.Length); fileStream.Write(data, 0, data.Length); fileStream.Flush(); transactionScope.Complete(); } NativeMethods.CloseHandle(filePtr); fileStream.Close(); Assert.Equal("Original contents" + Environment.NewLine + "Written" + Environment.NewLine, txFileSystem.File.ReadAllText(fileName)); txFileSystem.File.Delete(fileName); }
private async Task StreamingTests_Producer_InlineConsumer(Guid streamId, string streamProvider) { // producer joins first, consumer later ISampleStreaming_ProducerGrain producer = SampleStreaming_ProducerGrainFactory.GetGrain(Guid.NewGuid()); await producer.BecomeProducer(streamId, streamProvider); ISampleStreaming_InlineConsumerGrain consumer = SampleStreaming_InlineConsumerGrainFactory.GetGrain(Guid.NewGuid()); await consumer.BecomeConsumer(streamId, streamProvider); await producer.StartPeriodicProducing(); Thread.Sleep(1000); await producer.StopPeriodicProducing(); //int numProduced = producer.NumberProduced.Result; await UnitTestUtils.WaitUntilAsync(() => CheckCounters( producer, consumer, assertAreEqual : false ), _timeout); await CheckCounters(producer, consumer); await consumer.StopConsuming(); }
public void Discovery_IgnoresNonAnnotatedTestMethods() { var testMethods = @"Public Sub TestMethod1() End Sub"; var builder = new MockVbeBuilder(); var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) .AddComponent("TestModule1", vbext_ComponentType.vbext_ct_StdModule, GetTestModuleInput + testMethods); var vbe = builder.AddProject(project.Build()).Build(); var mockHost = new Mock <IHostApplication>(); mockHost.SetupAllProperties(); var parser = MockParser.Create(vbe.Object, new RubberduckParserState(new Mock <ISinks>().Object)); parser.Parse(new CancellationTokenSource()); if (parser.State.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); } Assert.IsFalse(UnitTestUtils.GetAllTests(vbe.Object, parser.State).Any()); }
public void CreateFromPathHandleOperation_Open_ExceptionThrown_ContentsUnchanged() { var fileSystem = new FileSystem(); var txFileSystem = new TxFileSystem(fileSystem); string fileName = UnitTestUtils.GetTempFileName(txFileSystem); var streamWriter = txFileSystem.File.CreateText(fileName); streamWriter.Write("Original contents" + Environment.NewLine); streamWriter.Flush(); streamWriter.Close(); Stream fileStream = null; var data = Encoding.Default.GetBytes("Written" + Environment.NewLine); Assert.ThrowsAny <Exception>(() => { using (var transactionScope = new TransactionScope()) { txFileSystem = new TxFileSystem(fileSystem); fileStream = txFileSystem.FileStream.Create(fileName, FileMode.Open); fileStream.Seek(fileStream.Length, SeekOrigin.Begin); fileStream.SetLength(fileStream.Length + data.Length); fileStream.Write(data, 0, data.Length); fileStream.Flush(); throw new Exception("Error occurred right after writing to stream"); } }); fileStream.Close(); Assert.Equal("Original contents" + Environment.NewLine, txFileSystem.File.ReadAllText(fileName)); txFileSystem.File.Delete(fileName); }
public void ParseSourceCode_TwoSingleLineFunctions_TwoFunctionMapEntries() { // Arrange FunctionMapGenerator functionMapGenerator = new FunctionMapGenerator(); string sourceCode = "function foo(){bar();}function bar(){baz();}"; // Act List <FunctionMapEntry> functionMap = functionMapGenerator.ParseSourceCode(UnitTestUtils.StreamReaderFromString(sourceCode)); // Assert Assert.AreEqual(2, functionMap.Count); Assert.AreEqual("bar", functionMap[0].Bindings[0].Name); Assert.AreEqual(0, functionMap[0].Bindings[0].SourcePosition.ZeroBasedLineNumber); Assert.AreEqual(31, functionMap[0].Bindings[0].SourcePosition.ZeroBasedColumnNumber); Assert.AreEqual(0, functionMap[0].StartSourcePosition.ZeroBasedLineNumber); Assert.AreEqual(0, functionMap[0].EndSourcePosition.ZeroBasedLineNumber); Assert.AreEqual(36, functionMap[0].StartSourcePosition.ZeroBasedColumnNumber); Assert.AreEqual(44, functionMap[0].EndSourcePosition.ZeroBasedColumnNumber); Assert.AreEqual("foo", functionMap[1].Bindings[0].Name); Assert.AreEqual(0, functionMap[1].Bindings[0].SourcePosition.ZeroBasedLineNumber); Assert.AreEqual(9, functionMap[1].Bindings[0].SourcePosition.ZeroBasedColumnNumber); Assert.AreEqual(0, functionMap[1].StartSourcePosition.ZeroBasedLineNumber); Assert.AreEqual(0, functionMap[1].EndSourcePosition.ZeroBasedLineNumber); Assert.AreEqual(14, functionMap[1].StartSourcePosition.ZeroBasedColumnNumber); Assert.AreEqual(22, functionMap[1].EndSourcePosition.ZeroBasedColumnNumber); }
public void ParseSourceCode_MultiLineFunctionInSource_CorrectColumnAndZeroBasedLineNumbers() { // Arrange FunctionMapGenerator functionMapGenerator = new FunctionMapGenerator(); string sourceCode = "function foo()" + Environment.NewLine + "{" + Environment.NewLine + "bar();" + Environment.NewLine + "}"; // Act List <FunctionMapEntry> functionMap = functionMapGenerator.ParseSourceCode(UnitTestUtils.StreamReaderFromString(sourceCode)); // Assert Assert.AreEqual(1, functionMap.Count); Assert.AreEqual("foo", functionMap[0].Bindings[0].Name); Assert.AreEqual(0, functionMap[0].Bindings[0].SourcePosition.ZeroBasedLineNumber); Assert.AreEqual(9, functionMap[0].Bindings[0].SourcePosition.ZeroBasedColumnNumber); Assert.AreEqual(1, functionMap[0].StartSourcePosition.ZeroBasedLineNumber); Assert.AreEqual(3, functionMap[0].EndSourcePosition.ZeroBasedLineNumber); Assert.AreEqual(0, functionMap[0].StartSourcePosition.ZeroBasedColumnNumber); Assert.AreEqual(1, functionMap[0].EndSourcePosition.ZeroBasedColumnNumber); }
public void ParseSourceCode_NoFunctionsInSource_EmptyFunctionList() { // Arrange FunctionMapGenerator functionMapGenerator = new FunctionMapGenerator(); string sourceCode = "bar();"; // Act List <FunctionMapEntry> functionMap = functionMapGenerator.ParseSourceCode(UnitTestUtils.StreamReaderFromString(sourceCode)); // Assert Assert.AreEqual(0, functionMap.Count); }
public void ParseSourceCode_InstanceMethodWithObjectInitializerAndFunctionHasName_FunctionMapEntryGeneratedForObjectPrototype() { // Arrange FunctionMapGenerator functionMapGenerator = new FunctionMapGenerator(); string sourceCode = "var foo = function(){} foo.prototype = { bar: function myCoolFunctionName() { baz(); } }"; // Act List <FunctionMapEntry> functionMap = functionMapGenerator.ParseSourceCode(UnitTestUtils.StreamReaderFromString(sourceCode)); // Assert Assert.AreEqual(2, functionMap.Count); Assert.AreEqual("foo.prototype", functionMap[0].Bindings[0].Name); Assert.AreEqual(0, functionMap[0].Bindings[0].SourcePosition.ZeroBasedLineNumber); Assert.AreEqual(23, functionMap[0].Bindings[0].SourcePosition.ZeroBasedColumnNumber); Assert.AreEqual("bar", functionMap[0].Bindings[1].Name); Assert.AreEqual(0, functionMap[0].Bindings[1].SourcePosition.ZeroBasedLineNumber); Assert.AreEqual(41, functionMap[0].Bindings[1].SourcePosition.ZeroBasedColumnNumber); Assert.AreEqual(0, functionMap[0].StartSourcePosition.ZeroBasedLineNumber); Assert.AreEqual(0, functionMap[0].EndSourcePosition.ZeroBasedLineNumber); Assert.AreEqual(76, functionMap[0].StartSourcePosition.ZeroBasedColumnNumber); Assert.AreEqual(86, functionMap[0].EndSourcePosition.ZeroBasedColumnNumber); Assert.AreEqual("foo", functionMap[1].Bindings[0].Name); Assert.AreEqual(0, functionMap[1].Bindings[0].SourcePosition.ZeroBasedLineNumber); Assert.AreEqual(4, functionMap[1].Bindings[0].SourcePosition.ZeroBasedColumnNumber); Assert.AreEqual(0, functionMap[1].StartSourcePosition.ZeroBasedLineNumber); Assert.AreEqual(0, functionMap[1].EndSourcePosition.ZeroBasedLineNumber); Assert.AreEqual(20, functionMap[1].StartSourcePosition.ZeroBasedColumnNumber); Assert.AreEqual(22, functionMap[1].EndSourcePosition.ZeroBasedColumnNumber); }
public void ParseSourceCode_StaticMethodAndFunctionHasName_FunctionMapEntryGeneratedForPropertyName() { // Arrange FunctionMapGenerator functionMapGenerator = new FunctionMapGenerator(); string sourceCode = "var foo = function(){};foo.bar = function myCoolFunctionName() { baz(); }"; // Act List <FunctionMapEntry> functionMap = functionMapGenerator.ParseSourceCode(UnitTestUtils.StreamReaderFromString(sourceCode)); // Assert Assert.AreEqual(2, functionMap.Count); Assert.AreEqual("foo.bar", functionMap[0].Bindings[0].Name); Assert.AreEqual(0, functionMap[0].Bindings[0].SourcePosition.ZeroBasedLineNumber); Assert.AreEqual(23, functionMap[0].Bindings[0].SourcePosition.ZeroBasedColumnNumber); Assert.AreEqual(0, functionMap[0].StartSourcePosition.ZeroBasedLineNumber); Assert.AreEqual(0, functionMap[0].EndSourcePosition.ZeroBasedLineNumber); Assert.AreEqual(63, functionMap[0].StartSourcePosition.ZeroBasedColumnNumber); Assert.AreEqual(73, functionMap[0].EndSourcePosition.ZeroBasedColumnNumber); Assert.AreEqual("foo", functionMap[1].Bindings[0].Name); Assert.AreEqual(0, functionMap[1].Bindings[0].SourcePosition.ZeroBasedLineNumber); Assert.AreEqual(4, functionMap[1].Bindings[0].SourcePosition.ZeroBasedColumnNumber); Assert.AreEqual(0, functionMap[1].StartSourcePosition.ZeroBasedLineNumber); Assert.AreEqual(0, functionMap[1].EndSourcePosition.ZeroBasedLineNumber); Assert.AreEqual(20, functionMap[1].StartSourcePosition.ZeroBasedColumnNumber); Assert.AreEqual(22, functionMap[1].EndSourcePosition.ZeroBasedColumnNumber); }