Sha256: b4720cc141ccbf70de0b008a551d8b1ecaed58c035dbcd41500d809b46bb5e76

Contents?: true

Size: 1.43 KB

Versions: 1

Compression:

Stored size: 1.43 KB

Contents

# encoding: utf-8
require File.expand_path('../spec_helper', __FILE__)

describe StringScanner::UTF8 do
  before(:all) do
    @char_array = ["怎", "麼", "也", "沒", "人", "寫", "了", "這", "個", "嗎"]
    @scanner = StringScanner.new(@char_array.join)
    @utf8_scanner = @scanner.as_utf8
  end

  it "should blow up on invalid utf8 chars" do
    # lets cut right into the middle of a sequence so we know it's bad
    scanner = StringScanner.new(@char_array.join[0..1]).as_utf8

    lambda {
      scanner.getch
    }.should raise_error(ArgumentError)
  end

  it "should extend StringScanner, adding an as_utf8 method that returns a StringScanner::UTF8 instance" do
    @scanner.should respond_to(:as_utf8)
    @scanner.as_utf8.class.should eql(StringScanner::UTF8)
  end

  it "should allow access to a regular (non-utf8-aware) StringScanner based on it's string" do
    raw = @utf8_scanner.as_raw
    raw.class.should eql(StringScanner)
    raw.string.should eql(@utf8_scanner.string)
  end

  it "#getch should be utf8-aware" do
    i=0
    while char = @utf8_scanner.getch
      char.should eql(@char_array[i])
      i+=1
    end
  end

  it "should be able to be reset" do
    i=0
    while char = @utf8_scanner.getch
      char.should eql(@char_array[i])
      if i == 4
        break
      end
      i+=1
    end

    @utf8_scanner.reset

    i=0
    while char = @utf8_scanner.getch
      char.should eql(@char_array[i])
      i+=1
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
utf8-0.1.1 spec/string_scanner_spec.rb