1+ // ***************************************************************************
2+ // This is free and unencumbered software released into the public domain.
3+ //
4+ // Anyone is free to copy, modify, publish, use, compile, sell, or
5+ // distribute this software, either in source code form or as a compiled
6+ // binary, for any purpose, commercial or non-commercial, and by any
7+ // means.
8+ //
9+ // In jurisdictions that recognize copyright laws, the author or authors
10+ // of this software dedicate any and all copyright interest in the
11+ // software to the public domain. We make this dedication for the benefit
12+ // of the public at large and to the detriment of our heirs and
13+ // successors. We intend this dedication to be an overt act of
14+ // relinquishment in perpetuity of all present and future rights to this
15+ // software under copyright law.
16+ //
17+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18+ // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19+ // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
20+ // IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
21+ // OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
22+ // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
23+ // OTHER DEALINGS IN THE SOFTWARE.
24+ //
25+ // For more information, please refer to <http://unlicense.org>
26+ // ***************************************************************************
27+
28+ using Microsoft . Xna . Framework ;
29+ using Microsoft . Xna . Framework . Input ;
30+ using NUnit . Framework ;
31+
32+ namespace NUnitTests . Tests . Pad
33+ {
34+ [ TestFixture ]
35+ [ Category ( "InputStateManager.Pad.Triggers" ) ]
36+ public partial class PadTests
37+ {
38+ private const float EPSILON = float . Epsilon ;
39+
40+ private static GamePadState GetTriggers ( float l , float r ) => new GamePadState (
41+ new GamePadThumbSticks ( Vector2 . Zero , Vector2 . Zero ) ,
42+ new GamePadTriggers ( l , r ) , new GamePadButtons ( 0 ) ,
43+ new GamePadDPad ( ButtonState . Released , ButtonState . Released , ButtonState . Released , ButtonState . Released ) ) ;
44+
45+ [ Test ]
46+ public void TriggersWork ( )
47+ {
48+ providerMock . SetupSequence ( o => o . GetState ( 0 ) )
49+ . Returns ( IdleState )
50+ . Returns ( GetTriggers ( 0.2f , 0.3f ) )
51+ . Returns ( GetTriggers ( 0.3f , 0.4f ) )
52+ . Returns ( IdleState ) ;
53+ input . Update ( ) ;
54+ Assert . AreEqual ( 0f , input . Pad ( ) . Is . Triggers . Left , EPSILON ) ;
55+ Assert . AreEqual ( 0f , input . Pad ( ) . Is . Triggers . Right , EPSILON ) ;
56+ input . Update ( ) ;
57+ Assert . AreEqual ( 0.2f , input . Pad ( ) . Is . Triggers . Left , EPSILON ) ;
58+ Assert . AreEqual ( 0.3f , input . Pad ( ) . Is . Triggers . Right , EPSILON ) ;
59+ input . Update ( ) ;
60+ Assert . AreEqual ( 0.3f , input . Pad ( ) . Is . Triggers . Left , EPSILON ) ;
61+ Assert . AreEqual ( 0.4f , input . Pad ( ) . Is . Triggers . Right , EPSILON ) ;
62+ input . Update ( ) ;
63+ Assert . AreEqual ( 0f , input . Pad ( ) . Is . Triggers . Left , EPSILON ) ;
64+ Assert . AreEqual ( 0f , input . Pad ( ) . Is . Triggers . Right , EPSILON ) ;
65+ }
66+
67+ [ Test ]
68+ public void WasTriggersWork ( )
69+ {
70+ providerMock . SetupSequence ( o => o . GetState ( 0 ) )
71+ . Returns ( IdleState )
72+ . Returns ( GetTriggers ( 0.2f , 0.3f ) )
73+ . Returns ( GetTriggers ( 0.3f , 0.4f ) )
74+ . Returns ( IdleState ) ;
75+ input . Update ( ) ;
76+ input . Update ( ) ;
77+ Assert . AreEqual ( 0f , input . Pad ( ) . Was . Triggers . Left , EPSILON ) ;
78+ Assert . AreEqual ( 0f , input . Pad ( ) . Was . Triggers . Right , EPSILON ) ;
79+ input . Update ( ) ;
80+ Assert . AreEqual ( 0.2f , input . Pad ( ) . Was . Triggers . Left , EPSILON ) ;
81+ Assert . AreEqual ( 0.3f , input . Pad ( ) . Was . Triggers . Right , EPSILON ) ;
82+ input . Update ( ) ;
83+ Assert . AreEqual ( 0.3f , input . Pad ( ) . Was . Triggers . Left , EPSILON ) ;
84+ Assert . AreEqual ( 0.4f , input . Pad ( ) . Was . Triggers . Right , EPSILON ) ;
85+ }
86+
87+ [ Test ]
88+ public void TriggersDeltasWork ( )
89+ {
90+ providerMock . SetupSequence ( o => o . GetState ( 0 ) )
91+ . Returns ( IdleState )
92+ . Returns ( GetTriggers ( 0.2f , 0.4f ) )
93+ . Returns ( IdleState )
94+ . Returns ( GetTriggers ( 0.3f , 0.5f ) )
95+ . Returns ( GetTriggers ( 0.3f , 0.8f ) ) ;
96+ input . Update ( ) ;
97+ Assert . AreEqual ( 0f , input . Pad ( ) . Is . Triggers . LeftDelta , EPSILON ) ;
98+ Assert . AreEqual ( 0f , input . Pad ( ) . Is . Triggers . RightDelta , EPSILON ) ;
99+ input . Update ( ) ;
100+ Assert . AreEqual ( 0.2f , input . Pad ( ) . Is . Triggers . LeftDelta , EPSILON ) ;
101+ Assert . AreEqual ( 0.4f , input . Pad ( ) . Is . Triggers . RightDelta , EPSILON ) ;
102+ input . Update ( ) ;
103+ Assert . AreEqual ( - 0.2f , input . Pad ( ) . Is . Triggers . LeftDelta , EPSILON ) ;
104+ Assert . AreEqual ( - 0.4f , input . Pad ( ) . Is . Triggers . RightDelta , EPSILON ) ;
105+ input . Update ( ) ;
106+ Assert . AreEqual ( 0.3f , input . Pad ( ) . Is . Triggers . LeftDelta , EPSILON ) ;
107+ Assert . AreEqual ( 0.5f , input . Pad ( ) . Is . Triggers . RightDelta , EPSILON ) ;
108+ input . Update ( ) ;
109+ Assert . AreEqual ( 0f , input . Pad ( ) . Is . Triggers . LeftDelta , EPSILON ) ;
110+ Assert . AreEqual ( 0.3f , input . Pad ( ) . Is . Triggers . RightDelta , EPSILON ) ;
111+ }
112+ }
113+ }
0 commit comments