From 95def8c6361d46d0157c396e16acc874a6643d3b Mon Sep 17 00:00:00 2001 From: Teravus Ovares Date: Sun, 24 Feb 2008 04:06:01 +0000 Subject: * Adds unit test glue to the OdePlugin. * Adds one unit test. CreateAndDropPhysicalCube. * More unit tests will be done * Let me know if this breaks Linux build.. --- OpenSim/Region/Physics/OdePlugin/ODETestClass.cs | 99 ++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 OpenSim/Region/Physics/OdePlugin/ODETestClass.cs (limited to 'OpenSim/Region/Physics/OdePlugin') diff --git a/OpenSim/Region/Physics/OdePlugin/ODETestClass.cs b/OpenSim/Region/Physics/OdePlugin/ODETestClass.cs new file mode 100644 index 0000000..05ec61d --- /dev/null +++ b/OpenSim/Region/Physics/OdePlugin/ODETestClass.cs @@ -0,0 +1,99 @@ +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using Axiom.Math; +using Ode.NET; +using OpenSim.Framework; +using OpenSim.Framework.Console; +using OpenSim.Region.Physics.Manager; +using NUnit.Framework; +using NUnit.Framework.SyntaxHelpers; + +namespace OpenSim.Region.Physics.OdePlugin +{ + [TestFixture] + public class ODETestClass + { + private OdePlugin cbt; + private PhysicsScene ps; + private IMeshingPlugin imp; + + + [SetUp] + public void Initialize() + { + // Loading ODEPlugin + cbt = new OdePlugin(); + // Loading Zero Mesher + imp = new ZeroMesherPlugin(); + // Getting Physics Scene + ps = cbt.GetScene(); + // Initializing Physics Scene. + ps.Initialise(imp.GetMesher()); + float[] _heightmap = new float[256 * 256]; + for (int i = 0; i<(256*256);i++) + { + _heightmap[i] = 21f; + } + ps.SetTerrain(_heightmap); + + } + [TearDown] + public void Terminate() + { + ps.DeleteTerrain(); + ps.Dispose(); + + } + [Test] + public void CreateAndDropPhysicalCube() + { + PrimitiveBaseShape newcube = PrimitiveBaseShape.CreateBox(); + PhysicsVector position = new PhysicsVector(128, 128, 128); + PhysicsVector size = new PhysicsVector(0.5f, 0.5f, 0.5f); + Quaternion rot = new Quaternion(1, 0, 0, 0); + PhysicsActor prim = ps.AddPrimShape("CoolShape", newcube, position, size, rot, true); + OdePrim oprim = (OdePrim)prim; + OdeScene pscene = (OdeScene) ps; + + Assert.That(oprim.m_taintadd); + + prim.LocalID = 5; + + + + for (int i = 0; i < 38; i++) + { + ps.Simulate(0.133f); + + Assert.That(oprim.prim_geom != (IntPtr)0); + + Assert.That(oprim.m_targetSpace != (IntPtr)0); + + //Assert.That(oprim.m_targetSpace == pscene.space); + Console.WriteLine("TargetSpace: " + oprim.m_targetSpace + " - SceneMainSpace: " + pscene.space); + + Assert.That(!oprim.m_taintadd); + Console.WriteLine("Prim Position (" + oprim.m_localID + "): " + prim.Position.ToString()); + + // Make sure we're above the ground + Assert.That(prim.Position.Z > 20f); + Console.WriteLine("PrimCollisionScore (" + oprim.m_localID + "): " + oprim.m_collisionscore); + + // Make sure we've got a Body + Assert.That(oprim.Body != (IntPtr)0); + //Console.WriteLine( + } + + // Make sure we're not somewhere above the ground + Assert.That(prim.Position.Z < 21.5f); + + ps.RemovePrim(prim); + Assert.That(oprim.m_taintremove); + ps.Simulate(0.133f); + Assert.That(oprim.Body == (IntPtr)0); + } + + + } +} -- cgit v1.1