Skip to content

Commit 235b263

Browse files
committed
add unit tests
1 parent ff207ba commit 235b263

File tree

9 files changed

+378
-1
lines changed

9 files changed

+378
-1
lines changed

.travis.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,5 @@ script:
1313
- export EnableNuGetPackageRestore=false
1414
- mozroots --import --sync
1515
- xbuild CI.proj
16+
- sudo nunit-console -framework=4.0 ./QuadTrees.Tests/bin/Debug/QuadTrees.Tests.dll -exclude Integration,NotWorkingOnMono
1617
- travis_retry bash travis-ci/nuget-upload.sh
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
using System.Reflection;
2+
using System.Runtime.CompilerServices;
3+
using System.Runtime.InteropServices;
4+
5+
// General Information about an assembly is controlled through the following
6+
// set of attributes. Change these attribute values to modify the information
7+
// associated with an assembly.
8+
[assembly: AssemblyTitle("QuadTrees.Tests")]
9+
[assembly: AssemblyDescription("")]
10+
[assembly: AssemblyConfiguration("")]
11+
[assembly: AssemblyCompany("")]
12+
[assembly: AssemblyProduct("QuadTrees.Tests")]
13+
[assembly: AssemblyCopyright("Copyright © 2015")]
14+
[assembly: AssemblyTrademark("")]
15+
[assembly: AssemblyCulture("")]
16+
17+
// Setting ComVisible to false makes the types in this assembly not visible
18+
// to COM components. If you need to access a type in this assembly from
19+
// COM, set the ComVisible attribute to true on that type.
20+
[assembly: ComVisible(false)]
21+
22+
// The following GUID is for the ID of the typelib if this project is exposed to COM
23+
[assembly: Guid("758ea222-2824-4db4-936e-fdbefb8e1130")]
24+
25+
// Version information for an assembly consists of the following four values:
26+
//
27+
// Major Version
28+
// Minor Version
29+
// Build Number
30+
// Revision
31+
//
32+
// You can specify all the values or you can default the Build and Revision Numbers
33+
// by using the '*' as shown below:
34+
// [assembly: AssemblyVersion("1.0.*")]
35+
[assembly: AssemblyVersion("1.0.0.0")]
36+
[assembly: AssemblyFileVersion("1.0.0.0")]
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3+
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
4+
<PropertyGroup>
5+
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
6+
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
7+
<ProjectGuid>{0D11EBCA-5E87-4C36-9051-67C7D51BB174}</ProjectGuid>
8+
<OutputType>Library</OutputType>
9+
<AppDesignerFolder>Properties</AppDesignerFolder>
10+
<RootNamespace>QuadTrees.Tests</RootNamespace>
11+
<AssemblyName>QuadTrees.Tests</AssemblyName>
12+
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
13+
<FileAlignment>512</FileAlignment>
14+
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
15+
<RestorePackages>true</RestorePackages>
16+
</PropertyGroup>
17+
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
18+
<DebugSymbols>true</DebugSymbols>
19+
<DebugType>full</DebugType>
20+
<Optimize>false</Optimize>
21+
<OutputPath>bin\Debug\</OutputPath>
22+
<DefineConstants>DEBUG;TRACE</DefineConstants>
23+
<ErrorReport>prompt</ErrorReport>
24+
<WarningLevel>4</WarningLevel>
25+
</PropertyGroup>
26+
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
27+
<DebugType>pdbonly</DebugType>
28+
<Optimize>true</Optimize>
29+
<OutputPath>bin\Release\</OutputPath>
30+
<DefineConstants>TRACE</DefineConstants>
31+
<ErrorReport>prompt</ErrorReport>
32+
<WarningLevel>4</WarningLevel>
33+
</PropertyGroup>
34+
<ItemGroup>
35+
<Reference Include="nunit.framework, Version=2.6.4.14350, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
36+
<HintPath>..\packages\NUnit.2.6.4\lib\nunit.framework.dll</HintPath>
37+
<Private>True</Private>
38+
</Reference>
39+
<Reference Include="System" />
40+
<Reference Include="System.Core" />
41+
<Reference Include="System.Drawing" />
42+
<Reference Include="System.Xml.Linq" />
43+
<Reference Include="System.Data.DataSetExtensions" />
44+
<Reference Include="Microsoft.CSharp" />
45+
<Reference Include="System.Data" />
46+
<Reference Include="System.Xml" />
47+
</ItemGroup>
48+
<ItemGroup>
49+
<Compile Include="TestRectPoint.cs" />
50+
<Compile Include="TestPoint.cs" />
51+
<Compile Include="TestRectangle.cs" />
52+
<Compile Include="Properties\AssemblyInfo.cs" />
53+
</ItemGroup>
54+
<ItemGroup>
55+
<None Include="packages.config" />
56+
</ItemGroup>
57+
<ItemGroup>
58+
<ProjectReference Include="..\QuadTrees\QuadTrees.csproj">
59+
<Project>{36e9b4e0-069d-4163-bab3-2eda2ae7789f}</Project>
60+
<Name>QuadTrees</Name>
61+
</ProjectReference>
62+
</ItemGroup>
63+
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
64+
<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
65+
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
66+
<PropertyGroup>
67+
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
68+
</PropertyGroup>
69+
<Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
70+
</Target>
71+
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
72+
Other similar extension points exist, see Microsoft.Common.targets.
73+
<Target Name="BeforeBuild">
74+
</Target>
75+
<Target Name="AfterBuild">
76+
</Target>
77+
-->
78+
</Project>

