package walk import ( "testing" "log" ) func TestValueIter(t *testing.T) { values := ValueList{ NumberValue(1), NumberValue(2), NumberValue(3), } valuesCopy := ValueList{} iter := NewValueIter(values) for { edible := iter.Next() if edible == nil { break } log.Println(edible) value, isValue := edible.(Value) if !isValue { t.Fatalf("Iterator produced a non-value") } valuesCopy = append(valuesCopy, value) } if len(values) != len(valuesCopy) { t.Fatalf("iter gave the wrong number of values") } for i, value := range values { if value != valuesCopy[i] { t.Fatalf("iter produced an incorrect value") } } }