Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(1899)

Side by Side Diff: test/235.go

Issue 850041: code review 850041: single argument panic (Closed)
Patch Set: code review 850041: single argument panic Created 15 years ago
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/pkg/websocket/server.go ('k') | test/chan/doubleselect.go » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // $G $F.go && $L $F.$A && ./$A.out 1 // $G $F.go && $L $F.$A && ./$A.out
2 2
3 // Copyright 2009 The Go Authors. All rights reserved. 3 // Copyright 2009 The Go Authors. All rights reserved.
4 // Use of this source code is governed by a BSD-style 4 // Use of this source code is governed by a BSD-style
5 // license that can be found in the LICENSE file. 5 // license that can be found in the LICENSE file.
6 6
7 package main 7 package main
8 8
9 type T chan uint64; 9 type T chan uint64
10 10
11 func M(f uint64) (in, out T) { 11 func M(f uint64) (in, out T) {
12 » in = make(T, 100); 12 » in = make(T, 100)
13 » out = make(T, 100); 13 » out = make(T, 100)
14 go func(in, out T, f uint64) { 14 go func(in, out T, f uint64) {
15 for { 15 for {
16 » » » out <- f * <-in; 16 » » » out <- f*<-in
17 } 17 }
18 » }(in, out, f); 18 » }(in, out, f)
19 » return in, out; 19 » return in, out
20 } 20 }
21 21
22 22
23 func min(xs []uint64) uint64 { 23 func min(xs []uint64) uint64 {
24 » m := xs[0]; 24 » m := xs[0]
25 for i := 1; i < len(xs); i++ { 25 for i := 1; i < len(xs); i++ {
26 if xs[i] < m { 26 if xs[i] < m {
27 » » » m = xs[i]; 27 » » » m = xs[i]
28 } 28 }
29 } 29 }
30 » return m; 30 » return m
31 } 31 }
32 32
33 33
34 func main() { 34 func main() {
35 » F := []uint64{2, 3, 5}; 35 » F := []uint64{2, 3, 5}
36 » var n = len(F); 36 » var n = len(F)
37 OUT := []uint64{ 37 OUT := []uint64{
38 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 20, 24, 25, 27, 30, 32, 36, 38 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 20, 24, 25, 27, 30, 32, 36,
39 40, 45, 48, 50, 54, 60, 64, 72, 75, 80, 81, 90, 96, 100, 108, 12 0, 125, 39 40, 45, 48, 50, 54, 60, 64, 72, 75, 80, 81, 90, 96, 100, 108, 12 0, 125,
40 128, 135, 144, 150, 160, 162, 180, 192, 200, 216, 225, 240, 243, 250, 40 128, 135, 144, 150, 160, 162, 180, 192, 200, 216, 225, 240, 243, 250,
41 256, 270, 288, 300, 320, 324, 360, 375, 384, 400, 405, 432, 450, 480, 41 256, 270, 288, 300, 320, 324, 360, 375, 384, 400, 405, 432, 450, 480,
42 486, 500, 512, 540, 576, 600, 625, 640, 648, 675, 720, 729, 750, 768, 42 486, 500, 512, 540, 576, 600, 625, 640, 648, 675, 720, 729, 750, 768,
43 800, 810, 864, 900, 960, 972, 1000, 1024, 1080, 1125, 1152, 1200 , 1215, 43 800, 810, 864, 900, 960, 972, 1000, 1024, 1080, 1125, 1152, 1200 , 1215,
44 » » 1250, 1280, 1296, 1350, 1440, 1458, 1500, 1536, 1600 }; 44 » » 1250, 1280, 1296, 1350, 1440, 1458, 1500, 1536, 1600}
45 45
46 » x := uint64(1); 46 » x := uint64(1)
47 » ins := make([]T, n); 47 » ins := make([]T, n)
48 » outs := make([]T, n); 48 » outs := make([]T, n)
49 » xs := make([]uint64, n); 49 » xs := make([]uint64, n)
50 for i := 0; i < n; i++ { 50 for i := 0; i < n; i++ {
51 » » ins[i], outs[i] = M(F[i]); 51 » » ins[i], outs[i] = M(F[i])
52 » » xs[i] = x; 52 » » xs[i] = x
53 } 53 }
54 54
55 for i := 0; i < len(OUT); i++ { 55 for i := 0; i < len(OUT); i++ {
56 for i := 0; i < n; i++ { 56 for i := 0; i < n; i++ {
57 » » » ins[i] <- x; 57 » » » ins[i] <- x
58 } 58 }
59 59
60 for i := 0; i < n; i++ { 60 for i := 0; i < n; i++ {
61 » » » if xs[i] == x { xs[i] = <- outs[i]; } 61 » » » if xs[i] == x {
62 » » » » xs[i] = <-outs[i]
63 » » » }
62 } 64 }
63 65
64 » » x = min(xs); 66 » » x = min(xs)
65 » » if x != OUT[i] { panic("bad: ", x, " should be ", OUT[i]); } 67 » » if x != OUT[i] {
68 » » » println("bad: ", x, " should be ", OUT[i])
69 » » » panic("235")
70 » » }
66 } 71 }
67 } 72 }
OLDNEW
« no previous file with comments | « src/pkg/websocket/server.go ('k') | test/chan/doubleselect.go » ('j') | no next file with comments »

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld f62528b