Files
omnibot/test/contrib/markov/chain_test.exs
Alek Ratzloff 9c69ca7b72 Markov chains appear to be training correctly
* Markov chains record words correctly from a single line to the end of
  their line with a couple of exceptions.
* Start working on using ETS for storing markov chains, and saving it as
  a DETS periodically

Signed-off-by: Alek Ratzloff <alekratz@gmail.com>
2020-07-08 17:25:26 -07:00

33 lines
812 B
Elixir

defmodule MarkovChainTest do
use ExUnit.Case
alias Omnibot.Contrib.Markov.Chain
test "chain train works correctly" do
chain = %Chain {order: 2}
|> Chain.train(~w(foo bar baz))
assert chain.chain == [
{["bar", "baz"], %{nil => 1}},
{["foo", "bar"], %{"baz" => 1}},
]
end
test "chain add_weight works correctly" do
chain = %Chain {order: 2}
|> Chain.add_weight(["foo", "bar"], "baz")
assert chain.chain == [
{["foo", "bar"], %{"baz" => 1}}
]
chain = chain |> Chain.add_weight(["foo", "bar"], "baz", 2)
assert chain.chain == [
{["foo", "bar"], %{"baz" => 3}}
]
chain = chain |> Chain.add_weight(["foo", "bar"], "qux")
assert chain.chain == [
{["foo", "bar"], %{"baz" => 3, "qux" => 1}}
]
end
end