diff options
author | Alice Dee <alice.dee@guardian.co.uk> | 2019-09-17 13:55:00 +0100 |
---|---|---|
committer | Louis Pilfold <louis@lpil.uk> | 2019-09-17 13:58:30 +0100 |
commit | ac354a3495feeea5efbeaea7d3d82020e66ee0c4 (patch) | |
tree | 842d2798f5b5ac76b8756b26072b9929e6aa3aae | |
parent | 070df38c58651ca199c2c3cc787482c75b591a55 (diff) | |
download | gleam_stdlib-ac354a3495feeea5efbeaea7d3d82020e66ee0c4.tar.gz gleam_stdlib-ac354a3495feeea5efbeaea7d3d82020e66ee0c4.zip |
Module triple added with Type Triple.
-rw-r--r-- | CHANGELOG.md | 1 | ||||
-rw-r--r-- | gen/src/gleam@triple.erl | 16 | ||||
-rw-r--r-- | gen/test/gleam@pair_test.erl | 6 | ||||
-rw-r--r-- | gen/test/gleam@triple_test.erl | 16 | ||||
-rw-r--r-- | src/gleam/pair.gleam | 2 | ||||
-rw-r--r-- | src/gleam/triple.gleam | 20 | ||||
-rw-r--r-- | test/gleam/pair_test.gleam | 8 | ||||
-rw-r--r-- | test/gleam/triple_test.gleam | 32 |
8 files changed, 97 insertions, 4 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 1c6dd9b..34b7b9d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ - `any:tuple` has been renamed `any:pair`. - The `tuple` module has been renamed to `pair` and has a `Pair` type. - `pair.fetch` has been replaced with `list.key_find`. +- `triple` module has been created with type `Triple`. ## v0.3.1 - 2019-08-08 diff --git a/gen/src/gleam@triple.erl b/gen/src/gleam@triple.erl new file mode 100644 index 0000000..62a32da --- /dev/null +++ b/gen/src/gleam@triple.erl @@ -0,0 +1,16 @@ +-module(gleam@triple). +-compile(no_auto_import). + +-export([first/1, second/1, third/1]). + +first(Trip) -> + {A, _, _} = Trip, + A. + +second(Trip) -> + {_, A, _} = Trip, + A. + +third(Trip) -> + {_, _, A} = Trip, + A. diff --git a/gen/test/gleam@pair_test.erl b/gen/test/gleam@pair_test.erl index 63a329a..775f161 100644 --- a/gen/test/gleam@pair_test.erl +++ b/gen/test/gleam@pair_test.erl @@ -4,10 +4,12 @@ -export([first_test/0, second_test/0, swap_test/0]). first_test() -> - gleam@expect:equal(gleam@pair:first({1, 2}), 1). + gleam@expect:equal(gleam@pair:first({1, 2}), 1), + gleam@expect:equal(gleam@pair:first({<<"abc">>, []}), <<"abc">>). second_test() -> - gleam@expect:equal(gleam@pair:second({1, 2}), 2). + gleam@expect:equal(gleam@pair:second({1, 2}), 2), + gleam@expect:equal(gleam@pair:second({<<"abc">>, []}), []). swap_test() -> gleam@expect:equal(gleam@pair:swap({1, <<"2">>}), {<<"2">>, 1}). diff --git a/gen/test/gleam@triple_test.erl b/gen/test/gleam@triple_test.erl new file mode 100644 index 0000000..b143e31 --- /dev/null +++ b/gen/test/gleam@triple_test.erl @@ -0,0 +1,16 @@ +-module(gleam@triple_test). +-compile(no_auto_import). + +-export([first_test/0, second_test/0, third_test/0]). + +first_test() -> + gleam@expect:equal(gleam@triple:first({1, 2, 3}), 1), + gleam@expect:equal(gleam@triple:first({[], <<"abc">>, 3}), []). + +second_test() -> + gleam@expect:equal(gleam@triple:second({1, 2, 3}), 2), + gleam@expect:equal(gleam@triple:second({[], <<"abc">>, 3}), <<"abc">>). + +third_test() -> + gleam@expect:equal(gleam@triple:third({1, 2, 3}), 3), + gleam@expect:equal(gleam@triple:third({[], <<"abc">>, 3}), 3). diff --git a/src/gleam/pair.gleam b/src/gleam/pair.gleam index 0a51fd3..9074330 100644 --- a/src/gleam/pair.gleam +++ b/src/gleam/pair.gleam @@ -1,5 +1,3 @@ -// import gleam/list - pub struct Pair(a, b) { first: a second: b diff --git a/src/gleam/triple.gleam b/src/gleam/triple.gleam new file mode 100644 index 0000000..ef9f6ea --- /dev/null +++ b/src/gleam/triple.gleam @@ -0,0 +1,20 @@ +pub struct Triple(a, b, c) { + first: a + second: b + third: c +} + +pub fn first(trip) { + let Triple(a, _, _) = trip + a +} + +pub fn second(trip) { + let Triple(_, a, _) = trip + a +} + +pub fn third(trip) { + let Triple(_, _, a) = trip + a +} diff --git a/test/gleam/pair_test.gleam b/test/gleam/pair_test.gleam index d8cb324..54a12af 100644 --- a/test/gleam/pair_test.gleam +++ b/test/gleam/pair_test.gleam @@ -5,12 +5,20 @@ pub fn first_test() { pair.Pair(1, 2) |> pair.first |> expect.equal(_, 1) + + pair.Pair("abc", []) + |> pair.first + |> expect.equal(_, "abc") } pub fn second_test() { pair.Pair(1, 2) |> pair.second |> expect.equal(_, 2) + + pair.Pair("abc", []) + |> pair.second + |> expect.equal(_,[]) } pub fn swap_test() { diff --git a/test/gleam/triple_test.gleam b/test/gleam/triple_test.gleam new file mode 100644 index 0000000..1684cca --- /dev/null +++ b/test/gleam/triple_test.gleam @@ -0,0 +1,32 @@ +import gleam/expect +import gleam/triple + +pub fn first_test() { + triple.Triple(1, 2, 3) + |> triple.first + |> expect.equal(_, 1) + + triple.Triple([], "abc", 3) + |> triple.first + |> expect.equal(_, []) +} + +pub fn second_test() { + triple.Triple(1, 2, 3) + |> triple.second + |> expect.equal(_, 2) + + triple.Triple([], "abc", 3) + |> triple.second + |> expect.equal(_, "abc") +} + +pub fn third_test() { + triple.Triple(1, 2, 3) + |> triple.third + |> expect.equal(_, 3) + + triple.Triple([], "abc", 3) + |> triple.third + |> expect.equal(_, 3) +} |