# encoding: UTF-8

# Copyright 2012 Twitter, Inc
# http://www.apache.org/licenses/LICENSE-2.0

require 'rspec'
require 'twitter_cldr'
require 'coveralls'
require 'eprun'

Coveralls.wear!

if ENV['SCOV']
  require 'simplecov'
  SimpleCov.start
  puts 'Running simplecov'
end

class FastGettext
  class << self
    @@locale = :en

    def locale
      @@locale
    end

    def locale=(new_locale)
      @@locale = new_locale
    end
  end
end

module I18n
  class << self
    @@locale = :en

    def locale
      @@locale
    end

    def locale=(new_locale)
      @@locale = new_locale
    end
  end
end

RSpec.configure do |config|
  config.filter_run(focus: true)
  config.run_all_when_everything_filtered = true
  config.filter_run_excluding(slow: true) unless ENV['FULL_SPEC']

  config.before(:each) do
    TwitterCldr.reset_locale_fallbacks
    TwitterCldr.locale = :en
    FastGettext.locale = :en
    I18n.locale = :en
  end
end

RSpec::Matchers.define :match_normalized do |expected|
  match do |actual|
    Eprun.normalize(expected, :nfkc) == Eprun.normalize(actual, :nfkc)
  end
end

RSpec::Matchers.define :exactly_match do |expected|
  match do |actual|
    if actual.respond_to?(:match)
      m = actual.match(expected)
      m.to_a.first == expected
    else
      expected === actual
    end
  end
end

def check_token_list(got, expected)
  expect(got.size).to eq(expected.size)
  expected.each_with_index do |exp_hash, index|
    exp_hash.each_pair do |exp_key, exp_val|
      expect(got[index].send(exp_key)).to eq(exp_val)
    end
  end
end