QuadTrees.Tests/TestPoint.cs

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Drawing;
4+
using System.Linq;
5+
using System.Text;
6+
using System.Threading.Tasks;
7+
using NUnit.Framework;
8+
using QuadTrees.QTreePoint;
9+
using QuadTrees.QTreeRect;
10+
11+
namespace QuadTrees.Tests
12+
{
13+
[TestFixture]
14+
public class TestPoint
15+
{
16+
class QTreeObject: IPointQuadStorable
17+
{
18+
private PointF _rect;
19+
20+
public PointF Point
21+
{
22+
get { return _rect; }
23+
}
24+
25+
public QTreeObject(PointF rect)
26+
{
27+
_rect = rect;
28+
}
29+
}
30+
[TestCase]
31+
public void TestListQuery()
32+
{
33+
QuadTreePoint<QTreeObject> qtree = new QuadTreePoint<QTreeObject>();
34+
qtree.AddRange(new List<QTreeObject>
35+
{
36+
new QTreeObject(new PointF(10,10)),
37+
new QTreeObject(new PointF(-1000,1000))
38+
});
39+
40+
var list = qtree.GetObjects(new RectangleF(9, 9, 20, 20));
41+
Assert.AreEqual(1, list.Count);
42+
}
43+
[TestCase]
44+
public void TestListQueryOutput()
45+
{
46+
QuadTreePoint<QTreeObject> qtree = new QuadTreePoint<QTreeObject>();
47+
qtree.AddRange(new List<QTreeObject>
48+
{
49+
new QTreeObject(new PointF(10,10)),
50+
new QTreeObject(new PointF(-1000,1000))
51+
}); ;
52+
53+
var list = new List<QTreeObject>();
54+
qtree.GetObjects(new RectangleF(9, 9, 20, 20), list);
55+
Assert.AreEqual(1, list.Count);
56+
}
57+
[TestCase]
58+
public void TestListQueryEnum()
59+
{
60+
QuadTreePoint<QTreeObject> qtree = new QuadTreePoint<QTreeObject>();
61+
qtree.AddRange(new List<QTreeObject>
62+
{
63+
new QTreeObject(new PointF(10,10)),
64+
new QTreeObject(new PointF(-1000,1000))
65+
});
66+
67+
var list = qtree.EnumObjects(new RectangleF(9, 9, 20, 20));
68+
Assert.AreEqual(1, list.Count());
69+
}
70+
[TestCase]
71+
public void TestListGetAll()
72+
{
73+
QuadTreePoint<QTreeObject> qtree = new QuadTreePoint<QTreeObject>();
74+
qtree.AddRange(new List<QTreeObject>
75+
{
76+
new QTreeObject(new PointF(10,10)),
77+
new QTreeObject(new PointF(-1000,1000))
78+
});
79+
80+
var list = qtree.GetAllObjects();
81+
Assert.AreEqual(2, list.Count());
82+
}
83+
}
84+
}

