File: array.m

package info (click to toggle)
gnustep-base 1.31.1-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 26,580 kB
  • sloc: objc: 239,446; ansic: 36,519; cpp: 122; sh: 112; makefile: 100; xml: 32
file content (71 lines) | stat: -rw-r--r-- 2,185 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#import "ObjectTesting.h"
#import <Foundation/Foundation.h>

@interface ArrayIVar : NSObject
{
  NSArray *_testArray;
}
- (void) setTestArray: (NSArray*)array;
- (NSArray*) testArray;
@end

@implementation ArrayIVar
- (void) dealloc
{
  DESTROY(_testArray);
  DEALLOC
}
- (void) setTestArray: (NSArray*)array
{
  ASSIGN(_testArray, array);
}
- (NSArray*) testArray
{
  return _testArray;
}
@end

int main(int argc,char **argv)
{
  NSAutoreleasePool *pool = [NSAutoreleasePool new];
  volatile BOOL result = NO;
  NSDictionary  *root;
  NSArray       *array;
  NSArray       *ivar;
  ArrayIVar     *aiv;
  NSString      *plist;

  array = [@"({value=10;},{value=12;})" propertyList];
  plist = @"{displayGroup={allObjects=({detailArray=({value=4;},{value=2;});},{detailArray=({value=8;},{value=10;});});};}";
  root = [plist propertyList];

  result = [[array valueForKeyPath:@"@sum.value"] intValue] == 22;
  PASS(result, "-[NSArray valueForKeyPath: @\"@sum.value\"]");

  result = [[array valueForKeyPath:@"@count.value"] intValue] == 2;
  PASS(result, "-[NSArray valueForKeyPath: @\"@count.value\"]");

  result = [[array valueForKeyPath:@"@count"] intValue] == 2;
  PASS(result, "-[NSArray valueForKeyPath: @\"@count\"]");

  aiv = AUTORELEASE([ArrayIVar new]);
  ivar = [NSArray arrayWithObjects: @"Joe", @"Foo", @"Bar", @"Cat", nil];
  [aiv setTestArray: ivar];

  PASS([aiv valueForKeyPath: @"testArray.@count"]
    == [ivar valueForKey: @"@count"], "valueForKey: matches valueForKeypath:");

  /* Advanced KVC */

  result = [[root valueForKeyPath:@"displayGroup.allObjects.@sum.detailArray.@avg.value"] intValue] == 12;
  PASS(result, "-[NSArray valueForKeyPath: @\"displayGroup.allObjects.@sum.detailArray.@avg.value\"]");

  result = [[root valueForKeyPath:@"displayGroup.allObjects.@sum.detailArray.@count.value"] intValue] == 4;
  PASS(result, "-[NSArray valueForKeyPath: @\"displayGroup.allObjects.@sum.detailArray.@count.value\"]");

  result = [[root valueForKeyPath:@"displayGroup.allObjects.@sum.detailArray.@count"] intValue] == 4;
  PASS(result, "-[NSArray valueForKeyPath: @\"displayGroup.allObjects.@sum.detailArray.@count\"]");

  [pool release];
  return (0);
}