|  | module thrift_test_common; | 
|  |  | 
|  | import std.stdio; | 
|  | import thrift.test.ThriftTest_types; | 
|  |  | 
|  | enum ProtocolType { | 
|  | binary, | 
|  | compact, | 
|  | json | 
|  | } | 
|  |  | 
|  | void writeInsanityReturn(in Insanity[Numberz][UserId] insane) { | 
|  | write("{"); | 
|  | foreach(key1, value1; insane) { | 
|  | writef("%s => {", key1); | 
|  | foreach(key2, value2; value1) { | 
|  | writef("%s => {", key2); | 
|  | write("{"); | 
|  | foreach(key3, value3; value2.userMap) { | 
|  | writef("%s => %s, ", key3, value3); | 
|  | } | 
|  | write("}, "); | 
|  |  | 
|  | write("{"); | 
|  | foreach (x; value2.xtructs) { | 
|  | writef("{\"%s\", %s, %s, %s}, ", | 
|  | x.string_thing, x.byte_thing, x.i32_thing, x.i64_thing); | 
|  | } | 
|  | write("}"); | 
|  |  | 
|  | write("}, "); | 
|  | } | 
|  | write("}, "); | 
|  | } | 
|  | write("}"); | 
|  | } | 
|  |  | 
|  | Insanity[Numberz][UserId] testInsanityReturn; | 
|  | int[int][int] testMapMapReturn; | 
|  |  | 
|  | static this() { | 
|  | testInsanityReturn = { | 
|  | Insanity[Numberz][UserId] insane; | 
|  |  | 
|  | Xtruct hello; | 
|  | hello.string_thing = "Hello2"; | 
|  | hello.byte_thing = 2; | 
|  | hello.i32_thing = 2; | 
|  | hello.i64_thing = 2; | 
|  |  | 
|  | Xtruct goodbye; | 
|  | goodbye.string_thing = "Goodbye4"; | 
|  | goodbye.byte_thing = 4; | 
|  | goodbye.i32_thing = 4; | 
|  | goodbye.i64_thing = 4; | 
|  |  | 
|  | Insanity crazy; | 
|  | crazy.userMap[Numberz.EIGHT] = 8; | 
|  | crazy.xtructs ~= goodbye; | 
|  |  | 
|  | Insanity looney; | 
|  | // The C++ TestServer also assigns these to crazy, but that is probably | 
|  | // an oversight. | 
|  | looney.userMap[Numberz.FIVE] = 5; | 
|  | looney.xtructs ~= hello; | 
|  |  | 
|  | Insanity[Numberz] first_map; | 
|  | first_map[Numberz.TWO] = crazy; | 
|  | first_map[Numberz.THREE] = crazy; | 
|  | insane[1] = first_map; | 
|  |  | 
|  | Insanity[Numberz] second_map; | 
|  | second_map[Numberz.SIX] = looney; | 
|  | insane[2] = second_map; | 
|  | return insane; | 
|  | }(); | 
|  |  | 
|  | testMapMapReturn = { | 
|  | int[int] pos; | 
|  | int[int] neg; | 
|  |  | 
|  | for (int i = 1; i < 5; i++) { | 
|  | pos[i] = i; | 
|  | neg[-i] = -i; | 
|  | } | 
|  |  | 
|  | int[int][int] result; | 
|  | result[4] = pos; | 
|  | result[-4] = neg; | 
|  | return result; | 
|  | }(); | 
|  | } |