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 |