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 InputStateManager ;
29+ using InputStateManager . Inputs . InputProviders . Interfaces ;
30+ using Microsoft . Xna . Framework ;
31+ using Microsoft . Xna . Framework . Input ;
32+ using Moq ;
33+ using NUnit . Framework ;
34+
35+ namespace NUnitTests
36+ {
37+ [ TestFixture ]
38+ [ Category ( "InputStateManager.Pad" ) ]
39+ public class PadTests
40+ {
41+ private InputManager input ;
42+ private Mock < IPadInputProvider > providerMock ;
43+
44+ [ SetUp ]
45+ public void Setup ( )
46+ {
47+ providerMock = new Mock < IPadInputProvider > ( ) ;
48+ input = new InputManager ( null , null , providerMock . Object , null ) ;
49+ }
50+
51+ private static GamePadState IdleState => new GamePadState ( new GamePadThumbSticks ( Vector2 . Zero , Vector2 . Zero ) ,
52+ new GamePadTriggers ( 0f , 0f ) , new GamePadButtons ( 0 ) ,
53+ new GamePadDPad ( ButtonState . Released , ButtonState . Released , ButtonState . Released , ButtonState . Released ) ) ;
54+
55+ [ Test ]
56+ public void OnlyOneGamepadIsConnected ( )
57+ {
58+ providerMock . SetupSequence ( o => o . GetState ( 0 ) )
59+ . Returns ( IdleState )
60+ . Returns ( GamePadState . Default )
61+ . Returns ( GamePadState . Default )
62+ . Returns ( GamePadState . Default )
63+ . Returns ( IdleState ) ;
64+ providerMock . SetupSequence ( o => o . GetState ( 1 ) )
65+ . Returns ( GamePadState . Default )
66+ . Returns ( IdleState )
67+ . Returns ( GamePadState . Default )
68+ . Returns ( GamePadState . Default )
69+ . Returns ( IdleState ) ;
70+ providerMock . SetupSequence ( o => o . GetState ( 2 ) )
71+ . Returns ( GamePadState . Default )
72+ . Returns ( GamePadState . Default )
73+ . Returns ( IdleState )
74+ . Returns ( GamePadState . Default )
75+ . Returns ( IdleState ) ;
76+ providerMock . SetupSequence ( o => o . GetState ( 3 ) )
77+ . Returns ( GamePadState . Default )
78+ . Returns ( GamePadState . Default )
79+ . Returns ( GamePadState . Default )
80+ . Returns ( IdleState )
81+ . Returns ( IdleState ) ;
82+ input . Update ( ) ;
83+ Assert . IsTrue ( input . Pad . Is . Connected ( ) ) ;
84+ Assert . IsFalse ( input . Pad . Is . Connected ( PlayerIndex . Two ) ) ;
85+ Assert . IsFalse ( input . Pad . Is . Connected ( PlayerIndex . Three ) ) ;
86+ Assert . IsFalse ( input . Pad . Is . Connected ( PlayerIndex . Four ) ) ;
87+ input . Update ( ) ;
88+ Assert . IsFalse ( input . Pad . Is . Connected ( ) ) ;
89+ Assert . IsTrue ( input . Pad . Is . Connected ( PlayerIndex . Two ) ) ;
90+ Assert . IsFalse ( input . Pad . Is . Connected ( PlayerIndex . Three ) ) ;
91+ Assert . IsFalse ( input . Pad . Is . Connected ( PlayerIndex . Four ) ) ;
92+ input . Update ( ) ;
93+ Assert . IsFalse ( input . Pad . Is . Connected ( ) ) ;
94+ Assert . IsFalse ( input . Pad . Is . Connected ( PlayerIndex . Two ) ) ;
95+ Assert . IsTrue ( input . Pad . Is . Connected ( PlayerIndex . Three ) ) ;
96+ Assert . IsFalse ( input . Pad . Is . Connected ( PlayerIndex . Four ) ) ;
97+ input . Update ( ) ;
98+ Assert . IsFalse ( input . Pad . Is . Connected ( ) ) ;
99+ Assert . IsFalse ( input . Pad . Is . Connected ( PlayerIndex . Two ) ) ;
100+ Assert . IsFalse ( input . Pad . Is . Connected ( PlayerIndex . Three ) ) ;
101+ Assert . IsTrue ( input . Pad . Is . Connected ( PlayerIndex . Four ) ) ;
102+ input . Update ( ) ;
103+ Assert . IsTrue ( input . Pad . Is . Connected ( ) ) ;
104+ Assert . IsTrue ( input . Pad . Is . Connected ( PlayerIndex . Two ) ) ;
105+ Assert . IsTrue ( input . Pad . Is . Connected ( PlayerIndex . Three ) ) ;
106+ Assert . IsTrue ( input . Pad . Is . Connected ( PlayerIndex . Four ) ) ;
107+ }
108+ }
109+ }
0 commit comments