blob: fb4ce0716989101efd037ada87da3548f92c33a3 [file] [log] [blame]
David Reissea2cba82009-03-30 21:35:00 +00001/*
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License. You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing,
13 * software distributed under the License is distributed on an
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 * KIND, either express or implied. See the License for the
16 * specific language governing permissions and limitations
17 * under the License.
18 */
19
David Reiss2a4bfd62008-04-07 23:45:00 +000020namespace cpp thrift.test.debug
David Reiss3b15ebc2008-03-02 06:29:19 +000021namespace java thrift.test
David Reiss00dcccf2007-07-21 01:18:10 +000022
David Reissdb0ea152008-02-18 01:49:37 +000023struct Doubles {
24 1: double nan,
25 2: double inf,
26 3: double neginf,
27 4: double repeating,
28 5: double big,
29 6: double small,
30 7: double zero,
31 8: double negzero,
32}
33
David Reiss00dcccf2007-07-21 01:18:10 +000034struct OneOfEach {
35 1: bool im_true,
36 2: bool im_false,
David Reissa8efac82008-12-16 20:28:13 +000037 3: byte a_bite = 200,
38 4: i16 integer16 = 33000,
David Reiss00dcccf2007-07-21 01:18:10 +000039 5: i32 integer32,
David Reissa8efac82008-12-16 20:28:13 +000040 6: i64 integer64 = 10000000000,
David Reiss00dcccf2007-07-21 01:18:10 +000041 7: double double_precision,
42 8: string some_characters,
43 9: string zomg_unicode,
44 10: bool what_who,
David Reissdb0ea152008-02-18 01:49:37 +000045 11: binary base64,
David Reissa8efac82008-12-16 20:28:13 +000046 12: list<byte> byte_list = [1, 2, 3],
47 13: list<i16> i16_list = [1,2,3],
48 14: list<i64> i64_list = [1,2,3]
David Reiss00dcccf2007-07-21 01:18:10 +000049}
50
51struct Bonk {
52 1: i32 type,
53 2: string message,
54}
55
56struct Nesting {
57 1: Bonk my_bonk,
58 2: OneOfEach my_ooe,
59}
60
61struct HolyMoley {
62 1: list<OneOfEach> big,
63 2: set<list<string>> contain,
64 3: map<string,list<Bonk>> bonks,
65}
David Reiss382fc302007-08-25 18:01:30 +000066
67struct Backwards {
68 2: i32 first_tag2,
69 1: i32 second_tag1,
70}
71
72struct Empty {
73}
74
75struct Wrapper {
76 1: Empty foo
77}
78
79struct RandomStuff {
80 1: i32 a,
81 2: i32 b,
82 3: i32 c,
83 4: i32 d,
84 5: list<i32> myintlist,
85 6: map<i32,Wrapper> maps,
86 7: i64 bigint,
87 8: double triple,
88}
89
David Reiss4a8f46c2008-03-07 20:12:07 +000090struct Base64 {
91 1: i32 a,
92 2: binary b1,
93 3: binary b2,
94 4: binary b3,
95 5: binary b4,
96 6: binary b5,
97 7: binary b6,
98}
99
Bryan Duxbury538e3442009-02-10 04:49:39 +0000100struct CompactProtoTestStruct {
101 // primitive fields
102 1: byte a_byte = 127;
103 2: i16 a_i16 = 32000;
104 3: i32 a_i32 = 1000000000;
105 4: i64 a_i64 = 0xffffffffff;
106 5: double a_double = 5.6789;
107 6: string a_string = "my string";
108 7: binary a_binary;
109 8: bool true_field = 1;
110 9: bool false_field = 0;
111 10: Empty empty_struct_field = {};
112
113 // primitives in lists
114 11: list<byte> byte_list = [-127, -1, 0, 1, 127];
115 12: list<i16> i16_list = [-1, 0, 1, 0x7fff];
116 13: list<i32> i32_list = [-1, 0, 0xff, 0xffff, 0xffffff, 0x7fffffff];
117 14: list<i64> i64_list = [-1, 0, 0xff, 0xffff, 0xffffff, 0xffffffff, 0xffffffffff, 0xffffffffffff, 0xffffffffffffff, 0x7fffffffffffffff];
118 15: list<double> double_list = [0.1, 0.2, 0.3];
119 16: list<string> string_list = ["first", "second", "third"];
120 17: list<binary> binary_list;
121 18: list<bool> boolean_list = [1, 1, 1, 0, 0, 0];
122 19: list<Empty> struct_list = [{}, {}];
123
124 // primitives in sets
125 20: set<byte> byte_set = [-127, -1, 0, 1, 127];
126 21: set<i16> i16_set = [-1, 0, 1, 0x7fff];
127 22: set<i32> i32_set = [1, 2, 3];
128 23: set<i64> i64_set = [-1, 0, 0xff, 0xffff, 0xffffff, 0xffffffff, 0xffffffffff, 0xffffffffffff, 0xffffffffffffff, 0x7fffffffffffffff];
129 24: set<double> double_set = [0.1, 0.2, 0.3];
130 25: set<string> string_set = ["first", "second", "third"];
131 26: set<binary> binary_set;
132 27: set<bool> boolean_set = [1, 0];
133 28: set<Empty> struct_set = [{}];
134
135 // maps
136 // primitives as keys
137 29: map<byte, byte> byte_byte_map = {1 : 2};
138 30: map<i16, byte> i16_byte_map = {1 : 1, -1 : 1, 0x7fff : 1};
139 31: map<i32, byte> i32_byte_map = {1 : 1, -1 : 1, 0x7fffffff : 1};
140 32: map<i64, byte> i64_byte_map = {0 : 1, 1 : 1, -1 : 1, 0x7fffffffffffffff : 1};
141 33: map<double, byte> double_byte_map = {-1.1 : 1, 1.1 : 1};
142 34: map<string, byte> string_byte_map = {"first" : 1, "second" : 2, "third" : 3, "" : 0};
143 35: map<binary, byte> binary_byte_map;
144 36: map<bool, byte> boolean_byte_map = {1 : 1, 0 : 0};
145 // primitives as values
146 37: map<byte, i16> byte_i16_map = {1 : 1, 2 : -1, 3 : 0x7fff};
147 38: map<byte, i32> byte_i32_map = {1 : 1, 2 : -1, 3 : 0x7fffffff};
148 39: map<byte, i64> byte_i64_map = {1 : 1, 2 : -1, 3 : 0x7fffffffffffffff};
149 40: map<byte, double> byte_double_map = {1 : 0.1, 2 : -0.1, 3 : 1000000.1};
150 41: map<byte, string> byte_string_map = {1 : "", 2 : "blah", 3 : "loooooooooooooong string"};
151 42: map<byte, binary> byte_binary_map;
152 43: map<byte, bool> byte_boolean_map = {1 : 1, 2 : 0};
153 // collections as keys
154 44: map<list<byte>, byte> list_byte_map = {[1, 2, 3] : 1, [0, 1] : 2, [] : 0};
155 45: map<set<byte>, byte> set_byte_map = {[1, 2, 3] : 1, [0, 1] : 2, [] : 0};
156 46: map<map<byte,byte>, byte> map_byte_map = {{1 : 1} : 1, {2 : 2} : 2, {} : 0};
157 // collections as values
158 47: map<byte, map<byte,byte>> byte_map_map = {0 : {}, 1 : {1 : 1}, 2 : {1 : 1, 2 : 2}};
159 48: map<byte, set<byte>> byte_set_map = {0 : [], 1 : [1], 2 : [1, 2]};
160 49: map<byte, list<byte>> byte_list_map = {0 : [], 1 : [1], 2 : [1, 2]};
161}
Bryan Duxbury5b8b4842009-04-01 20:10:15 +0000162
163
164
165service Srv {
David Reiss689c9ad2009-04-02 19:24:02 +0000166 i32 Janky(1: i32 arg);
Bryan Duxbury5b8b4842009-04-01 20:10:15 +0000167
168 // return type only methods
169
170 void voidMethod();
171 i32 primitiveMethod();
172 CompactProtoTestStruct structMethod();
173}
174
175service Inherited extends Srv {
David Reiss689c9ad2009-04-02 19:24:02 +0000176 i32 identity(1: i32 arg)
Bryan Duxbury5b8b4842009-04-01 20:10:15 +0000177}
178
179service EmptyService {}
180
181// The only purpose of this thing is to increase the size of the generated code
182// so that ZlibTest has more highly compressible data to play with.
183struct BlowUp {
184 1: map<list<i32>,set<map<i32,string>>> b1;
185 2: map<list<i32>,set<map<i32,string>>> b2;
186 3: map<list<i32>,set<map<i32,string>>> b3;
187 4: map<list<i32>,set<map<i32,string>>> b4;
188}
189