Sha256: 87babd027b2945a7c410b7a0562d85c43d0733fc9136f294e89f8605316ea161

Contents?: true

Size: 827 Bytes

Versions: 3

Compression:

Stored size: 827 Bytes

Contents

require 'dentaku/token_scanner'

describe Dentaku::TokenScanner do
  let(:whitespace) { described_class.new(:whitespace, '\s') }
  let(:numeric)    { described_class.new(:numeric,    '(\d+(\.\d+)?|\.\d+)',
    lambda { |raw| raw =~ /\./ ? BigDecimal.new(raw) : raw.to_i })
  }

  it 'returns a token for a matching string' do
    token = whitespace.scan(' ').first
    expect(token.category).to eq(:whitespace)
    expect(token.value).to eq(' ')
  end

  it 'returns falsy for a non-matching string' do
    expect(whitespace.scan('A')).not_to be
  end

  it 'performs raw value conversion' do
    token = numeric.scan('5').first
    expect(token.category).to eq(:numeric)
    expect(token.value).to eq(5)
  end

  it 'returns a list of all configured scanners' do
    expect(described_class.scanners.length).to eq 12
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
dentaku-2.0.3 spec/token_scanner_spec.rb
dentaku-2.0.2 spec/token_scanner_spec.rb
dentaku-2.0.1 spec/token_scanner_spec.rb