GetDeminfiedMethodNameFromSourceMap is never called with null inputs, removing the conditional checks and adding unit tests to (#35)

This commit is contained in:
Christian Gonzalez 2016-11-17 13:12:58 -08:00 коммит произвёл GitHub
Родитель 067780e128
Коммит dbd930d862
2 изменённых файлов: 90 добавлений и 15 удалений

Просмотреть файл

@ -1,4 +1,5 @@
using System.Collections.Generic;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Microsoft.Ajax.Utilities;
@ -61,36 +62,42 @@ namespace SourcemapToolkit.CallstackDeminifier
/// <summary>
/// Gets the original name corresponding to a function based on the information provided in the source map.
/// </summary>
/// <returns></returns>
internal static string GetDeminifiedMethodNameFromSourceMap(FunctionMapEntry wrappingFunction, SourceMap sourceMap)
{
if (wrappingFunction == null)
{
throw new ArgumentNullException(nameof(wrappingFunction));
}
if (sourceMap == null)
{
throw new ArgumentNullException(nameof(sourceMap));
}
string methodName = null;
if (wrappingFunction?.Bindings != null && wrappingFunction.Bindings.Count > 0)
if (wrappingFunction.Bindings != null && wrappingFunction.Bindings.Count > 0)
{
if (wrappingFunction.Bindings.Count == 2)
{
MappingEntry objectProtoypeMappingEntry =
sourceMap?.GetMappingEntryForGeneratedSourcePosition(wrappingFunction.Bindings[0].SourcePosition);
sourceMap.GetMappingEntryForGeneratedSourcePosition(wrappingFunction.Bindings[0].SourcePosition);
methodName = objectProtoypeMappingEntry?.OriginalName;
}
MappingEntry mappingEntry =
sourceMap?.GetMappingEntryForGeneratedSourcePosition(wrappingFunction.Bindings.Last().SourcePosition);
sourceMap.GetMappingEntryForGeneratedSourcePosition(wrappingFunction.Bindings.Last().SourcePosition);
if (mappingEntry != null)
if (mappingEntry?.OriginalName != null)
{
if (mappingEntry.OriginalName != null)
if (methodName != null)
{
if (methodName != null)
{
methodName = methodName + "." + mappingEntry.OriginalName;
}
else
{
methodName = mappingEntry.OriginalName;
}
methodName = methodName + "." + mappingEntry.OriginalName;
}
else
{
methodName = mappingEntry.OriginalName;
}
}
}

Просмотреть файл

@ -385,6 +385,30 @@ namespace SourcemapToolkit.CallstackDeminifier.UnitTests
Assert.AreEqual(22, functionMap[1].EndSourcePosition.ZeroBasedColumnNumber);
}
[TestMethod]
[ExpectedException(typeof(ArgumentNullException))]
public void GetDeminifiedMethodNameFromSourceMap_NullFunctionMapEntry_ThrowsException()
{
// Arrange
FunctionMapEntry functionMapEntry = null;
SourceMap sourceMap = MockRepository.GenerateStub<SourceMap>();
// Act
FunctionMapGenerator.GetDeminifiedMethodNameFromSourceMap(functionMapEntry, sourceMap);
}
[TestMethod]
[ExpectedException(typeof(ArgumentNullException))]
public void GetDeminifiedMethodNameFromSourceMap_NullSourceMap_ThrowsException()
{
// Arrange
FunctionMapEntry functionMapEntry = new FunctionMapEntry();
SourceMap sourceMap = null;
// Act
FunctionMapGenerator.GetDeminifiedMethodNameFromSourceMap(functionMapEntry, sourceMap);
}
[TestMethod]
public void GetDeminifiedMethodNameFromSourceMap_NoBinding_ReturnNullMethodName()
{
@ -461,6 +485,50 @@ namespace SourcemapToolkit.CallstackDeminifier.UnitTests
sourceMap.VerifyAllExpectations();
}
[TestMethod]
public void GetDeminifiedMethodNameFromSourceMap_MatchingMappingMultipleBindingsMissingPrototypeMapping_ReturnsMethodName()
{
// Arrange
FunctionMapEntry functionMapEntry = new FunctionMapEntry
{
Bindings =
new List<BindingInformation>
{
new BindingInformation
{
SourcePosition = new SourcePosition {ZeroBasedLineNumber = 86, ZeroBasedColumnNumber = 52}
},
new BindingInformation
{
SourcePosition = new SourcePosition {ZeroBasedLineNumber = 88, ZeroBasedColumnNumber = 78}
}
}
};
SourceMap sourceMap = MockRepository.GenerateStub<SourceMap>();
sourceMap.Stub(
x =>
x.GetMappingEntryForGeneratedSourcePosition(
Arg<SourcePosition>.Matches(y => y.ZeroBasedLineNumber == 86 && y.ZeroBasedColumnNumber == 52)))
.Return(null);
sourceMap.Stub(
x =>
x.GetMappingEntryForGeneratedSourcePosition(
Arg<SourcePosition>.Matches(y => y.ZeroBasedLineNumber == 88 && y.ZeroBasedColumnNumber == 78)))
.Return(new MappingEntry
{
OriginalName = "baz",
});
// Act
string result = FunctionMapGenerator.GetDeminifiedMethodNameFromSourceMap(functionMapEntry, sourceMap);
// Assert
Assert.AreEqual("baz", result);
sourceMap.VerifyAllExpectations();
}
[TestMethod]
public void GetDeminifiedMethodNameFromSourceMap_MatchingMappingMultipleBindings_ReturnsMethodNameWithFullBinding()
{