public ControlTest2DRange_neg1_1(InputDevice device, InputFeatureUsage usage) : base(device, usage)
    {
        Description = "This control's range must be -1.0 to 1.0.  Check that it hits all extremes and is never outside that range.";
        CertReqID   = "1.2.3.x";

        Checks    = new Check[11];
        Checks[0] = new Check2DHits0_0(DeviceUnderTest, FeatureUsageUnderTest, this);
        Checks[1] = new Check2DHits1_0(DeviceUnderTest, FeatureUsageUnderTest, this);
        Checks[2] = new Check2DHits0_1(DeviceUnderTest, FeatureUsageUnderTest, this);
        Checks[3] = new Check2DHits0_neg1(DeviceUnderTest, FeatureUsageUnderTest, this);
        Checks[4] = new Check2DHitsneg1_0(DeviceUnderTest, FeatureUsageUnderTest, this);

        Checks[5] = new Check2DHitsPosXPosY(DeviceUnderTest, FeatureUsageUnderTest, this);
        Checks[6] = new Check2DHitsNegXNegY(DeviceUnderTest, FeatureUsageUnderTest, this);
        Checks[7] = new Check2DHitsPosXNegY(DeviceUnderTest, FeatureUsageUnderTest, this);
        Checks[8] = new Check2DHitsNegXPosY(DeviceUnderTest, FeatureUsageUnderTest, this);

        Checks[9]  = new Check2D_AlwaysNeg1To1(DeviceUnderTest, FeatureUsageUnderTest, this);
        Checks[10] = new CheckRequireManualPass(DeviceUnderTest, FeatureUsageUnderTest, this);

        for (int i = 0; i < Checks.Length; i++)
        {
            Checks[i].ForcedFailure += HandleForcedFail;
        }
    }
Ejemplo n.º 2
0
    public ControlTestEyesFixationPoint(InputDevice device, InputFeatureUsage usage) : base(device, usage)
    {
        Description = "A visualizer has been created to show the eye fixation point reported by the device.  Look around and verify that this fixation point is correct.";
        CertReqID   = "1.2.3.x";

        Checks    = new Check[1];
        Checks[0] = new CheckRequireManualPass(DeviceUnderTest, FeatureUsageUnderTest, this);

        for (int i = 0; i < Checks.Length; i++)
        {
            Checks[i].ForcedFailure += HandleForcedFail;
        }
    }
    public ControlTest2DXY(InputDevice device, InputFeatureUsage usage) : base(device, usage)
    {
        Description = "If this control represents a 2d cartesian coordinate, it must be of the form (x, y).  +X must signify \"right\" if that makes sense in the context of this feature usage. +Y must signify \"up\" or \"forward\" if those concepts make sense in this context.";
        CertReqID   = "1.2.3.x";

        Checks    = new Check[1];
        Checks[0] = new CheckRequireManualPass(DeviceUnderTest, FeatureUsageUnderTest, this);

        for (int i = 0; i < Checks.Length; i++)
        {
            Checks[i].ForcedFailure += HandleForcedFail;
        }
    }
