1Code.require_file "../test_helper.exs", __DIR__
2Code.require_file "../../lib/api/comp.exs", __DIR__
3
4defmodule Alchemist.API.CompTest do
5
6  use ExUnit.Case, async: true
7
8  alias Alchemist.API.Comp
9
10  test "COMP request with empty hint" do
11    assert Comp.process([nil, Elixir, [], [] ]) =~ """
12    import/2
13    quote/2
14    require/2
15    END-OF-COMP
16    """
17  end
18
19  test "COMP request without empty hint" do
20    assert Comp.process(['is_b', Elixir, [], []]) =~ """
21    is_b
22    is_binary/1
23    is_bitstring/1
24    is_boolean/1
25    END-OF-COMP
26    """
27  end
28
29  test "COMP request with an alias" do
30    assert Comp.process(['MyList.flat', Elixir, [], [{MyList, List}]]) =~ """
31    MyList.flatten
32    flatten/1
33    flatten/2
34    END-OF-COMP
35    """
36  end
37
38  test "COMP request with a module hint" do
39    assert Comp.process(['Str', Elixir, [], []]) =~ """
40    Str
41    Stream
42    String
43    StringIO
44    END-OF-COMP
45    """
46  end
47
48  test "return redundant candidates with COMP" do
49    assert Comp.process(['Enu', Elixir, [], []]) =~ """
50    Enum
51    Enum
52    Enumerable
53    END-OF-COMP
54    """
55  end
56
57  test "COMP request with no match" do
58    assert Comp.process(['Fooo', Elixir, [], []]) == "END-OF-COMP\n"
59  end
60
61end
62