require 'test/test_helper'

class TestNanoTest < MiniTest::Unit::TestCase

  def teardown
    NanoTest::FAILURES.clear
  end

  test "api" do
    class Foo; include NanoTest end
    assert_respond_to Foo.new, :assert
    assert_respond_to NanoTest, :assert
  end

  test "assertion passes" do
    out, err = capture_io do
      NanoTest.assert { true }
    end
    assert_equal '.', out
    assert_empty NanoTest::FAILURES
  end

  test "assertion fails" do
    out, err = capture_io do
      NanoTest.assert { false }
    end
    assert_equal 'F', out
    refute_empty NanoTest::FAILURES
  end

  test "failure message" do
    capture_io do
      @line = __LINE__; NanoTest.assert { false }
    end
    assert_equal 1, NanoTest::FAILURES.size
    assert_includes NanoTest::FAILURES, "(#{__FILE__}:#{@line}) assertion failed"
  end

  test "custom failure message, file, line" do
    capture_io do
      NanoTest.assert('foo','bar',2) { false }
    end
    assert_includes NanoTest::FAILURES, "(bar:2) foo"
  end
end