aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md1
-rw-r--r--gen/src/gleam@triple.erl16
-rw-r--r--gen/test/gleam@pair_test.erl6
-rw-r--r--gen/test/gleam@triple_test.erl16
-rw-r--r--src/gleam/pair.gleam2
-rw-r--r--src/gleam/triple.gleam20
-rw-r--r--test/gleam/pair_test.gleam8
-rw-r--r--test/gleam/triple_test.gleam32
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)
+}