Skip to content

Commit

Permalink
issue:4 Add tests for lambda and inline functions for SwitchAnalyzer.…
Browse files Browse the repository at this point in the history
… New version (#12)
  • Loading branch information
denis-prodan authored Jul 19, 2019
1 parent b3e8f5c commit 12da74b
Show file tree
Hide file tree
Showing 7 changed files with 83 additions and 15 deletions.
12 changes: 7 additions & 5 deletions CleanCode.NET.VSIX/CleanCode.NET.VSIX.csproj
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\Microsoft.VSSDK.BuildTools.15.8.3246\build\Microsoft.VSSDK.BuildTools.props" Condition="Exists('..\packages\Microsoft.VSSDK.BuildTools.15.8.3246\build\Microsoft.VSSDK.BuildTools.props')" />
<Import Project="..\packages\Microsoft.VSSDK.BuildTools.16.2.3073\build\Microsoft.VSSDK.BuildTools.props" Condition="Exists('..\packages\Microsoft.VSSDK.BuildTools.16.2.3073\build\Microsoft.VSSDK.BuildTools.props')" />
<PropertyGroup>
<MinimumVisualStudioVersion>15.0</MinimumVisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
Expand Down Expand Up @@ -62,7 +62,9 @@
</ItemGroup>
<ItemGroup>
<None Include="Key.snk" />
<None Include="packages.config" />
<None Include="packages.config">
<SubType>Designer</SubType>
</None>
<None Include="source.extension.vsixmanifest">
<SubType>Designer</SubType>
</None>
Expand Down Expand Up @@ -204,14 +206,14 @@
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\Microsoft.VisualStudio.SDK.EmbedInteropTypes.15.0.10\build\Microsoft.VisualStudio.SDK.EmbedInteropTypes.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.VisualStudio.SDK.EmbedInteropTypes.15.0.10\build\Microsoft.VisualStudio.SDK.EmbedInteropTypes.targets'))" />
<Error Condition="!Exists('..\packages\Microsoft.VSSDK.BuildTools.15.8.3246\build\Microsoft.VSSDK.BuildTools.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.VSSDK.BuildTools.15.8.3246\build\Microsoft.VSSDK.BuildTools.props'))" />
<Error Condition="!Exists('..\packages\Microsoft.VSSDK.BuildTools.15.8.3246\build\Microsoft.VSSDK.BuildTools.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.VSSDK.BuildTools.15.8.3246\build\Microsoft.VSSDK.BuildTools.targets'))" />
<Error Condition="!Exists('..\packages\Microsoft.VisualStudio.SDK.Analyzers.15.8.33\build\Microsoft.VisualStudio.SDK.Analyzers.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.VisualStudio.SDK.Analyzers.15.8.33\build\Microsoft.VisualStudio.SDK.Analyzers.targets'))" />
<Error Condition="!Exists('..\packages\Microsoft.VisualStudio.Threading.Analyzers.15.8.122\build\Microsoft.VisualStudio.Threading.Analyzers.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.VisualStudio.Threading.Analyzers.15.8.122\build\Microsoft.VisualStudio.Threading.Analyzers.targets'))" />
<Error Condition="!Exists('..\packages\Microsoft.VSSDK.BuildTools.16.2.3073\build\Microsoft.VSSDK.BuildTools.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.VSSDK.BuildTools.16.2.3073\build\Microsoft.VSSDK.BuildTools.props'))" />
<Error Condition="!Exists('..\packages\Microsoft.VSSDK.BuildTools.16.2.3073\build\Microsoft.VSSDK.BuildTools.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.VSSDK.BuildTools.16.2.3073\build\Microsoft.VSSDK.BuildTools.targets'))" />
</Target>
<Import Project="..\packages\Microsoft.VSSDK.BuildTools.15.8.3246\build\Microsoft.VSSDK.BuildTools.targets" Condition="Exists('..\packages\Microsoft.VSSDK.BuildTools.15.8.3246\build\Microsoft.VSSDK.BuildTools.targets')" />
<Import Project="..\packages\Microsoft.VisualStudio.SDK.Analyzers.15.8.33\build\Microsoft.VisualStudio.SDK.Analyzers.targets" Condition="Exists('..\packages\Microsoft.VisualStudio.SDK.Analyzers.15.8.33\build\Microsoft.VisualStudio.SDK.Analyzers.targets')" />
<Import Project="..\packages\Microsoft.VisualStudio.Threading.Analyzers.15.8.122\build\Microsoft.VisualStudio.Threading.Analyzers.targets" Condition="Exists('..\packages\Microsoft.VisualStudio.Threading.Analyzers.15.8.122\build\Microsoft.VisualStudio.Threading.Analyzers.targets')" />
<Import Project="..\packages\Microsoft.VSSDK.BuildTools.16.2.3073\build\Microsoft.VSSDK.BuildTools.targets" Condition="Exists('..\packages\Microsoft.VSSDK.BuildTools.16.2.3073\build\Microsoft.VSSDK.BuildTools.targets')" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
Expand Down
2 changes: 1 addition & 1 deletion CleanCode.NET.VSIX/packages.config
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,5 @@
<package id="Microsoft.VisualStudio.Threading.Analyzers" version="15.8.122" targetFramework="net461" />
<package id="Microsoft.VisualStudio.Utilities" version="15.0.26228" targetFramework="net461" />
<package id="Microsoft.VisualStudio.Validation" version="15.0.82" targetFramework="net461" />
<package id="Microsoft.VSSDK.BuildTools" version="15.8.3246" targetFramework="net461" developmentDependency="true" />
<package id="Microsoft.VSSDK.BuildTools" version="16.2.3073" targetFramework="net461" developmentDependency="true" />
</packages>
2 changes: 1 addition & 1 deletion CleanCode.NET.VSIX/source.extension.vsixmanifest
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<PackageManifest Version="2.0.0" xmlns="http://schemas.microsoft.com/developer/vsx-schema/2011" xmlns:d="http://schemas.microsoft.com/developer/vsx-schema-design/2011">
<Metadata>
<Identity Id="CleanCode.NET.9ecfa9bb-0775-48d0-9898-4dbbbd529fe3" Version="0.4.5" Language="en-US" Publisher="Denys Prodan" />
<Identity Id="CleanCode.NET.9ecfa9bb-0775-48d0-9898-4dbbbd529fe3" Version="0.4.6" Language="en-US" Publisher="Denys Prodan" />
<DisplayName>Clean Code .NET</DisplayName>
<Description xml:space="preserve">Clean Code .NET - set of Roslyn analyzers aimed to improve code correctness
Not affiliated with Bob Martin</Description>
Expand Down
4 changes: 2 additions & 2 deletions CleanCodeNet.nuspec
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
<metadata>
<id>CleanCodeNet</id>
<version>0.3.5</version>
<version>0.3.6</version>
<authors>Denys Prodan</authors>
<owners>Denys Prodan</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
Expand All @@ -13,7 +13,7 @@
<repository url="https://github.com/denis-prodan/constructor-null-analyzer" />
<dependencies>
<dependency id="NamedParametersAnalyzer" version="0.3.1" />
<dependency id="SwitchAnalyzer" version="0.6.8" />
<dependency id="SwitchAnalyzer" version="0.6.9" />
<dependency id="ConstructorNullAnalyzer" version="0.4.1" />
<dependency id="ExceptionsAnalyzer" version="0.1.5" />
</dependencies>
Expand Down
53 changes: 51 additions & 2 deletions SwitchAnalyzer/SwitchAnalyzer.Test/EnumSwitchAnalyzerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -376,6 +376,53 @@ public void DuplicateCasesAreNotCheckedTwice()
VerifyCSharpDiagnostic(test);
}

[TestMethod]
public void LambdaChecked()
{
var switchStatement = @"
Func<TestEnum, TestEnum> func = v =>
{
// Does not warn about missing case
switch (v)
{
case TestEnum.Case1: return TestEnum.Case2;
case TestEnum.Case2: return TestEnum.Case1;
default: throw new NotImplementedException();
}
};
return func(val);";
var test = $@"{codeStart}
{switchStatement}
{GetEndSection()}";

VerifyCSharpDiagnostic(test, GetDiagnostic(28, 17, "TestEnum.Case3"));
}

[TestMethod]
public void InlineFuncionChecked()
{
var switchStatement = @"
TestEnum Inline(TestEnum v)
{
// Does not warn about missing case
switch (v)
{
case TestEnum.Case1: return TestEnum.Case2;
case TestEnum.Case2: return TestEnum.Case1;
default: throw new NotImplementedException();
}
};
return Inline(val);";
var test = $@"{codeStart}
{switchStatement}
{GetEndSection()}";

VerifyCSharpDiagnostic(test, GetDiagnostic(28, 17, "TestEnum.Case3"));
}


[TestMethod]
public void FixSimple()
{
Expand Down Expand Up @@ -543,7 +590,9 @@ public void FixWithNamespace()
VerifyCSharpFix(test, expectedResult);
}

