Sha256: 3996222af8d49b7a4e079eb1489d77e0a476cc62fc5e09b30a964298d8287d84

Contents?: true

Size: 1.8 KB

Versions: 8

Compression:

Stored size: 1.8 KB

Contents

# encoding: UTF-8

# Copyright 2012 Twitter, Inc
# http://www.apache.org/licenses/LICENSE-2.0

require 'spec_helper'

include TwitterCldr::Parsers
include TwitterCldr::Tokenizers

class FakeParser < Parser
  def do_parse(options); end
end

describe Parser do
  let(:parser) { FakeParser.new }
  let(:tokens) do
    [
      Token.new(type: :a, value: "a"),
      Token.new(type: :b, value: "b"),
      Token.new(type: :c, value: "c")
    ]
  end

  describe "#parse" do
    it "should call do_parse" do
      expect(parser).to receive(:do_parse).and_return({})
      parser.parse(tokens)
    end
  end

  describe "#reset" do
    it "should reset the token index" do
      parser.parse(tokens)
      parser.send(:next_token, :a)
      expect(parser.send(:current_token).type).to eq(:b)
      parser.reset
      expect(parser.send(:current_token).type).to eq(:a)
    end
  end

  describe "#next_token" do
    it "should advance to the next token" do
      parser.parse(tokens)
      parser.send(:next_token, :a)
      expect(parser.send(:current_token).type).to eq(:b)
    end

    it "should raise an error after encountering an unexpected token" do
      parser.parse(tokens)
      expect { parser.send(:next_token, :z) }.to raise_error(UnexpectedTokenError)
    end
  end

  describe "#current_token" do
    it "returns the current token" do
      parser.parse(tokens)
      expect(parser.send(:current_token).type).to eq(:a)
    end
  end

  describe "#eof" do
    it "should return true if all tokens have been used" do
      parser.parse(tokens)
      parser.send(:next_token, :a)
      parser.send(:next_token, :b)
      parser.send(:next_token, :c)
      expect(parser).to be_eof
    end

    it "should return false if not all tokens have been used" do
      parser.parse(tokens)
      expect(parser).to_not be_eof
    end
  end
end

Version data entries

8 entries across 8 versions & 2 rubygems

Version Path
metanorma-cli-1.3.4 gems/ruby/2.6.0/gems/twitter_cldr-4.4.5/spec/parsers/parser_spec.rb
metanorma-cli-1.3.3.1 gems/ruby/2.6.0/gems/twitter_cldr-4.4.5/spec/parsers/parser_spec.rb
twitter_cldr-4.4.5 spec/parsers/parser_spec.rb
twitter_cldr-4.4.4 spec/parsers/parser_spec.rb
twitter_cldr-4.4.3 spec/parsers/parser_spec.rb
twitter_cldr-4.4.2 spec/parsers/parser_spec.rb
twitter_cldr-4.4.1 spec/parsers/parser_spec.rb
twitter_cldr-4.4.0 spec/parsers/parser_spec.rb