]> git.saurik.com Git - apple/objc4.git/blob - test/literals.m
objc4-680.tar.gz
[apple/objc4.git] / test / literals.m
1 // TEST_CONFIG MEM=arc,mrc CC=clang LANGUAGE=objc,objc++
2 // TEST_CFLAGS -framework Foundation
3
4 #import <Foundation/Foundation.h>
5 #import <Foundation/NSDictionary.h>
6 #import <objc/runtime.h>
7 #import <objc/objc-abi.h>
8 #import <math.h>
9 #include "test.h"
10
11 int main() {
12 PUSH_POOL {
13
14 #if __has_feature(objc_bool) // placeholder until we get a more precise macro.
15 NSArray *array = @[ @1, @2, @YES, @NO, @"Hello", @"World" ];
16 testassert([array count] == 6);
17 NSDictionary *dict = @{ @"Name" : @"John Q. Public", @"Age" : @42 };
18 testassert([dict count] == 2);
19 NSDictionary *numbers = @{ @"π" : @M_PI, @"e" : @M_E };
20 testassert([[numbers objectForKey:@"π"] doubleValue] == M_PI);
21 testassert([[numbers objectForKey:@"e"] doubleValue] == M_E);
22
23 BOOL yesBool = YES;
24 BOOL noBool = NO;
25 array = @[
26 @(true),
27 @(YES),
28 [NSNumber numberWithBool:YES],
29 @YES,
30 @(yesBool),
31 @((BOOL)YES),
32
33 @(false),
34 @(NO),
35 [NSNumber numberWithBool:NO],
36 @NO,
37 @(noBool),
38 @((BOOL)NO),
39 ];
40 NSData * jsonData = [NSJSONSerialization dataWithJSONObject:array options:0 error:nil];
41 NSString * string = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
42 #if __cplusplus
43 testassert([string isEqualToString:@"[true,true,true,true,true,true,false,false,false,false,false,false]"]);
44 #else
45 // C99 @(true) and @(false) evaluate to @(1) and @(0).
46 testassert([string isEqualToString:@"[1,true,true,true,true,true,0,false,false,false,false,false]"]);
47 #endif
48
49 #endif
50
51 } POP_POOL;
52
53 succeed(__FILE__);
54
55 return 0;
56 }