class TestMailHeader

Public Instance Methods

test_address() click to toggle source
# File vendor/qwik/lib/qwik/mail-header.rb, line 343
def test_address
  mail = QuickML::Mail.new

  # test_from
  ok_eq('unknown', mail.from)
  mail['From'] = 'a@e.com'
  ok_eq('a@e.com', mail.from)

  # test_valid?
  ok_eq(false, mail.valid?)

  # test_add_recipient
  mail.add_recipient('b@e.com')
  ok_eq(false, mail.valid?)

  # test_clear_recipients
  mail.clear_recipients

  # test_collect_to
  ok_eq([], mail.collect_to)
  mail['To'] = 't@e.com'
  ok_eq(['t@e.com'], mail.collect_to)

  # test_collect_cc
  ok_eq([], mail.collect_cc)
  mail['Cc'] = 'c@e.com'
  ok_eq(['c@e.com'], mail.collect_cc)
end
test_all() click to toggle source
# File vendor/qwik/lib/qwik/mail-header.rb, line 312
def test_all
  mail = QuickML::Mail.new

  # test_header
  ok_eq([], mail.header)

  # test_[]=
  mail['k'] = 'v'

  # test_[]
  ok_eq('v', mail['k'])

  # test_unshift_field
  mail.unshift_field('k2', 'v2')
  ok_eq([['k2', 'v2'], ['k', 'v']], mail.header)

  # test_each_field
  mail.each_field {|k, v|
    # do nothing.
  }

  # test_get_unified_subject
  mail['Subject'] = 'Re: [t:1] s'
  ok_eq('s', mail.get_unified_subject('t'))

  # test_looping?
  ok_eq(false, mail.looping?)
  mail['X-QuickML'] = 'true'
  ok_eq(true, mail.looping?)
