Skip to content

Commit 083ca36

Browse files
committed
Tests cleanup
1 parent ea1234d commit 083ca36

10 files changed

+388
-256
lines changed

BulletSharp/test/AlignedCollisionObjectArrayTests.cs

Lines changed: 31 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -7,47 +7,59 @@ namespace BulletSharpTest
77
[Category("AlignedObjectArray")]
88
class AlignedCollisionObjectArrayTests
99
{
10-
private DefaultCollisionConfiguration _conf;
11-
private CollisionDispatcher _dispatcher;
12-
private DbvtBroadphase _broadphase;
13-
private SequentialImpulseConstraintSolver _solver;
14-
private DiscreteDynamicsWorld _world;
10+
private PhysicsContext _context;
1511
private CollisionShape _shape;
1612
private RigidBody _body1;
1713
private RigidBody _body2;
1814
private RigidBody _body3;
1915

16+
[OneTimeSetUp]
17+
public void SetUp()
18+
{
19+
_context = new PhysicsContext();
20+
_context.InitializeWorld();
21+
22+
_shape = new BoxShape(1);
23+
using (var bodyInfo = new RigidBodyConstructionInfo(1, null, _shape))
24+
{
25+
_body1 = new RigidBody(bodyInfo);
26+
_body2 = new RigidBody(bodyInfo);
27+
_body3 = new RigidBody(bodyInfo);
28+
}
29+
}
30+
2031
[Test]
2132
public void AlignedCollisionObjectArrayTest()
2233
{
23-
var worldArray = _world.CollisionObjectArray;
34+
var world = _context.World;
35+
var worldArray = world.CollisionObjectArray;
2436
Assert.IsEmpty(worldArray);
2537

26-
_world.AddRigidBody(_body1);
27-
_world.AddRigidBody(_body2);
38+
world.AddRigidBody(_body1);
39+
world.AddRigidBody(_body2);
2840
Assert.That(worldArray, Has.Count.EqualTo(2));
29-
Assert.AreEqual(2, _world.NumCollisionObjects);
41+
Assert.AreEqual(2, world.NumCollisionObjects);
3042

3143
Assert.True(worldArray.Contains(_body1));
3244
Assert.True(worldArray.Contains(_body2));
3345

3446
Assert.AreEqual(0, worldArray.IndexOf(_body1));
3547
Assert.AreEqual(1, worldArray.IndexOf(_body2));
3648

37-
_world.RemoveRigidBody(_body1);
49+
world.RemoveRigidBody(_body1);
3850
Assert.That(worldArray, Has.Count.EqualTo(1));
39-
Assert.AreEqual(1, _world.NumCollisionObjects);
51+
Assert.AreEqual(1, world.NumCollisionObjects);
4052

41-
_world.RemoveRigidBody(_body1);
53+
world.RemoveRigidBody(_body1);
4254
Assert.That(worldArray, Has.Count.EqualTo(1));
43-
Assert.AreEqual(1, _world.NumCollisionObjects);
55+
Assert.AreEqual(1, world.NumCollisionObjects);
4456

4557
worldArray.Remove(_body2);
46-
Assert.AreEqual(0, _world.NumCollisionObjects);
58+
Assert.AreEqual(0, world.NumCollisionObjects);
4759

48-
_world.AddRigidBody(_body1);
49-
_world.AddRigidBody(_body2);
50-
_world.AddRigidBody(_body3);
60+
world.AddRigidBody(_body1);
61+
world.AddRigidBody(_body2);
62+
world.AddRigidBody(_body3);
5163
worldArray.RemoveAt(0);
5264
Assert.False(_body1.IsInWorld);
5365
Assert.AreEqual(_body3, worldArray[0]);
@@ -57,37 +69,15 @@ public void AlignedCollisionObjectArrayTest()
5769
Assert.AreEqual(-1, worldArray.IndexOf(null));
5870

5971
worldArray.Clear();
60-
Assert.AreEqual(0, _world.NumCollisionObjects);
72+
Assert.AreEqual(0, world.NumCollisionObjects);
6173
Assert.False(_body2.IsInWorld);
6274
Assert.False(_body3.IsInWorld);
6375
}
6476

65-
[OneTimeSetUp]
66-
public void SetUp()
67-
{
68-
_conf = new DefaultCollisionConfiguration();
69-
_dispatcher = new CollisionDispatcher(_conf);
70-
_broadphase = new DbvtBroadphase();
71-
_solver = new SequentialImpulseConstraintSolver();
72-
_world = new DiscreteDynamicsWorld(_dispatcher, _broadphase, _solver, _conf);
73-
74-
_shape = new BoxShape(1);
75-
using (var bodyInfo = new RigidBodyConstructionInfo(1, null, _shape))
76-
{
77-
_body1 = new RigidBody(bodyInfo);
78-
_body2 = new RigidBody(bodyInfo);
79-
_body3 = new RigidBody(bodyInfo);
80-
}
81-
}
82-
8377
[OneTimeTearDown]
8478
public void TearDown()
8579
{
86-
_world.Dispose();
87-
_solver.Dispose();
88-
_broadphase.Dispose();
89-
_dispatcher.Dispose();
90-
_conf.Dispose();
80+
_context.Dispose();
9181

9282
_shape.Dispose();
9383
_body1.Dispose();

BulletSharp/test/BulletSharpTest.csproj

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3+
<Import Project="packages\NUnit3TestAdapter.3.10.0\build\net35\NUnit3TestAdapter.props" Condition="Exists('packages\NUnit3TestAdapter.3.10.0\build\net35\NUnit3TestAdapter.props')" />
4+
<Import Project="packages\NUnit.3.10.1\build\NUnit.props" Condition="Exists('packages\NUnit.3.10.1\build\NUnit.props')" />
35
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
46
<PropertyGroup>
57
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
@@ -27,6 +29,8 @@
2729
<UseApplicationTrust>false</UseApplicationTrust>
2830
<BootstrapperEnabled>true</BootstrapperEnabled>
2931
<TargetFrameworkProfile />
32+
<NuGetPackageImportStamp>
33+
</NuGetPackageImportStamp>
3034
</PropertyGroup>
3135
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
3236
<PlatformTarget>x86</PlatformTarget>
@@ -52,23 +56,26 @@
5256
<SpecificVersion>False</SpecificVersion>
5357
<HintPath>..\bin\Debug\BulletSharp.dll</HintPath>
5458
</Reference>
55-
<Reference Include="nunit.framework, Version=3.7.1.0, Culture=neutral, PublicKeyToken=2638cd05610744eb, processorArchitecture=MSIL">
56-
<HintPath>packages\NUnit.3.7.1\lib\net45\nunit.framework.dll</HintPath>
59+
<Reference Include="nunit.framework, Version=3.10.1.0, Culture=neutral, PublicKeyToken=2638cd05610744eb, processorArchitecture=MSIL">
60+
<HintPath>packages\NUnit.3.10.1\lib\net45\nunit.framework.dll</HintPath>
5761
</Reference>
5862
<Reference Include="System" />
5963
<Reference Include="System.Drawing" />
6064
</ItemGroup>
6165
<ItemGroup>
6266
<Compile Include="AlignedCollisionObjectArrayTests.cs" />
63-
<Compile Include="ContactSensorCallback.cs" />
67+
<Compile Include="ContactTestCallbackTests.cs" />
6468
<Compile Include="DebugDrawTest.cs" />
6569
<Compile Include="DebugDrawTest2.cs" />
70+
<Compile Include="GhostObjectTests.cs" />
6671
<Compile Include="GImpactTests.cs" />
6772
<Compile Include="OverlapFilterCallbackTests.cs" />
73+
<Compile Include="PhysicsContext.cs" />
6874
<Compile Include="Program.cs" />
6975
<Compile Include="Properties\AssemblyInfo.cs" />
7076
<Compile Include="SoftBodyTests.cs" />
7177
<Compile Include="SerializationTest.cs" />
78+
<Compile Include="Vector3Tests.cs" />
7279
</ItemGroup>
7380
<ItemGroup>
7481
<BootstrapperPackage Include=".NETFramework,Version=v4.5">
@@ -134,6 +141,13 @@
134141
<Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
135142
</ItemGroup>
136143
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
144+
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
145+
<PropertyGroup>
146+
<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>
147+
</PropertyGroup>
148+
<Error Condition="!Exists('packages\NUnit.3.10.1\build\NUnit.props')" Text="$([System.String]::Format('$(ErrorText)', 'packages\NUnit.3.10.1\build\NUnit.props'))" />
149+
<Error Condition="!Exists('packages\NUnit3TestAdapter.3.10.0\build\net35\NUnit3TestAdapter.props')" Text="$([System.String]::Format('$(ErrorText)', 'packages\NUnit3TestAdapter.3.10.0\build\net35\NUnit3TestAdapter.props'))" />
150+
</Target>
137151
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
138152
Other similar extension points exist, see Microsoft.Common.targets.
139153
<Target Name="BeforeBuild">

BulletSharp/test/ContactSensorCallback.cs

Lines changed: 0 additions & 54 deletions
This file was deleted.
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
using BulletSharp;
2+
using BulletSharp.Math;
3+
using NUnit.Framework;
4+
5+
namespace BulletSharpTest
6+
{
7+
[TestFixture]
8+
[Category("Callbacks")]
9+
public class ContactTestCallbackTests
10+
{
11+
private PhysicsContext _context;
12+
13+
private CollisionShape _shape;
14+
private RigidBody _sphere1;
15+
private RigidBody _sphere2;
16+
17+
[OneTimeSetUp]
18+
public void SetUp()
19+
{
20+
_context = new PhysicsContext();
21+
_context.InitializeWorld();
22+
23+
_shape = new BoxShape(2);
24+
25+
_sphere1 = _context.AddBody(_shape, Matrix.Translation(2, 2, 0), 10);
26+
_sphere2 = _context.AddBody(_shape, Matrix.Translation(0, 2, 0), 1);
27+
}
28+
29+
[Test]
30+
public void ContactTestCallbackTest()
31+
{
32+
using (var callback = new ContactSensorCallback(_sphere1))
33+
{
34+
_context.World.ContactTest(_sphere1, callback);
35+
Assert.That(callback.WasCalled, Is.True);
36+
}
37+
38+
_sphere1.CollisionFlags |= CollisionFlags.CustomMaterialCallback;
39+
_sphere2.CollisionFlags |= CollisionFlags.CustomMaterialCallback;
40+
using (var callback = new ContactSensorCallback(_sphere1))
41+
{
42+
_context.World.ContactPairTest(_sphere1, _sphere2, callback);
43+
Assert.That(callback.WasCalled, Is.True);
44+
}
45+
_sphere1.CollisionFlags &= ~CollisionFlags.CustomMaterialCallback;
46+
_sphere2.CollisionFlags &= ~CollisionFlags.CustomMaterialCallback;
47+
}
48+
49+
[OneTimeTearDown]
50+
public void TearDown()
51+
{
52+
_context.Dispose();
53+
_shape.Dispose();
54+
}
55+
56+
private sealed class ContactSensorCallback : ContactResultCallback
57+
{
58+
private readonly RigidBody _monitoredBody;
59+
60+
public ContactSensorCallback(RigidBody monitoredBody)
61+
{
62+
_monitoredBody = monitoredBody;
63+
}
64+
65+
public bool WasCalled { get; private set; }
66+
67+
public override bool NeedsCollision(BroadphaseProxy proxy)
68+
{
69+
// superclass will check CollisionFilterGroup and CollisionFilterMask
70+
if (base.NeedsCollision(proxy))
71+
{
72+
return _monitoredBody.CheckCollideWithOverride(proxy.ClientObject as CollisionObject);
73+
}
74+
75+
return false;
76+
}
77+
78+
// Called with each contact for your own processing (e.g. test if contacts fall in within sensor parameters)
79+
public override float AddSingleResult(ManifoldPoint contact,
80+
CollisionObjectWrapper colObj0, int partId0, int index0,
81+
CollisionObjectWrapper colObj1, int partId1, int index1)
82+
{
83+
Vector3 collisionPoint; // relative to body
84+
if (colObj0.CollisionObject == _monitoredBody)
85+
{
86+
collisionPoint = contact.LocalPointA;
87+
}
88+
else
89+
{
90+
Assert.That(colObj1.CollisionObject, Is.EqualTo(_monitoredBody));
91+
collisionPoint = contact.LocalPointB;
92+
}
93+
94+
WasCalled = true;
95+
96+
return 0;
97+
}
98+
}
99+
}
100+
}

0 commit comments

Comments
 (0)