[Exercises] C# OOP Basics - Inheritance - Problem {4} - Online Radio Database
75/100, тестове 4 и 6 дават неправилни отговори -> https://github.com/MilenaPetkanova/csharp-oop-basics-softuni/tree/master/0402-Inheritance-Exercises/0404-Online-Radio-Database
За разлика от всички други решения, които разгледах, моето е с валидация в самия клас Song, но не смятам, че е възможно това да е проблемът.
Идеи за тестове 4 и 6 или грешки в кода ми?
Благодаря за отговора! Все пак смятам да отделя Exceptions в класове, вместо в константни променливи.
Относно последователността - изнасяйки проверките в метод с if и else if се гаратира, че ще се изпълнят точно в реда, който условието изисква. Единствената проверка, която не е направена в ValidateSong(), е "Invalid song.", но тя е изнесена още в Main метода. Покрива се и случая с подаване на по-малко аргименти, и случая с невъзможността да се изпълни int.Parse. (ред 31 - ред 41)
catch (Exception ex)
{
if (ex is ArgumentException)
Console.WriteLine(ex.Message);
else if (ex is FormatException || ex is IndexOutOfRangeException)
Console.WriteLine("Invalid song.");
}
Да покриват се съгласен съм. Трябва да изписваш Invalid song!, ако някой аргумент излезе извън рамките на масива. Но доколкото помня условието ако не се Parse-нат към число тогава имаш InvalidSongLenghtException. Тоест първо трябва да се подсигуриш че всички аргументи съществуват, а след това да провериш дали формата на времетраенето се Parse-ва успешно към число. Можеш да го видиш в моя код. Защото ако ти подадат нещо като ArtistName;SongName:asd:asd при теб ще се изпише InvalidSong понеже ще гръмне при Parse, а според условието колкото и странно да ти се струва трябва да се изпише InvalidSongLenghtException-a. Може би това е грешката.
Още повече забелязвам, че си вкарала проверка ако минутите са повече от 14, а секундите са валидни да изписваш InvalidSongLenghtException, което мисля че не е вярно, защото това е InvalidSongMinutesException. InvalidSongLenght аз го изписвам само ако имам неправилен формат.
Ясно! Тази част на условието ме затрудни и очевидно не я бях разбрала правилно. Ще преправя логиката.