Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
G
golang
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
go
golang
Commits
4ce3065e
Commit
4ce3065e
authored
Jul 14, 2008
by
Rob Pike
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update golden
improve sieve test, and split into two versions SVN=127077
parent
af58f17a
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
90 additions
and
3 deletions
+90
-3
sieve.go
test/chan/sieve.go
+72
-0
golden.out
test/golden.out
+17
-2
run
test/run
+1
-1
No files found.
test/chan/sieve.go
0 → 100644
View file @
4ce3065e
// $G $D/$F.go && $L $F.$A && ./$A.out
// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// This version generates up to 100 and checks the results.
// With a channel, of course.
package
main
// Send the sequence 2, 3, 4, ... to channel 'ch'.
func
Generate
(
ch
*
chan
>
int
)
{
for
i
:=
2
;
i
<
100
;
i
++
{
>
ch
=
i
// Send 'i' to channel 'ch'.
}
}
// Copy the values from channel 'in' to channel 'out',
// removing those divisible by 'prime'.
func
Filter
(
in
*
chan
<
int
,
out
*
chan
>
int
,
prime
int
)
{
for
{
i
:=
<
in
// Receive value of new variable 'i' from 'in'.
if
i
%
prime
!=
0
{
>
out
=
i
// Send 'i' to channel 'out'.
}
}
}
// The prime sieve: Daisy-chain Filter processes together.
func
Sieve
(
primes
*
chan
>
int
)
{
ch
:=
new
(
chan
int
);
// Create a new channel.
go
Generate
(
ch
);
// Start Generate() as a subprocess.
for
{
prime
:=
<
ch
;
>
primes
=
prime
;
ch1
:=
new
(
chan
int
);
go
Filter
(
ch
,
ch1
,
prime
);
ch
=
ch1
}
}
func
main
()
{
primes
:=
new
(
chan
int
);
go
Sieve
(
primes
);
if
<
primes
!=
2
{
panic
2
}
if
<
primes
!=
3
{
panic
3
}
if
<
primes
!=
5
{
panic
5
}
if
<
primes
!=
7
{
panic
7
}
if
<
primes
!=
11
{
panic
11
}
if
<
primes
!=
13
{
panic
13
}
if
<
primes
!=
17
{
panic
17
}
if
<
primes
!=
19
{
panic
19
}
if
<
primes
!=
23
{
panic
23
}
if
<
primes
!=
29
{
panic
29
}
if
<
primes
!=
31
{
panic
31
}
if
<
primes
!=
37
{
panic
37
}
if
<
primes
!=
41
{
panic
41
}
if
<
primes
!=
43
{
panic
43
}
if
<
primes
!=
47
{
panic
47
}
if
<
primes
!=
53
{
panic
53
}
if
<
primes
!=
59
{
panic
59
}
if
<
primes
!=
61
{
panic
61
}
if
<
primes
!=
67
{
panic
67
}
if
<
primes
!=
71
{
panic
71
}
if
<
primes
!=
73
{
panic
73
}
if
<
primes
!=
79
{
panic
79
}
if
<
primes
!=
83
{
panic
83
}
if
<
primes
!=
89
{
panic
89
}
if
<
primes
!=
97
{
panic
97
}
sys
.
exit
(
0
);
}
test/golden.out
View file @
4ce3065e
...
...
@@ -30,11 +30,22 @@ hello, world
=========== ./nil.go
=========== ./peano.go
0! = 1
1! = 1
2! = 2
3! = 6
4! = 24
5! = 120
6! = 720
7! = 5040
8! = 40320
9! = 362880
10! = 3628800
=========== ./readfile.go
=========== ./sieve.go
sieve.go:8: fatal error: walktype: switch 1 unknown op SEND l(212)
BUG: known to fail incorrectly
=========== ./simassign.go
...
...
@@ -49,6 +60,8 @@ BUG: known to fail incorrectly
=========== ./turing.go
Hello World!
=========== ./utf.go
=========== ken/for.go
=========== ken/interfun.go
...
...
@@ -101,6 +114,8 @@ abcxyz-abcxyz-abcxyz-abcxyz-abcxyz-abcxyz-abcxyz
=========== ken/strvar.go
=========== chan/sieve.go
=========== bugs/bug010.go
bugs/bug010.go:13: error in shape across CALL
BUG: known to fail incorrectly
...
...
test/run
View file @
4ce3065e
...
...
@@ -18,7 +18,7 @@ export L=${A}l
failed
=
0
for
dir
in
.
ken bugs fixedbugs
for
dir
in
.
ken
chan
bugs fixedbugs
do
for
i
in
$dir
/
*
.go
do
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment