mirror of https://github.com/rails/rails
35 lines
808 B
Ruby
35 lines
808 B
Ruby
# frozen_string_literal: true
|
|
|
|
require "abstract_unit"
|
|
|
|
class MultibyteProxyText < ActiveSupport::TestCase
|
|
class AsciiOnlyEncoder
|
|
attr_reader :wrapped_string
|
|
alias to_s wrapped_string
|
|
|
|
def initialize(string)
|
|
@wrapped_string = string.gsub(/[^\u0000-\u007F]/, "?")
|
|
end
|
|
end
|
|
|
|
def with_custom_encoder(encoder)
|
|
original_proxy_class = ActiveSupport::Multibyte.proxy_class
|
|
|
|
begin
|
|
ActiveSupport::Multibyte.proxy_class = encoder
|
|
|
|
yield
|
|
ensure
|
|
ActiveSupport::Multibyte.proxy_class = original_proxy_class
|
|
end
|
|
end
|
|
|
|
test "custom multibyte encoder" do
|
|
with_custom_encoder(AsciiOnlyEncoder) do
|
|
assert_equal "s?me string 123", "søme string 123".mb_chars.to_s
|
|
end
|
|
|
|
assert_equal "søme string 123", "søme string 123".mb_chars.to_s
|
|
end
|
|
end
|