Няма тестове? Мрън.
Пета задача
За всеобща радост на народа, тестове има и като минат качествен контрол, ще бъдат публикувани (разбирай днес по някое време). Много е вероятно по същото време да станат публично достояние и безсрамно жестоките изисквания, които skeptic ще налага.
:)
Примерният тест за пета задача е вече публично достояние, можете да го намерите в GitHub-хранилището с домашните.
Публикувани са и ограниченията за Skeptic, можете да ги видите в края на условието на задачата.
С тези 46 test case-а, това пълния тест за тестване ли е?
Сигурно е той. Още е известен като "пълния член" :D Мерсим.
Като каза пълен член, се сетих, как не оставихте на лекцията господин Кънев да си каже аргументите против него. Много щеше да е интересно.
За да не е офтопик прилагам Rake файл към 5 задача:
desc 'Checks everything' task :check do system("skeptic --no-semicolons --line-length 90 --max-nesting-depth 2 --methods-per-class 10 --lines-per-method 8 solution.rb") or exit(1) system("rspec --require ./solution.rb --color --fail-fast ./sample_spec.rb") or exit(1) end desc 'Starts watchr' task :watch do system 'watchr watchr.rb' end
И watchr.rb:
watch('solution.rb') do system "clear" system "rake check" end
Само трябва да си сложите solution.rb, sample_spec.rb и watchr.rb в една директория.
Пуска се със: rake check
Може да съм в грешка, но не ти ли е излишен Rakefile-a и по-скоро да се пуска с
watchr watchr.rb
, където в watchr.rb имашwatch('solution.rb') do system "clear" system("skeptic --no-semicolons --line-length 90 --max-nesting-depth 2 --methods-per-class 10 --lines-per-method 8 solution.rb") or exit(1) system("rspec --require ./solution.rb --color --fail-fast ./sample_spec.rb") or exit(1) end
?
Извикваш
rake check
в watch.rb и watch.rb в rakefile-a... Има ли нужда от това?Видях, че в предишния файл се прави така и затова го направих по този начин.
Идеята е че с rake watchr си пускаш watchr, а с rake check си пускаш skeptic и rspec. Тоест Rake файла ти е интерфейса.
Между другото този сайт е удобен начин да си тестваме регулярни изрази в ruby и може да е от полза за домашното. Има и малък reference отдолу за синтаксиса на регулярните изрази.
В публикувания примерен тест са изпуснати няколко spec-а, които ще ги има, когато ви проверяваме задачата. За някои от липсващите проверки можете да се сетите, като разгледате внимателно наличните spec-ове. За други просто трябва да внимавате в условието и да видите кое не е spec-нато добре/пълно.
С други думи, не си мислете, че някой ви е свършил цялата работа по тестването и вие нямате да правите нищо :)
Ако имате някакви въпроси или проблеми с условието или теста, питайте.
Ред, на който има само whitespace, счита ли се за празен? Тоест: Some text
Other text
Ще продуцира
Some text
Other text</p>
или ще продуцира?
Some text
<p>Other text</p>
Има интервал на разделящия ред.
Предполагам, че прилагаме правилото:
Whitespace в началото или в края на ред трябва да бъде премахван, освен ако в някоя от по-горните секции не е указано друго.
и става второто.
@Георги
Сайта е доста удобен, но е на 1.8.7. И тъй като намирам известни разлики в output-a, по-скоро не бих го използвал :)
В блоковете от код не се прилага никакво друго форматиране.
Това не значи ли, че и в блокове с код не трябва да се екранират специалните символи (например &)?
Според примерния тест трябва, което ме навежда на извода, че аз не разбирам горния цитат (екранирането не се води форматиране) или той е неточно формулиран, или има грешка в тестовете.
Предполагам, че ми става навик да си питам разни неща, но имам още един въпрос (искам още едно потвърждение).
[Ползвайте _Google_](http://google.com/).
Ще продуцира
<a href="http://google.com/">Ползвайте <em>Google</em></a>
П.С: Видях в условието къде го пише, но оставям въпроса, ако някой друг не го е забелязал.
@Ивайло Петров,
- Относно въпроса ти за whitespace, си интерпретирал условието правилно. Тоест, резултатът от примера, който си дал, е точно "второто".
- В блоковете с код не се приглага никакво форматиране, освен екраниране на специални символи. Не е споменато изрично нито в секцията за блокове с код, нито в секцията за специални символи и е объркващо. Затова ще го променя. Тестът е правилен.
- Относно форматирането в текста на линкове — да, почти си прав.
Правя единствено следното малко уточнение:
[Ползвайте _Google_](някакъв-адрес).
Ще продуцира:
<a href="някакъв-адрес">Ползвайте <em>Google</em></a>.
(Изпуснал си една точка в края :))
В теста има един ред, който не ми е ясен:
" # Test with a header \n\n" =>
Очаква се да се получи header. Тук не трябва ли да се изкара параграф, т.к. пред # има space?
аз също имах подобен въпрос ... тоест: # header with a space before '#' #header without space after '#' 1.long first element ........................................ this is still element 1. but with enter at the end for better reading 2.second element
в случай имаме странни whitespace-ове преди и след форматиращите символи и елемнт на лист който е разделен на три реда със \n за да се чете по лесно - какъв е очаквания изход ?
@Тони Ризов, в твоя случай трябва да си изведе header, по правилото, че щом редът не започва с поне четири интервала, значи не е ред от блок с код, следователно, тъй като няма друго изрично правило, важи правилото:
Whitespace в началото или в края на ред трябва да бъде премахван, освен ако в някоя от по-горните секции не е указано друго.
След като се премахне този whitespace, форматирането на header си е по правилата.
@Михаил Стойков, не може да разделиш един
li
-елемент на няколко нови реда по този начин. Това би означавало, че новият ред, незапочващ с "1. нещо си", ще се брои като начало на параграф. Между другото, списъчните ти елементи не са валидни (нямат интервал след точката).Един тъп въпрос, но когато имаме подреден списък - следим ли дали му е правилна номерацията (и имаме ли изобщо начин да направим толкова умни шаблони или става по 'тъпия начин')?
Например 1. Първи елемент 1. Втори първи елемент 5. Пети елемент от космоса
Това би се хванало от идеята '\d+.\s.+', но реалноне е валиден списък.
@Иван Арабаджиев - не, не я следим.
Следващ тъп въпрос:) Гърми ми проверката за правене на множество параграфи. Понеже съм си го пробвал при мен, реших да погледна какво се случва и виждам следното :
[359] pry(main)> plain = <<-END [359] pry(main)* First line [359] pry(main)* [359] pry(main)* Second line [359] pry(main)* [359] pry(main)* Third line [359] pry(main)* END => "First line\nSecond line\nThird line\n" [360] pry(main)> puts plain First line Second line Third line
Въпроса ми е следния - аз ли бъркам нещо, или въведен по този начин входния
String
всъщност са 3 реда, без празен между тях и не са 3 различни параграфа?ПС Копирал съм 1:1 от
sample_spec.rb
Понеже ми изглежда грозно да пусна 2 поредни поста - редактирам този. Реших си горния проблем, но сега имам друг expected: "
First line
\n\nSecond line
\n\nThird line
" got: "First line
\n\nSecond line
\n\nThird line
\n"Тук поразгледах внимателно и виждам, че във входния
String
има нов ред на края. Очаква ли се от нас в крайна сметка да игнорираме такъв нов ред?Отново се сетих за нещо, което не съм сигурен. Следното вярно ли е? "test\n \nother" => "
test
\n\nother
"Позовавам се на правилото:
Whitespace в началото или в края на ред трябва да бъде премахван, освен ако в някоя от по-горните секции не е указано друго.
@Ивайло Петров и @Иван Арабаджиев — отговорът е "да" и за двамата.
Очаква се да игнорирате въпросния whitespace.
Здравейте!
Как решавате проблема с кирилицата. Почти съм готов, но не ми мачва кирилски букви, не ми дава да ги присвоявам даже. Файла е UTF-8 кодиран, а това the_text = <<INPUT_TEXT # асдасдасдас INPUT_TEXT дава
solution.rb:101: invalid multibyte char (US-ASCII)
@Николай пробва ли да сложиш u в края на шаблона? Това може да е полезно.
Сложи # encoding: UTF-8 в началото на файла си и нямаш грижи.
Дали ще може срокът да бъде удължен с 1 час :Д
Дам, и аз съм навит за час бонус :)
Дам... Беше подло да орежете последната минута без предупреждение. Не можах да си къмитна последния къмит ;(
delete
@Мария: Къмит? Надявам се нямаш предвид Github? Никъде не е указано, че трябва да използваме Git за петото домашно, нали?
Трябва да сте влезли в системата, за да може да отговаряте на теми.