@@ -96,5 +96,68 @@ public void GetPtrTest()
9696 wrap2 . Dispose ( ) ;
9797 }
9898 }
99+
100+ [ Test ]
101+ public void GetOutTest ( )
102+ {
103+ unsafe
104+ {
105+ var wrap2 = new Struct . HelpStructWrapper ( ) ;
106+ var helpStructValueIn = new HelpStruct ( )
107+ {
108+ Int32 = 45 ,
109+ Int64 = 4564564564 ,
110+ HelpClass = new HelpClass ( )
111+ {
112+ Int32 = 12 ,
113+ Int64 = 321123 ,
114+ HelpStruct2 = new HelpStruct2 ( 321 , 98746512 ) ,
115+ HelpClass2 = new HelpClass ( )
116+ {
117+ Int32 = 238 ,
118+ Int64 = 40 ,
119+ HelpStruct2 = new HelpStruct2 ( 1 , 2 )
120+ }
121+ }
122+ } ;
123+ wrap2 . Fill ( in helpStructValueIn ) ;
124+
125+ IntPtr helpClass2Out ;
126+ wrap2 . GetOutHelpClass2 ( out helpClass2Out ) ;
127+ Assert . That ( helpClass2Out , Is . EqualTo ( IntPtr . Zero ) ) ;
128+ long int64Out ;
129+ wrap2 . GetOutInt64 ( out int64Out ) ;
130+ Assert . That ( int64Out , Is . EqualTo ( 4564564564 ) ) ;
131+ int int32Out ;
132+ wrap2 . GetOutInt32 ( out int32Out ) ;
133+ Assert . That ( int32Out , Is . EqualTo ( 45 ) ) ;
134+ HelpClass helpClassValue ;
135+ wrap2 . GetOutHelpClass ( out helpClassValue ) ;
136+ Assert . That ( helpClassValue . Int32 , Is . EqualTo ( 12 ) ) ;
137+ Assert . That ( helpClassValue . Int64 , Is . EqualTo ( 321123 ) ) ;
138+ Assert . That ( helpClassValue . HelpStruct2 , Is . EqualTo ( new HelpStruct2 ( 321 , 98746512 ) ) ) ;
139+ Assert . That ( helpClassValue . HelpClass2 , Is . EqualTo ( null ) ) ;
140+
141+ var wrapClass = new Struct . HelpClassWrapper ( ) ;
142+ wrapClass . Fill ( new HelpClass ( 44 , 235 , new HelpStruct2 ( 140 , 78 ) ) ) ;
143+ var wrapClass2 = new Struct . HelpClassWrapper ( wrap2 . HelpClassPtr , false ) ;
144+ wrapClass2 . HelpClass2 = new IntPtr ( wrapClass . Ptr ) ;
145+
146+ HelpClass helpClassValue2 ;
147+ wrap2 . GetOutHelpClass ( out helpClassValue2 ) ;
148+ Assert . That ( helpClassValue2 . Int32 , Is . EqualTo ( 12 ) ) ;
149+ Assert . That ( helpClassValue2 . Int64 , Is . EqualTo ( 321123 ) ) ;
150+ Assert . That ( helpClassValue2 . HelpStruct2 , Is . EqualTo ( new HelpStruct2 ( 321 , 98746512 ) ) ) ;
151+ Assert . That ( helpClassValue2 . HelpClass2 , Is . Not . EqualTo ( null ) ) ;
152+
153+ Assert . That ( helpClassValue2 . HelpClass2 . Int32 , Is . EqualTo ( 44 ) ) ;
154+ Assert . That ( helpClassValue2 . HelpClass2 . Int64 , Is . EqualTo ( 235 ) ) ;
155+ Assert . That ( helpClassValue2 . HelpClass2 . HelpStruct2 , Is . EqualTo ( new HelpStruct2 ( 140 , 78 ) ) ) ;
156+ Assert . That ( helpClassValue2 . HelpClass2 . HelpClass2 , Is . EqualTo ( null ) ) ;
157+
158+ wrapClass . Dispose ( ) ;
159+ wrap2 . Dispose ( ) ;
160+ }
161+ }
99162 }
100163}
0 commit comments