Skip to content

Commit 87f3d59

Browse files
committed
iter.Seq-related functionality moved to iterhelper
1 parent 87c54f2 commit 87f3d59

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+850
-1366
lines changed

aggregate_test.go

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ import (
88
"slices"
99
"strings"
1010
"testing"
11+
12+
"github.com/solsw/iterhelper"
1113
)
1214

1315
// https://github.com/jskeet/edulinq/blob/master/src/Edulinq.Tests/AggregateTest.cs
@@ -34,15 +36,15 @@ func TestAggregate_int(t *testing.T) {
3436
},
3537
{name: "NullFuncUnseeded",
3638
args: args{
37-
source: VarToSeq(1, 3),
39+
source: iterhelper.VarSeq(1, 3),
3840
accumulator: nil,
3941
},
4042
wantErr: true,
4143
expectedErr: ErrNilAccumulator,
4244
},
4345
{name: "UnseededAggregation",
4446
args: args{
45-
source: VarToSeq(1, 4, 5),
47+
source: iterhelper.VarSeq(1, 4, 5),
4648
accumulator: func(ag, el int) int { return ag*2 + el },
4749
},
4850
want: 17,
@@ -57,14 +59,14 @@ func TestAggregate_int(t *testing.T) {
5759
},
5860
{name: "UnseededSingleElementAggregation",
5961
args: args{
60-
source: VarToSeq(1),
62+
source: iterhelper.VarSeq(1),
6163
accumulator: func(ag, el int) int { return ag*2 + el },
6264
},
6365
want: 1,
6466
},
6567
{name: "FirstElementOfInputIsUsedAsSeedForUnseededOverload",
6668
args: args{
67-
source: VarToSeq(5, 3, 2),
69+
source: iterhelper.VarSeq(5, 3, 2),
6870
accumulator: func(ag, el int) int { return ag * el },
6971
},
7072
want: 30,
@@ -114,7 +116,7 @@ func TestAggregateSeed_int_int(t *testing.T) {
114116
},
115117
{name: "NullFuncSeeded",
116118
args: args{
117-
source: VarToSeq(1, 3),
119+
source: iterhelper.VarSeq(1, 3),
118120
seed: 5,
119121
accumulator: nil,
120122
},
@@ -123,7 +125,7 @@ func TestAggregateSeed_int_int(t *testing.T) {
123125
},
124126
{name: "SeededAggregation",
125127
args: args{
126-
source: VarToSeq(1, 4, 5),
128+
source: iterhelper.VarSeq(1, 4, 5),
127129
seed: 5,
128130
accumulator: func(ac, el int) int { return ac*2 + el },
129131
},
@@ -172,7 +174,7 @@ func TestAggregateSeed_int32_int64(t *testing.T) {
172174
}{
173175
{name: "DifferentSourceAndAccumulatorTypes",
174176
args: args{
175-
source: VarToSeq(int32(2000000000), int32(2000000000), int32(2000000000)),
177+
source: iterhelper.VarSeq(int32(2000000000), int32(2000000000), int32(2000000000)),
176178
seed: int64(0),
177179
accumulator: func(ac int64, el int32) int64 { return ac + int64(el) },
178180
},
@@ -219,7 +221,7 @@ func TestAggregateSeedSel_int_int_string(t *testing.T) {
219221
},
220222
{name: "NullFuncSeededWithResultSelector",
221223
args: args{
222-
source: VarToSeq(1, 3),
224+
source: iterhelper.VarSeq(1, 3),
223225
seed: 5,
224226
accumulator: nil,
225227
resultSelector: func(r int) string { return fmt.Sprint(r) },
@@ -229,7 +231,7 @@ func TestAggregateSeedSel_int_int_string(t *testing.T) {
229231
},
230232
{name: "NullProjectionSeededWithResultSelector",
231233
args: args{
232-
source: VarToSeq(1, 3),
234+
source: iterhelper.VarSeq(1, 3),
233235
seed: 5,
234236
accumulator: func(ac, el int) int { return ac + el },
235237
resultSelector: nil,
@@ -239,7 +241,7 @@ func TestAggregateSeedSel_int_int_string(t *testing.T) {
239241
},
240242
{name: "SeededAggregationWithResultSelector",
241243
args: args{
242-
source: VarToSeq(1, 4, 5),
244+
source: iterhelper.VarSeq(1, 4, 5),
243245
seed: 5,
244246
accumulator: func(ac, el int) int { return ac*2 + el },
245247
resultSelector: func(r int) string { return fmt.Sprint(r) },

aggregateby_test.go

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"testing"
77

88
"github.com/solsw/generichelper"
9+
"github.com/solsw/iterhelper"
910
)
1011

1112
func TestAggregateBy_string_int_int(t *testing.T) {
@@ -22,12 +23,12 @@ func TestAggregateBy_string_int_int(t *testing.T) {
2223
}{
2324
{name: "Regular",
2425
args: args{
25-
source: VarToSeq("one", "two", "three", "four", "five", "six"),
26+
source: iterhelper.VarSeq("one", "two", "three", "four", "five", "six"),
2627
keySelector: func(s string) int { return len(s) },
2728
seed: 0,
2829
accumulator: func(ac int, el string) int { return ac + len(el) },
2930
},
30-
want: VarToSeq(
31+
want: iterhelper.VarSeq(
3132
generichelper.NewTuple2(3, 9),
3233
generichelper.NewTuple2(5, 5),
3334
generichelper.NewTuple2(4, 8),
@@ -39,7 +40,7 @@ func TestAggregateBy_string_int_int(t *testing.T) {
3940
got, _ := AggregateBy(tt.args.source, tt.args.keySelector, tt.args.seed, tt.args.accumulator)
4041
equal, _ := SequenceEqual(got, tt.want)
4142
if !equal {
42-
t.Errorf("AggregateBy() = %v, want %v", StringDef(got), StringDef(tt.want))
43+
t.Errorf("AggregateBy() = %v, want %v", iterhelper.StringDef(got), iterhelper.StringDef(tt.want))
4344
}
4445
})
4546
}
@@ -60,13 +61,13 @@ func TestAggregateByEq_string_int_int(t *testing.T) {
6061
}{
6162
{name: "Regular",
6263
args: args{
63-
source: VarToSeq("one", "two", "three", "four", "five", "six"),
64+
source: iterhelper.VarSeq("one", "two", "three", "four", "five", "six"),
6465
keySelector: func(s string) int { return len(s) },
6566
seed: 0,
6667
accumulator: func(ac int, el string) int { return ac + len(el) },
6768
keyEqual: func(a, b int) bool { return a == b },
6869
},
69-
want: VarToSeq(
70+
want: iterhelper.VarSeq(
7071
generichelper.NewTuple2(3, 9),
7172
generichelper.NewTuple2(5, 5),
7273
generichelper.NewTuple2(4, 8),
@@ -78,7 +79,7 @@ func TestAggregateByEq_string_int_int(t *testing.T) {
7879
got, _ := AggregateByEq(tt.args.source, tt.args.keySelector, tt.args.seed, tt.args.accumulator, tt.args.keyEqual)
7980
equal, _ := SequenceEqual(got, tt.want)
8081
if !equal {
81-
t.Errorf("AggregateByEq() = %v, want %v", StringDef(got), StringDef(tt.want))
82+
t.Errorf("AggregateByEq() = %v, want %v", iterhelper.StringDef(got), iterhelper.StringDef(tt.want))
8283
}
8384
})
8485
}
@@ -112,7 +113,7 @@ func TestAggregateBySelEq_string_int_int(t *testing.T) {
112113
},
113114
{name: "NilKeySelector",
114115
args: args{
115-
source: VarToSeq("one", "two", "three", "four", "five", "six"),
116+
source: iterhelper.VarSeq("one", "two", "three", "four", "five", "six"),
116117
keySelector: nil,
117118
seedSelector: func(k int) int { return k },
118119
accumulator: func(ac int, el string) int { return ac + len(el) },
@@ -123,7 +124,7 @@ func TestAggregateBySelEq_string_int_int(t *testing.T) {
123124
},
124125
{name: "NilSeedSelector",
125126
args: args{
126-
source: VarToSeq("one", "two", "three", "four", "five", "six"),
127+
source: iterhelper.VarSeq("one", "two", "three", "four", "five", "six"),
127128
keySelector: func(s string) int { return len(s) },
128129
seedSelector: nil,
129130
accumulator: func(ac int, el string) int { return ac + len(el) },
@@ -134,7 +135,7 @@ func TestAggregateBySelEq_string_int_int(t *testing.T) {
134135
},
135136
{name: "NilAccumulator",
136137
args: args{
137-
source: VarToSeq("one", "two", "three", "four", "five", "six"),
138+
source: iterhelper.VarSeq("one", "two", "three", "four", "five", "six"),
138139
keySelector: func(s string) int { return len(s) },
139140
seedSelector: func(k int) int { return k },
140141
accumulator: nil,
@@ -145,7 +146,7 @@ func TestAggregateBySelEq_string_int_int(t *testing.T) {
145146
},
146147
{name: "NilEqual",
147148
args: args{
148-
source: VarToSeq("one", "two", "three", "four", "five", "six"),
149+
source: iterhelper.VarSeq("one", "two", "three", "four", "five", "six"),
149150
keySelector: func(s string) int { return len(s) },
150151
seedSelector: func(k int) int { return k },
151152
accumulator: func(ac int, el string) int { return ac + len(el) },
@@ -156,13 +157,13 @@ func TestAggregateBySelEq_string_int_int(t *testing.T) {
156157
},
157158
{name: "Regular",
158159
args: args{
159-
source: VarToSeq("one", "two", "three", "four", "five", "six"),
160+
source: iterhelper.VarSeq("one", "two", "three", "four", "five", "six"),
160161
keySelector: func(s string) int { return len(s) },
161162
seedSelector: func(k int) int { return k },
162163
accumulator: func(ac int, el string) int { return ac + len(el) },
163164
keyEqual: func(a, b int) bool { return a == b },
164165
},
165-
want: VarToSeq(
166+
want: iterhelper.VarSeq(
166167
generichelper.NewTuple2(3, 12),
167168
generichelper.NewTuple2(5, 10),
168169
generichelper.NewTuple2(4, 12),
@@ -184,7 +185,7 @@ func TestAggregateBySelEq_string_int_int(t *testing.T) {
184185
}
185186
equal, _ := SequenceEqual(got, tt.want)
186187
if !equal {
187-
t.Errorf("AggregateBySelEq() = %v, want %v", StringDef(got), StringDef(tt.want))
188+
t.Errorf("AggregateBySelEq() = %v, want %v", iterhelper.StringDef(got), iterhelper.StringDef(tt.want))
188189
}
189190
})
190191
}

all_test.go

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"testing"
1010

1111
"github.com/solsw/errorhelper"
12+
"github.com/solsw/iterhelper"
1213
)
1314

1415
// https://github.com/jskeet/edulinq/blob/master/src/Edulinq.Tests/AllTest.cs
@@ -27,7 +28,7 @@ func TestAll_int(t *testing.T) {
2728
}{
2829
{name: "NullPredicate",
2930
args: args{
30-
source: VarToSeq(1, 3, 5),
31+
source: iterhelper.VarSeq(1, 3, 5),
3132
predicate: nil,
3233
},
3334
wantErr: true,
@@ -42,29 +43,29 @@ func TestAll_int(t *testing.T) {
4243
},
4344
{name: "PredicateMatchingNoElements",
4445
args: args{
45-
source: VarToSeq(1, 5, 20, 30),
46+
source: iterhelper.VarSeq(1, 5, 20, 30),
4647
predicate: func(x int) bool { return x < 0 },
4748
},
4849
want: false,
4950
},
5051
{name: "PredicateMatchingSomeElements",
5152
args: args{
52-
source: VarToSeq(1, 5, 8, 9),
53+
source: iterhelper.VarSeq(1, 5, 8, 9),
5354
predicate: func(x int) bool { return x > 3 },
5455
},
5556
want: false,
5657
},
5758
{name: "PredicateMatchingAllElements",
5859
args: args{
59-
source: VarToSeq(1, 5, 8, 9),
60+
source: iterhelper.VarSeq(1, 5, 8, 9),
6061
predicate: func(x int) bool { return x > 0 },
6162
},
6263
want: true,
6364
},
6465
{name: "SequenceIsNotEvaluatedAfterFirstNonMatch",
6566
args: args{
6667
source: errorhelper.Must(Select(
67-
VarToSeq(4, 6, 0, 3),
68+
iterhelper.VarSeq(4, 6, 0, 3),
6869
func(x int) int { return 12 / x },
6970
)),
7071
predicate: func(y int) bool { return y > 2 },
@@ -104,21 +105,21 @@ func TestAll_any(t *testing.T) {
104105
}{
105106
{name: "1",
106107
args: args{
107-
source: VarToSeq[any]("one", "two", "three", "four"),
108+
source: iterhelper.VarSeq[any]("one", "two", "three", "four"),
108109
predicate: func(e any) bool { return len(e.(string)) >= 3 },
109110
},
110111
want: true,
111112
},
112113
{name: "2",
113114
args: args{
114-
source: VarToSeq[any]("one", "two", "three", "four"),
115+
source: iterhelper.VarSeq[any]("one", "two", "three", "four"),
115116
predicate: func(e any) bool { return len(e.(string)) > 3 },
116117
},
117118
want: false,
118119
},
119120
{name: "3",
120121
args: args{
121-
source: VarToSeq[any](1, 2, "three", "four"),
122+
source: iterhelper.VarSeq[any](1, 2, "three", "four"),
122123
predicate: func(e any) bool { _, ok := e.(int); return ok },
123124
},
124125
want: false,

any_test.go

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"testing"
1010

1111
"github.com/solsw/errorhelper"
12+
"github.com/solsw/iterhelper"
1213
)
1314

1415
// https://github.com/jskeet/edulinq/blob/master/src/Edulinq.Tests/AnyTest.cs
@@ -30,7 +31,7 @@ func TestAny_int(t *testing.T) {
3031
},
3132
{name: "NonEmptySequenceWithoutPredicate",
3233
args: args{
33-
source: VarToSeq(0),
34+
source: iterhelper.VarSeq(0),
3435
},
3536
want: true,
3637
},
@@ -59,7 +60,7 @@ func TestAnyPred_int(t *testing.T) {
5960
}{
6061
{name: "NullPredicate",
6162
args: args{
62-
source: VarToSeq(1, 3, 5),
63+
source: iterhelper.VarSeq(1, 3, 5),
6364
predicate: nil,
6465
},
6566
wantErr: true,
@@ -74,22 +75,22 @@ func TestAnyPred_int(t *testing.T) {
7475
},
7576
{name: "NonEmptySequenceWithPredicateMatchingElement",
7677
args: args{
77-
source: VarToSeq(1, 5, 20, 30),
78+
source: iterhelper.VarSeq(1, 5, 20, 30),
7879
predicate: func(x int) bool { return x > 10 },
7980
},
8081
want: true,
8182
},
8283
{name: "NonEmptySequenceWithPredicateNotMatchingElement",
8384
args: args{
84-
source: VarToSeq(1, 5, 8, 9),
85+
source: iterhelper.VarSeq(1, 5, 8, 9),
8586
predicate: func(x int) bool { return x > 10 },
8687
},
8788
want: false,
8889
},
8990
{name: "SequenceIsNotEvaluatedAfterFirstMatch",
9091
args: args{
9192
source: errorhelper.Must(Select(
92-
VarToSeq(10, 2, 0, 3),
93+
iterhelper.VarSeq(10, 2, 0, 3),
9394
func(x int) int { return 10 / x },
9495
)),
9596
predicate: func(y int) bool { return y > 2 },
@@ -129,21 +130,21 @@ func TestAnyPred_any(t *testing.T) {
129130
}{
130131
{name: "1",
131132
args: args{
132-
source: VarToSeq[any](1, 2, 3, 4),
133+
source: iterhelper.VarSeq[any](1, 2, 3, 4),
133134
predicate: func(e any) bool { return e.(int) == 4 },
134135
},
135136
want: true,
136137
},
137138
{name: "2",
138139
args: args{
139-
source: VarToSeq[any]("one", "two", "three", "four"),
140+
source: iterhelper.VarSeq[any]("one", "two", "three", "four"),
140141
predicate: func(e any) bool { return len(e.(string)) == 4 },
141142
},
142143
want: true,
143144
},
144145
{name: "3",
145146
args: args{
146-
source: VarToSeq[any](1, 2, "three", "four"),
147+
source: iterhelper.VarSeq[any](1, 2, "three", "four"),
147148
predicate: func(e any) bool { _, ok := e.(int); return ok },
148149
},
149150
want: true,
@@ -163,7 +164,7 @@ func TestAnyPred_any(t *testing.T) {
163164
// https://learn.microsoft.com/dotnet/api/system.linq.enumerable.any
164165
func ExampleAny_ex1() {
165166
numbers := []int{1, 2}
166-
hasElements, _ := Any(VarToSeq(numbers...))
167+
hasElements, _ := Any(iterhelper.VarSeq(numbers...))
167168
var what string
168169
if hasElements {
169170
what = "is not"

0 commit comments

Comments
 (0)