MouseHoldTriggerTests ClassDelta Engine Documentation
Inheritance Hierarchy

System Object
  DeltaEngine.Platforms TestWithMocksOrVisually
    DeltaEngine.Input.Tests MouseHoldTriggerTests

Namespace: DeltaEngine.Input.Tests
Assembly: DeltaEngine.Input.Tests (in DeltaEngine.Input.Tests.dll) Version: 1.1.1.0 (1.1.1)
Syntax

public class MouseHoldTriggerTests : TestWithMocksOrVisually

The MouseHoldTriggerTests type exposes the following members.

Constructors

  NameDescription
Public methodMouseHoldTriggerTests
Initializes a new instance of the MouseHoldTriggerTests class
Top
Methods

  NameDescription
Protected methodAdvanceTimeAndUpdateEntities (Inherited from TestWithMocksOrVisually.)
Public methodCreate
Public methodCreateFromAttributes
Public methodHoldLeftClickOnRectangle
Public methodHoldMouseHovering
Public methodHoldMouseInsideHoldArea
Public methodHoldMouseOutsideHoldArea
Public methodInitializeResolver (Inherited from TestWithMocksOrVisually.)
Public methodMoveMouseInsideHoldArea
Protected methodRegisterMock T  (Inherited from TestWithMocksOrVisually.)
Protected methodResolve T  (Inherited from TestWithMocksOrVisually.)
Protected methodRunAfterFirstFrame (Inherited from TestWithMocksOrVisually.)
Public methodRunTestAndDisposeResolverWhenDone (Inherited from TestWithMocksOrVisually.)
Public methodSetUp
Top
Properties

  NameDescription
Protected propertyIsMockResolver (Inherited from TestWithMocksOrVisually.)
Top
Examples

