UNPKG

dualsense-ts

Version:

A natural interface for your DualSense controller, with Typescript

90 lines (83 loc) 2.88 kB
import { Analog } from "./analog"; import { InputSet } from "../input"; describe("Analog", () => { it("should construct", () => { expect(new Analog()).toBeInstanceOf(Analog); }); it("should use params", () => { const analog = new Analog({ threshold: 5, x: { icon: "?" }, y: { name: "?" }, button: { icon: "!" }, }); expect(analog.threshold).toEqual(5); }); it("should implement `active`", () => { const analog = new Analog(); expect(analog.active).toEqual(false); analog.x[InputSet](1); expect(analog.active).toEqual(true); analog.x[InputSet](0); expect(analog.active).toEqual(false); }); it("should utilize `deadzone`", () => { const analog = new Analog({ deadzone: 0.5 }); expect(analog.active).toEqual(false); analog.x[InputSet](0.4); expect(analog.active).toEqual(false); analog.x[InputSet](0.5); expect(analog.active).toEqual(false); analog.x[InputSet](0.6); expect(analog.active).toEqual(true); analog.x[InputSet](0); expect(analog.active).toEqual(false); analog.x[InputSet](-0.6); expect(analog.active).toEqual(true); analog.x[InputSet](-0.4); expect(analog.active).toEqual(false); }); it("should return good directions", () => { const analog = new Analog(); expect(analog.radians).toBeCloseTo(0); expect(analog.degrees).toBeCloseTo(0); analog.x[InputSet](1); analog.y[InputSet](0); expect(analog.radians).toBeCloseTo(0); expect(analog.degrees).toBeCloseTo(0); analog.x[InputSet](0); analog.y[InputSet](1); expect(analog.radians).toBeCloseTo(Math.PI / 2); expect(analog.degrees).toBeCloseTo(90); analog.x[InputSet](-1); analog.y[InputSet](0); expect(analog.radians).toBeCloseTo(Math.PI); expect(analog.degrees).toBeCloseTo(180); analog.x[InputSet](0); analog.y[InputSet](-1); expect(analog.radians).toBeCloseTo((-1 * Math.PI) / 2); expect(analog.vector.direction).toBeCloseTo((-1 * Math.PI) / 2); expect(analog.direction).toBeCloseTo((-1 * Math.PI) / 2); expect(analog.angle).toBeCloseTo((-1 * Math.PI) / 2); expect(analog.degrees).toBeCloseTo(-90); expect(analog.directionDegrees).toBeCloseTo(-90); expect(analog.angleDegrees).toBeCloseTo(-90); }); it("should return good magnitudes", () => { const analog = new Analog(); expect(analog.magnitude).toBeCloseTo(0); analog.x[InputSet](1); analog.y[InputSet](0); expect(analog.magnitude).toBeCloseTo(1); analog.x[InputSet](0); analog.y[InputSet](1); expect(analog.magnitude).toBeCloseTo(1); analog.x[InputSet](-1); analog.y[InputSet](0); expect(analog.magnitude).toBeCloseTo(1); analog.x[InputSet](0); analog.y[InputSet](-1); expect(analog.magnitude).toBeCloseTo(1); expect(analog.vector.magnitude).toBeCloseTo(1); }); });