Skip to content

a3d21/gg

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gg

Generic Go data-processing library.

example

// filter-map-reduce
func TestBaseStream(t *testing.T) {
	src := []int{1, 2, 3, 4, 5}

	want := 5
	got := Reduce(0, func(acc, it int) int {
		return acc + it
	}, Map(func(it int) int {
		return it * it
	}, Filter(func(it int) bool {
		return it < 3
	}, FromSlice(src))))

	assert.Equal(t, want, got)
}

func TestStreamToSLice(t *testing.T) {
	src := []int{1, 2, 3, 4, 5}

	want := []int{9, 16, 25}
	got := ToSlice(
		Filter(func(it int) bool {
			return it > 5
		}, Map(func(it int) int {
			return it * it
		}, FromSlice(src))))

	assert.Equal(t, want, got)
}

func TestStreamToMap(t *testing.T) {
	src := []int{1, 2, 3, 4, 5}
	want := map[string]int{"1": 1, "2": 2}
	got := ToMap(
		Map(func(it int) KeyValue[string, int] {
			return KeyValue[string, int]{
				Key:   fmt.Sprintf("%v", it),
				Value: it,
			}
		}, Filter(func(it int) bool {
			return it < 3
		}, FromSlice(src))))

	assert.Equal(t, want, got)
}

About

Generic Go Data-Processing Library

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages