Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
104 changes: 31 additions & 73 deletions FileTypeChecker.Tests/FileTypeChecker.Tests.csproj
Original file line number Diff line number Diff line change
@@ -1,81 +1,39 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{716D0AB2-5088-4A22-A6E8-24B8D2F2039B}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>FileTypeChecker.Tests</RootNamespace>
<AssemblyName>FileTypeChecker.Tests</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFramework>netcoreapp2.1</TargetFramework>

<IsPackable>false</IsPackable>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="nunit.framework, Version=2.6.4.14350, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
<HintPath>..\packages\NUnit.2.6.4\lib\nunit.framework.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Drawing" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="FileTypeCheckerTests.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\FileTypeChecker\FileTypeChecker.csproj">
<Project>{0ae201d3-ce5b-404f-8c25-36bd929e1d19}</Project>
<Name>FileTypeChecker</Name>
</ProjectReference>
</ItemGroup>

<ItemGroup>
<None Include="packages.config" />
<None Include="Resources\advancedquantumthermodynamics.pdf" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.9.0" />
<PackageReference Include="MSTest.TestAdapter" Version="1.3.2" />
<PackageReference Include="MSTest.TestFramework" Version="1.3.2" />
<PackageReference Include="System.Drawing.Common" Version="4.5.1" />
<PackageReference Include="System.Drawing.Primitives" Version="4.3.0" />
</ItemGroup>

<ItemGroup>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
<ProjectReference Include="..\FileTypeChecker\FileTypeChecker.csproj" />
</ItemGroup>

<ItemGroup>
<None Include="Resources\LAND.BMP" />
<None Update="Resources\gif.gif">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="Resources\pdf.pdf">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="Resources\png.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="Resources\bmp.BMP">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="Resources\jpg.jpg">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.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">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

</Project>
118 changes: 66 additions & 52 deletions FileTypeChecker.Tests/FileTypeCheckerTests.cs
Original file line number Diff line number Diff line change
@@ -1,77 +1,102 @@
namespace FileTypeChecker.Tests
{
using System.Drawing.Imaging;

using System.IO;
using System.Linq;
using System.Collections.Generic;
using NUnit.Framework;

using Properties;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.Drawing.Imaging;

[TestFixture]
[TestClass]
public class FileTypeCheckerTests
{
[TestFixture]
public class WhenTheFileIsKnown

public static MemoryStream LoadFile(string file)
{
private MemoryStream bitmap;
MemoryStream memory;
// LAND.bmp is from http://www.fileformat.info/format/bmp/sample/
using (var stream = new FileStream(file, FileMode.Open, FileAccess.Read))
{
var bytes = new byte[stream.Length];
stream.Read(bytes, 0, bytes.Length);
memory = new MemoryStream(bytes);
}

private MemoryStream pdf;
return memory;
}

[TestClass]
public class WhenTheFileIsKnown
{
private FileTypeChecker checker;

[TestFixtureSetUp]
[TestInitialize]
public void SetUp()
{
bitmap = new MemoryStream();
// LAND.bmp is from http://www.fileformat.info/format/bmp/sample/
Resources.LAND.Save(bitmap, ImageFormat.Bmp);
// http://boingboing.net/2015/03/23/free-pdf-advanced-quantum-the.html
pdf = new MemoryStream(Resources.advancedquantumthermodynamics);
checker = new FileTypeChecker();
}

[Test]
[TestMethod]
public void ItDetectsPDFs()
{
var pdf = LoadFile("Resources/pdf.pdf");
var fileTypes = checker.GetFileTypes(pdf);
CollectionAssert.AreEquivalent(
new[] { "Portable Document Format" },
fileTypes.Select(fileType => fileType.Name));
fileTypes.Select(fileType => fileType.Name).ToArray());
}

[Test]
[TestMethod]
public void ItDetectsBMPs()
{
var bitmap = LoadFile("Resources/bmp.bmp");
var fileTypes = checker.GetFileTypes(bitmap);
CollectionAssert.AreEquivalent(
new[] { "Bitmap" },
fileTypes.Select(fileType => fileType.Name));
fileTypes.Select(fileType => fileType.Name).ToArray());
}
}

[TestFixture]
public class WhenTheFileIsUnknown
{
private MemoryStream bitmap;

private MemoryStream pdf;
[TestMethod]
public void ItDetectsPNGs()
{
var bitmap = LoadFile("Resources/png.png");
var fileTypes = checker.GetFileTypes(bitmap);
CollectionAssert.AreEquivalent(
new[] { "Portable Network Graphic" },
fileTypes.Select(fileType => fileType.Name).ToArray());
}

private FileTypeChecker checker;

[TestFixtureSetUp]
public void SetUp()
[TestMethod]
public void ItDetectsJPGs()
{
bitmap = new MemoryStream();
// LAND.bmp is from http://www.fileformat.info/format/bmp/sample/
Resources.LAND.Save(bitmap, ImageFormat.Bmp);
// http://boingboing.net/2015/03/23/free-pdf-advanced-quantum-the.html
pdf = new MemoryStream(Resources.advancedquantumthermodynamics);
using(var bitmap = LoadFile("Resources/jpg.jpg"))
{
Assert.IsTrue(checker.IsValidExtension(bitmap, ".jpg"));
}
}

[Test]
[TestMethod]
public void ItDetectsGIFs()
{
var bitmap = LoadFile("Resources/gif.gif");
var fileTypes = checker.GetFileTypes(bitmap);
CollectionAssert.AreEquivalent(
new[] { "Graphics Interchange Format 89a" },
fileTypes.Select(fileType => fileType.Name).ToArray());
}
}

[TestClass]
public class WhenTheFileIsUnknown
{
private FileTypeChecker checker;

[TestMethod]
public void ItDoesntDetectPDFs()
{
var pdf = LoadFile("Resources/pdf.pdf");
checker = new FileTypeChecker(new List<FileType>
{
new FileType("Bitmap", ".bmp", new ExactFileTypeMatcher(new byte[] {0x42, 0x4d})),
Expand All @@ -91,9 +116,10 @@ public void ItDoesntDetectPDFs()
fileType.Name);
}

[Test]
[TestMethod]
public void ItDoesntDetectBMPs()
{
var bitmap = LoadFile("Resources/bmp.bmp");
checker = new FileTypeChecker(new List<FileType>
{
new FileType("Portable Network Graphic", ".png",
Expand All @@ -115,28 +141,15 @@ public void ItDoesntDetectBMPs()

}

[TestFixture]
[TestClass]
public class WhenTheFileIsUnknownList
{
private MemoryStream bitmap;

private MemoryStream pdf;

private FileTypeChecker checker;

[TestFixtureSetUp]
public void SetUp()
{
bitmap = new MemoryStream();
// LAND.bmp is from http://www.fileformat.info/format/bmp/sample/
Resources.LAND.Save(bitmap, ImageFormat.Bmp);
// http://boingboing.net/2015/03/23/free-pdf-advanced-quantum-the.html
pdf = new MemoryStream(Resources.advancedquantumthermodynamics);
}

[Test]
[TestMethod]
public void ItDoesntDetectPDFs()
{
var pdf = LoadFile("Resources/pdf.pdf");
checker = new FileTypeChecker(new List<FileType>
{
new FileType("Bitmap", ".bmp", new ExactFileTypeMatcher(new byte[] {0x42, 0x4d})),
Expand All @@ -154,9 +167,10 @@ public void ItDoesntDetectPDFs()
Assert.AreEqual(0, fileTypes.Count());
}

[Test]
[TestMethod]
public void ItDoesntDetectBMPs()
{
var bitmap = LoadFile("Resources/bmp.bmp");
checker = new FileTypeChecker(new List<FileType>
{
new FileType("Portable Network Graphic", ".png",
Expand Down
36 changes: 0 additions & 36 deletions FileTypeChecker.Tests/Properties/AssemblyInfo.cs

This file was deleted.

Loading