Ejemplo n.º 4
0
    public ControlTestSIUnits(InputDevice device, InputFeatureUsage usage) : base(device, usage)
    {
        Description = "If this control represents a physical value, that value must be described in SI units.  The valid SI units are meter, kilogram, second, ampere, kelvin, candela, and mole.  If this control describes a physical value, it must use a valid combination of only those units.";
        CertReqID   = "1.2.3.x";

        Checks    = new Check[1];
        Checks[0] = new CheckRequireManualPass(DeviceUnderTest, FeatureUsageUnderTest, this);

        for (int i = 0; i < Checks.Length; i++)
        {
            Checks[i].ForcedFailure += HandleForcedFail;
        }
    }
    public ControlTestEyesDefault(InputDevice device, InputFeatureUsage usage) : base(device, usage)
    {
        Description = "Look at the eye information panel. If possible, disable the eye tracking features of the device or use another method to drive values to their defaults. Manually verify that the values are correctly driven to their default values when valid data cannot be found.  Floats should default to 0.0. Vector3s should default to (0, 0, 0). Quaternions should default to the quaternion identity.";
        CertReqID   = "1.2.3.x";

        Checks    = new Check[1];
        Checks[0] = new CheckRequireManualPass(DeviceUnderTest, FeatureUsageUnderTest, this);

        for (int i = 0; i < Checks.Length; i++)
        {
            Checks[i].ForcedFailure += HandleForcedFail;
        }
    }
    public ControlTestEyesPosition(InputDevice device, InputFeatureUsage usage) : base(device, usage)
    {
        Description = "Verify that the left eye is a bit farther in the -x direction than the right eye.  Then move around the space and verify that the left and right eye positions update correctly relative to this movement.";
        CertReqID   = "1.2.3.x";

        Checks    = new Check[1];
        Checks[0] = new CheckRequireManualPass(DeviceUnderTest, FeatureUsageUnderTest, this);

        for (int i = 0; i < Checks.Length; i++)
        {
            Checks[i].ForcedFailure += HandleForcedFail;
        }
    }
    public ControlTest3DXYZ(InputDevice device, InputFeatureUsage usage) : base(device, usage)
    {
        Description = "If this control represents a 3d cartesian coordinate, it must be of the form (x, y, z). +Z must represent forward, +Y must represent up, and +X must represent right of the device's real world origin.";
        CertReqID   = "1.2.3.x";

        Checks    = new Check[1];
        Checks[0] = new CheckRequireManualPass(DeviceUnderTest, FeatureUsageUnderTest, this);

        for (int i = 0; i < Checks.Length; i++)
        {
            Checks[i].ForcedFailure += HandleForcedFail;
        }
    }
    public ControlTestEyesRotation(InputDevice device, InputFeatureUsage usage) : base(device, usage)
    {
        Description = "A visualizer has been added to both eyes to show their rotation.  It should look like two bars are extruding from below your eyes.  Look around and verify that these rotation indicators update correctly.";
        CertReqID   = "1.2.3.x";

        Checks    = new Check[1];
        Checks[0] = new CheckRequireManualPass(DeviceUnderTest, FeatureUsageUnderTest, this);

        for (int i = 0; i < Checks.Length; i++)
        {
            Checks[i].ForcedFailure += HandleForcedFail;
        }
    }
    public ControlTestRotationNormalizedXYZW(InputDevice device, InputFeatureUsage usage) : base(device, usage)
    {
        Description = "If this control represents a normalized cartesian coordinate, it must be of the form (x, y, z, w).  Rotate the device under test. If the quaternion is not normalized this test will automatically fail.";
        CertReqID   = "1.2.3.x";

        Checks    = new Check[2];
        Checks[0] = new CheckRotationIsNormalized(DeviceUnderTest, FeatureUsageUnderTest, this);
        Checks[1] = new CheckRequireManualPass(DeviceUnderTest, FeatureUsageUnderTest, this);

        for (int i = 0; i < Checks.Length; i++)
        {
            Checks[i].ForcedFailure += HandleForcedFail;
        }
    }
    public ControlTestRotation(InputDevice device, InputFeatureUsage usage) : base(device, usage)
    {
        Description = "A visualizer has been added to the device under test.  Rotate the device and verify that the device's virtual rotation matches the device's actual rotation.  If the device under test is a headset, turning your head to view the +X, -X, +Y, -Y, +Z, -Z blocks and seeing the screen update 1:1 with your head movement is sufficient.";

        CertReqID = "1.2.3.x";

        Checks    = new Check[1];
        Checks[0] = new CheckRequireManualPass(DeviceUnderTest, FeatureUsageUnderTest, this);

        for (int i = 0; i < Checks.Length; i++)
        {
            Checks[i].ForcedFailure += HandleForcedFail;
        }
    }
    public ControlTestEyesOpenAmount(InputDevice device, InputFeatureUsage usage) : base(device, usage)
    {
        Description = "Look at the eye information panel. Manually verify that the left and right eye open amounts react correctly as you open and close each eye separately.";
        CertReqID   = "1.2.3.x";

        Checks    = new Check[2];
        Checks[0] = new CheckEyesRange_0_to_1(DeviceUnderTest, FeatureUsageUnderTest, this);
        Checks[1] = new CheckRequireManualPass(DeviceUnderTest, FeatureUsageUnderTest, this);

        for (int i = 0; i < Checks.Length; i++)
        {
            Checks[i].ForcedFailure += HandleForcedFail;
        }
    }
