Sha256: f9c81f27f38435c66aecbc71518a12ad5f6e30791d934cc3706b4b582ee825b1

Contents?: true

Size: 1.72 KB

Versions: 268

Compression:

Stored size: 1.72 KB

Contents

# encoding: utf-8
require "spec_helper"
require "logstash/util/unicode_trimmer"
require "flores/rspec"
require "flores/random"

RSpec.configure do |config|
  Flores::RSpec.configure(config)
end

describe "truncating unicode strings correctly" do
  subject { LogStash::Util::UnicodeTrimmer }

  context "with extra bytes before the snip" do
    let(:ustr) { "Testing «ταБЬℓσ»: 1<2 & 4+1>3, now 20% off!" }

    it "should truncate to exact byte boundaries when possible" do
      expect(subject.trim_bytes(ustr, 21).bytesize).to eql(21)
    end

    it "should truncate below the bytesize when splitting a byte" do
      expect(subject.trim_bytes(ustr, 20).bytesize).to eql(18)
    end

    it "should not truncate the string when the bytesize is already OK" do
      expect(subject.trim_bytes(ustr, ustr.bytesize)).to eql(ustr)
    end
  end

  context "with extra bytes after the snip" do
    let(:ustr) { ": 1<2 & 4+1>3, now 20% off! testing «ταБЬℓσ»" }

    it "should truncate to exact byte boundaries when possible" do
      expect(subject.trim_bytes(ustr, 21).bytesize).to eql(21)
    end

    it "should truncate below the bytesize when splitting a byte" do
      expect(subject.trim_bytes(ustr, 52).bytesize).to eql(51)
    end

    it "should not truncate the string when the bytesize is already OK" do
      expect(subject.trim_bytes(ustr, ustr.bytesize)).to eql(ustr)
    end
  end

  context "randomized testing" do
    let(:text) { Flores::Random.text(1..1000) }
    let(:size) { Flores::Random.integer(1..text.bytesize) }
    let(:expected_range) { (size - 4)..size }

    stress_it "should be near the boundary of requested size" do
      expect(expected_range).to include(subject.trim_bytes(text, size).bytesize)
    end
  end
end

Version data entries

268 entries across 259 versions & 17 rubygems

Version Path
logstash-core-6.8.23-java spec/logstash/util/unicode_trimmer_spec.rb
logstash-core-6.8.22-java spec/logstash/util/unicode_trimmer_spec.rb
logstash-core-6.8.21-java spec/logstash/util/unicode_trimmer_spec.rb
logstash-core-6.8.20-java spec/logstash/util/unicode_trimmer_spec.rb
logstash-output-scalyr-0.2.1.beta vendor/bundle/jruby/2.5.0/gems/logstash-core-5.6.4-java/spec/logstash/util/unicode_trimmer_spec.rb
logstash-core-6.8.19-java spec/logstash/util/unicode_trimmer_spec.rb
logstash-output-scalyr-0.2.0 vendor/bundle/jruby/2.5.0/gems/logstash-core-5.6.4-java/spec/logstash/util/unicode_trimmer_spec.rb
logstash-output-scalyr-0.2.0.beta vendor/bundle/jruby/2.5.0/gems/logstash-core-5.6.4-java/spec/logstash/util/unicode_trimmer_spec.rb
logstash-output-scalyr-0.1.26.beta vendor/bundle/jruby/2.5.0/gems/logstash-core-5.6.4-java/spec/logstash/util/unicode_trimmer_spec.rb
logstash-output-scalyr-0.1.25.beta vendor/bundle/jruby/2.5.0/gems/logstash-core-5.6.4-java/spec/logstash/util/unicode_trimmer_spec.rb
logstash-output-scalyr-0.1.24.beta vendor/bundle/jruby/2.5.0/gems/logstash-core-5.6.4-java/spec/logstash/util/unicode_trimmer_spec.rb
logstash-output-scalyr-0.1.23.beta vendor/bundle/jruby/2.5.0/gems/logstash-core-5.6.4-java/spec/logstash/util/unicode_trimmer_spec.rb
logstash-output-scalyr-0.1.22.beta vendor/bundle/jruby/2.5.0/gems/logstash-core-5.6.4-java/spec/logstash/util/unicode_trimmer_spec.rb
logstash-output-scalyr-0.1.21.beta vendor/bundle/jruby/2.5.0/gems/logstash-core-5.6.4-java/spec/logstash/util/unicode_trimmer_spec.rb
logstash-output-scalyr-0.1.20.beta vendor/bundle/jruby/2.5.0/gems/logstash-core-5.6.4-java/spec/logstash/util/unicode_trimmer_spec.rb
logstash-core-6.8.18-java spec/logstash/util/unicode_trimmer_spec.rb
logstash-output-scalyr-0.1.19.beta vendor/bundle/jruby/2.5.0/gems/logstash-core-5.6.4-java/spec/logstash/util/unicode_trimmer_spec.rb
logstash-core-6.8.17-java spec/logstash/util/unicode_trimmer_spec.rb
logstash-output-scalyr-0.1.18.beta vendor/bundle/jruby/2.5.0/gems/logstash-core-5.6.4-java/spec/logstash/util/unicode_trimmer_spec.rb
logstash-output-scalyr-0.1.17.beta vendor/bundle/jruby/2.5.0/gems/logstash-core-5.6.4-java/spec/logstash/util/unicode_trimmer_spec.rb