@@ -5,13 +5,15 @@ import Testing
55
66@Suite ( " DisplayOption tests " )
77struct DisplayOptionTests {
8- @Test func displayOptionAllowedUnits( ) {
8+ @Test ( " allowedUnits: проверка корректных единиц для каждого DisplayOption " )
9+ func displayOptionAllowedUnits( ) {
910 #expect( DisplayOption . day. allowedUnits == [ . day] )
1011 #expect( DisplayOption . monthDay. allowedUnits == [ . month, . day] )
1112 #expect( DisplayOption . yearMonthDay. allowedUnits == [ . year, . month, . day] )
1213 }
1314
14- @Test func displayOptionLocalizedTitle( ) {
15+ @Test ( " localizedTitle: проверка локализованных заголовков " )
16+ func displayOptionLocalizedTitle( ) {
1517 let dayTitle = DisplayOption . day. localizedTitle
1618 let monthDayTitle = DisplayOption . monthDay. localizedTitle
1719 let yearMonthDayTitle = DisplayOption . yearMonthDay. localizedTitle
@@ -20,54 +22,70 @@ struct DisplayOptionTests {
2022 #expect( yearMonthDayTitle == LocalizedStringKey ( " Years, months and days " ) )
2123 }
2224
23- @Test ( arguments: abbreviatedTestCases)
24- func makeUnitsStyleAbbreviated( years: Int , months: Int , days: Int ) throws {
25- let style = DisplayOption . makeUnitsStyle ( years: years, months: months, days: days)
25+ @Test ( " .day: вне зависимости от значений всегда .full " , arguments: allCombos)
26+ func unitsStyle_day_alwaysFull( years: Int , months: Int , days: Int ) {
27+ let style = DisplayOption . day. unitsStyle ( years: years, months: months, days: days)
28+ #expect( style == . full)
29+ }
30+
31+ @Test ( " .monthDay: .short, если есть месяцы и дни одновременно " , arguments: monthDayShortCombos)
32+ func unitsStyle_monthDay_short_whenMonthsAndDays( years: Int , months: Int , days: Int ) {
33+ let style = DisplayOption . monthDay. unitsStyle ( years: years, months: months, days: days)
34+ #expect( style == . short)
35+ }
36+
37+ @Test ( " .monthDay: .full в остальных случаях " , arguments: monthDayFullCombos)
38+ func unitsStyle_monthDay_full_otherwise( years: Int , months: Int , days: Int ) {
39+ let style = DisplayOption . monthDay. unitsStyle ( years: years, months: months, days: days)
40+ #expect( style == . full)
41+ }
42+
43+ @Test ( " .yearMonthDay: .abbreviated когда все три значения " , arguments: ymdAbbreviatedCombos)
44+ func unitsStyle_yearMonthDay_abbreviated_whenAll( years: Int , months: Int , days: Int ) {
45+ let style = DisplayOption . yearMonthDay. unitsStyle ( years: years, months: months, days: days)
2646 #expect( style == . abbreviated)
2747 }
2848
29- @Test ( arguments: shortTestCases )
30- func makeUnitsStyleShort ( years: Int , months: Int , days: Int ) throws {
31- let style = DisplayOption . makeUnitsStyle ( years: years, months: months, days: days)
49+ @Test ( " .yearMonthDay: .short когда два значения " , arguments: ymdShortCombos )
50+ func unitsStyle_yearMonthDay_short_whenTwo ( years: Int , months: Int , days: Int ) {
51+ let style = DisplayOption . yearMonthDay . unitsStyle ( years: years, months: months, days: days)
3252 #expect( style == . short)
3353 }
3454
35- @Test ( arguments: fullTestCases )
36- func makeUnitsStyleFull ( years: Int , months: Int , days: Int ) throws {
37- let style = DisplayOption . makeUnitsStyle ( years: years, months: months, days: days)
55+ @Test ( " .yearMonthDay: .full когда ноль или одно значение " , arguments: ymdFullCombos )
56+ func unitsStyle_yearMonthDay_full_whenZeroOrOne ( years: Int , months: Int , days: Int ) {
57+ let style = DisplayOption . yearMonthDay . unitsStyle ( years: years, months: months, days: days)
3858 #expect( style == . full)
3959 }
4060
4161 // MARK: - Параметры для тестов
4262
43- /// Все три компонента ненулевые
44- static let abbreviatedTestCases : [ ( years: Int , months: Int , days: Int ) ] = [
45- ( 1 , 1 , 1 ) , // положительные значения
46- ( - 1 , 1 , 1 ) , // отрицательный год
47- ( 1 , - 1 , 1 ) , // отрицательный месяц
48- ( 1 , 1 , - 1 ) , // отрицательный день
49- ( - 1 , - 1 , - 1 ) , // все отрицательные
63+ /// Набор общих комбо для проверки .day (всегда .full)
64+ static let allCombos : [ ( years: Int , months: Int , days: Int ) ] = [
65+ ( 0 , 0 , 0 ) , ( 1 , 0 , 0 ) , ( 0 , 1 , 0 ) , ( 0 , 0 , 1 ) , ( 1 , 1 , 0 ) , ( 1 , 0 , 1 ) , ( 0 , 1 , 1 ) , ( 1 , 1 , 1 ) ,
66+ ( - 1 , 0 , 0 ) , ( 0 , - 1 , 0 ) , ( 0 , 0 , - 1 ) , ( - 1 , - 1 , 0 ) , ( - 1 , 0 , - 1 ) , ( 0 , - 1 , - 1 ) , ( - 1 , - 1 , - 1 ) ,
67+ ]
68+
69+ /// Для .monthDay -> .short, когда одновременно есть месяцы и дни (годы не важны)
70+ static let monthDayShortCombos : [ ( years: Int , months: Int , days: Int ) ] = [
71+ ( 0 , 1 , 1 ) , ( 1 , 1 , 1 ) , ( - 1 , 1 , 1 ) , ( 1 , - 1 , 1 ) , ( 1 , 1 , - 1 ) ,
72+ ]
73+
74+ /// Для .monthDay -> .full в остальных случаях (нет одновременных месяцев и дней)
75+ static let monthDayFullCombos : [ ( years: Int , months: Int , days: Int ) ] = [
76+ ( 0 , 0 , 0 ) , ( 1 , 0 , 0 ) , ( 0 , 1 , 0 ) , ( 0 , 0 , 1 ) , ( 1 , 0 , 1 ) , ( - 1 , 1 , 0 ) , ( 1 , 0 , 0 ) ,
77+ ]
78+
79+ /// Для .yearMonthDay
80+ static let ymdAbbreviatedCombos : [ ( years: Int , months: Int , days: Int ) ] = [
81+ ( 1 , 1 , 1 ) , ( - 1 , 1 , 1 ) , ( 1 , - 1 , 1 ) , ( 1 , 1 , - 1 ) , ( - 1 , - 1 , - 1 ) ,
5082 ]
5183
52- /// Два компонента ненулевые
53- static let shortTestCases : [ ( years: Int , months: Int , days: Int ) ] = [
54- ( 1 , 1 , 0 ) , // годы и месяцы
55- ( 1 , 0 , 1 ) , // годы и дни
56- ( 0 , 1 , 1 ) , // месяцы и дни
57- ( - 1 , 1 , 0 ) , // отрицательный год и месяц
58- ( 1 , - 1 , 0 ) , // год и отрицательный месяц
59- ( 1 , 0 , - 1 ) , // год и отрицательный день
60- ( 0 , - 1 , 1 ) , // отрицательный месяц и день
84+ static let ymdShortCombos : [ ( years: Int , months: Int , days: Int ) ] = [
85+ ( 1 , 1 , 0 ) , ( 1 , 0 , 1 ) , ( 0 , 1 , 1 ) , ( - 1 , 1 , 0 ) , ( 1 , - 1 , 0 ) , ( 1 , 0 , - 1 ) , ( 0 , - 1 , 1 ) ,
6186 ]
6287
63- /// Один или ноль компонентов ненулевые
64- static let fullTestCases : [ ( years: Int , months: Int , days: Int ) ] = [
65- ( 1 , 0 , 0 ) , // только годы
66- ( 0 , 1 , 0 ) , // только месяцы
67- ( 0 , 0 , 1 ) , // только дни
68- ( 0 , 0 , 0 ) , // все нули
69- ( - 1 , 0 , 0 ) , // только отрицательный год
70- ( 0 , - 1 , 0 ) , // только отрицательный месяц
71- ( 0 , 0 , - 1 ) , // только отрицательный день
88+ static let ymdFullCombos : [ ( years: Int , months: Int , days: Int ) ] = [
89+ ( 1 , 0 , 0 ) , ( 0 , 1 , 0 ) , ( 0 , 0 , 1 ) , ( 0 , 0 , 0 ) , ( - 1 , 0 , 0 ) , ( 0 , - 1 , 0 ) , ( 0 , 0 , - 1 ) ,
7290 ]
7391}
0 commit comments