using System.Collections.Generic;
using System.Reflection;
using System.Runtime.Remoting;
using Sandbox.ModAPI.Ingame;
using VRageMath;
using Xunit;
using P=AutoMiningScript.Program;
namespace AutoMiningScript.Tests
{
public class DockMotionWindowTests
{
static T Field<T>(object value,string name)
{return (T)value.GetType().GetField(name,BindingFlags.Instance|BindingFlags.NonPublic).GetValue(value);}
[Fact]
public void ConnectorImpulseIsFilteredButSustainedAccelerationAndActualVelocityRemainVisible()
{
var r=new FleetStateTests.Rig(1,false);Vector3D velocity=Vector3D.Zero;
var controller=Field<IMyShipController>(r.Fleet,"controller");
((Stub<IMyShipController>)RemotingServices.GetRealProxy(controller)).Method("GetShipVelocities",a=>new MyShipVelocities(velocity,Vector3D.Zero));
var frames=Field<Dictionary<long,P.DockFrame>>(r.Fleet,"frames");
r.Tick(2);Assert.True(frames[100].IsWindow(r.Program.Config,r.Program.Now));
velocity=Vector3D.Right*.015;r.Tick(1);
Assert.Equal(velocity,frames[100].PointVelocity(frames[100].Position));
Assert.InRange(frames[100].Acceleration.Length(),.02,.04);
Assert.True(frames[100].IsWindow(r.Program.Config,r.Program.Now));
for(int n=0;n<5;n++){velocity+=Vector3D.Right*.05;r.Tick(1);}
Assert.True(frames[100].Acceleration.Length()>.1);
Assert.False(frames[100].IsWindow(r.Program.Config,r.Program.Now));
velocity=Vector3D.Right*6;r.Tick(1);
Assert.Equal(6,frames[100].PointVelocity(frames[100].Position).Length());
Assert.False(frames[100].IsWindow(r.Program.Config,r.Program.Now));
}
}
}
using System.Collections.Generic;
using System.Reflection;
using System.Runtime.Remoting;
using Sandbox.ModAPI.Ingame;
using VRageMath;
using Xunit;
using P=AutoMiningScript.Program;
namespace AutoMiningScript.Tests
{
public class DockMotionWindowTests
{
static T Field<T>(object value,string name)
{return (T)value.GetType().GetField(name,BindingFlags.Instance|BindingFlags.NonPublic).GetValue(value);}
[Fact]
public void ConnectorImpulseIsFilteredButSustainedAccelerationAndActualVelocityRemainVisible()
{
var r=new FleetStateTests.Rig(1,false);Vector3D velocity=Vector3D.Zero;
var controller=Field<IMyShipController>(r.Fleet,"controller");
((Stub<IMyShipController>)RemotingServices.GetRealProxy(controller)).Method("GetShipVelocities",a=>new MyShipVelocities(velocity,Vector3D.Zero));
var frames=Field<Dictionary<long,P.DockFrame>>(r.Fleet,"frames");
r.Tick(2);Assert.True(frames[100].IsWindow(r.Program.Config,r.Program.Now));
velocity=Vector3D.Right*.015;r.Tick(1);
Assert.Equal(velocity,frames[100].PointVelocity(frames[100].Position));
Assert.InRange(frames[100].Acceleration.Length(),.02,.04);
Assert.True(frames[100].IsWindow(r.Program.Config,r.Program.Now));
for(int n=0;n<5;n++){velocity+=Vector3D.Right*.05;r.Tick(1);}
Assert.True(frames[100].Acceleration.Length()>.1);
Assert.False(frames[100].IsWindow(r.Program.Config,r.Program.Now));
velocity=Vector3D.Right*6;r.Tick(1);
Assert.Equal(6,frames[100].PointVelocity(frames[100].Position).Length());
Assert.False(frames[100].IsWindow(r.Program.Config,r.Program.Now));
}
}
}