Ejemplo n.º 12
0
    public ControlTestDiscreteDefault(InputDevice device, InputFeatureUsage usage) : base(device, usage)
    {
        Description = "Discrete state should default to 0, which indicates null, none, or invalid.  If this value cannot be driven to 0, check that the current value is logical for the current state.";
        CertReqID   = "1.2.3.x";

        Checks    = new Check[2];
        Checks[0] = new CheckDiscreteDefault(DeviceUnderTest, FeatureUsageUnderTest, this);
        Checks[1] = new CheckRequireManualPass(DeviceUnderTest, FeatureUsageUnderTest, this);

        for (int i = 0; i < Checks.Length; i++)
        {
            Checks[i].ForcedFailure += HandleForcedFail;
        }
    }
Ejemplo n.º 13
0
    public ControlTest2DDefault(InputDevice device, InputFeatureUsage usage) : base(device, usage)
    {
        Description = "2D Axis control should default to (0.0, 0.0) when the control is not actuated. Verify that the device defaults to (0.0, 0.0) and then manually pass this test.";
        CertReqID   = "1.2.3.x";

        Checks    = new Check[2];
        Checks[0] = new Check2DHits0_0(DeviceUnderTest, FeatureUsageUnderTest, this);
        Checks[1] = new CheckRequireManualPass(DeviceUnderTest, FeatureUsageUnderTest, this);

        for (int i = 0; i < Checks.Length; i++)
        {
            Checks[i].ForcedFailure += HandleForcedFail;
        }
    }
    public ControlTestIsTracked(InputDevice device, InputFeatureUsage usage) : base(device, usage)
    {
        Description = "If possible, hide this device from tracking sensors or cover device tracking cameras in an attempt to lose tracking.  " +
                      "This control, IsTracked, should report false when this happens.";
        CertReqID = "1.2.3.x";

        Checks    = new Check[1];
        Checks[0] = new CheckRequireManualPass(DeviceUnderTest, FeatureUsageUnderTest, this);

        for (int i = 0; i < Checks.Length; i++)
        {
            Checks[i].ForcedFailure += HandleForcedFail;
        }
    }
Ejemplo n.º 15
0
    public ControlTestAngularVelocity(InputDevice device, InputFeatureUsage usage) : base(device, usage)
    {
        Description = "Locate the angular velocity visual helper, which is located slightly to your right.  For X, Y, and Z: match the motion of the spindles to the corresponding orbiting cubes.  Observe the angular velocity for each vector element ~= 0.2f when matching the rotation of the cubes." +
                      "\n\nThis FeatureUsage's reference frame is world space. It is not relative to the device.";
        CertReqID = "1.2.3.x";

        Checks    = new Check[1];
        Checks[0] = new CheckRequireManualPass(DeviceUnderTest, FeatureUsageUnderTest, this);

        for (int i = 0; i < Checks.Length; i++)
        {
            Checks[i].ForcedFailure += HandleForcedFail;
        }
    }
    public ControlTestUnsupportedType(InputDevice device, InputFeatureUsage usage) : base(device, usage)
    {
        Description = "The current control's type is invalid.  This test should automatically fail.";
        CertReqID   = "1.2.3.x";

        Checks    = new Check[1];
        Checks[0] = new CheckAutoForceFail(DeviceUnderTest, FeatureUsageUnderTest, this);
        Checks[1] = new CheckRequireManualPass(DeviceUnderTest, FeatureUsageUnderTest, this);

        for (int i = 0; i < Checks.Length; i++)
        {
            Checks[i].ForcedFailure += HandleForcedFail;
        }
    }
    public ControlTestRotationDefault(InputDevice device, InputFeatureUsage usage) : base(device, usage)
    {
        Description = "Rotation control should default to (0.0, 0.0, 0.0, +-1.0) when the control is not active or when the device is pointed straight forward with no roll.";
        CertReqID   = "1.2.3.x";

        Checks    = new Check[2];
        Checks[0] = new CheckRotationHits0_0_0_1(DeviceUnderTest, FeatureUsageUnderTest, this);
        Checks[1] = new CheckRequireManualPass(DeviceUnderTest, FeatureUsageUnderTest, this);

        for (int i = 0; i < Checks.Length; i++)
        {
            Checks[i].ForcedFailure += HandleForcedFail;
        }
    }
    public ControlTestVelocity(InputDevice device, InputFeatureUsage usage) : base(device, usage)
    {
        Description = "Match the device under test's motion with the particles moving through the air.  " +
                      "Observe the velocity value is approximately (0.2, 0.2, 0.2).  The magnitude is approximately 0.35.";
        CertReqID = "1.2.3.x";

        Checks    = new Check[1];
        Checks[0] = new CheckRequireManualPass(DeviceUnderTest, FeatureUsageUnderTest, this);

        for (int i = 0; i < Checks.Length; i++)
        {
            Checks[i].ForcedFailure += HandleForcedFail;
        }
    }
    public ControlTestBinaryRange(InputDevice device, InputFeatureUsage usage) : base(device, usage)
    {
        Description = "Binary range must hit both false and true to pass this test.";
        CertReqID   = "1.2.3.x";

        Checks    = new Check[3];
        Checks[0] = new CheckBinaryValueHitsFalse(DeviceUnderTest, FeatureUsageUnderTest, this);
        Checks[1] = new CheckBinaryValueHitsTrue(DeviceUnderTest, FeatureUsageUnderTest, this);
        Checks[2] = new CheckRequireManualPass(DeviceUnderTest, FeatureUsageUnderTest, this);

        for (int i = 0; i < Checks.Length; i++)
        {
            Checks[i].ForcedFailure += HandleForcedFail;
        }
    }