end
test_class_method() click to toggle source
# File vendor/qwik/lib/qwik/mail-header.rb, line 372
    def test_class_method
      c = QuickML::Mail

      # test_collect_address
      ok_eq(['a@example.net'], c.collect_address('a@example.net'))

      # test_get_unified_subject
      ok_eq('t', c.get_unified_subject('t', 'test'))
      ok_eq('t', c.get_unified_subject('Re: t', 'test'))
      ok_eq('t', c.get_unified_subject(' t', 'test'))
      ok_eq('t', c.get_unified_subject('t ', 'test'))
      ok_eq('t t', c.get_unified_subject('t t', 'test'))
      ok_eq('t t', c.get_unified_subject('t  t', 'test'))
      ok_eq('t t t', c.get_unified_subject('t t t', 'test'))
      ok_eq('t t t', c.get_unified_subject('t  t  t', 'test'))
      ok_eq('Test Mail', c.get_unified_subject('Re: [test:1] Test Mail', 'test'))
      ok_eq('テスト', c.get_unified_subject('Re: [test:1] テスト ', 'test'))

      # test_remove_comment_in_field
      ok_eq('', c.remove_comment_in_field(''))
      ok_eq('ac', c.remove_comment_in_field('a(b)c'))
      ok_eq('ace', c.remove_comment_in_field('a(b)c(d)e'))

      # test_get_charset
      ok_eq(nil, c.get_charset(''))
      ok_eq('ascii', c.get_charset('text/plain; charset="ascii"'))
      ok_eq('iso-2022-jp', c.get_charset('text/plain; charset=ISO-2022-JP'))
      ok_eq('shift_jis', c.get_charset('text/plain; charset=Shift_JIS'))

      # test_get_contenttype
      ok_eq(nil, c.get_content_type(''))
      ok_eq('text/plain',
            c.get_content_type('text/plain; charset="ascii"'))
      ok_eq('multipart/mixed',
            c.get_content_type("multipart/mixed; boundary='boundary'"))
      ok_eq('multipart/alternative',
            c.get_content_type("multipart/alternative; boundary='b'"))

      # test_encode_field
      ok_eq("\201@", ' ')
      ok_eq("\352\242", '瑤')
      ok_eq('t', c.encode_field('t'))
      ok_eq('=?ISO-2022-JP?B?GyRCJCIbKEI=?=', c.encode_field('あ'))
      ok_eq('=?ISO-2022-JP?B?GyRCJCIkJBsoQg==?=', c.encode_field('あい'))
      ok_eq('=?ISO-2022-JP?B?GyRCJCIkJCQmJCgkKiQrJC0kLyQxJDMbKEI=?=
 =?ISO-2022-JP?B?GyRCJDUkNyQ5JDskPRsoQg==?=',
         c.encode_field('あいうえおかきくけこさしすせそ'))
      ok_eq('[test:1] Re: =?ISO-2022-JP?B?GyRCJUYlOSVIGyhCICA=?=',
         c.encode_field('[test:1] Re: テスト  '))
      ok_eq('[test:1] Re: =?ISO-2022-JP?B?GyRCJUYlOSVIGyhCIA==?=',
         c.encode_field('[test:1] Re: テスト '))
      ok_eq('[test:1] Re: =?ISO-2022-JP?B?GyRCJCIbKEI=?=',
         c.encode_field('[test:1] Re: あ'))

      # test_decode_subject
      ok_eq('t', c.decode_subject('t'))
      ok_eq('st', c.decode_subject("s\nt"))
      ok_eq('s t', c.decode_subject("s\n t"))
      ok_eq("\202\240 ", c.decode_subject('=?iso-2022-jp?B?GyRCJCIbKEI=?= '))
      ok_eq( '[test:33] とてもとてもとてもとてもとてもとても長い長い長い長い長い長い長い長い長いとてもとてもとてもとてもとてもとても長い長い長い長い長い長い長い長い長い日本語サブジェクトのテスト',
             c.decode_subject('[test:33] =?ISO-2022-JP?B?GyRCJEgkRiRiJEgkRiRiJEgkRiRiJEgbKEI=?=
 =?ISO-2022-JP?B?GyRCJEYkYiRIJEYkYiRIJEYkYkQ5JCQbKEI=?=
 =?ISO-2022-JP?B?GyRCRDkkJEQ5JCREOSQkRDkkJEQ5JCQbKEI=?=
 =?ISO-2022-JP?B?GyRCRDkkJEQ5JCREOSQkJEgkRiRiJEgbKEI=?=
 =?ISO-2022-JP?B?GyRCJEYkYiRIJEYkYiRIJEYkYiRIJEYbKEI=?=
 =?ISO-2022-JP?B?GyRCJGIkSCRGJGJEOSQkRDkkJEQ5JCQbKEI=?=
 =?ISO-2022-JP?B?GyRCRDkkJEQ5JCREOSQkRDkkJEQ5JCQbKEI=?=
 =?ISO-2022-JP?B?GyRCRDkkJEZ8S1w4bCU1JVYlOCUnJS8bKEI=?=
 =?ISO-2022-JP?B?GyRCJUgkTiVGJTklSBsoQg==?=
'))
      ok_eq('[test:34] very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very long なサブジェクトのテスト',
            c.decode_subject('[test:34] very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very long =?ISO-2022-JP?B?GyRCJEolNSVWJTglJyUvJUgkTiVGJTkbKEI=?=
 =?ISO-2022-JP?B?GyRCJUgbKEI=?=
'))

      # test_clean_subject
      ok_eq('t', c.clean_subject('t', 'test'))
      ok_eq(' Re: Test ', c.clean_subject('[test:1] Re: Test ', 'test'))
      ok_eq('Re: テスト ', c.clean_subject('Re: [test:1] テスト ', 'test'))
      ok_eq('[hoge:2] てすと ', c.clean_subject('[hoge:2] てすと ', 'test'))
      ok_eq('[ttt:3] てすと ', c.clean_subject('[ttt:3] てすと ', 'test'))

      # test_rewrite_subject
      ok_eq('[n:2] t', c.rewrite_subject('t', 'n', '2'))
      ok_eq('[test:2] [t:3] test', c.rewrite_subject('[t:3] test', 'test', '2'))
      ok_eq('[test:2] Re: Test Mail',
            c.rewrite_subject('Re: [test:1] Test Mail', 'test', 2))
      ok_eq('[test:2] Re: =?ISO-2022-JP?B?GyRCJUYlOSVIGyhCIA==?=',
            c.rewrite_subject('Re: [test:1] テスト ', 'test', 2))

      # test_address_of_domain?
      ok_eq(true,  c.address_of_domain?('user@example.net', 'example.net'))
      ok_eq(false, c.address_of_domain?('user@example.com', 'example.net'))
      ok_eq(false, c.address_of_domain?('user', 'example.net'))

      # test_content_type
      ok_eq('text/plain', c.content_type('text/plain', nil))
      ok_eq('text/plain; charset=iso-2022-jp',
            c.content_type('text/plain', 'iso-2022-jp'))
    end