Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion exercises/practice/phone-number/.meta/example.ml
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,9 @@ let number s =
else
let s = String.filter ~f:(Char.is_digit) s in
match String.length s with
| x when x < 10 -> Error "must not be fewer than 10 digits"
| 10 -> check_valid_first_digits s
| 11 when Char.(String.get s 0 = '1') -> check_valid_first_digits (String.drop_prefix s 1)
| 11 -> Error "11 digits must start with 1"
| x when x > 11 -> Error "more than 11 digits"
| x when x > 11 -> Error "must not be greater than 11 digits"
| _ -> Error "incorrect number of digits"
2 changes: 1 addition & 1 deletion exercises/practice/phone-number/dune-project
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
(lang dune 1.1)
(version 1.7.0)
(version 1.0)
10 changes: 5 additions & 5 deletions exercises/practice/phone-number/test.ml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(* phone-number - 1.7.0 *)
(* phone-number - 1.0 *)
open Base
open OUnit2
open Phone_number
Expand All @@ -18,19 +18,19 @@ let tests = [
"cleans numbers with multiple spaces" >::
ae (Ok "2234567890") (number "223 456 7890 ");
"invalid when 9 digits" >::
ae (Error "incorrect number of digits") (number "123456789");
ae (Error "must not be fewer than 10 digits") (number "123456789");
"invalid when 11 digits does not start with a 1" >::
ae (Error "11 digits must start with 1") (number "22234567890");
"valid when 11 digits and starting with 1" >::
ae (Ok "2234567890") (number "12234567890");
"valid when 11 digits and starting with 1 even with punctuation" >::
ae (Ok "2234567890") (number "+1 (223) 456-7890");
"invalid when more than 11 digits" >::
ae (Error "more than 11 digits") (number "321234567890");
ae (Error "must not be greater than 11 digits") (number "321234567890");
"invalid with letters" >::
ae (Error "letters not permitted") (number "123-abc-7890");
ae (Error "letters not permitted") (number "523-abc-7890");
"invalid with punctuations" >::
ae (Error "punctuations not permitted") (number "123-@:!-7890");
ae (Error "punctuations not permitted") (number "523-@:!-7890");
"invalid if area code starts with 0" >::
ae (Error "area code cannot start with zero") (number "(023) 456-7890");
"invalid if area code starts with 1" >::
Expand Down
Loading