@@ -85,19 +85,17 @@ public void PhoneNumberValidate_ValidNumber_ReturnsExpectedOutputs()
8585 var validator = new Validator ( ) ;
8686 validator . PhoneNumberValidate (
8787 "+1 650-253-0000" , "US" ,
88- out bool isValid , out bool isPossible , out string type ,
89- out string intl , out string national , out string e164 ,
90- out int code , out string detectedRegion ) ;
88+ out PhoneNumberInfo info , out PhoneNumberFormats formats ) ;
9189
9290 Assert . Multiple ( ( ) =>
9391 {
94- Assert . That ( isValid , Is . True ) ;
95- Assert . That ( isPossible , Is . True ) ;
96- Assert . That ( type , Is . Not . Empty ) ;
97- Assert . That ( intl , Does . StartWith ( "+1" ) ) ;
98- Assert . That ( e164 , Is . EqualTo ( "+16502530000 " ) ) ;
99- Assert . That ( code , Is . EqualTo ( 1 ) ) ;
100- Assert . That ( detectedRegion , Is . EqualTo ( "US " ) ) ;
92+ Assert . That ( info . IsValid , Is . True ) ;
93+ Assert . That ( info . IsPossibleNumber , Is . True ) ;
94+ Assert . That ( info . PhoneNumberType , Is . Not . Empty ) ;
95+ Assert . That ( info . CountryCode , Is . EqualTo ( 1 ) ) ;
96+ Assert . That ( info . DetectedRegionCode , Is . EqualTo ( "US " ) ) ;
97+ Assert . That ( formats . International , Does . StartWith ( "+1" ) ) ;
98+ Assert . That ( formats . E164 , Is . EqualTo ( "+16502530000 " ) ) ;
10199 } ) ;
102100 }
103101
@@ -107,18 +105,16 @@ public void PhoneNumberValidate_PortugalMobile_ReturnsExpectedOutputs()
107105 var validator = new Validator ( ) ;
108106 validator . PhoneNumberValidate (
109107 "+351 912 345 678" , "" ,
110- out bool isValid , out bool isPossible , out string type ,
111- out string intl , out string national , out string e164 ,
112- out int code , out string detectedRegion ) ;
108+ out PhoneNumberInfo info , out PhoneNumberFormats formats ) ;
113109
114110 Assert . Multiple ( ( ) =>
115111 {
116- Assert . That ( isValid , Is . True ) ;
117- Assert . That ( isPossible , Is . True ) ;
118- Assert . That ( type , Is . EqualTo ( "MOBILE" ) ) ;
119- Assert . That ( e164 , Is . EqualTo ( "+351912345678" ) ) ;
120- Assert . That ( code , Is . EqualTo ( 351 ) ) ;
121- Assert . That ( detectedRegion , Is . EqualTo ( "PT " ) ) ;
112+ Assert . That ( info . IsValid , Is . True ) ;
113+ Assert . That ( info . IsPossibleNumber , Is . True ) ;
114+ Assert . That ( info . PhoneNumberType , Is . EqualTo ( "MOBILE" ) ) ;
115+ Assert . That ( info . CountryCode , Is . EqualTo ( 351 ) ) ;
116+ Assert . That ( info . DetectedRegionCode , Is . EqualTo ( "PT" ) ) ;
117+ Assert . That ( formats . E164 , Is . EqualTo ( "+351912345678 " ) ) ;
122118 } ) ;
123119 }
124120
@@ -128,14 +124,12 @@ public void PhoneNumberValidate_InvalidNumber_ReturnsFalse()
128124 var validator = new Validator ( ) ;
129125 validator . PhoneNumberValidate (
130126 "not-a-number" , "US" ,
131- out bool isValid , out bool isPossible , out string type ,
132- out string intl , out string national , out string e164 ,
133- out int code , out string detectedRegion ) ;
127+ out PhoneNumberInfo info , out PhoneNumberFormats formats ) ;
134128
135129 Assert . Multiple ( ( ) =>
136130 {
137- Assert . That ( isValid , Is . False ) ;
138- Assert . That ( e164 , Is . Empty ) ;
131+ Assert . That ( info . IsValid , Is . False ) ;
132+ Assert . That ( formats . E164 , Is . Empty ) ;
139133 } ) ;
140134 }
141135
@@ -144,9 +138,7 @@ public void PhoneNumberValidate_NullInput_ThrowsArgumentNullException()
144138 {
145139 var validator = new Validator ( ) ;
146140 Assert . Throws < ArgumentNullException > ( ( ) =>
147- validator . PhoneNumberValidate (
148- null ! , "US" ,
149- out _ , out _ , out _ , out _ , out _ , out _ , out _ , out _ ) ) ;
141+ validator . PhoneNumberValidate ( null ! , "US" , out _ , out _ ) ) ;
150142 }
151143
152144 [ Test ]
@@ -155,15 +147,13 @@ public void PhoneNumberValidate_NationalFormatWithRegion_Works()
155147 var validator = new Validator ( ) ;
156148 validator . PhoneNumberValidate (
157149 "(650) 253-0000" , "US" ,
158- out bool isValid , out bool isPossible , out string type ,
159- out string intl , out string national , out string e164 ,
160- out int code , out string detectedRegion ) ;
150+ out PhoneNumberInfo info , out PhoneNumberFormats formats ) ;
161151
162152 Assert . Multiple ( ( ) =>
163153 {
164- Assert . That ( isValid , Is . True ) ;
165- Assert . That ( code , Is . EqualTo ( 1 ) ) ;
166- Assert . That ( detectedRegion , Is . EqualTo ( "US" ) ) ;
154+ Assert . That ( info . IsValid , Is . True ) ;
155+ Assert . That ( info . CountryCode , Is . EqualTo ( 1 ) ) ;
156+ Assert . That ( info . DetectedRegionCode , Is . EqualTo ( "US" ) ) ;
167157 } ) ;
168158 }
169159
@@ -173,11 +163,9 @@ public void PhoneNumberValidate_EmptyString_ReturnsFalse()
173163 var validator = new Validator ( ) ;
174164 validator . PhoneNumberValidate (
175165 "" , "US" ,
176- out bool isValid , out bool isPossible , out string type ,
177- out string intl , out string national , out string e164 ,
178- out int code , out string detectedRegion ) ;
166+ out PhoneNumberInfo info , out PhoneNumberFormats formats ) ;
179167
180- Assert . That ( isValid , Is . False ) ;
168+ Assert . That ( info . IsValid , Is . False ) ;
181169 }
182170
183171 // ── Edge cases: region code handling ──
@@ -188,11 +176,9 @@ public void PhoneNumberValidate_LowercaseRegion_Works()
188176 var validator = new Validator ( ) ;
189177 validator . PhoneNumberValidate (
190178 "(650) 253-0000" , "us" ,
191- out bool isValid , out bool isPossible , out string type ,
192- out string intl , out string national , out string e164 ,
193- out int code , out string detectedRegion ) ;
179+ out PhoneNumberInfo info , out PhoneNumberFormats formats ) ;
194180
195- Assert . That ( isValid , Is . True ) ;
181+ Assert . That ( info . IsValid , Is . True ) ;
196182 }
197183
198184 [ Test ]
@@ -201,11 +187,9 @@ public void PhoneNumberValidate_PaddedRegion_Works()
201187 var validator = new Validator ( ) ;
202188 validator . PhoneNumberValidate (
203189 "(650) 253-0000" , " US " ,
204- out bool isValid , out bool isPossible , out string type ,
205- out string intl , out string national , out string e164 ,
206- out int code , out string detectedRegion ) ;
190+ out PhoneNumberInfo info , out PhoneNumberFormats formats ) ;
207191
208- Assert . That ( isValid , Is . True ) ;
192+ Assert . That ( info . IsValid , Is . True ) ;
209193 }
210194
211195 [ Test ]
@@ -214,14 +198,12 @@ public void PhoneNumberValidate_NullRegionCode_WithInternationalNumber()
214198 var validator = new Validator ( ) ;
215199 validator . PhoneNumberValidate (
216200 "+351912345678" , null ! ,
217- out bool isValid , out bool isPossible , out string type ,
218- out string intl , out string national , out string e164 ,
219- out int code , out string detectedRegion ) ;
201+ out PhoneNumberInfo info , out PhoneNumberFormats formats ) ;
220202
221203 Assert . Multiple ( ( ) =>
222204 {
223- Assert . That ( isValid , Is . True ) ;
224- Assert . That ( detectedRegion , Is . EqualTo ( "PT" ) ) ;
205+ Assert . That ( info . IsValid , Is . True ) ;
206+ Assert . That ( info . DetectedRegionCode , Is . EqualTo ( "PT" ) ) ;
225207 } ) ;
226208 }
227209
@@ -231,14 +213,12 @@ public void PhoneNumberValidate_InvalidRegionCode_WithInternationalNumber()
231213 var validator = new Validator ( ) ;
232214 validator . PhoneNumberValidate (
233215 "+351912345678" , "XX" ,
234- out bool isValid , out bool isPossible , out string type ,
235- out string intl , out string national , out string e164 ,
236- out int code , out string detectedRegion ) ;
216+ out PhoneNumberInfo info , out PhoneNumberFormats formats ) ;
237217
238218 Assert . Multiple ( ( ) =>
239219 {
240- Assert . That ( isValid , Is . True ) ;
241- Assert . That ( detectedRegion , Is . EqualTo ( "PT" ) ) ;
220+ Assert . That ( info . IsValid , Is . True ) ;
221+ Assert . That ( info . DetectedRegionCode , Is . EqualTo ( "PT" ) ) ;
242222 } ) ;
243223 }
244224
@@ -248,11 +228,9 @@ public void PhoneNumberValidate_InvalidRegionCode_WithNationalNumber_ReturnsFals
248228 var validator = new Validator ( ) ;
249229 validator . PhoneNumberValidate (
250230 "(650) 253-0000" , "XX" ,
251- out bool isValid , out bool isPossible , out string type ,
252- out string intl , out string national , out string e164 ,
253- out int code , out string detectedRegion ) ;
231+ out PhoneNumberInfo info , out PhoneNumberFormats formats ) ;
254232
255- Assert . That ( isValid , Is . False ) ;
233+ Assert . That ( info . IsValid , Is . False ) ;
256234 }
257235
258236 [ Test ]
@@ -261,11 +239,24 @@ public void PhoneNumberValidate_VeryLongInput_ReturnsFalse()
261239 var validator = new Validator ( ) ;
262240 validator . PhoneNumberValidate (
263241 new string ( '1' , 500 ) , "US" ,
264- out bool isValid , out bool isPossible , out string type ,
265- out string intl , out string national , out string e164 ,
266- out int code , out string detectedRegion ) ;
242+ out PhoneNumberInfo info , out PhoneNumberFormats formats ) ;
267243
268- Assert . That ( isValid , Is . False ) ;
244+ Assert . That ( info . IsValid , Is . False ) ;
245+ }
246+
247+ [ Test ]
248+ public void PhoneNumberValidate_ValidNumber_FormatsIncludeRFC3966 ( )
249+ {
250+ var validator = new Validator ( ) ;
251+ validator . PhoneNumberValidate (
252+ "+16502530000" , "" ,
253+ out PhoneNumberInfo info , out PhoneNumberFormats formats ) ;
254+
255+ Assert . Multiple ( ( ) =>
256+ {
257+ Assert . That ( info . IsValid , Is . True ) ;
258+ Assert . That ( formats . RFC3966 , Is . EqualTo ( "tel:+1-650-253-0000" ) ) ;
259+ } ) ;
269260 }
270261 }
271262}
0 commit comments