From 3f16eb44cabfa99816f3241d5e3ef258c6715b82 Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Tue, 18 Jul 2023 08:49:23 +0200 Subject: [PATCH] rename Either methods, functions, fields --- lib/funky/funky.go | 31 ++++++++++++++++++------------- tests/funky_test.go | 15 ++++++++------- 2 files changed, 26 insertions(+), 20 deletions(-) diff --git a/lib/funky/funky.go b/lib/funky/funky.go index 2715809..a79099b 100644 --- a/lib/funky/funky.go +++ b/lib/funky/funky.go @@ -30,39 +30,44 @@ func (m *maybe[V]) Value() V { return m.value } -// Either +// Either (sometimes called `Result`) type Either[V any] interface { + Maybe[V] Ok() bool - Right() V - Left() error + Value() V + Error() error } type either[V any] struct { ok bool - right V - left error + value V + error error } -func Right[V any](v V) Either[V] { +func Value[V any](v V) Either[V] { return &either[V]{ ok: true, - right: v, + value: v, } } -func Left[V any](e error) Either[V] { - return &either[V]{left: e} +func Error[V any](e error) Either[V] { + return &either[V]{error: e} } func (et *either[V]) Ok() bool { return et.ok } -func (et *either[V]) Right() V { - return et.right +func (et *either[V]) IsNothing() bool { + return !et.Ok() } -func (et *either[V]) Left() error { - return et.left +func (et *either[V]) Value() V { + return et.value +} + +func (et *either[V]) Error() error { + return et.error } diff --git a/tests/funky_test.go b/tests/funky_test.go index 0acda08..364e3ef 100644 --- a/tests/funky_test.go +++ b/tests/funky_test.go @@ -24,18 +24,19 @@ func MaybeTest(t *testing.T) { } func EitherTest(t *testing.T) { - var e0 funky.Either[int] = funky.Right[int](7) + var e0 funky.Either[int] = funky.Value[int](7) t.AssertEqual(e0.Ok(), true) - t.AssertEqual(e0.Right(), 7) - var e1 funky.Either[int] = funky.Left[int](fmt.Errorf("Some Error")) + t.AssertEqual(e0.IsNothing(), false) + t.AssertEqual(e0.Value(), 7) + var e1 funky.Either[int] = funky.Error[int](fmt.Errorf("Some Error")) t.AssertEqual(e1.Ok(), false) - t.AssertEqual(fmt.Sprint(e1.Left()), "Some Error") + t.AssertEqual(fmt.Sprint(e1.Error()), "Some Error") } func IteratorTest(t *testing.T) { sl := []int{3, 4, 5} var it funky.Iterator[int] = funky.SliceIterator[int](sl) - s12 := funky.Slice(it) - t.AssertEqual(len(s12), 3) - t.AssertEqual(s12[1], 4) + s2 := funky.Slice(it) + t.AssertEqual(len(s2), 3) + t.AssertEqual(s2[1], 4) }