Source file test/ken/complit.go

     1  // run
     2  
     3  // Copyright 2009 The Go Authors. All rights reserved.
     4  // Use of this source code is governed by a BSD-style
     5  // license that can be found in the LICENSE file.
     6  
     7  // Test composite literals.
     8  
     9  package main
    10  
    11  type	M	map[int]int
    12  type	S	struct{ a,b,c int };
    13  type	SS	struct{ aa,bb,cc S };
    14  type	SA	struct{ a,b,c [3]int };
    15  type	SC	struct{ a,b,c []int };
    16  type	SM	struct{ a,b,c M };
    17  
    18  func
    19  main() {
    20  	test("s.a", s.a);
    21  	test("s.b", s.b);
    22  	test("s.c", s.c);
    23  
    24  	test("ss.aa.a", ss.aa.a);
    25  	test("ss.aa.b", ss.aa.b);
    26  	test("ss.aa.c", ss.aa.c);
    27  
    28  	test("ss.bb.a", ss.bb.a);
    29  	test("ss.bb.b", ss.bb.b);
    30  	test("ss.bb.c", ss.bb.c);
    31  
    32  	test("ss.cc.a", ss.cc.a);
    33  	test("ss.cc.b", ss.cc.b);
    34  	test("ss.cc.c", ss.cc.c);
    35  
    36  	for i:=0; i<3; i++ {
    37  		test("a[i]", a[i]);
    38  		test("c[i]", c[i]);
    39  		test("m[i]", m[i]);
    40  
    41  		test("as[i].a", as[i].a);
    42  		test("as[i].b", as[i].b);
    43  		test("as[i].c", as[i].c);
    44  
    45  		test("cs[i].a", cs[i].a);
    46  		test("cs[i].b", cs[i].b);
    47  		test("cs[i].c", cs[i].c);
    48  
    49  		test("ms[i].a", ms[i].a);
    50  		test("ms[i].b", ms[i].b);
    51  		test("ms[i].c", ms[i].c);
    52  
    53  		test("sa.a[i]", sa.a[i]);
    54  		test("sa.b[i]", sa.b[i]);
    55  		test("sa.c[i]", sa.c[i]);
    56  
    57  		test("sc.a[i]", sc.a[i]);
    58  		test("sc.b[i]", sc.b[i]);
    59  		test("sc.c[i]", sc.c[i]);
    60  
    61  		test("sm.a[i]", sm.a[i]);
    62  		test("sm.b[i]", sm.b[i]);
    63  		test("sm.c[i]", sm.c[i]);
    64  
    65  		for j:=0; j<3; j++ {
    66  			test("aa[i][j]", aa[i][j]);
    67  			test("ac[i][j]", ac[i][j]);
    68  			test("am[i][j]", am[i][j]);
    69  			test("ca[i][j]", ca[i][j]);
    70  			test("cc[i][j]", cc[i][j]);
    71  			test("cm[i][j]", cm[i][j]);
    72  			test("ma[i][j]", ma[i][j]);
    73  			test("mc[i][j]", mc[i][j]);
    74  			test("mm[i][j]", mm[i][j]);
    75  		}
    76  	}
    77  
    78  }
    79  
    80  var	ref	= 0;
    81  
    82  func
    83  test(xs string, x int) {
    84  
    85  	if ref >= len(answers) {
    86  		println(xs, x);
    87  		return;
    88  	}
    89  
    90  	if x != answers[ref] {
    91  		println(xs, "is", x, "should be", answers[ref])
    92  	}
    93  	ref++;
    94  }
    95  
    96  
    97  var	a	= [3]int{1001, 1002, 1003}
    98  var	s	= S{1101, 1102, 1103}
    99  var	c	= []int{1201, 1202, 1203}
   100  var	m	= M{0:1301, 1:1302, 2:1303}
   101  
   102  var	aa	= [3][3]int{[3]int{2001,2002,2003}, [3]int{2004,2005,2006}, [3]int{2007,2008,2009}}
   103  var	as	= [3]S{S{2101,2102,2103},S{2104,2105,2106},S{2107,2108,2109}}
   104  var	ac	= [3][]int{[]int{2201,2202,2203}, []int{2204,2205,2206}, []int{2207,2208,2209}}
   105  var	am	= [3]M{M{0:2301,1:2302,2:2303}, M{0:2304,1:2305,2:2306}, M{0:2307,1:2308,2:2309}}
   106  
   107  var	sa	= SA{[3]int{3001,3002,3003},[3]int{3004,3005,3006},[3]int{3007,3008,3009}}
   108  var	ss	= SS{S{3101,3102,3103},S{3104,3105,3106},S{3107,3108,3109}}
   109  var	sc	= SC{[]int{3201,3202,3203},[]int{3204,3205,3206},[]int{3207,3208,3209}}
   110  var	sm	= SM{M{0:3301,1:3302,2:3303}, M{0:3304,1:3305,2:3306}, M{0:3307,1:3308,2:3309}}
   111  
   112  var	ca	= [][3]int{[3]int{4001,4002,4003}, [3]int{4004,4005,4006}, [3]int{4007,4008,4009}}
   113  var	cs	= []S{S{4101,4102,4103},S{4104,4105,4106},S{4107,4108,4109}}
   114  var	cc	= [][]int{[]int{4201,4202,4203}, []int{4204,4205,4206}, []int{4207,4208,4209}}
   115  var	cm	= []M{M{0:4301,1:4302,2:4303}, M{0:4304,1:4305,2:4306}, M{0:4307,1:4308,2:4309}}
   116  
   117  var	ma	= map[int][3]int{0:[3]int{5001,5002,5003}, 1:[3]int{5004,5005,5006}, 2:[3]int{5007,5008,5009}}
   118  var	ms	= map[int]S{0:S{5101,5102,5103},1:S{5104,5105,5106},2:S{5107,5108,5109}}
   119  var	mc	= map[int][]int{0:[]int{5201,5202,5203}, 1:[]int{5204,5205,5206}, 2:[]int{5207,5208,5209}}
   120  var	mm	= map[int]M{0:M{0:5301,1:5302,2:5303}, 1:M{0:5304,1:5305,2:5306}, 2:M{0:5307,1:5308,2:5309}}
   121  
   122  var	answers	= [...]int {
   123  	// s
   124  	1101, 1102, 1103,
   125  
   126  	// ss
   127  	3101, 3102, 3103,
   128  	3104, 3105, 3106,
   129  	3107, 3108, 3109,
   130  
   131  	// [0]
   132  	1001, 1201, 1301,
   133  	2101, 2102, 2103,
   134  	4101, 4102, 4103,
   135  	5101, 5102, 5103,
   136  	3001, 3004, 3007,
   137  	3201, 3204, 3207,
   138  	3301, 3304, 3307,
   139  
   140  	// [0][j]
   141  	2001, 2201, 2301, 4001, 4201, 4301, 5001, 5201, 5301,
   142  	2002, 2202, 2302, 4002, 4202, 4302, 5002, 5202, 5302,
   143  	2003, 2203, 2303, 4003, 4203, 4303, 5003, 5203, 5303,
   144  
   145  	// [1]
   146  	1002, 1202, 1302,
   147  	2104, 2105, 2106,
   148  	4104, 4105, 4106,
   149  	5104, 5105, 5106,
   150  	3002, 3005, 3008,
   151  	3202, 3205, 3208,
   152  	3302, 3305, 3308,
   153  
   154  	// [1][j]
   155  	2004, 2204, 2304, 4004, 4204, 4304, 5004, 5204, 5304,
   156  	2005, 2205, 2305, 4005, 4205, 4305, 5005, 5205, 5305,
   157  	2006, 2206, 2306, 4006, 4206, 4306, 5006, 5206, 5306,
   158  
   159  	// [2]
   160  	1003, 1203, 1303,
   161  	2107, 2108, 2109,
   162  	4107, 4108, 4109,
   163  	5107, 5108, 5109,
   164  	3003, 3006, 3009,
   165  	3203, 3206, 3209,
   166  	3303, 3306, 3309,
   167  
   168  	// [2][j]
   169  	2007, 2207, 2307, 4007, 4207, 4307, 5007, 5207, 5307,
   170  	2008, 2208, 2308, 4008, 4208, 4308, 5008, 5208, 5308,
   171  	2009, 2209, 2309, 4009, 4209, 4309, 5009, 5209, 5309,
   172  }
   173  

View as plain text