struct_test.go 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404
  1. package test
  2. import "time"
  3. func init() {
  4. structFields1To11()
  5. testCases = append(testCases,
  6. (*struct1Alias)(nil),
  7. (*struct {
  8. F [4]*string
  9. })(nil),
  10. (*struct {
  11. F [4]string
  12. })(nil),
  13. (*struct {
  14. F1 [4]stringAlias
  15. F2 arrayAlis
  16. })(nil),
  17. (*struct {
  18. F1 [4]string
  19. F2 [4]string
  20. F3 [4]string
  21. })(nil),
  22. (*struct {
  23. F [4]struct {
  24. F1 string
  25. F2 string
  26. F3 string
  27. }
  28. })(nil),
  29. (*struct{})(nil),
  30. (*structEmpty)(nil),
  31. (*struct {
  32. Byte1 byte
  33. Byte2 byte
  34. Bool1 bool
  35. Bool2 bool
  36. Int8 int8
  37. Int16 int16
  38. Int32 int32
  39. Int64 int64
  40. Uint8 uint8
  41. Uint16 uint16
  42. Uint32 uint32
  43. Uint64 uint64
  44. Float32 float32
  45. Float64 float64
  46. String1 string
  47. String2 string
  48. })(nil),
  49. (*struct {
  50. F float64
  51. })(nil),
  52. (*struct {
  53. F float64Alias
  54. })(nil),
  55. (*struct {
  56. F1 float64
  57. F2 float64
  58. F3 float64
  59. })(nil),
  60. (*struct {
  61. F1 float64Alias
  62. F2 float64Alias
  63. F3 float64Alias
  64. })(nil),
  65. (*struct {
  66. F int32
  67. })(nil),
  68. (*struct {
  69. F int32Alias
  70. })(nil),
  71. (*struct {
  72. F1 int32
  73. F2 int32
  74. F3 int32
  75. })(nil),
  76. (*struct {
  77. F1 int32Alias
  78. F2 int32Alias
  79. F3 int32Alias
  80. })(nil),
  81. (*struct {
  82. F int64
  83. })(nil),
  84. (*struct {
  85. F map[int32]*string
  86. })(nil),
  87. (*struct {
  88. F map[int32]string
  89. })(nil),
  90. (*struct {
  91. F map[int32]struct {
  92. F1 string
  93. F2 string
  94. F3 string
  95. }
  96. })(nil),
  97. (*struct {
  98. F map[string]*string
  99. })(nil),
  100. (*struct {
  101. F map[string]string
  102. })(nil),
  103. (*struct {
  104. F map[string]struct {
  105. F1 string
  106. F2 string
  107. F3 string
  108. }
  109. })(nil),
  110. (*struct {
  111. F *float64
  112. })(nil),
  113. (*struct {
  114. F1 *float64Alias
  115. F2 ptrFloat64Alias
  116. F3 *ptrFloat64Alias
  117. })(nil),
  118. (*struct {
  119. F *int32
  120. })(nil),
  121. (*struct {
  122. F1 *int32Alias
  123. F2 ptrInt32Alias
  124. F3 *ptrInt32Alias
  125. })(nil),
  126. (*struct {
  127. F **struct{}
  128. })(nil),
  129. (*struct {
  130. F **struct {
  131. F1 string
  132. F2 string
  133. F3 string
  134. }
  135. })(nil),
  136. (*struct {
  137. F *string
  138. })(nil),
  139. (*struct {
  140. F1 *stringAlias
  141. F2 ptrStringAlias
  142. F3 *ptrStringAlias
  143. })(nil),
  144. (*struct {
  145. F *struct{}
  146. })(nil),
  147. (*struct {
  148. F *struct {
  149. F1 string
  150. F2 string
  151. F3 string
  152. }
  153. })(nil),
  154. (*struct {
  155. F1 *float64
  156. F2 *float64
  157. F3 *float64
  158. })(nil),
  159. (*struct {
  160. F1 *int32
  161. F2 *int32
  162. F3 *int32
  163. })(nil),
  164. (*struct {
  165. F1 *string
  166. F2 *string
  167. F3 *string
  168. })(nil),
  169. (*struct {
  170. F []*string
  171. })(nil),
  172. (*struct {
  173. F []string
  174. })(nil),
  175. (*struct {
  176. F1 []stringAlias
  177. F2 stringAlias
  178. })(nil),
  179. (*struct {
  180. F1 []string
  181. F2 []string
  182. F3 []string
  183. })(nil),
  184. (*struct {
  185. F []struct {
  186. F1 string
  187. F2 string
  188. F3 string
  189. }
  190. })(nil),
  191. (*struct {
  192. F string
  193. })(nil),
  194. (*struct {
  195. F stringAlias
  196. })(nil),
  197. (*struct {
  198. F1 string
  199. F2 string
  200. F3 string
  201. })(nil),
  202. (*struct {
  203. F1 stringAlias
  204. F2 stringAlias
  205. F3 stringAlias
  206. })(nil),
  207. (*struct {
  208. F1 struct{}
  209. F2 struct{}
  210. F3 struct{}
  211. })(nil),
  212. (*struct {
  213. F struct{}
  214. })(nil),
  215. (*struct {
  216. F structEmpty
  217. })(nil),
  218. (*struct {
  219. F struct {
  220. F1 float32
  221. F2 float32
  222. F3 float32
  223. }
  224. })(nil),
  225. (*struct {
  226. F struct {
  227. F float32
  228. }
  229. })(nil),
  230. (*struct {
  231. F struct2
  232. })(nil),
  233. (*struct {
  234. F struct {
  235. F1 int32
  236. F2 int32
  237. F3 int32
  238. }
  239. })(nil),
  240. (*struct {
  241. F struct {
  242. F1 string
  243. F2 string
  244. F3 string
  245. }
  246. })(nil),
  247. (*struct {
  248. F struct3
  249. })(nil),
  250. (*struct {
  251. TF1 struct {
  252. F2 int
  253. F1 *withTime
  254. }
  255. })(nil),
  256. (*DeeplyNested)(nil),
  257. )
  258. }
  259. func structFields1To11() {
  260. testCases = append(testCases,
  261. (*struct {
  262. Field1 string
  263. })(nil),
  264. (*struct {
  265. Field1 string
  266. Field2 string
  267. })(nil),
  268. (*struct {
  269. Field1 string
  270. Field2 string
  271. Field3 string
  272. })(nil),
  273. (*struct {
  274. Field1 string
  275. Field2 string
  276. Field3 string
  277. Field4 string
  278. })(nil),
  279. (*struct {
  280. Field1 string
  281. Field2 string
  282. Field3 string
  283. Field4 string
  284. Field5 string
  285. })(nil),
  286. (*struct {
  287. Field1 string
  288. Field2 string
  289. Field3 string
  290. Field4 string
  291. Field5 string
  292. Field6 string
  293. })(nil),
  294. (*struct {
  295. Field1 string
  296. Field2 string
  297. Field3 string
  298. Field4 string
  299. Field5 string
  300. Field6 string
  301. Field7 string
  302. })(nil),
  303. (*struct {
  304. Field1 string
  305. Field2 string
  306. Field3 string
  307. Field4 string
  308. Field5 string
  309. Field6 string
  310. Field7 string
  311. Field8 string
  312. })(nil),
  313. (*struct {
  314. Field1 string
  315. Field2 string
  316. Field3 string
  317. Field4 string
  318. Field5 string
  319. Field6 string
  320. Field7 string
  321. Field8 string
  322. Field9 string
  323. })(nil),
  324. (*struct {
  325. Field1 string
  326. Field2 string
  327. Field3 string
  328. Field4 string
  329. Field5 string
  330. Field6 string
  331. Field7 string
  332. Field8 string
  333. Field9 string
  334. Field10 string
  335. })(nil),
  336. (*struct {
  337. Field1 string
  338. Field2 string
  339. Field3 string
  340. Field4 string
  341. Field5 string
  342. Field6 string
  343. Field7 string
  344. Field8 string
  345. Field9 string
  346. Field10 string
  347. Field11 string
  348. })(nil),
  349. )
  350. }
  351. type struct1 struct {
  352. Byte1 byte
  353. Byte2 byte
  354. Bool1 bool
  355. Bool2 bool
  356. Int8 int8
  357. Int16 int16
  358. Int32 int32
  359. Uint8 uint8
  360. Uint16 uint16
  361. Uint32 uint32
  362. Float32 float32
  363. Float64 float64
  364. String1 string
  365. String2 string
  366. }
  367. type struct1Alias struct1
  368. type struct2 struct {
  369. F float64
  370. }
  371. type struct3 struct {
  372. F1 stringAlias
  373. F2 stringAlias
  374. F3 stringAlias
  375. }
  376. type withTime struct {
  377. time.Time
  378. }
  379. func (t *withTime) UnmarshalJSON(b []byte) error {
  380. return nil
  381. }
  382. func (t withTime) MarshalJSON() ([]byte, error) {
  383. return []byte(`"fake"`), nil
  384. }
  385. type YetYetAnotherObject struct {
  386. Field string
  387. }
  388. type YetAnotherObject struct {
  389. Field *YetYetAnotherObject
  390. }
  391. type AnotherObject struct {
  392. Field *YetAnotherObject
  393. }
  394. type DeeplyNested struct {
  395. Me *AnotherObject
  396. }