$:.unshift File.dirname(__FILE__) + "/../lib"
require 'rubygems'
require 'spec'
require 'pp'
module ZoneParserHax
class ParserExampleGroup < Spec::Example::ExampleGroup
class << self
attr_reader :default_root
def parse_from(root)
@default_root = root
end
end
attr_reader :parser
def parse(input, options = {})
@parser = ZoneFileParser.new
if root = (options[:root] || self.class.default_root)
parser.root = root
end
unless options[:consume_all_input].nil?
parser.consume_all_input = options.delete(:consume_all_input)
end
result = parser.parse(input, options)
yield result if block_given?
result
end
Spec::Example::ExampleGroupFactory.register(:zone_file_parser, self)
end
end
spec/zone_file_parser/ipv4_address_spec.rb
require File.dirname(__FILE__) + '/../spec_helper'
require 'zone_file_parser'
describe ZoneFileParser, "for ipv4_address" do
parse_from :ipv4_address
it "should return a v4 IPAddr for 202.50.176.19" do
parse("202.50.176.19", :root => :ipv4_address) do |result|
result.should_not be_nil
result.value.should == IPAddr.new("202.50.176.19")
end
end
end