Statistics
| Branch: | Revision:

root / json-framework-3.2.0 / Tests / RoundTripTest.m @ master

History | View | Annotate | Download (4.8 kB)

1 3ebe9884 Miltiadis Vasilakis
/*
2 3ebe9884 Miltiadis Vasilakis
 Copyright (C) 2011 Stig Brautaset. All rights reserved.
3 3ebe9884 Miltiadis Vasilakis
4 3ebe9884 Miltiadis Vasilakis
 Redistribution and use in source and binary forms, with or without
5 3ebe9884 Miltiadis Vasilakis
 modification, are permitted provided that the following conditions
6 3ebe9884 Miltiadis Vasilakis
 are met:
7 3ebe9884 Miltiadis Vasilakis
8 3ebe9884 Miltiadis Vasilakis
 * Redistributions of source code must retain the above copyright
9 3ebe9884 Miltiadis Vasilakis
   notice, this list of conditions and the following disclaimer.
10 3ebe9884 Miltiadis Vasilakis
11 3ebe9884 Miltiadis Vasilakis
 * Redistributions in binary form must reproduce the above copyright
12 3ebe9884 Miltiadis Vasilakis
   notice, this list of conditions and the following disclaimer in the
13 3ebe9884 Miltiadis Vasilakis
   documentation and/or other materials provided with the distribution.
14 3ebe9884 Miltiadis Vasilakis
15 3ebe9884 Miltiadis Vasilakis
 * Neither the name of the author nor the names of its contributors
16 3ebe9884 Miltiadis Vasilakis
   may be used to endorse or promote products derived from this
17 3ebe9884 Miltiadis Vasilakis
   software without specific prior written permission.
18 3ebe9884 Miltiadis Vasilakis
19 3ebe9884 Miltiadis Vasilakis
 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20 3ebe9884 Miltiadis Vasilakis
 "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21 3ebe9884 Miltiadis Vasilakis
 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22 3ebe9884 Miltiadis Vasilakis
 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23 3ebe9884 Miltiadis Vasilakis
 OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24 3ebe9884 Miltiadis Vasilakis
 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25 3ebe9884 Miltiadis Vasilakis
 LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26 3ebe9884 Miltiadis Vasilakis
 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27 3ebe9884 Miltiadis Vasilakis
 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28 3ebe9884 Miltiadis Vasilakis
 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 3ebe9884 Miltiadis Vasilakis
 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 3ebe9884 Miltiadis Vasilakis
31 3ebe9884 Miltiadis Vasilakis
 */
