1*95a92995SRashmi Mudduluru// RUN: %check_clang_tidy %s objc-nsdate-formatter %t 2*95a92995SRashmi Mudduluru@interface NSObject 3*95a92995SRashmi Mudduluru+ (instancetype)alloc; 4*95a92995SRashmi Mudduluru- (instancetype)init; 5*95a92995SRashmi Mudduluru@end 6*95a92995SRashmi Mudduluru 7*95a92995SRashmi Mudduluru@interface TestClass : NSObject 8*95a92995SRashmi Mudduluru+ (void)testMethod1; 9*95a92995SRashmi Mudduluru+ (void)testMethod2; 10*95a92995SRashmi Mudduluru+ (void)testMethod3; 11*95a92995SRashmi Mudduluru+ (void)testAnotherClass; 12*95a92995SRashmi Mudduluru@end 13*95a92995SRashmi Mudduluru 14*95a92995SRashmi Mudduluru@interface NSString : NSObject 15*95a92995SRashmi Mudduluru@end 16*95a92995SRashmi Mudduluru 17*95a92995SRashmi Mudduluruvoid NSLog(NSString *format, ...); 18*95a92995SRashmi Mudduluru 19*95a92995SRashmi Mudduluru@interface NSDate : NSObject 20*95a92995SRashmi Mudduluru@end 21*95a92995SRashmi Mudduluru 22*95a92995SRashmi Mudduluru@interface NSDateFormatter : NSObject 23*95a92995SRashmi Mudduluru@property(copy) NSString *dateFormat; 24*95a92995SRashmi Mudduluru- (NSString *)stringFromDate:(NSDate *)date; 25*95a92995SRashmi Mudduluru@end 26*95a92995SRashmi Mudduluru 27*95a92995SRashmi Mudduluru@interface AnotherClass : NSObject 28*95a92995SRashmi Mudduluru@property(copy) NSString *dateFormat; 29*95a92995SRashmi Mudduluru@end 30*95a92995SRashmi Mudduluru 31*95a92995SRashmi Mudduluru@interface NSDateComponents : NSObject 32*95a92995SRashmi Mudduluru@property long year; 33*95a92995SRashmi Mudduluru@property long month; 34*95a92995SRashmi Mudduluru@property long day; 35*95a92995SRashmi Mudduluru@end 36*95a92995SRashmi Mudduluru 37*95a92995SRashmi Mudduluru@interface NSCalendar : NSObject 38*95a92995SRashmi Mudduluru@property(class, readonly, copy) NSCalendar *currentCalendar; 39*95a92995SRashmi Mudduluru- (nullable NSDate *)dateFromComponents:(NSDateComponents *)Comps; 40*95a92995SRashmi Mudduluru@end 41*95a92995SRashmi Mudduluru 42*95a92995SRashmi Mudduluru@implementation TestClass 43*95a92995SRashmi Mudduluru+ (void)testMethod1 { 44*95a92995SRashmi Mudduluru // Reproducing incorrect behavior from Radar 45*95a92995SRashmi Mudduluru NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 46*95a92995SRashmi Mudduluru [formatter setDateFormat:@"YYYY_MM_dd_HH_mm_ss_SSS_ZZZ"]; 47*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: use of week year (Y) with month (M); did you mean to use calendar year (y) instead? [objc-nsdate-formatter] 48*95a92995SRashmi Mudduluru NSDateComponents *comps = [[NSDateComponents alloc] init]; 49*95a92995SRashmi Mudduluru [comps setDay:29]; 50*95a92995SRashmi Mudduluru [comps setMonth:12]; 51*95a92995SRashmi Mudduluru [comps setYear:2014]; 52*95a92995SRashmi Mudduluru NSDate *date_radar = [[NSCalendar currentCalendar] dateFromComponents:comps]; 53*95a92995SRashmi Mudduluru NSLog(@"YYYY_MM_dd_HH_mm_ss_SSS_ZZZ %@", [formatter stringFromDate:date_radar]); 54*95a92995SRashmi Mudduluru 55*95a92995SRashmi Mudduluru // Radar correct behavior 56*95a92995SRashmi Mudduluru [formatter setDateFormat:@"yyyy_MM_dd_HH_mm_ss_SSS_ZZZ"]; 57*95a92995SRashmi Mudduluru NSLog(@"yyyy_MM_dd_HH_mm_ss_SSS_ZZZ %@", [formatter stringFromDate:date_radar]); 58*95a92995SRashmi Mudduluru 59*95a92995SRashmi Mudduluru // Radar correct behavior - week year 60*95a92995SRashmi Mudduluru [formatter setDateFormat:@"YYYY_ww_dd_HH_mm_ss_SSS_ZZZ"]; 61*95a92995SRashmi Mudduluru NSLog(@"YYYY_ww_dd_HH_mm_ss_SSS_ZZZ %@", [formatter stringFromDate:date_radar]); 62*95a92995SRashmi Mudduluru 63*95a92995SRashmi Mudduluru // Radar incorrect behavior 64*95a92995SRashmi Mudduluru [formatter setDateFormat:@"yyyy_ww_dd_HH_mm_ss_SSS_ZZZ"]; 65*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: use of calendar year (y) with week of the year (w); did you mean to use week-year (Y) instead? [objc-nsdate-formatter] 66*95a92995SRashmi Mudduluru NSLog(@"yyyy_ww_dd_HH_mm_ss_SSS_ZZZ %@", [formatter stringFromDate:date_radar]); 67*95a92995SRashmi Mudduluru 68*95a92995SRashmi Mudduluru NSLog(@"=========================================="); 69*95a92995SRashmi Mudduluru // Correct 70*95a92995SRashmi Mudduluru [formatter setDateFormat:@"yyyy_MM"]; 71*95a92995SRashmi Mudduluru NSLog(@"yyyy_MM %@", [formatter stringFromDate:date_radar]); 72*95a92995SRashmi Mudduluru 73*95a92995SRashmi Mudduluru // Correct 74*95a92995SRashmi Mudduluru [formatter setDateFormat:@"yyyy_dd"]; 75*95a92995SRashmi Mudduluru NSLog(@"yyyy_dd %@", [formatter stringFromDate:date_radar]); 76*95a92995SRashmi Mudduluru 77*95a92995SRashmi Mudduluru // Correct 78*95a92995SRashmi Mudduluru [formatter setDateFormat:@"yyyy_DD"]; 79*95a92995SRashmi Mudduluru NSLog(@"yyyy_DD %@", [formatter stringFromDate:date_radar]); 80*95a92995SRashmi Mudduluru 81*95a92995SRashmi Mudduluru // Incorrect 82*95a92995SRashmi Mudduluru [formatter setDateFormat:@"yyyy_ww"]; 83*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: use of calendar year (y) with week of the year (w); did you mean to use week-year (Y) instead? [objc-nsdate-formatter] 84*95a92995SRashmi Mudduluru NSLog(@"yyyy_ww %@", [formatter stringFromDate:date_radar]); 85*95a92995SRashmi Mudduluru 86*95a92995SRashmi Mudduluru // Incorrect 87*95a92995SRashmi Mudduluru [formatter setDateFormat:@"yyyy_WW"]; 88*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: Week of Month (W) used without the month (M); did you forget M in the format string? [objc-nsdate-formatter] 89*95a92995SRashmi Mudduluru NSLog(@"yyyy_WW %@", [formatter stringFromDate:date_radar]); 90*95a92995SRashmi Mudduluru 91*95a92995SRashmi Mudduluru NSLog(@"=========================================="); 92*95a92995SRashmi Mudduluru // Correct 93*95a92995SRashmi Mudduluru [formatter setDateFormat:@"yyyy_MM_dd"]; 94*95a92995SRashmi Mudduluru NSLog(@"yyyy_MM_dd %@", [formatter stringFromDate:date_radar]); 95*95a92995SRashmi Mudduluru 96*95a92995SRashmi Mudduluru // Potentially Incorrect 97*95a92995SRashmi Mudduluru [formatter setDateFormat:@"yyyy_MM_DD"]; 98*95a92995SRashmi Mudduluru NSLog(@"yyyy_MM_DD %@", [formatter stringFromDate:date_radar]); 99*95a92995SRashmi Mudduluru 100*95a92995SRashmi Mudduluru // Incorrect 101*95a92995SRashmi Mudduluru [formatter setDateFormat:@"yyyy_MM_ww"]; 102*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: use of calendar year (y) with week of the year (w); did you mean to use week-year (Y) instead? [objc-nsdate-formatter] 103*95a92995SRashmi Mudduluru NSLog(@"yyyy_MM_ww %@", [formatter stringFromDate:date_radar]); 104*95a92995SRashmi Mudduluru 105*95a92995SRashmi Mudduluru NSLog(@"=======WEEK YEAR=========="); 106*95a92995SRashmi Mudduluru // Incorrect 107*95a92995SRashmi Mudduluru [formatter setDateFormat:@"YYYY_MM"]; 108*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: use of week year (Y) with month (M); did you mean to use calendar year (y) instead? [objc-nsdate-formatter] 109*95a92995SRashmi Mudduluru NSLog(@"YYYY_MM %@", [formatter stringFromDate:date_radar]); 110*95a92995SRashmi Mudduluru 111*95a92995SRashmi Mudduluru // Correct 112*95a92995SRashmi Mudduluru [formatter setDateFormat:@"YYYY_ww"]; 113*95a92995SRashmi Mudduluru NSLog(@"YYYY_ww %@", [formatter stringFromDate:date_radar]); 114*95a92995SRashmi Mudduluru 115*95a92995SRashmi Mudduluru // Incorrect 116*95a92995SRashmi Mudduluru [formatter setDateFormat:@"YYYY_WW"]; 117*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: Week of Month (W) used without the month (M); did you forget M in the format string? [objc-nsdate-formatter] 118*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-2]]:28: warning: use of week year (Y) with week of the month (W); did you mean to use calendar year (y) instead? [objc-nsdate-formatter] 119*95a92995SRashmi Mudduluru NSLog(@"YYYY_WW %@", [formatter stringFromDate:date_radar]); 120*95a92995SRashmi Mudduluru 121*95a92995SRashmi Mudduluru // Correct 122*95a92995SRashmi Mudduluru [formatter setDateFormat:@"YYYY_dd"]; 123*95a92995SRashmi Mudduluru NSLog(@"YYYY_dd %@", [formatter stringFromDate:date_radar]); 124*95a92995SRashmi Mudduluru 125*95a92995SRashmi Mudduluru // Incorrect 126*95a92995SRashmi Mudduluru [formatter setDateFormat:@"YYYY_DD"]; 127*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: use of week year (Y) with day of the year (D); did you mean to use calendar year (y) instead? [objc-nsdate-formatter] 128*95a92995SRashmi Mudduluru NSLog(@"YYYY_DD %@", [formatter stringFromDate:date_radar]); 129*95a92995SRashmi Mudduluru 130*95a92995SRashmi Mudduluru NSLog(@"=========================================="); 131*95a92995SRashmi Mudduluru // Potentially Incorrect 132*95a92995SRashmi Mudduluru [formatter setDateFormat:@"YYYY_ww_dd"]; 133*95a92995SRashmi Mudduluru NSLog(@"YYYY ww dd %@", [formatter stringFromDate:date_radar]); 134*95a92995SRashmi Mudduluru 135*95a92995SRashmi Mudduluru // Incorrect 136*95a92995SRashmi Mudduluru [formatter setDateFormat:@"YYYY_ww_DD"]; 137*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: use of week year (Y) with day of the year (D); did you mean to use calendar year (y) instead? [objc-nsdate-formatter] 138*95a92995SRashmi Mudduluru NSLog(@"YYYY_ww_DD %@", [formatter stringFromDate:date_radar]); 139*95a92995SRashmi Mudduluru} 140*95a92995SRashmi Mudduluru 141*95a92995SRashmi Mudduluru+ (void)testMethod2 { 142*95a92995SRashmi Mudduluru NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 143*95a92995SRashmi Mudduluru NSDateComponents *comps = [[NSDateComponents alloc] init]; 144*95a92995SRashmi Mudduluru [comps setDay:29]; 145*95a92995SRashmi Mudduluru [comps setMonth:12]; 146*95a92995SRashmi Mudduluru [comps setYear:2014]; 147*95a92995SRashmi Mudduluru NSDate *date_radar = [[NSCalendar currentCalendar] dateFromComponents:comps]; 148*95a92995SRashmi Mudduluru 149*95a92995SRashmi Mudduluru // Test 1 : incorrect 150*95a92995SRashmi Mudduluru [formatter setDateFormat:@"yyyy_QQ_MM_ww_dd_EE"]; 151*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: use of calendar year (y) with week of the year (w); did you mean to use week-year (Y) instead? [objc-nsdate-formatter] 152*95a92995SRashmi Mudduluru NSLog(@"yyyy_QQ_MM_ww_dd_EE %@", [formatter stringFromDate:date_radar]); 153*95a92995SRashmi Mudduluru 154*95a92995SRashmi Mudduluru // Test 2 : incorrect 155*95a92995SRashmi Mudduluru [formatter setDateFormat:@"yyyy_QQ_MM_ww_dd_ee"]; 156*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: use of calendar year (y) with week of the year (w); did you mean to use week-year (Y) instead? [objc-nsdate-formatter] 157*95a92995SRashmi Mudduluru NSLog(@"yyyy_QQ_MM_ww_dd_ee %@", [formatter stringFromDate:date_radar]); 158*95a92995SRashmi Mudduluru 159*95a92995SRashmi Mudduluru // Test 3 : incorrect 160*95a92995SRashmi Mudduluru [formatter setDateFormat:@"yyyy_QQ_MM_ww_DD_EE"]; 161*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: use of calendar year (y) with week of the year (w); did you mean to use week-year (Y) instead? [objc-nsdate-formatter] 162*95a92995SRashmi Mudduluru NSLog(@"yyyy_QQ_MM_ww_DD_EE %@", [formatter stringFromDate:date_radar]); 163*95a92995SRashmi Mudduluru 164*95a92995SRashmi Mudduluru // Test 4 : incorrect 165*95a92995SRashmi Mudduluru [formatter setDateFormat:@"yyyy_QQ_MM_ww_DD_ee"]; 166*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: use of calendar year (y) with week of the year (w); did you mean to use week-year (Y) instead? [objc-nsdate-formatter] 167*95a92995SRashmi Mudduluru NSLog(@"yyyy_QQ_MM_ww_DD_ee %@", [formatter stringFromDate:date_radar]); 168*95a92995SRashmi Mudduluru 169*95a92995SRashmi Mudduluru // Test 5 : incorrect 170*95a92995SRashmi Mudduluru [formatter setDateFormat:@"yyyy_QQ_MM_ww_F_EE"]; 171*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: use of calendar year (y) with week of the year (w); did you mean to use week-year (Y) instead? [objc-nsdate-formatter] 172*95a92995SRashmi Mudduluru NSLog(@"yyyy_QQ_MM_ww_F_EE %@", [formatter stringFromDate:date_radar]); 173*95a92995SRashmi Mudduluru 174*95a92995SRashmi Mudduluru // Test 6 : incorrect 175*95a92995SRashmi Mudduluru [formatter setDateFormat:@"yyyy_QQ_MM_ww_F_ee"]; 176*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: use of calendar year (y) with week of the year (w); did you mean to use week-year (Y) instead? [objc-nsdate-formatter] 177*95a92995SRashmi Mudduluru NSLog(@"yyyy_QQ_MM_ww_F_ee %@", [formatter stringFromDate:date_radar]); 178*95a92995SRashmi Mudduluru 179*95a92995SRashmi Mudduluru // Test 7 : correct 180*95a92995SRashmi Mudduluru [formatter setDateFormat:@"yyyy_QQ_MM_WW_dd_EE"]; 181*95a92995SRashmi Mudduluru NSLog(@"yyyy_QQ_MM_WW_dd_EE %@", [formatter stringFromDate:date_radar]); 182*95a92995SRashmi Mudduluru 183*95a92995SRashmi Mudduluru // Test 8 : correct 184*95a92995SRashmi Mudduluru [formatter setDateFormat:@"yyyy_QQ_MM_WW_dd_ee"]; 185*95a92995SRashmi Mudduluru NSLog(@"yyyy_QQ_MM_WW_dd_ee %@", [formatter stringFromDate:date_radar]); 186*95a92995SRashmi Mudduluru 187*95a92995SRashmi Mudduluru // Test 9 : correct 188*95a92995SRashmi Mudduluru [formatter setDateFormat:@"yyyy_QQ_MM_WW_DD_EE"]; 189*95a92995SRashmi Mudduluru NSLog(@"yyyy_QQ_MM_WW_DD_EE %@", [formatter stringFromDate:date_radar]); 190*95a92995SRashmi Mudduluru 191*95a92995SRashmi Mudduluru // Test 10 : correct 192*95a92995SRashmi Mudduluru [formatter setDateFormat:@"yyyy_QQ_MM_WW_DD_ee"]; 193*95a92995SRashmi Mudduluru NSLog(@"yyyy_QQ_MM_WW_DD_ee %@", [formatter stringFromDate:date_radar]); 194*95a92995SRashmi Mudduluru 195*95a92995SRashmi Mudduluru // Test 11 : correct 196*95a92995SRashmi Mudduluru [formatter setDateFormat:@"yyyy_QQ_MM_WW_F_EE"]; 197*95a92995SRashmi Mudduluru NSLog(@"yyyy_QQ_MM_WW_F_EE %@", [formatter stringFromDate:date_radar]); 198*95a92995SRashmi Mudduluru 199*95a92995SRashmi Mudduluru // Test 12 : correct 200*95a92995SRashmi Mudduluru [formatter setDateFormat:@"yyyy_QQ_MM_WW_F_ee"]; 201*95a92995SRashmi Mudduluru NSLog(@"yyyy_QQ_MM_WW_F_ee %@", [formatter stringFromDate:date_radar]); 202*95a92995SRashmi Mudduluru 203*95a92995SRashmi Mudduluru // Test 13 : incorrect 204*95a92995SRashmi Mudduluru [formatter setDateFormat:@"YYYY_QQ_MM_ww_dd_EE"]; 205*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: use of week year (Y) with month (M); did you mean to use calendar year (y) instead? [objc-nsdate-formatter] 206*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-2]]:28: warning: use of week year (Y) with quarter number (Q); did you mean to use calendar year (y) instead? [objc-nsdate-formatter] 207*95a92995SRashmi Mudduluru NSLog(@"YYYY_QQ_MM_ww_dd_EE %@", [formatter stringFromDate:date_radar]); 208*95a92995SRashmi Mudduluru 209*95a92995SRashmi Mudduluru // Test 14 : incorrect 210*95a92995SRashmi Mudduluru [formatter setDateFormat:@"YYYY_QQ_MM_ww_dd_ee"]; 211*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: use of week year (Y) with month (M); did you mean to use calendar year (y) instead? [objc-nsdate-formatter] 212*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-2]]:28: warning: use of week year (Y) with quarter number (Q); did you mean to use calendar year (y) instead? [objc-nsdate-formatter] 213*95a92995SRashmi Mudduluru NSLog(@"YYYY_QQ_MM_ww_dd_ee %@", [formatter stringFromDate:date_radar]); 214*95a92995SRashmi Mudduluru 215*95a92995SRashmi Mudduluru // Test 15 : incorrect 216*95a92995SRashmi Mudduluru [formatter setDateFormat:@"YYYY_QQ_MM_ww_DD_EE"]; 217*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: use of week year (Y) with day of the year (D); did you mean to use calendar year (y) instead? [objc-nsdate-formatter] 218*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-2]]:28: warning: use of week year (Y) with month (M); did you mean to use calendar year (y) instead? [objc-nsdate-formatter] 219*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-3]]:28: warning: use of week year (Y) with quarter number (Q); did you mean to use calendar year (y) instead? [objc-nsdate-formatter] 220*95a92995SRashmi Mudduluru NSLog(@"YYYY_QQ_MM_ww_DD_EE %@", [formatter stringFromDate:date_radar]); 221*95a92995SRashmi Mudduluru 222*95a92995SRashmi Mudduluru // Test 16 : incorrect 223*95a92995SRashmi Mudduluru [formatter setDateFormat:@"YYYY_QQ_MM_ww_DD_ee"]; 224*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: use of week year (Y) with day of the year (D); did you mean to use calendar year (y) instead? [objc-nsdate-formatter] 225*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-2]]:28: warning: use of week year (Y) with month (M); did you mean to use calendar year (y) instead? [objc-nsdate-formatter] 226*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-3]]:28: warning: use of week year (Y) with quarter number (Q); did you mean to use calendar year (y) instead? [objc-nsdate-formatter] 227*95a92995SRashmi Mudduluru NSLog(@"YYYY_QQ_MM_ww_DD_ee %@", [formatter stringFromDate:date_radar]); 228*95a92995SRashmi Mudduluru 229*95a92995SRashmi Mudduluru // Test 17 : incorrect 230*95a92995SRashmi Mudduluru [formatter setDateFormat:@"YYYY_QQ_MM_ww_F_EE"]; 231*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: use of week year (Y) with day of the week in month (F); did you mean to use calendar year (y) instead? [objc-nsdate-formatter] 232*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-2]]:28: warning: use of week year (Y) with month (M); did you mean to use calendar year (y) instead? [objc-nsdate-formatter] 233*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-3]]:28: warning: use of week year (Y) with quarter number (Q); did you mean to use calendar year (y) instead? [objc-nsdate-formatter] 234*95a92995SRashmi Mudduluru NSLog(@"YYYY_QQ_MM_ww_F_EE %@", [formatter stringFromDate:date_radar]); 235*95a92995SRashmi Mudduluru 236*95a92995SRashmi Mudduluru // Test 18 : incorrect 237*95a92995SRashmi Mudduluru [formatter setDateFormat:@"YYYY_QQ_MM_ww_F_ee"]; 238*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: use of week year (Y) with day of the week in month (F); did you mean to use calendar year (y) instead? [objc-nsdate-formatter] 239*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-2]]:28: warning: use of week year (Y) with month (M); did you mean to use calendar year (y) instead? [objc-nsdate-formatter] 240*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-3]]:28: warning: use of week year (Y) with quarter number (Q); did you mean to use calendar year (y) instead? [objc-nsdate-formatter] 241*95a92995SRashmi Mudduluru NSLog(@"YYYY_QQ_MM_ww_F_ee %@", [formatter stringFromDate:date_radar]); 242*95a92995SRashmi Mudduluru 243*95a92995SRashmi Mudduluru // Test 19 : incorrect 244*95a92995SRashmi Mudduluru [formatter setDateFormat:@"YYYY_QQ_MM_WW_dd_EE"]; 245*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: use of week year (Y) with month (M); did you mean to use calendar year (y) instead? [objc-nsdate-formatter] 246*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-2]]:28: warning: use of week year (Y) with quarter number (Q); did you mean to use calendar year (y) instead? [objc-nsdate-formatter] 247*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-3]]:28: warning: use of week year (Y) with week of the month (W); did you mean to use calendar year (y) instead? [objc-nsdate-formatter] 248*95a92995SRashmi Mudduluru NSLog(@"YYYY_QQ_MM_WW_dd_EE %@", [formatter stringFromDate:date_radar]); 249*95a92995SRashmi Mudduluru 250*95a92995SRashmi Mudduluru // Test 20 : incorrect 251*95a92995SRashmi Mudduluru [formatter setDateFormat:@"YYYY_QQ_MM_WW_dd_ee"]; 252*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: use of week year (Y) with month (M); did you mean to use calendar year (y) instead? [objc-nsdate-formatter] 253*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-2]]:28: warning: use of week year (Y) with quarter number (Q); did you mean to use calendar year (y) instead? [objc-nsdate-formatter] 254*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-3]]:28: warning: use of week year (Y) with week of the month (W); did you mean to use calendar year (y) instead? [objc-nsdate-formatter] 255*95a92995SRashmi Mudduluru NSLog(@"YYYY_QQ_MM_WW_dd_ee %@", [formatter stringFromDate:date_radar]); 256*95a92995SRashmi Mudduluru 257*95a92995SRashmi Mudduluru // Test 21 : incorrect 258*95a92995SRashmi Mudduluru [formatter setDateFormat:@"YYYY_QQ_MM_WW_DD_EE"]; 259*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: use of week year (Y) with day of the year (D); did you mean to use calendar year (y) instead? [objc-nsdate-formatter] 260*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-2]]:28: warning: use of week year (Y) with month (M); did you mean to use calendar year (y) instead? [objc-nsdate-formatter] 261*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-3]]:28: warning: use of week year (Y) with quarter number (Q); did you mean to use calendar year (y) instead? [objc-nsdate-formatter] 262*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-4]]:28: warning: use of week year (Y) with week of the month (W); did you mean to use calendar year (y) instead? [objc-nsdate-formatter] 263*95a92995SRashmi Mudduluru NSLog(@"YYYY_QQ_MM_WW_DD_EE %@", [formatter stringFromDate:date_radar]); 264*95a92995SRashmi Mudduluru 265*95a92995SRashmi Mudduluru // Test 22 : incorrect 266*95a92995SRashmi Mudduluru [formatter setDateFormat:@"YYYY_QQ_MM_WW_DD_ee"]; 267*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: use of week year (Y) with day of the year (D); did you mean to use calendar year (y) instead? [objc-nsdate-formatter] 268*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-2]]:28: warning: use of week year (Y) with month (M); did you mean to use calendar year (y) instead? [objc-nsdate-formatter] 269*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-3]]:28: warning: use of week year (Y) with quarter number (Q); did you mean to use calendar year (y) instead? [objc-nsdate-formatter] 270*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-4]]:28: warning: use of week year (Y) with week of the month (W); did you mean to use calendar year (y) instead? [objc-nsdate-formatter] 271*95a92995SRashmi Mudduluru NSLog(@"YYYY_QQ_MM_WW_DD_ee %@", [formatter stringFromDate:date_radar]); 272*95a92995SRashmi Mudduluru 273*95a92995SRashmi Mudduluru // Test 23 : incorrect 274*95a92995SRashmi Mudduluru [formatter setDateFormat:@"YYYY_QQ_MM_WW_F_EE"]; 275*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: use of week year (Y) with day of the week in month (F); did you mean to use calendar year (y) instead? [objc-nsdate-formatter] 276*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-2]]:28: warning: use of week year (Y) with month (M); did you mean to use calendar year (y) instead? [objc-nsdate-formatter] 277*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-3]]:28: warning: use of week year (Y) with quarter number (Q); did you mean to use calendar year (y) instead? [objc-nsdate-formatter] 278*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-4]]:28: warning: use of week year (Y) with week of the month (W); did you mean to use calendar year (y) instead? [objc-nsdate-formatter] 279*95a92995SRashmi Mudduluru NSLog(@"YYYY_QQ_MM_WW_F_EE %@", [formatter stringFromDate:date_radar]); 280*95a92995SRashmi Mudduluru 281*95a92995SRashmi Mudduluru // Test 24 : incorrect 282*95a92995SRashmi Mudduluru [formatter setDateFormat:@"YYYY_QQ_MM_WW_F_ee"]; 283*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: use of week year (Y) with day of the week in month (F); did you mean to use calendar year (y) instead? [objc-nsdate-formatter] 284*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-2]]:28: warning: use of week year (Y) with month (M); did you mean to use calendar year (y) instead? [objc-nsdate-formatter] 285*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-3]]:28: warning: use of week year (Y) with quarter number (Q); did you mean to use calendar year (y) instead? [objc-nsdate-formatter] 286*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-4]]:28: warning: use of week year (Y) with week of the month (W); did you mean to use calendar year (y) instead? [objc-nsdate-formatter] 287*95a92995SRashmi Mudduluru NSLog(@"YYYY_QQ_MM_WW_F_ee %@", [formatter stringFromDate:date_radar]); 288*95a92995SRashmi Mudduluru} 289*95a92995SRashmi Mudduluru 290*95a92995SRashmi Mudduluru+ (void)testMethod3 { 291*95a92995SRashmi Mudduluru NSDateFormatter *Formatter = [[NSDateFormatter alloc] init]; 292*95a92995SRashmi Mudduluru NSDateComponents *Comps = [[NSDateComponents alloc] init]; 293*95a92995SRashmi Mudduluru [Comps setDay:29]; 294*95a92995SRashmi Mudduluru [Comps setMonth:12]; 295*95a92995SRashmi Mudduluru [Comps setYear:2014]; 296*95a92995SRashmi Mudduluru NSDate *DateRadar = [[NSCalendar currentCalendar] dateFromComponents:Comps]; 297*95a92995SRashmi Mudduluru 298*95a92995SRashmi Mudduluru // Incorrect : has reserved and invalid chars 299*95a92995SRashmi Mudduluru [Formatter setDateFormat:@"Rashmi"]; 300*95a92995SRashmi Mudduluru // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: invalid date format specifier [objc-nsdate-formatter] 301*95a92995SRashmi Mudduluru NSLog(@"Rashmi %@", [Formatter stringFromDate:DateRadar]); 302*95a92995SRashmi Mudduluru 303*95a92995SRashmi Mudduluru // Correct 304*95a92995SRashmi Mudduluru [Formatter setDateFormat:@"AMy"]; 305*95a92995SRashmi Mudduluru NSLog(@"AMy %@", [Formatter stringFromDate:DateRadar]); 306*95a92995SRashmi Mudduluru} 307*95a92995SRashmi Mudduluru 308*95a92995SRashmi Mudduluru+ (void)testAnotherClass { 309*95a92995SRashmi Mudduluru AnotherClass *Formatter = [[AnotherClass alloc] init]; 310*95a92995SRashmi Mudduluru [Formatter setDateFormat:@"RandomString"]; 311*95a92995SRashmi Mudduluru [Formatter setDateFormat:@"YYYY_QQ_MM_WW_dd_EE"]; 312*95a92995SRashmi Mudduluru} 313*95a92995SRashmi Mudduluru@end 314