1
0
mirror of https://github.com/golang/go synced 2024-09-24 23:10:12 -06:00

add a trivial visitor method, just for fun

R=gri
DELTA=31  (30 added, 1 deleted, 0 changed)
OCL=24568
CL=24575
This commit is contained in:
Rob Pike 2009-02-06 14:32:09 -08:00
parent 0970c46863
commit 39d05ae808
2 changed files with 30 additions and 1 deletions

View File

@ -140,6 +140,13 @@ func (p *Array) Slice(i, j int) *Array {
} }
func (p *Array) Do(f func(elem Element)) {
for i := 0; i < len(p.a); i++ {
f(p.a[i]) // not too safe if f changes the Array
}
}
// Convenience wrappers // Convenience wrappers
func (p *Array) Push(x Element) { func (p *Array) Push(x Element) {

View File

@ -139,7 +139,6 @@ func TestInsertArray(t *testing.T) {
verify_pattern(t, a, 8, 1000, 2); verify_pattern(t, a, 8, 1000, 2);
} }
func TestSorting(t *testing.T) { func TestSorting(t *testing.T) {
const n = 100; const n = 100;
a := array.NewIntArray(n); a := array.NewIntArray(n);
@ -148,3 +147,26 @@ func TestSorting(t *testing.T) {
} }
if sort.IsSorted(a) { t.Error("not sorted") } if sort.IsSorted(a) { t.Error("not sorted") }
} }
func TestDo(t *testing.T) {
const n = 25;
const salt = 17;
a := array.NewIntArray(n);
for i := 0; i < n; i++ {
a.Set(i, salt * i);
}
count := 0;
a.Do(
func(e array.Element) {
i := e.(int);
if i != count*salt {
t.Error("value at", count, "should be", count*salt, "not", i)
}
count++;
}
);
if count != n {
t.Error("should visit", n, "values; did visit", count)
}
}