summaryrefslogtreecommitdiff
path: root/test/range.go
diff options
context:
space:
mode:
Diffstat (limited to 'test/range.go')
-rw-r--r--test/range.go297
1 files changed, 0 insertions, 297 deletions
diff --git a/test/range.go b/test/range.go
deleted file mode 100644
index 91ccd6307..000000000
--- a/test/range.go
+++ /dev/null
@@ -1,297 +0,0 @@
-// $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.
-
-package main
-
-// test range over channels
-
-func gen(c chan int, lo, hi int) {
- for i := lo; i <= hi; i++ {
- c <- i
- }
- close(c)
-}
-
-func seq(lo, hi int) chan int {
- c := make(chan int)
- go gen(c, lo, hi)
- return c
-}
-
-func testchan() {
- s := ""
- for i := range seq('a', 'z') {
- s += string(i)
- }
- if s != "abcdefghijklmnopqrstuvwxyz" {
- println("Wanted lowercase alphabet; got", s)
- panic("fail")
- }
-}
-
-// test that range over slice only evaluates
-// the expression after "range" once.
-
-var nmake = 0
-
-func makeslice() []int {
- nmake++
- return []int{1, 2, 3, 4, 5}
-}
-
-func testslice() {
- s := 0
- nmake = 0
- for _, v := range makeslice() {
- s += v
- }
- if nmake != 1 {
- println("range called makeslice", nmake, "times")
- panic("fail")
- }
- if s != 15 {
- println("wrong sum ranging over makeslice")
- panic("fail")
- }
-}
-
-func testslice1() {
- s := 0
- nmake = 0
- for i := range makeslice() {
- s += i
- }
- if nmake != 1 {
- println("range called makeslice", nmake, "times")
- panic("fail")
- }
- if s != 10 {
- println("wrong sum ranging over makeslice")
- panic("fail")
- }
-}
-
-// test that range over array only evaluates
-// the expression after "range" once.
-
-func makearray() [5]int {
- nmake++
- return [5]int{1, 2, 3, 4, 5}
-}
-
-func testarray() {
- s := 0
- nmake = 0
- for _, v := range makearray() {
- s += v
- }
- if nmake != 1 {
- println("range called makearray", nmake, "times")
- panic("fail")
- }
- if s != 15 {
- println("wrong sum ranging over makearray")
- panic("fail")
- }
-}
-
-func testarray1() {
- s := 0
- nmake = 0
- for i := range makearray() {
- s += i
- }
- if nmake != 1 {
- println("range called makearray", nmake, "times")
- panic("fail")
- }
- if s != 10 {
- println("wrong sum ranging over makearray")
- panic("fail")
- }
-}
-
-func makearrayptr() *[5]int {
- nmake++
- return &[5]int{1, 2, 3, 4, 5}
-}
-
-func testarrayptr() {
- nmake = 0
- x := len(makearrayptr())
- if x != 5 || nmake != 1 {
- println("len called makearrayptr", nmake, "times and got len", x)
- panic("fail")
- }
- nmake = 0
- x = cap(makearrayptr())
- if x != 5 || nmake != 1 {
- println("cap called makearrayptr", nmake, "times and got len", x)
- panic("fail")
- }
- s := 0
- nmake = 0
- for _, v := range makearrayptr() {
- s += v
- }
- if nmake != 1 {
- println("range called makearrayptr", nmake, "times")
- panic("fail")
- }
- if s != 15 {
- println("wrong sum ranging over makearrayptr")
- panic("fail")
- }
-}
-
-func testarrayptr1() {
- s := 0
- nmake = 0
- for i := range makearrayptr() {
- s += i
- }
- if nmake != 1 {
- println("range called makearrayptr", nmake, "times")
- panic("fail")
- }
- if s != 10 {
- println("wrong sum ranging over makearrayptr")
- panic("fail")
- }
-}
-
-// test that range over string only evaluates
-// the expression after "range" once.
-
-func makestring() string {
- nmake++
- return "abcd☺"
-}
-
-func teststring() {
- s := 0
- nmake = 0
- for _, v := range makestring() {
- s += v
- }
- if nmake != 1 {
- println("range called makestring", nmake, "times")
- panic("fail")
- }
- if s != 'a'+'b'+'c'+'d'+'☺' {
- println("wrong sum ranging over makestring")
- panic("fail")
- }
-}
-
-func teststring1() {
- s := 0
- nmake = 0
- for i := range makestring() {
- s += i
- }
- if nmake != 1 {
- println("range called makestring", nmake, "times")
- panic("fail")
- }
- if s != 10 {
- println("wrong sum ranging over makestring")
- panic("fail")
- }
-}
-
-// test that range over map only evaluates
-// the expression after "range" once.
-
-func makemap() map[int]int {
- nmake++
- return map[int]int{0:'a', 1:'b', 2:'c', 3:'d', 4:'☺'}
-}
-
-func testmap() {
- s := 0
- nmake = 0
- for _, v := range makemap() {
- s += v
- }
- if nmake != 1 {
- println("range called makemap", nmake, "times")
- panic("fail")
- }
- if s != 'a'+'b'+'c'+'d'+'☺' {
- println("wrong sum ranging over makemap")
- panic("fail")
- }
-}
-
-func testmap1() {
- s := 0
- nmake = 0
- for i := range makemap() {
- s += i
- }
- if nmake != 1 {
- println("range called makemap", nmake, "times")
- panic("fail")
- }
- if s != 10 {
- println("wrong sum ranging over makemap")
- panic("fail")
- }
-}
-
-// test that range evaluates the index and value expressions
-// exactly once per iteration.
-
-var ncalls = 0
-
-func getvar(p *int) *int {
- ncalls++
- return p
-}
-
-func testcalls() {
- var i, v int
- si := 0
- sv := 0
- for *getvar(&i), *getvar(&v) = range [2]int{1, 2} {
- si += i
- sv += v
- }
- if ncalls != 4 {
- println("wrong number of calls:", ncalls, "!= 4")
- panic("fail")
- }
- if si != 1 || sv != 3 {
- println("wrong sum in testcalls", si, sv)
- panic("fail")
- }
-
- ncalls = 0
- for *getvar(&i), *getvar(&v) = range [0]int{} {
- println("loop ran on empty array")
- panic("fail")
- }
- if ncalls != 0 {
- println("wrong number of calls:", ncalls, "!= 0")
- panic("fail")
- }
-}
-
-func main() {
- testchan()
- testarray()
- testarray1()
- testarrayptr()
- testarrayptr1()
- testslice()
- testslice1()
- teststring()
- teststring1()
- testmap()
- testmap1()
- testcalls()
-}