Решение на Регулярни изрази от Георги Стайков
Резултати
- 8 точки от тестове
- 0 бонус точки
- 8 точки общо
- 32 успешни тест(а)
- 7 неуспешни тест(а)
Код
Лог от изпълнението
....F...........F....FFF..FF...........
======================================================================
FAIL: test_does_not_filter_invalid_phone_numbers (test.PrivacyFilterTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "lib/language/python/runner.py", line 60, in thread
raise it.exc_info[1]
File "lib/language/python/runner.py", line 48, in run
self.result = func(*args, **kwargs)
File "/tmp/d20140513-11348-mdl0rt/test.py", line 86, in test_does_not_filter_invalid_phone_numbers
self.assertEqual(filtered, solution.PrivacyFilter(text).filtered())
AssertionError: 'Reach me at: 0885123' != 'Reach me at: [PHONE]'
- Reach me at: 0885123
+ Reach me at: [PHONE]
======================================================================
FAIL: test_can_validate_more_complex_phone_numbers (test.ValidationsTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "lib/language/python/runner.py", line 60, in thread
raise it.exc_info[1]
File "lib/language/python/runner.py", line 48, in run
self.result = func(*args, **kwargs)
File "/tmp/d20140513-11348-mdl0rt/test.py", line 160, in test_can_validate_more_complex_phone_numbers
self.assertIs(solution.Validations.is_phone(phone), valid)
AssertionError: True is not False
======================================================================
FAIL: test_does_not_break_on_phones_in_multiline_strings (test.ValidationsTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "lib/language/python/runner.py", line 60, in thread
raise it.exc_info[1]
File "lib/language/python/runner.py", line 48, in run
self.result = func(*args, **kwargs)
File "/tmp/d20140513-11348-mdl0rt/test.py", line 163, in test_does_not_break_on_phones_in_multiline_strings
self.assertFalse(solution.Validations.is_phone("0885123123\nwat?"))
AssertionError: True is not false
======================================================================
FAIL: test_handles_multiline_strings_in_IP_validation_properly (test.ValidationsTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "lib/language/python/runner.py", line 60, in thread
raise it.exc_info[1]
File "lib/language/python/runner.py", line 48, in run
self.result = func(*args, **kwargs)
File "/tmp/d20140513-11348-mdl0rt/test.py", line 189, in test_handles_multiline_strings_in_IP_validation_properly
self.assertFalse(solution.Validations.is_ip_address("8.8.8.8\n"))
AssertionError: True is not false
======================================================================
FAIL: test_handles_multiline_strings_in_hostname_validation_properly (test.ValidationsTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "lib/language/python/runner.py", line 60, in thread
raise it.exc_info[1]
File "lib/language/python/runner.py", line 48, in run
self.result = func(*args, **kwargs)
File "/tmp/d20140513-11348-mdl0rt/test.py", line 179, in test_handles_multiline_strings_in_hostname_validation_properly
self.assertFalse(solution.Validations.is_hostname("foo.com\n"))
AssertionError: True is not false
======================================================================
FAIL: test_handles_newlines_in_date_validation (test.ValidationsTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "lib/language/python/runner.py", line 60, in thread
raise it.exc_info[1]
File "lib/language/python/runner.py", line 48, in run
self.result = func(*args, **kwargs)
File "/tmp/d20140513-11348-mdl0rt/test.py", line 259, in test_handles_newlines_in_date_validation
self.assertFalse(solution.Validations.is_date("2012-11-19\n"))
AssertionError: True is not false
======================================================================
FAIL: test_handles_newlines_in_time_and_datetime_validation (test.ValidationsTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "lib/language/python/runner.py", line 60, in thread
raise it.exc_info[1]
File "lib/language/python/runner.py", line 48, in run
self.result = func(*args, **kwargs)
File "/tmp/d20140513-11348-mdl0rt/test.py", line 288, in test_handles_newlines_in_time_and_datetime_validation
self.assertFalse(solution.Validations.is_time("12:01:01\n"))
AssertionError: True is not false
----------------------------------------------------------------------
Ran 39 tests in 0.057s
FAILED (failures=7)
История (3 версии и 2 коментара)
Георги обнови решението на 21.04.2014 01:51 (преди над 11 години)
Валидаторите ти се дънят при един специален случай. Помисли дали \b няма да ти реши проблема 
Не разбирам какво имаш в предвид. Нали на валидаторите се подава някакъв стринг и валидаторът трябва да прецени дали стринга е валидно Х (нещо) или не е валидно Х ? Какъв е този специален случай и защо ми е \b след като стринга или е валиден телефон или не е валиден телефон (примерно) и няма думи преди и след него,защо ми е разделител за думи (\b) ? Или идеята ти е че на валидаторите може да се подава цяло изречение и валидатора да преценя дали в изречението има валиден телефон ? Това не ми се струва правилно, защото тъй като валидатора връща True/False ние трябва да го питаме за конкретно нещо не за цяло изречение. И като цяло името на валидатора говори за това - подадения стринг телефон ли е или не. А не подаденото изречение телефон ли е или не, защото най-малкото звучи нелогично ?
П.П Тоест идеята е регулярния ми израз за телефон да стане -> \bрегулярният ми израз за телефон\b ?
П.П2 А иначе като цяло регулярните ми изрази ОК ли са ?