QuadTrees.Tests/TestRectPoint.cs

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Drawing;
4+
using System.Linq;
5+
using System.Text;
6+
using System.Threading.Tasks;
7+
using NUnit.Framework;
8+
using QuadTrees.QTreePoint;
9+
using QuadTrees.QTreeRect;
10+
11+
namespace QuadTrees.Tests
12+
{
13+
[TestFixture]
14+
public class TestRectPoint
15+
{
16+
class QTreeObject : IRectQuadStorable
17+
{
18+
private RectangleF _rect;
19+
20+
public RectangleF Rect
21+
{
22+
get { return _rect; }
23+
}
24+
25+
public QTreeObject(RectangleF rect)
26+
{
27+
_rect = rect;
28+
}
29+
}
30+
[TestCase]
31+
public void TestListQuery()
32+
{
33+
QuadTreeRectPointInverse<QTreeObject> qtree = new QuadTreeRectPointInverse<QTreeObject>();
34+
qtree.AddRange(new List<QTreeObject>
35+
{
36+
new QTreeObject(new RectangleF(10,10,10,10)),
37+
new QTreeObject(new RectangleF(-1000,1000,10,10))
38+
});
39+
40+
var list = qtree.GetObjects(new PointF(11,11));
41+
Assert.AreEqual(1, list.Count);
42+
}
43+
[TestCase]
44+
public void TestListQueryOutput()
45+
{
46+
var list = new List<QTreeObject>();
47+
QuadTreeRectPointInverse<QTreeObject> qtree = new QuadTreeRectPointInverse<QTreeObject>();
48+
qtree.AddRange(new List<QTreeObject>
49+
{
50+
new QTreeObject(new RectangleF(10,10,10,10)),
51+
new QTreeObject(new RectangleF(-1000,1000,10,10))
52+
});
53+
54+
qtree.GetObjects(new PointF(11, 11), list);
55+
Assert.AreEqual(1, list.Count);
56+
}
57+
[TestCase]
58+
public void TestListQueryEnum()
59+
{
60+
61+
QuadTreeRectPointInverse<QTreeObject> qtree = new QuadTreeRectPointInverse<QTreeObject>();
62+
qtree.AddRange(new List<QTreeObject>
63+
{
64+
new QTreeObject(new RectangleF(10,10,10,10)),
65+
new QTreeObject(new RectangleF(-1000,1000,10,10))
66+
});
67+
68+
var list = qtree.EnumObjects(new PointF(11, 11));
69+
Assert.AreEqual(1, list.Count());
70+
}
71+
[TestCase]
72+
public void TestListGetAll()
73+
{
74+
QuadTreeRectPointInverse<QTreeObject> qtree = new QuadTreeRectPointInverse<QTreeObject>();
75+
qtree.AddRange(new List<QTreeObject>
76+
{
77+
new QTreeObject(new RectangleF(10,10,10,10)),
78+
new QTreeObject(new RectangleF(-1000,1000,10,10))
79+
});
80+
81+
var list = qtree.GetAllObjects();
82+
Assert.AreEqual(2, list.Count());
83+
}
84+
}
85+
}

QuadTrees.Tests/TestRectangle.cs

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Drawing;
4+
using System.Linq;
5+
using System.Text;
6+
using System.Threading.Tasks;
7+
using NUnit.Framework;
8+
using QuadTrees.QTreeRect;
9+
10+
namespace QuadTrees.Tests
11+
{
12+
[TestFixture]
13+
public class TestRectangle
14+
{
15+
class QTreeObject: IRectQuadStorable
16+
{
17+
private RectangleF _rect;
18+
19+
public RectangleF Rect
20+
{
21+
get { return _rect; }
22+
}
23+
24+
public QTreeObject(RectangleF rect)
25+
{
26+
_rect = rect;
27+
}
28+
}
29+
[TestCase]
30+
public void TestListQuery()
31+
{
32+
QuadTreeRect<QTreeObject> qtree = new QuadTreeRect<QTreeObject>();
33+
qtree.AddRange(new List<QTreeObject>
34+
{
35+
new QTreeObject(new RectangleF(10,10,10,10)),
36+
new QTreeObject(new RectangleF(-1000,1000,10,10))
37+
});
38+
39+
var list = qtree.GetObjects(new RectangleF(9, 9, 20, 20));
40+
Assert.AreEqual(1, list.Count);
41+
}
42+
[TestCase]
43+
public void TestListQueryOutput()
44+
{
45+
QuadTreeRect<QTreeObject> qtree = new QuadTreeRect<QTreeObject>();
46+
qtree.AddRange(new List<QTreeObject>
47+
{
48+
new QTreeObject(new RectangleF(10,10,10,10)),
49+
new QTreeObject(new RectangleF(-1000,1000,10,10))
50+
});
51+
52+
var list = new List<QTreeObject>();
53+
qtree.GetObjects(new RectangleF(9, 9, 20, 20), list);
54+
Assert.AreEqual(1, list.Count);
55+
}
56+
[TestCase]
57+
public void TestListQueryEnum()
58+
{
59+
QuadTreeRect<QTreeObject> qtree = new QuadTreeRect<QTreeObject>();
60+
qtree.AddRange(new List<QTreeObject>
61+
{
62+
new QTreeObject(new RectangleF(10,10,10,10)),
63+
new QTreeObject(new RectangleF(-1000,1000,10,10))
64+
});
65+
66+
var list = qtree.EnumObjects(new RectangleF(9, 9, 20, 20));
67+
Assert.AreEqual(1, list.Count());
68+
}
69+
[TestCase]
70+
public void TestListGetAll()
71+
{
72+
QuadTreeRect<QTreeObject> qtree = new QuadTreeRect<QTreeObject>();
73+
qtree.AddRange(new List<QTreeObject>
74+
{
75+
new QTreeObject(new RectangleF(10,10,10,10)),
76+
new QTreeObject(new RectangleF(-1000,1000,10,10))
77+
});
78+
79+
var list = qtree.GetAllObjects();
80+
Assert.AreEqual(2, list.Count());
81+
}
82+
}
83+
}

QuadTrees.Tests/packages.config

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<packages>
3+
<package id="NUnit" version="2.6.4" targetFramework="net45" />
4+
</packages>

0 commit comments

Comments
 (0)