1+ using NUnit . Framework ;
2+ using Box2D . NET ;
3+
4+ namespace Box2D . NET . Test
5+ {
6+ public class B2UserDataTest
7+ {
8+ [ Test ]
9+ public void TestEmpty ( )
10+ {
11+ var userData = B2UserData . Empty ;
12+ Assert . That ( userData . IsEmpty ( ) , Is . True ) ;
13+ Assert . That ( userData . GetSigned ( ) , Is . EqualTo ( 0 ) ) ;
14+ Assert . That ( userData . GetUnsigned ( ) , Is . EqualTo ( 0 ) ) ;
15+ Assert . That ( userData . GetDouble ( ) , Is . EqualTo ( 0.0 ) ) ;
16+ Assert . That ( userData . GetRef < object > ( ) , Is . Null ) ;
17+ }
18+
19+ [ Test ]
20+ public void TestSigned ( )
21+ {
22+ long value = - 1234567890L ;
23+ var userData = B2UserData . Signed ( value ) ;
24+
25+ Assert . That ( userData . IsEmpty ( ) , Is . False ) ;
26+ Assert . That ( userData . type , Is . EqualTo ( B2UserDataType . Signed ) ) ;
27+ Assert . That ( userData . GetSigned ( ) , Is . EqualTo ( value ) ) ;
28+
29+ // Default value check
30+ Assert . That ( userData . GetUnsigned ( 123 ) , Is . EqualTo ( 123 ) ) ;
31+ Assert . That ( userData . GetDouble ( 1.23 ) , Is . EqualTo ( 1.23 ) ) ;
32+ Assert . That ( userData . GetRef < string > ( ) , Is . Null ) ;
33+ }
34+
35+ [ Test ]
36+ public void TestUnsigned ( )
37+ {
38+ ulong value = 1234567890UL ;
39+ var userData = B2UserData . Unsigned ( value ) ;
40+
41+ Assert . That ( userData . IsEmpty ( ) , Is . False ) ;
42+ Assert . That ( userData . type , Is . EqualTo ( B2UserDataType . Unsigned ) ) ;
43+ Assert . That ( userData . GetUnsigned ( ) , Is . EqualTo ( value ) ) ;
44+
45+ // Default value check
46+ Assert . That ( userData . GetSigned ( - 1 ) , Is . EqualTo ( - 1 ) ) ;
47+ Assert . That ( userData . GetDouble ( 1.23 ) , Is . EqualTo ( 1.23 ) ) ;
48+ Assert . That ( userData . GetRef < string > ( ) , Is . Null ) ;
49+ }
50+
51+ [ Test ]
52+ public void TestDouble ( )
53+ {
54+ double value = 3.14159 ;
55+ var userData = B2UserData . Double ( value ) ;
56+
57+ Assert . That ( userData . IsEmpty ( ) , Is . False ) ;
58+ Assert . That ( userData . type , Is . EqualTo ( B2UserDataType . Double ) ) ;
59+ Assert . That ( userData . GetDouble ( ) , Is . EqualTo ( value ) ) ;
60+
61+ // Default value check
62+ Assert . That ( userData . GetSigned ( - 1 ) , Is . EqualTo ( - 1 ) ) ;
63+ Assert . That ( userData . GetUnsigned ( 123 ) , Is . EqualTo ( 123 ) ) ;
64+ Assert . That ( userData . GetRef < string > ( ) , Is . Null ) ;
65+ }
66+
67+ [ Test ]
68+ public void TestRef ( )
69+ {
70+ string value = "Hello Box2D" ;
71+ var userData = B2UserData . Ref ( value ) ;
72+
73+ Assert . That ( userData . IsEmpty ( ) , Is . False ) ;
74+ Assert . That ( userData . type , Is . EqualTo ( B2UserDataType . Ref ) ) ;
75+ Assert . That ( userData . GetRef < string > ( ) , Is . EqualTo ( value ) ) ;
76+
77+ // Default value check
78+ Assert . That ( userData . GetSigned ( - 1 ) , Is . EqualTo ( - 1 ) ) ;
79+ Assert . That ( userData . GetUnsigned ( 123 ) , Is . EqualTo ( 123 ) ) ;
80+ Assert . That ( userData . GetDouble ( 1.23 ) , Is . EqualTo ( 1.23 ) ) ;
81+ }
82+
83+ [ Test ]
84+ public void TestRefTypeMismatch ( )
85+ {
86+ string value = "Hello Box2D" ;
87+ var userData = B2UserData . Ref ( value ) ;
88+
89+ // Trying to get as int (boxed) should return null because stored object is string
90+ Assert . That ( userData . GetRef < object > ( ) , Is . EqualTo ( value ) ) ;
91+
92+ // This cast will fail inside GetRef and return null
93+ var intRef = userData . GetRef < B2Body > ( ) ;
94+ Assert . That ( intRef , Is . Null ) ;
95+ }
96+ }
97+ }
0 commit comments