1# Author:: Nathaniel Talbott.
2# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
3# License:: Ruby license.
4
5require 'test/unit/testcase'
6require 'test/unit/testresult'
7
8module Test
9  module Unit
10    class TC_TestResult < TestCase
11      def setup
12        @my_result = TestResult.new
13        @my_result.add_assertion()
14        @failure = "failure"
15        @my_result.add_failure(@failure)
16        @error = "error"
17        @my_result.add_error(@error)
18      end
19
20      def test_result_changed_notification
21        called1 = false
22        @my_result.add_listener(TestResult::CHANGED) do |result|
23          assert_equal(@my_result, result)
24          called1 = true
25        end
26        @my_result.add_assertion
27        assert_true(called1)
28
29        called1, called2 = false, false
30        @my_result.add_listener(TestResult::CHANGED) do |result|
31          assert_equal(@my_result, result)
32          called2 = true
33        end
34        @my_result.add_assertion
35        assert_equal([true, true], [called1, called2])
36
37        called1, called2 = false, false
38        @my_result.add_failure("")
39        assert_equal([true, true], [called1, called2])
40
41        called1, called2 = false, false
42        @my_result.add_error("")
43        assert_equal([true, true], [called1, called2])
44
45        called1, called2 = false, false
46        @my_result.add_run
47        assert_equal([true, true], [called1, called2])
48      end
49
50      def test_fault_notification
51        called1 = false
52        fault = "fault"
53        @my_result.add_listener(TestResult::FAULT) do |passed_fault|
54          assert_equal(fault, passed_fault)
55          called1 = true
56        end
57
58        @my_result.add_assertion
59        assert_false(called1)
60
61        @my_result.add_failure(fault)
62        assert_true(called1)
63
64        called1, called2 = false, false
65        @my_result.add_listener(TestResult::FAULT) do |passed_fault|
66          assert_equal(fault, passed_fault)
67          called2 = true
68        end
69
70        @my_result.add_assertion
71        assert_equal([false, false], [called1, called2])
72
73        called1, called2 = false, false
74        @my_result.add_failure(fault)
75        assert_equal([true, true], [called1, called2])
76
77        called1, called2 = false, false
78        @my_result.add_error(fault)
79        assert_equal([true, true], [called1, called2])
80
81        called1, called2 = false, false
82        @my_result.add_run
83        assert_equal([false, false], [called1, called2])
84      end
85
86      def test_passed?
87        result = TestResult.new
88        assert_true(result.passed?)
89
90        result.add_assertion
91        assert_true(result.passed?)
92
93        result.add_run
94        assert_true(result.passed?)
95
96        result.add_failure("")
97        assert_false(result.passed?)
98
99        result = TestResult.new
100        result.add_error("")
101        assert_false(result.passed?)
102      end
103
104      def test_faults
105        assert_equal([@failure, @error], @my_result.faults)
106
107        notification = "notification"
108        @my_result.add_notification(notification)
109        assert_equal([@failure, @error, notification], @my_result.faults)
110      end
111    end
112  end
113end
114