1Code.require_file("../test_helper.exs", __DIR__)
2
3defmodule ExUnit.RegisterTest do
4  use ExUnit.Case
5
6  import ExUnit.CaptureIO
7
8  test "singular test types" do
9    on_exit(fn ->
10      ExUnit.configure(plural_rules: %{})
11    end)
12
13    ExUnit.plural_rule("property", "properties")
14
15    defmodule SingularTestTypeCase do
16      use ExUnit.Case
17
18      :"property is true" = ExUnit.Case.register_test(__ENV__, :property, "is true", [])
19
20      def unquote(:"property is true")(_) do
21        assert succeed()
22      end
23
24      test "test true" do
25        assert succeed()
26      end
27
28      defp succeed, do: true
29    end
30
31    assert capture_io(fn ->
32             assert ExUnit.run() == %{failures: 0, skipped: 0, total: 2, excluded: 0}
33           end) =~ "1 property, 1 test, 0 failures"
34  end
35
36  test "plural test types" do
37    on_exit(fn ->
38      ExUnit.configure(plural_rules: %{})
39    end)
40
41    ExUnit.plural_rule("property", "properties")
42
43    defmodule PluralTestTypeCase do
44      use ExUnit.Case
45
46      :"property is true" = ExUnit.Case.register_test(__ENV__, :property, "is true", [])
47
48      def unquote(:"property is true")(_) do
49        assert succeed()
50      end
51
52      :"property is also true" = ExUnit.Case.register_test(__ENV__, :property, "is also true", [])
53
54      def unquote(:"property is also true")(_) do
55        assert succeed()
56      end
57
58      test "test true" do
59        assert succeed()
60      end
61
62      test "test true also" do
63        assert succeed()
64      end
65
66      defp succeed, do: true
67    end
68
69    assert capture_io(fn ->
70             assert ExUnit.run() == %{failures: 0, skipped: 0, total: 4, excluded: 0}
71           end) =~ "2 properties, 2 tests, 0 failures"
72  end
73end
74