Skip to content

Commit 1093c51

Browse files
authored
Add valid_send_options/1 (#12)
1 parent 7db6d24 commit 1093c51

File tree

3 files changed

+28
-1
lines changed

3 files changed

+28
-1
lines changed

lib/manifold.ex

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,22 @@ defmodule Manifold do
3636

3737
## Client
3838

39+
@spec valid_send_options?(Keyword.t()) :: boolean()
40+
def valid_send_options?(options) when is_list(options) do
41+
valid_options = [
42+
{:send_mode, :offload},
43+
]
44+
45+
# Keywords could have duplicate keys, in which case the first key wins.
46+
Keyword.keys(options)
47+
|> Enum.dedup()
48+
|> Enum.reduce(true, fn key, acc -> acc and {key, options[key]} in valid_options end)
49+
end
50+
51+
def valid_send_options?(_options) do
52+
false
53+
end
54+
3955
@spec send([pid | nil] | pid | nil, term, send_mode: :offload) :: :ok
4056
def send(pid, message, options \\ [])
4157
def send([pid], message, options), do: __MODULE__.send(pid, message, options)

mix.exs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ defmodule Manifold.Mixfile do
44
def project do
55
[
66
app: :manifold,
7-
version: "1.5.0",
7+
version: "1.5.1",
88
elixir: "~> 1.5",
99
build_embedded: Mix.env == :prod,
1010
start_permanent: Mix.env == :prod,

test/manifold_test.exs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,17 @@ defmodule ManifoldTest do
22
use ExUnit.Case
33
doctest Manifold
44

5+
test "valid_send_options?" do
6+
assert Manifold.valid_send_options?([])
7+
assert Manifold.valid_send_options?(send_mode: :offload)
8+
assert Manifold.valid_send_options?(send_mode: :offload, send_mode: :bad)
9+
10+
refute Manifold.valid_send_options?(send_mode: :bad, send_mode: :offload)
11+
refute Manifold.valid_send_options?(unknown: :bad)
12+
refute Manifold.valid_send_options?(:junk)
13+
refute Manifold.valid_send_options?({:junk, :junk})
14+
end
15+
516
test "many pids" do
617
me = self()
718
message = :hello

0 commit comments

Comments
 (0)