Skip to content

Commit 623f5b3

Browse files
Improved ouputs
1 parent d7283ad commit 623f5b3

8 files changed

Lines changed: 203 additions & 190 deletions

File tree

OutSystems.PhoneNumberValidator.UnitTests/PhoneNumberValidator.Format.Tests.cs

Lines changed: 22 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -49,18 +49,16 @@ public void PhoneNumberFormat_ValidNumber_ReturnsAllFormats()
4949
var validator = new Validator();
5050
validator.PhoneNumberFormat(
5151
"+1 650-253-0000", "",
52-
out bool success, out string error,
53-
out string intl, out string national,
54-
out string e164, out string rfc3966);
52+
out bool success, out string error, out PhoneNumberFormats formats);
5553

5654
Assert.Multiple(() =>
5755
{
5856
Assert.That(success, Is.True);
5957
Assert.That(error, Is.Empty);
60-
Assert.That(intl, Is.EqualTo("+1 650-253-0000"));
61-
Assert.That(national, Is.EqualTo("(650) 253-0000"));
62-
Assert.That(e164, Is.EqualTo("+16502530000"));
63-
Assert.That(rfc3966, Is.EqualTo("tel:+1-650-253-0000"));
58+
Assert.That(formats.International, Is.EqualTo("+1 650-253-0000"));
59+
Assert.That(formats.National, Is.EqualTo("(650) 253-0000"));
60+
Assert.That(formats.E164, Is.EqualTo("+16502530000"));
61+
Assert.That(formats.RFC3966, Is.EqualTo("tel:+1-650-253-0000"));
6462
});
6563
}
6664

@@ -70,15 +68,13 @@ public void PhoneNumberFormat_PortugalNumber_ReturnsAllFormats()
7068
var validator = new Validator();
7169
validator.PhoneNumberFormat(
7270
"+351912345678", "",
73-
out bool success, out string error,
74-
out string intl, out string national,
75-
out string e164, out string rfc3966);
71+
out bool success, out string error, out PhoneNumberFormats formats);
7672

7773
Assert.Multiple(() =>
7874
{
7975
Assert.That(success, Is.True);
80-
Assert.That(e164, Is.EqualTo("+351912345678"));
81-
Assert.That(rfc3966, Does.StartWith("tel:"));
76+
Assert.That(formats.E164, Is.EqualTo("+351912345678"));
77+
Assert.That(formats.RFC3966, Does.StartWith("tel:"));
8278
});
8379
}
8480

@@ -88,18 +84,16 @@ public void PhoneNumberFormat_InvalidNumber_ReturnsFalseWithError()
8884
var validator = new Validator();
8985
validator.PhoneNumberFormat(
9086
"garbage", "US",
91-
out bool success, out string error,
92-
out string intl, out string national,
93-
out string e164, out string rfc3966);
87+
out bool success, out string error, out PhoneNumberFormats formats);
9488

9589
Assert.Multiple(() =>
9690
{
9791
Assert.That(success, Is.False);
9892
Assert.That(error, Is.Not.Empty);
99-
Assert.That(intl, Is.Empty);
100-
Assert.That(national, Is.Empty);
101-
Assert.That(e164, Is.Empty);
102-
Assert.That(rfc3966, Is.Empty);
93+
Assert.That(formats.International, Is.Empty);
94+
Assert.That(formats.National, Is.Empty);
95+
Assert.That(formats.E164, Is.Empty);
96+
Assert.That(formats.RFC3966, Is.Empty);
10397
});
10498
}
10599

@@ -108,9 +102,7 @@ public void PhoneNumberFormat_NullInput_ThrowsArgumentNullException()
108102
{
109103
var validator = new Validator();
110104
Assert.Throws<ArgumentNullException>(() =>
111-
validator.PhoneNumberFormat(
112-
null!, "US",
113-
out _, out _, out _, out _, out _, out _));
105+
validator.PhoneNumberFormat(null!, "US", out _, out _, out _));
114106
}
115107

116108
[Test]
@@ -119,14 +111,12 @@ public void PhoneNumberFormat_NationalWithRegion_Succeeds()
119111
var validator = new Validator();
120112
validator.PhoneNumberFormat(
121113
"(650) 253-0000", "US",
122-
out bool success, out string error,
123-
out string intl, out string national,
124-
out string e164, out string rfc3966);
114+
out bool success, out string error, out PhoneNumberFormats formats);
125115

126116
Assert.Multiple(() =>
127117
{
128118
Assert.That(success, Is.True);
129-
Assert.That(e164, Is.EqualTo("+16502530000"));
119+
Assert.That(formats.E164, Is.EqualTo("+16502530000"));
130120
});
131121
}
132122

@@ -138,14 +128,12 @@ public void PhoneNumberFormat_LowercaseRegion_Works()
138128
var validator = new Validator();
139129
validator.PhoneNumberFormat(
140130
"(650) 253-0000", "us",
141-
out bool success, out string error,
142-
out string intl, out string national,
143-
out string e164, out string rfc3966);
131+
out bool success, out string error, out PhoneNumberFormats formats);
144132

145133
Assert.Multiple(() =>
146134
{
147135
Assert.That(success, Is.True);
148-
Assert.That(e164, Is.EqualTo("+16502530000"));
136+
Assert.That(formats.E164, Is.EqualTo("+16502530000"));
149137
});
150138
}
151139

@@ -155,9 +143,7 @@ public void PhoneNumberFormat_PaddedRegion_Works()
155143
var validator = new Validator();
156144
validator.PhoneNumberFormat(
157145
"(650) 253-0000", " US ",
158-
out bool success, out string error,
159-
out string intl, out string national,
160-
out string e164, out string rfc3966);
146+
out bool success, out string error, out PhoneNumberFormats formats);
161147

162148
Assert.That(success, Is.True);
163149
}
@@ -168,9 +154,7 @@ public void PhoneNumberFormat_InvalidRegionCode_NationalNumber_Fails()
168154
var validator = new Validator();
169155
validator.PhoneNumberFormat(
170156
"(650) 253-0000", "XX",
171-
out bool success, out string error,
172-
out string intl, out string national,
173-
out string e164, out string rfc3966);
157+
out bool success, out string error, out PhoneNumberFormats formats);
174158

175159
Assert.That(success, Is.False);
176160
}
@@ -181,14 +165,12 @@ public void PhoneNumberFormat_NullRegionCode_InternationalNumber_Succeeds()
181165
var validator = new Validator();
182166
validator.PhoneNumberFormat(
183167
"+16502530000", null!,
184-
out bool success, out string error,
185-
out string intl, out string national,
186-
out string e164, out string rfc3966);
168+
out bool success, out string error, out PhoneNumberFormats formats);
187169

188170
Assert.Multiple(() =>
189171
{
190172
Assert.That(success, Is.True);
191-
Assert.That(e164, Is.EqualTo("+16502530000"));
173+
Assert.That(formats.E164, Is.EqualTo("+16502530000"));
192174
});
193175
}
194176
}

OutSystems.PhoneNumberValidator.UnitTests/PhoneNumberValidator.Validate.Tests.cs

Lines changed: 54 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)