Ejemplo n.º 20
0
    public ControlTestAngularAcceleration(InputDevice device, InputFeatureUsage usage) : base(device, usage)
    {
        Description = "A visualizer has been added to the device under test.  Hold the device still and rotate it to match the oscillation of the X, Y, and Z cubes.  Angular Acceleration magnitude for the axis of rotation under test should be around 10, while the other two should remain <10." +
                      "\n\nHold the device still. Angular acceleration should be approximately zero in all dimensions. <10 is sufficient.";

        CertReqID = "1.2.3.x";

        Checks    = new Check[1];
        Checks[0] = new CheckRequireManualPass(DeviceUnderTest, FeatureUsageUnderTest, this);

        for (int i = 0; i < Checks.Length; i++)
        {
            Checks[i].ForcedFailure += HandleForcedFail;
        }
    }
    public ControlTestPosition(InputDevice device, InputFeatureUsage usage) : base(device, usage)
    {
        Description = "A visualizer has been added to the device under test.  Verify that the virtual position matches the movements of the real-world position.  " +
                      "For all devices except Tracking References, move the device between cubes to verify that X, Y, and Z all update correctly relative to the coordinates reported by the cubes.  " +
                      "If the device under test is a headset, move it around the coordinates and verify that the position is correct.";

        CertReqID = "1.2.3.x";

        Checks    = new Check[1];
        Checks[0] = new CheckRequireManualPass(DeviceUnderTest, FeatureUsageUnderTest, this);

        for (int i = 0; i < Checks.Length; i++)
        {
            Checks[i].ForcedFailure += HandleForcedFail;
        }
    }
Ejemplo n.º 22
0
    public ControlTest1DRange_0_1(InputDevice device, InputFeatureUsage usage) : base(device, usage)
    {
        Description = "This control's range must be 0.0 to 1.0.  Check that it hits both extremes and is never outside that range.";
        CertReqID   = "1.2.3.x";

        Checks    = new Check[5];
        Checks[0] = new Check1DHits0(DeviceUnderTest, FeatureUsageUnderTest, this);
        Checks[1] = new Check1DHits1(DeviceUnderTest, FeatureUsageUnderTest, this);
        Checks[2] = new Check1D_0to1(DeviceUnderTest, FeatureUsageUnderTest, this);
        Checks[3] = new Check1D_Always0to1(DeviceUnderTest, FeatureUsageUnderTest, this);
        Checks[4] = new CheckRequireManualPass(DeviceUnderTest, FeatureUsageUnderTest, this);

        for (int i = 0; i < Checks.Length; i++)
        {
            Checks[i].ForcedFailure += HandleForcedFail;
        }
    }