32 3ebe9884 Miltiadis Vasilakis
33 3ebe9884 Miltiadis Vasilakis
34 3ebe9884 Miltiadis Vasilakis
#import "JsonTestCase.h"
35 3ebe9884 Miltiadis Vasilakis
36 3ebe9884 Miltiadis Vasilakis
@interface RoundTripTest : JsonTestCase
37 3ebe9884 Miltiadis Vasilakis
@end
38 3ebe9884 Miltiadis Vasilakis
39 3ebe9884 Miltiadis Vasilakis
@implementation RoundTripTest
40 3ebe9884 Miltiadis Vasilakis
41 3ebe9884 Miltiadis Vasilakis
- (void)testString {
42 3ebe9884 Miltiadis Vasilakis
    [self foreachTestInSuite:@"Tests/Data/valid" apply:^(NSString *inpath, NSString *outpath) {
43 3ebe9884 Miltiadis Vasilakis
        NSError *error = nil;
44 3ebe9884 Miltiadis Vasilakis
        NSString *input = [NSString stringWithContentsOfFile:inpath encoding:NSUTF8StringEncoding error:&error];
45 3ebe9884 Miltiadis Vasilakis
        STAssertNotNil(input, @"%@ - %@", inpath, error);
46 3ebe9884 Miltiadis Vasilakis
47 3ebe9884 Miltiadis Vasilakis
        NSString *output = [NSString stringWithContentsOfFile:outpath encoding:NSUTF8StringEncoding error:&error];
48 3ebe9884 Miltiadis Vasilakis
        STAssertNotNil(output, @"%@ - %@", outpath, error);
49 3ebe9884 Miltiadis Vasilakis
50 3ebe9884 Miltiadis Vasilakis
        id object = [parser objectWithString:input];
51 3ebe9884 Miltiadis Vasilakis
        STAssertNotNil(object, parser.error);
52 3ebe9884 Miltiadis Vasilakis
53 3ebe9884 Miltiadis Vasilakis
        NSString *json = [writer stringWithObject:object];
54 3ebe9884 Miltiadis Vasilakis
        STAssertNotNil(json, writer.error);
55 3ebe9884 Miltiadis Vasilakis
56 3ebe9884 Miltiadis Vasilakis
        json = [json stringByAppendingString:@"\n"];
57 3ebe9884 Miltiadis Vasilakis
        STAssertEqualObjects(json, output, @"%@ vs %@", json, output);
58 3ebe9884 Miltiadis Vasilakis
    }];
59 3ebe9884 Miltiadis Vasilakis
60 3ebe9884 Miltiadis Vasilakis
    STAssertEquals(count, (NSUInteger)17, nil);
61 3ebe9884 Miltiadis Vasilakis
}
62 3ebe9884 Miltiadis Vasilakis
63 3ebe9884 Miltiadis Vasilakis
64 3ebe9884 Miltiadis Vasilakis
- (void)testData {
65 3ebe9884 Miltiadis Vasilakis
    [self foreachTestInSuite:@"Tests/Data/valid" apply:^(NSString *inpath, NSString *outpath) {
66 3ebe9884 Miltiadis Vasilakis
        NSError *error = nil;
67 3ebe9884 Miltiadis Vasilakis
        NSData *input = [NSData dataWithContentsOfFile:inpath];
68 3ebe9884 Miltiadis Vasilakis
        STAssertNotNil(input, @"%@ - %@", inpath, error);
69 3ebe9884 Miltiadis Vasilakis
70 3ebe9884 Miltiadis Vasilakis
        id object = [parser objectWithData:input];
71 3ebe9884 Miltiadis Vasilakis
        STAssertNotNil(object, nil);
72 3ebe9884 Miltiadis Vasilakis
73 3ebe9884 Miltiadis Vasilakis
        NSData *json = [writer dataWithObject:object];
74 3ebe9884 Miltiadis Vasilakis
        STAssertNotNil(json, nil);
75 3ebe9884 Miltiadis Vasilakis
76 3ebe9884 Miltiadis Vasilakis
        NSData *output = [NSData dataWithContentsOfFile:outpath];
77 3ebe9884 Miltiadis Vasilakis
        STAssertNotNil(output, @"%@ - %@", outpath, error);
78 3ebe9884 Miltiadis Vasilakis
79 3ebe9884 Miltiadis Vasilakis
        output = [NSData dataWithBytes:output.bytes length:output.length-1];
80 3ebe9884 Miltiadis Vasilakis
        STAssertEqualObjects(json, output, nil);
81 3ebe9884 Miltiadis Vasilakis
    }];
82 3ebe9884 Miltiadis Vasilakis
83 3ebe9884 Miltiadis Vasilakis
    STAssertEquals(count, (NSUInteger)17, nil);
84 3ebe9884 Miltiadis Vasilakis
}
85 3ebe9884 Miltiadis Vasilakis
86 3ebe9884 Miltiadis Vasilakis
87 3ebe9884 Miltiadis Vasilakis
- (void)testStringCategory {
88 3ebe9884 Miltiadis Vasilakis
    [self foreachTestInSuite:@"Tests/Data/valid" apply:^(NSString *inpath, NSString *outpath) {
89 3ebe9884 Miltiadis Vasilakis
        NSError *error = nil;
90 3ebe9884 Miltiadis Vasilakis
        NSString *input = [NSString stringWithContentsOfFile:inpath encoding:NSUTF8StringEncoding error:&error];
91 3ebe9884 Miltiadis Vasilakis
        STAssertNotNil(input, @"%@ - %@", inpath, error);
92 3ebe9884 Miltiadis Vasilakis
93 3ebe9884 Miltiadis Vasilakis
        NSString *output = [NSString stringWithContentsOfFile:outpath encoding:NSUTF8StringEncoding error:&error];
94 3ebe9884 Miltiadis Vasilakis
        STAssertNotNil(output, @"%@ - %@", outpath, error);
95 3ebe9884 Miltiadis Vasilakis
96 3ebe9884 Miltiadis Vasilakis
        id object = [input JSONValue];
97 3ebe9884 Miltiadis Vasilakis
        STAssertNotNil(object, nil);
98 3ebe9884 Miltiadis Vasilakis
99 3ebe9884 Miltiadis Vasilakis
        NSString *json = [object JSONRepresentation];
100 3ebe9884 Miltiadis Vasilakis
        STAssertNotNil(json, nil);
101 3ebe9884 Miltiadis Vasilakis
102 3ebe9884 Miltiadis Vasilakis
        json = [json stringByAppendingString:@"\n"];
103 3ebe9884 Miltiadis Vasilakis
        STAssertEqualObjects(json, output, nil);
104 3ebe9884 Miltiadis Vasilakis
    }];
105 3ebe9884 Miltiadis Vasilakis
106 3ebe9884 Miltiadis Vasilakis
    STAssertEquals(count, (NSUInteger)17, nil);
107 3ebe9884 Miltiadis Vasilakis
}
108 3ebe9884 Miltiadis Vasilakis
109 3ebe9884 Miltiadis Vasilakis
- (void)testDataCategory {
110 3ebe9884 Miltiadis Vasilakis
    [self foreachTestInSuite:@"Tests/Data/valid" apply:^(NSString *inpath, NSString *outpath) {
111 3ebe9884 Miltiadis Vasilakis
        NSError *error = nil;
112 3ebe9884 Miltiadis Vasilakis
        NSData *input = [NSData dataWithContentsOfFile:inpath];
113 3ebe9884 Miltiadis Vasilakis
        STAssertNotNil(input, @"%@ - %@", inpath, error);
114 3ebe9884 Miltiadis Vasilakis
115 3ebe9884 Miltiadis Vasilakis
        NSString *output = [NSString stringWithContentsOfFile:outpath encoding:NSUTF8StringEncoding error:&error];
116 3ebe9884 Miltiadis Vasilakis
        STAssertNotNil(output, @"%@ - %@", outpath, error);
117 3ebe9884 Miltiadis Vasilakis
118 3ebe9884 Miltiadis Vasilakis
        id object = [input JSONValue];
119 3ebe9884 Miltiadis Vasilakis
        STAssertNotNil(object, nil);
120 3ebe9884 Miltiadis Vasilakis
121 3ebe9884 Miltiadis Vasilakis
        NSString *json = [object JSONRepresentation];
122 3ebe9884 Miltiadis Vasilakis
        STAssertNotNil(json, nil);
123 3ebe9884 Miltiadis Vasilakis
124 3ebe9884 Miltiadis Vasilakis
        json = [json stringByAppendingString:@"\n"];
125 3ebe9884 Miltiadis Vasilakis
        STAssertEqualObjects(json, output, nil);
126 3ebe9884 Miltiadis Vasilakis
    }];
127 3ebe9884 Miltiadis Vasilakis
128 3ebe9884 Miltiadis Vasilakis
    STAssertEquals(count, (NSUInteger)17, nil);
129 3ebe9884 Miltiadis Vasilakis
}
130 3ebe9884 Miltiadis Vasilakis
131 3ebe9884 Miltiadis Vasilakis
@end