private DiagnosticResult GetDiagnostic(params string[] expectedEnums)
private DiagnosticResult GetDiagnostic(params string[] expectedEnums) => GetDiagnostic(25, 13, expectedEnums);

private DiagnosticResult GetDiagnostic(int lineNumber, int columnNumber, params string[] expectedEnums)
{
return new DiagnosticResult
{
Expand All @@ -553,7 +602,7 @@ private DiagnosticResult GetDiagnostic(params string[] expectedEnums)
Locations =
new[]
{
new DiagnosticResultLocation("Test0.cs", 25, 13)
new DiagnosticResultLocation("Test0.cs", lineNumber, columnNumber)
}
};
}
Expand Down
17 changes: 17 additions & 0 deletions SwitchAnalyzer/SwitchAnalyzer.Test/TestClass.cs
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,23 @@ public TestEnum TestMethod4()
case var inter: return TestEnum.Case3;
}
}

public TestEnum TestLambda(TestEnum val)
{
Func<TestEnum, TestEnum> func = v =>
{
// Does not warn about missing case
switch (v)
{
case TestEnum.Case1: return TestEnum.Case2;
case TestEnum.Case2: return TestEnum.Case1;
default: throw new NotImplementedException();
}
};

return func(val);
}

public interface ITestInterface
{
}
Expand Down
8 changes: 4 additions & 4 deletions SwitchAnalyzer/SwitchAnalyzer/SwitchAnalyzer.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

<PropertyGroup>
<PackageId>SwitchAnalyzer</PackageId>
<PackageVersion>0.6.8.0</PackageVersion>
<PackageVersion>0.6.9.0</PackageVersion>
<Authors>Denys Prodan</Authors>
<PackageLicenseUrl></PackageLicenseUrl>
<PackageProjectUrl>https://github.com/denis-prodan/Switch-analyzer</PackageProjectUrl>
Expand All @@ -21,11 +21,11 @@ Additional rule to check - switch statement doesn't have "default" branch or th
<Copyright></Copyright>
<PackageTags>SwitchAnalyzer, analyzers</PackageTags>
<NoPackageAnalysis>true</NoPackageAnalysis>
<Version>0.6.8</Version>
<Version>0.6.9</Version>
<Company></Company>
<Product>Switch Analyzer</Product>
<AssemblyVersion>0.6.8.0</AssemblyVersion>
<FileVersion>0.6.8.0</FileVersion>
<AssemblyVersion>0.6.9.0</AssemblyVersion>
<FileVersion>0.6.9.0</FileVersion>
</PropertyGroup>

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
Expand Down

0 comments on commit 12da74b

Please sign in to comment.