| 266 | } |
| 267 | |
| 268 | func TestTransform_WithSkip(t *testing.T) { |
| 269 | reader := FromSlice([]int{1, 2, 3, 4, 5, 6}) |
| 270 | |
| 271 | // 只保留偶数 |
| 272 | evens := Transform(reader, func(v int) (int, error) { |
| 273 | if v%2 != 0 { |
| 274 | return 0, ErrSkip |
| 275 | } |
| 276 | return v, nil |
| 277 | }) |
| 278 | defer evens.Close() |
| 279 | |
| 280 | result, err := evens.Collect() |
| 281 | if err != nil { |
| 282 | t.Fatalf("unexpected error: %v", err) |
| 283 | } |
| 284 | |
| 285 | expected := []int{2, 4, 6} |
| 286 | if len(result) != len(expected) { |
| 287 | t.Fatalf("expected %d items, got %d", len(expected), len(result)) |
| 288 | } |
| 289 | for i, v := range result { |
| 290 | if v != expected[i] { |
| 291 | t.Errorf("at index %d: expected %d, got %d", i, expected[i], v) |
| 292 | } |
| 293 | } |
| 294 | } |
| 295 | |
| 296 | func TestFilter(t *testing.T) { |
| 297 | reader := FromSlice([]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}) |