aboutsummaryrefslogtreecommitdiffstats
path: root/spec/ruby/core/encoding/invalid_byte_sequence_error/incomplete_input_spec.rb
blob: c79a6663e2d77fd786d4d6d46e642eb43874e8b5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# -*- encoding: binary -*-
require File.expand_path('../../../../spec_helper', __FILE__)

with_feature :encoding do
  describe "Encoding::InvalidByteSequenceError#incomplete_input?" do

    it "returns nil by default" do
      Encoding::InvalidByteSequenceError.new.incomplete_input?.should be_nil
    end

    it "returns true if #primitive_convert returned :incomplete_input for the same data" do
      ec = Encoding::Converter.new("EUC-JP", "ISO-8859-1")
      ec.primitive_convert("\xA1",'').should == :incomplete_input
      begin
        ec.convert("\xA1")
      rescue Encoding::InvalidByteSequenceError => e
        e.incomplete_input?.should be_true
      end
    end

    it "returns false if #primitive_convert returned :invalid_byte_sequence for the same data" do
      ec = Encoding::Converter.new("ascii", "utf-8")
      ec.primitive_convert("\xfffffffff",'').should == :invalid_byte_sequence
      begin
        ec.convert("\xfffffffff")
      rescue Encoding::InvalidByteSequenceError => e
        e.incomplete_input?.should be_false
      end
    end
  end
end