| 2386 | ) |
| 2387 | |
| 2388 | func cycleTests() []test { |
| 2389 | const label = "Cycle" |
| 2390 | |
| 2391 | type ( |
| 2392 | P *P |
| 2393 | S []S |
| 2394 | M map[int]M |
| 2395 | ) |
| 2396 | |
| 2397 | makeGraph := func() map[string]*CycleAlpha { |
| 2398 | v := map[string]*CycleAlpha{ |
| 2399 | "Foo": &CycleAlpha{ |
| 2400 | Name: "Foo", |
| 2401 | Bravos: map[string]*CycleBravo{ |
| 2402 | "FooBravo": &CycleBravo{ |
| 2403 | Name: "FooBravo", |
| 2404 | ID: 101, |
| 2405 | Mods: 100, |
| 2406 | Alphas: map[string]*CycleAlpha{ |
| 2407 | "Foo": nil, // cyclic reference |
| 2408 | }, |
| 2409 | }, |
| 2410 | }, |
| 2411 | }, |
| 2412 | "Bar": &CycleAlpha{ |
| 2413 | Name: "Bar", |
| 2414 | Bravos: map[string]*CycleBravo{ |
| 2415 | "BarBuzzBravo": &CycleBravo{ |
| 2416 | Name: "BarBuzzBravo", |
| 2417 | ID: 102, |
| 2418 | Mods: 2, |
| 2419 | Alphas: map[string]*CycleAlpha{ |
| 2420 | "Bar": nil, // cyclic reference |
| 2421 | "Buzz": nil, // cyclic reference |
| 2422 | }, |
| 2423 | }, |
| 2424 | "BuzzBarBravo": &CycleBravo{ |
| 2425 | Name: "BuzzBarBravo", |
| 2426 | ID: 103, |
| 2427 | Mods: 0, |
| 2428 | Alphas: map[string]*CycleAlpha{ |
| 2429 | "Bar": nil, // cyclic reference |
| 2430 | "Buzz": nil, // cyclic reference |
| 2431 | }, |
| 2432 | }, |
| 2433 | }, |
| 2434 | }, |
| 2435 | "Buzz": &CycleAlpha{ |
| 2436 | Name: "Buzz", |
| 2437 | Bravos: map[string]*CycleBravo{ |
| 2438 | "BarBuzzBravo": nil, // cyclic reference |
| 2439 | "BuzzBarBravo": nil, // cyclic reference |
| 2440 | }, |
| 2441 | }, |
| 2442 | } |
| 2443 | v["Foo"].Bravos["FooBravo"].Alphas["Foo"] = v["Foo"] |
| 2444 | v["Bar"].Bravos["BarBuzzBravo"].Alphas["Bar"] = v["Bar"] |
| 2445 | v["Bar"].Bravos["BarBuzzBravo"].Alphas["Buzz"] = v["Buzz"] |