Finish markov chain generation impl
* Markov chains will train and generate chains correctly now * Implement Markov.save_chains/0 * Add a couple more utils that help accomplish the above Signed-off-by: Alek Ratzloff <alekratz@gmail.com>
This commit is contained in:
@@ -9,6 +9,32 @@ defmodule MarkovChainTest do
|
||||
{["bar", "baz"], %{nil => 1}},
|
||||
{["foo", "bar"], %{"baz" => 1}},
|
||||
]
|
||||
|
||||
chain = chain |> Chain.train(~w(foo bar baz))
|
||||
|
||||
assert chain.chain == [
|
||||
{["bar", "baz"], %{nil => 2}},
|
||||
{["foo", "bar"], %{"baz" => 2}},
|
||||
]
|
||||
|
||||
chain = chain |> Chain.train(~w(baz bar foo))
|
||||
|
||||
assert chain.chain == [
|
||||
{["bar", "foo"], %{nil => 1}},
|
||||
{["baz", "bar"], %{"foo" => 1}},
|
||||
{["bar", "baz"], %{nil => 2}},
|
||||
{["foo", "bar"], %{"baz" => 2}},
|
||||
]
|
||||
|
||||
chain = chain |> Chain.train(~w(a b c))
|
||||
assert chain.chain == [
|
||||
{["b", "c"], %{nil => 1}},
|
||||
{["a", "b"], %{"c" => 1}},
|
||||
{["bar", "foo"], %{nil => 1}},
|
||||
{["baz", "bar"], %{"foo" => 1}},
|
||||
{["bar", "baz"], %{nil => 2}},
|
||||
{["foo", "bar"], %{"baz" => 2}},
|
||||
]
|
||||
end
|
||||
|
||||
test "chain add_weight works correctly" do
|
||||
@@ -28,5 +54,17 @@ defmodule MarkovChainTest do
|
||||
assert chain.chain == [
|
||||
{["foo", "bar"], %{"baz" => 3, "qux" => 1}}
|
||||
]
|
||||
|
||||
chain = chain |> Chain.add_weight(["bar", "baz"], "qux")
|
||||
assert chain.chain == [
|
||||
{["bar", "baz"], %{"qux" => 1}},
|
||||
{["foo", "bar"], %{"baz" => 3, "qux" => 1}},
|
||||
]
|
||||
|
||||
chain = chain |> Chain.add_weight(["bar", "baz"], nil)
|
||||
assert chain.chain == [
|
||||
{["bar", "baz"], %{"qux" => 1, nil => 1}},
|
||||
{["foo", "bar"], %{"baz" => 3, "qux" => 1}},
|
||||
]
|
||||
end
|
||||
end
|
||||
|
||||
@@ -12,4 +12,14 @@ defmodule Omnibot.UtilTest do
|
||||
assert Util.string_or_nil("") == nil
|
||||
assert Util.string_or_nil("asdf") == "asdf"
|
||||
end
|
||||
|
||||
test "pad_trailing" do
|
||||
assert Util.pad_trailing([1, 2, 3, 4], nil, 7) == [1, 2, 3, 4, nil, nil, nil]
|
||||
assert Util.pad_trailing([1, 2, 3, 4], nil, 6) == [1, 2, 3, 4, nil, nil]
|
||||
assert Util.pad_trailing([1, 2, 3, 4], nil, 5) == [1, 2, 3, 4, nil]
|
||||
assert Util.pad_trailing([1, 2, 3, 4], nil, 4) == [1, 2, 3, 4]
|
||||
assert Util.pad_trailing([1, 2, 3, 4], nil, 3) == [1, 2, 3, 4]
|
||||
assert Util.pad_trailing([1, 2, 3, 4], nil, 2) == [1, 2, 3, 4]
|
||||
assert Util.pad_trailing([1, 2, 3, 4], nil, 1) == [1, 2, 3, 4]
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user