/
mail-test.rb
150 lines (130 loc) · 4.19 KB
/
mail-test.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
require 'minitest/autorun'
require 'sisimai/mail'
class MailTest < Minitest::Test
Methods = { class: %w[new], object: %w[path kind data] }
Samples = ['./set-of-emails/mailbox/mbox-0', './set-of-emails/maildir/err']
Normals = './set-of-emails/maildir/not'
Mailbox = Sisimai::Mail.new(Samples[0])
Maildir = Sisimai::Mail.new(Samples[1])
StandardIn = Sisimai::Mail.new(STDIN)
f = File.open(Samples[0], "r")
v = f.read; f.close
MailString = Sisimai::Mail.new(v)
IsntBounce = Sisimai::Mail.new(Normals)
def test_methods
Methods[:class].each { |e| assert_respond_to Sisimai::Mail, e }
Methods[:object].each do |e|
assert_respond_to Mailbox, e
assert_respond_to Maildir, e
assert_respond_to StandardIn, e
assert_respond_to MailString, e
assert_respond_to IsntBounce, e
end
end
def test_new
assert_instance_of Sisimai::Mail, Mailbox
assert_instance_of Sisimai::Mail, Maildir
assert_instance_of Sisimai::Mail, StandardIn
assert_instance_of Sisimai::Mail, MailString
assert_instance_of Sisimai::Mail, IsntBounce
ce = assert_raises ArgumentError do
Sisimai::Mail.new()
Sisimai::Mail.new(nil, nil)
end
assert_match /wrong number of arguments/, ce.to_s
end
def test_path
assert_instance_of String, Mailbox.path
assert_instance_of String, Maildir.path
assert_instance_of String, StandardIn.path
assert_instance_of String, MailString.path
assert_instance_of String, IsntBounce.path
assert_equal Samples[0], Mailbox.path
assert_equal Samples[1], Maildir.path
assert_equal '<STDIN>', StandardIn.path
assert_equal 'MEMORY', MailString.path
assert_equal Normals, IsntBounce.path
ce = assert_raises ArgumentError do
Mailbox.path(nil)
Maildir.path(nil)
StandardIn.path(nil)
MailString.path(nil)
IsntBounce.path(nil)
end
assert_match /wrong number of arguments/, ce.to_s
end
def test_kind
assert_instance_of String, Mailbox.kind
assert_instance_of String, Maildir.kind
assert_instance_of String, StandardIn.kind
assert_instance_of String, MailString.kind
assert_instance_of String, IsntBounce.kind
assert_equal 'mailbox', Mailbox.kind
assert_equal 'maildir', Maildir.kind
assert_equal 'stdin', StandardIn.kind
assert_equal 'memory', MailString.kind
assert_equal 'maildir', IsntBounce.kind
ce = assert_raises ArgumentError do
Mailbox.kind(nil)
Maildir.kind(nil)
StandardIn.kind(nil)
MailString.kind(nil)
IsntBounce.kind(nil)
end
assert_match /wrong number of arguments/, ce.to_s
end
def test_data
assert_instance_of Sisimai::Mail::Mbox, Mailbox.data
assert_instance_of Sisimai::Mail::Maildir, Maildir.data
assert_instance_of Sisimai::Mail::STDIN, StandardIn.data
assert_instance_of Sisimai::Mail::Memory, MailString.data
assert_instance_of Sisimai::Mail::Maildir, IsntBounce.data
ce = assert_raises ArgumentError do
Mailbox.data(nil)
Maildir.data(nil)
StandardIn.data(nil)
MailString.data(nil)
IsntBounce.data(nil)
end
assert_match /wrong number of arguments/, ce.to_s
end
def test_dataread
ci = 0
while r = Mailbox.data.read do
ci += 1
assert_instance_of String, r
refute_empty r
end
assert_equal 37, ci
ci = 0
while r = Maildir.data.read do
ci += 1
assert_instance_of String, r
refute_empty r
end
assert_equal 37, ci
ci = 0
while r = MailString.data.read do
ci += 1
assert_instance_of String, r
refute_empty r
end
assert_equal 37, ci
ci = 0
while r = IsntBounce.data.read do
ci += 1
assert_instance_of String, r
# 1) Failure:
# MailTest#test_dataread [/home/runner/work/rb-sisimai/rb-sisimai/test/public/mail-test.rb:134]:
# Expected "" to not be empty.
#
# THIS LINE FAILS ON GitHub Actions ONLY ...? refute_empty r
end
# 1) Failure:
# MailTest#test_dataread [/home/runner/work/rb-sisimai/rb-sisimai/test/public/mail-test.rb:135]:
# Expected: 2
# Actual: 3
#
# THIS LINE FAILS ON GitHub Actions ONLY ...? assert_equal 2, ci
end
end