<commit_before>require 'spec_helper'
require 'sisimai/data'
require 'sisimai/mail'
require 'sisimai/message'

describe 'Sisimai::MSP::*' do
  debugOnlyTo = ''
  MSPChildren = {
    'DE::EinsUndEins' => {
      '01' => { 'status' => %r/\A5[.]0[.]\d+\z/, 'reason' => %r/mesgtoobig/ },
    },
    'DE::GMX' => {
      '01' => { 'status' => %r/\A5[.]2[.]2\z/, 'reason' => %r/mailboxfull/ },
      '02' => { 'status' => %r/\A5[.]1[.]1\z/, 'reason' => %r/userunknown/ },
      '03' => { 'status' => %r/\A5[.][12][.][12]\z/, 'reason' => %r/(?:userunknown|mailboxfull)/ },
      '04' => { 'status' => %r/\A5[.]0[.]\d+\z/, 'reason' => %r/expired/ },
    },
    'JP::Biglobe' => {
      '01' => { 'status' => %r/\A5[.]0[.]\d+\z/, 'reason' => %r/mailboxfull/ },
    },
    'JP::EZweb' => {
      '01' => { 'status' => %r/\A5[.]0[.]\d+\z/, 'reason' => %r/filtered/ },
      '02' => { 'status' => %r/\A5[.]0[.]\d+\z/, 'reason' => %r/(?:suspend|undefined)/ },
      '03' => { 'status' => %r/\A5[.]0[.]\d+\z/, 'reason' => %r/suspend/ },
      '04' => { 'status' => %r/\A5[.]0[.]\d+\z/, 'reason' => %r/userunknown/ },
      '05' => { 'status' => %r/\A5[.]0[.]\d+\z/, 'reason' => %r/expired/ },
      '06' => { 'status' => %r/\A5[.]0[.]\d+\z/, 'reason' => %r/userunknown/ },
    },
    'JP::KDDI' => {
      '01' => { 'status' => %r/\A5[.]0[.]\d+\z/, 'reason' => %r/mailboxfull/ },
      '02' => { 'status' => %r/\A5[.]0[.]\d+\z/, 'reason' => %r/mailboxfull/ },
      '03' => { 'status' => %r/\A5[.]0[.]\d+\z/, 'reason' => %r/mailboxfull/ },
    },
    'RU::MailRu' => {
      '01' => { 'status' => %r/\A5[.]1[.]1\z/, 'reason' => %r/userunknown/ },
      '02' => { 'status' => %r/\A5[.]2[.]2\z/, 'reason' => %r/mailboxfull/ },
      '03' => { 'status' => %r/\A5[.][12][.][12]\z/, 'reason' => %r/(?:userunknown|mailboxfull)/ },
      '04' => { 'status' => %r/\A5[.]1[.]1\z/, 'reason' => %r/userunknown/ },
    },
    'RU::Yandex' => {
      '01' => { 'status' => %r/\A5[.]1[.]1\z/, 'reason' => %r/userunknown/ },
      '02' => { 'status' => %r/\A5[.][12][.][12]\z/, 'reason' => %r/(?:userunknown|mailboxfull)/ },
      '03' => { 'status' => %r/\A4[.]4[.]1\z/, 'reason' => %r/expired/ },
    },
    'UK::MessageLabs' => {
      '01' => { 'status' => %r/\A5[.]0[.]0\z/, 'reason' => %r/userunknown/ },
    },
    'US::AmazonSES' => {
      '01' => { 'status' => %r/\A5[.]7[.]1\z/, 'reason' => %r/blocked/ },
      '02' => { 'status' => %r/\A5[.]3[.]0\z/, 'reason' => %r/filtered/ },
      '03' => { 'status' => %r/\A5[.]2[.]2\z/, 'reason' => %r/mailboxfull/ },
      '04' => { 'status' => %r/\A5[.]4[.]7\z/, 'reason' => %r/expired/ },
    },
    'US::AmazonWorkMail' => {
      '01' => { 'status' => %r/\A5[.]1[.]1\z/, 'reason' => %r/userunknown/ },
      '02' => { 'status' => %r/\A5[.]2[.]1\z/, 'reason' => %r/filtered/ },
      '03' => { 'status' => %r/\A5[.]3[.]5\z/, 'reason' => %r/systemerror/ },
      '04' => { 'status' => %r/\A5[.]2[.]2\z/, 'reason' => %r/mailboxfull/ },
      '05' => { 'status' => %r/\A4[.]4[.]7\z/, 'reason' => %r/expired/ },
    },
    'US::Aol' => {
      '01' => { 'status' => %r/\A5[.]4[.]4\z/, 'reason' => %r/hostunknown/ },
      '02' => { 'status' => %r/\A5[.]2[.]2\z/, 'reason' => %r/mailboxfull/ },
      '03' => { 'status' => %r/\A5[.][12][.][12]\z/, 'reason' => %r/(?:mailboxfull|userunknown)/ },
      '04' => { 'status' => %r/\A5[.]1[.]1\z/, 'reason' => %r/userunknown/ },
    },
    'US::Bigfoot' => {
      '01' => { 'status' => %r/\A5[.]7[.]1\z/, 'reason' => %r/userunknown/ },
    },
    'US::Facebook' => {
      '01' => { 'status' => %r/\A5[.]1[.]1\z/, 'reason' => %r/filtered/ },
      '02' => { 'status' => %r/\A5[.]1[.]1\z/, 'reason' => %r/userunknown/ },
    },
    'US::Google' => {
      '01' => { 'status' => %r/\A5[.]1[.]1\z/, 'reason' => %r/userunknown/ },
      '02' => { 'status' => %r/\A5[.]1[.]1\z/, 'reason' => %r/userunknown/ },
      '03' => { 'status' => %r/\A5[.]7[.]0\z/, 'reason' => %r/filtered/ },
      '04' => { 'status' => %r/\A5[.]7[.]1\z/, 'reason' => %r/blocked/ },
      '05' => { 'status' => %r/\A5[.]7[.]1\z/, 'reason' => %r/blocked/ },
      '06' => { 'status' => %r/\A4[.]2[.]2\z/, 'reason' => %r/mailboxfull/ },
      '07' => { 'status' => %r/\A5[.]0[.]\d+\z/, 'reason' => %r/systemerror/ },
      '08' => { 'status' => %r/\A5[.]0[.]\d+\z/, 'reason' => %r/expired/ },
      '09' => { 'status' => %r/\A4[.]0[.]\d+\z/, 'reason' => %r/expired/ },
      '10' => { 'status' => %r/\A5[.]0[.]\d+\z/, 'reason' => %r/expired/ },
      '11' => { 'status' => %r/\A5[.]0[.]\d+\z/, 'reason' => %r/expired/ },
      '12' => { 'status' => %r/\A5[.]0[.]\d+\z/, 'reason' => %r/onhold/ },
      '13' => { 'status' => %r/\A5[.]0[.]\d+\z/, 'reason' => %r/expired/ },
      '14' => { 'status' => %r/\A5[.]1[.]1\z/, 'reason' => %r/userunknown/ },
    },
    'US::Office365' => {
      '01' => { 'status' => %r/\A5[.]1[.]10\z/, 'reason' => %r/filtered/ },
    },
    'US::Outlook' => {
      '01' => { 'status' => %r/\A5[.]2[.]2\z/, 'reason' => %r/mailboxfull/ },
      '02' => { 'status' => %r/\A5[.]1[.]1\z/, 'reason' => %r/userunknown/ },
      '03' => { 'status' => %r/\A5[.]5[.]0\z/, 'reason' => %r/hostunknown/ },
      '04' => { 'status' => %r/\A5[.][12][.][12]\z/, 'reason' => %r/(?:mailboxfull|userunknown)/ },
      '05' => { 'status' => %r/\A5[.]5[.]0\z/, 'reason' => %r/userunknown/ },
      '06' => { 'status' => %r/\A4[.]4[.]7\z/, 'reason' => %r/expired/ },
      '07' => { 'status' => %r/\A4[.]4[.]7\z/, 'reason' => %r/expired/ },<commit_msg>Update test code table for bounce mails returned on Februrary 29<commit_after>require 'spec_helper'
require 'sisimai/data'
require 'sisimai/mail'
require 'sisimai/message'

describe 'Sisimai::MSP::*' do
  debugOnlyTo = ''
  MSPChildren = {
    'DE::EinsUndEins' => {
      '01' => { 'status' => %r/\A5[.]0[.]\d+\z/, 'reason' => %r/mesgtoobig/ },
    },
    'DE::GMX' => {
      '01' => { 'status' => %r/\A5[.]2[.]2\z/, 'reason' => %r/mailboxfull/ },
      '02' => { 'status' => %r/\A5[.]1[.]1\z/, 'reason' => %r/userunknown/ },
      '03' => { 'status' => %r/\A5[.][12][.][12]\z/, 'reason' => %r/(?:userunknown|mailboxfull)/ },
      '04' => { 'status' => %r/\A5[.]0[.]\d+\z/, 'reason' => %r/expired/ },
    },
    'JP::Biglobe' => {
      '01' => { 'status' => %r/\A5[.]0[.]\d+\z/, 'reason' => %r/mailboxfull/ },
    },
    'JP::EZweb' => {
      '01' => { 'status' => %r/\A5[.]0[.]\d+\z/, 'reason' => %r/filtered/ },
      '02' => { 'status' => %r/\A5[.]0[.]\d+\z/, 'reason' => %r/(?:suspend|undefined)/ },
      '03' => { 'status' => %r/\A5[.]0[.]\d+\z/, 'reason' => %r/suspend/ },
      '04' => { 'status' => %r/\A5[.]0[.]\d+\z/, 'reason' => %r/userunknown/ },
      '05' => { 'status' => %r/\A5[.]0[.]\d+\z/, 'reason' => %r/expired/ },
      '06' => { 'status' => %r/\A5[.]0[.]\d+\z/, 'reason' => %r/userunknown/ },
    },
    'JP::KDDI' => {
      '01' => { 'status' => %r/\A5[.]0[.]\d+\z/, 'reason' => %r/mailboxfull/ },
      '02' => { 'status' => %r/\A5[.]0[.]\d+\z/, 'reason' => %r/mailboxfull/ },
      '03' => { 'status' => %r/\A5[.]0[.]\d+\z/, 'reason' => %r/mailboxfull/ },
    },
    'RU::MailRu' => {
      '01' => { 'status' => %r/\A5[.]1[.]1\z/, 'reason' => %r/userunknown/ },
      '02' => { 'status' => %r/\A5[.]2[.]2\z/, 'reason' => %r/mailboxfull/ },
      '03' => { 'status' => %r/\A5[.][12][.][12]\z/, 'reason' => %r/(?:userunknown|mailboxfull)/ },
      '04' => { 'status' => %r/\A5[.]1[.]1\z/, 'reason' => %r/userunknown/ },
    },
    'RU::Yandex' => {
      '01' => { 'status' => %r/\A5[.]1[.]1\z/, 'reason' => %r/userunknown/ },
      '02' => { 'status' => %r/\A5[.][12][.][12]\z/, 'reason' => %r/(?:userunknown|mailboxfull)/ },
      '03' => { 'status' => %r/\A4[.]4[.]1\z/, 'reason' => %r/expired/ },
    },
    'UK::MessageLabs' => {
      '01' => { 'status' => %r/\A5[.]0[.]0\z/, 'reason' => %r/userunknown/ },
    },
    'US::AmazonSES' => {
      '01' => { 'status' => %r/\A5[.]7[.]1\z/, 'reason' => %r/blocked/ },
      '02' => { 'status' => %r/\A5[.]3[.]0\z/, 'reason' => %r/filtered/ },
      '03' => { 'status' => %r/\A5[.]2[.]2\z/, 'reason' => %r/mailboxfull/ },
      '04' => { 'status' => %r/\A5[.]4[.]7\z/, 'reason' => %r/expired/ },
    },
    'US::AmazonWorkMail' => {
      '01' => { 'status' => %r/\A5[.]1[.]1\z/, 'reason' => %r/userunknown/ },
      '02' => { 'status' => %r/\A5[.]2[.]1\z/, 'reason' => %r/filtered/ },
      '03' => { 'status' => %r/\A5[.]3[.]5\z/, 'reason' => %r/systemerror/ },
      '04' => { 'status' => %r/\A5[.]2[.]2\z/, 'reason' => %r/mailboxfull/ },
      '05' => { 'status' => %r/\A4[.]4[.]7\z/, 'reason' => %r/expired/ },
      '06' => { 'status' => %r/\A5[.]2[.]2\z/, 'reason' => %r/mailboxfull/ },
      '07' => { 'status' => %r/\A4[.]4[.]7\z/, 'reason' => %r/expired/ },
    },
    'US::Aol' => {
      '01' => { 'status' => %r/\A5[.]4[.]4\z/, 'reason' => %r/hostunknown/ },
      '02' => { 'status' => %r/\A5[.]2[.]2\z/, 'reason' => %r/mailboxfull/ },
      '03' => { 'status' => %r/\A5[.][12][.][12]\z/, 'reason' => %r/(?:mailboxfull|userunknown)/ },
      '04' => { 'status' => %r/\A5[.]1[.]1\z/, 'reason' => %r/userunknown/ },
    },
    'US::Bigfoot' => {
      '01' => { 'status' => %r/\A5[.]7[.]1\z/, 'reason' => %r/userunknown/ },
    },
    'US::Facebook' => {
      '01' => { 'status' => %r/\A5[.]1[.]1\z/, 'reason' => %r/filtered/ },
      '02' => { 'status' => %r/\A5[.]1[.]1\z/, 'reason' => %r/userunknown/ },
    },
    'US::Google' => {
      '01' => { 'status' => %r/\A5[.]1[.]1\z/, 'reason' => %r/userunknown/ },
      '02' => { 'status' => %r/\A5[.]1[.]1\z/, 'reason' => %r/userunknown/ },
      '03' => { 'status' => %r/\A5[.]7[.]0\z/, 'reason' => %r/filtered/ },
      '04' => { 'status' => %r/\A5[.]7[.]1\z/, 'reason' => %r/blocked/ },
      '05' => { 'status' => %r/\A5[.]7[.]1\z/, 'reason' => %r/blocked/ },
      '06' => { 'status' => %r/\A4[.]2[.]2\z/, 'reason' => %r/mailboxfull/ },
      '07' => { 'status' => %r/\A5[.]0[.]\d+\z/, 'reason' => %r/systemerror/ },
      '08' => { 'status' => %r/\A5[.]0[.]\d+\z/, 'reason' => %r/expired/ },
      '09' => { 'status' => %r/\A4[.]0[.]\d+\z/, 'reason' => %r/expired/ },
      '10' => { 'status' => %r/\A5[.]0[.]\d+\z/, 'reason' => %r/expired/ },
      '11' => { 'status' => %r/\A5[.]0[.]\d+\z/, 'reason' => %r/expired/ },
      '12' => { 'status' => %r/\A5[.]0[.]\d+\z/, 'reason' => %r/onhold/ },
      '13' => { 'status' => %r/\A5[.]0[.]\d+\z/, 'reason' => %r/expired/ },
      '14' => { 'status' => %r/\A5[.]1[.]1\z/, 'reason' => %r/userunknown/ },
      '15' => { 'status' => %r/\A5[.]0[.]\d+\z/, 'reason' => %r/expired/ },
      '16' => { 'status' => %r/\A5[.]2[.]2\z/, 'reason' => %r/mailboxfull/ },
      '17' => { 'status' => %r/\A4[.]0[.]\d+\z/, 'reason' => %r/expired/ },
    },
    'US::Office365' => {
      '01' => { 'status' => %r/\A5[.]1[.]10\z/, 'reason' => %r/filtered/ },
    },
    'US::Outlook' => {
      '01' => { 'status' => %r/\A5[.]2[.]2\z/, 'reason' => %r/mailboxfull/ },
      '02' => { 'status' => %r/\A5[.]1[.]1\z/, 'reason' => %r/userunknown/ },
      '03' => { 'status' => %r/\A5[.]5[.]0\z/, 'reason' => %r/hostunknown/ },
      '04' => { 'status' => %r/\A5[.][12][.][12]\z/, 'reason' => %r/(?:mailboxfull|userunknown)/ },
      '05' => { 'status' => %r/\A5[.]5[.]0\z/, 'reason' => %r/userunknown/ },
      '06' => { 'status' => %r/\A4[.]4[.]7\z/, 'reason' => %r/expired/ },
      '07' => { 'status' => %r/\A4[.]4[.]7\z/, 'reason' => %r/expired/ },
{'fraction_non_alphanumeric': 0.378775939059627, 'fraction_numerical': 0.05472375448734787, 'mean_word_length': 2.2439647827321783, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 416, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4319787', 'n_tokens_mistral': 5473, 'n_tokens_neox': 5282, 'n_words': 703}