[Test]
public void HoldLeftClickOnRectangle()
{
    var drawArea = new Rectangle(0.25f, 0.25f, 0.5f, 0.25f);
    new FilledRect(drawArea, Color.Blue);
    var trigger = new MouseHoldTrigger(drawArea);
    var counter = 0;
    var text = new FontText(Font.Default, "", drawArea.Move(new Vector2D(0.0f, 0.25f)));
    new Command(() => text.Text = "MouseHold Triggered " + ++counter + " times.").Add(trigger);
}
[Test, CloseAfterFirstFrame]
public void Create()
{
    var trigger = new MouseHoldTrigger(Rectangle.One, 0.5f, MouseButton.Right);
    Assert.AreEqual(Rectangle.One, trigger.HoldArea);
    Assert.AreEqual(0.5f, trigger.HoldTime);
    Assert.AreEqual(MouseButton.Right, trigger.Button);
}
    [Test, CloseAfterFirstFrame]
    public void CreateFromAttributes()
    {
        var trigger = new MouseHoldTrigger(new Dictionary<string, string>
            {
                { "HoldArea", "1 2 3 4" },
                { "HoldTime", "5.5" },
                { "Button", "Right" }
            });
        Assert.AreEqual(new Rectangle(1, 2, 3, 4), trigger.HoldArea);
        Assert.AreEqual(5.5f, trigger.HoldTime);
        Assert.AreEqual(MouseButton.Right, trigger.Button);
        Assert.Throws<MouseHoldTrigger.CannotCreateMouseHoldTriggerWithoutHoldArea>(
            () => new MouseHoldTrigger(new Dictionary<string, string>()));
    }

    [Test, CloseAfterFirstFrame]
    public void HoldMouseOutsideHoldArea()
    {
        if (mouse == null)
            return; //ncrunch: no coverage
        Vector2D mousePosition = -Vector2D.One;
        new Command(position => { mousePosition = position; }).Add(
            new MouseHoldTrigger(Rectangle.HalfCentered));
        SetMouseState(State.Pressing, Vector2D.Zero);
        SetMouseState(State.Pressed, Vector2D.Zero);
        AdvanceTimeAndUpdateEntities(1.05f);
        Assert.AreEqual(-Vector2D.One, mousePosition);
    }

    private void SetMouseState(State state, Vector2D position)
    {
        if (mouse == null)
            return; //ncrunch: no coverage
        mouse.SetNativePosition(position);
        mouse.SetButtonState(MouseButton.Left, state);
        AdvanceTimeAndUpdateEntities();
    }

    [Test, CloseAfterFirstFrame]
    public void HoldMouseHovering()
    {
        var drawArea = new Rectangle(0.25f, 0.25f, 0.5f, 0.25f);
        var rect = new FilledRect(drawArea, Color.Blue);
        var trigger = new MouseHoldTrigger(drawArea);
        trigger.Invoked += () => rect.Color = Color.Red;
        trigger.Movement = new Vector2D(0.3f, 0.3f);
        Assert.IsFalse(trigger.IsHovering());
        AdvanceTimeAndUpdateEntities(1.05f);
        Assert.IsFalse(trigger.IsHovering());
    }

    [Test, CloseAfterFirstFrame]
    public void MoveMouseInsideHoldArea()
    {
        if (mouse == null)
            return; //ncrunch: no coverage
        Vector2D mousePosition = -Vector2D.One;
        new Command(position => { mousePosition = position; }).Add(
            new MouseHoldTrigger(Rectangle.HalfCentered));
        SetMouseState(State.Pressing, Vector2D.Half);
        SetMouseState(State.Pressed, Vector2D.Half);
        AdvanceTimeAndUpdateEntities(0.5f);
        SetMouseState(State.Pressed, new Vector2D(0.6f, 0.6f));
        AdvanceTimeAndUpdateEntities(0.5f);
        Assert.AreEqual(Vector2D.Half, mousePosition);
    }

    //ncrunch: no coverage start
    [Test, CloseAfterFirstFrame, Category("Slow")]
    public void HoldMouseInsideHoldArea()
    {
        if (mouse == null)
            return; //ncrunch: no coverage
        Vector2D mousePosition = -Vector2D.One;
        new Command(position => { mousePosition = position; }).Add(
            new MouseHoldTrigger(Rectangle.HalfCentered));
        SetMouseState(State.Pressing, Vector2D.Half);
        SetMouseState(State.Pressed, Vector2D.Half);
        AdvanceTimeAndUpdateEntities(1.05f);
        Assert.AreEqual(Vector2D.Half, mousePosition);
    }
}
[Test, CloseAfterFirstFrame]
public void HoldMouseOutsideHoldArea()
{
    if (mouse == null)
        return; //ncrunch: no coverage
    Vector2D mousePosition = -Vector2D.One;
    new Command(position => { mousePosition = position; }).Add(
        new MouseHoldTrigger(Rectangle.HalfCentered));
    SetMouseState(State.Pressing, Vector2D.Zero);
    SetMouseState(State.Pressed, Vector2D.Zero);
    AdvanceTimeAndUpdateEntities(1.05f);
    Assert.AreEqual(-Vector2D.One, mousePosition);
}
[Test, CloseAfterFirstFrame]
public void HoldMouseHovering()
{
    var drawArea = new Rectangle(0.25f, 0.25f, 0.5f, 0.25f);
    var rect = new FilledRect(drawArea, Color.Blue);
    var trigger = new MouseHoldTrigger(drawArea);
    trigger.Invoked += () => rect.Color = Color.Red;
    trigger.Movement = new Vector2D(0.3f, 0.3f);
    Assert.IsFalse(trigger.IsHovering());
    AdvanceTimeAndUpdateEntities(1.05f);
    Assert.IsFalse(trigger.IsHovering());
}
[Test, CloseAfterFirstFrame]
public void MoveMouseInsideHoldArea()
{
    if (mouse == null)
        return; //ncrunch: no coverage
    Vector2D mousePosition = -Vector2D.One;
    new Command(position => { mousePosition = position; }).Add(
        new MouseHoldTrigger(Rectangle.HalfCentered));
    SetMouseState(State.Pressing, Vector2D.Half);
    SetMouseState(State.Pressed, Vector2D.Half);
    AdvanceTimeAndUpdateEntities(0.5f);
    SetMouseState(State.Pressed, new Vector2D(0.6f, 0.6f));
    AdvanceTimeAndUpdateEntities(0.5f);
    Assert.AreEqual(Vector2D.Half, mousePosition);
}
[Test, CloseAfterFirstFrame, Category("Slow")]
public void HoldMouseInsideHoldArea()
{
    if (mouse == null)
        return; //ncrunch: no coverage
    Vector2D mousePosition = -Vector2D.One;
    new Command(position => { mousePosition = position; }).Add(
        new MouseHoldTrigger(Rectangle.HalfCentered));
    SetMouseState(State.Pressing, Vector2D.Half);
    SetMouseState(State.Pressed, Vector2D.Half);
    AdvanceTimeAndUpdateEntities(1.05f);
    Assert.AreEqual(Vector2D.Half, mousePosition);
}
See Also