#!/usr/bin/env ruby

require 'test/unit'
require 'test/unit/assertions'
begin
  require 'ruby-debug'
rescue LoadError
  puts "Couldn't load ruby-debug. gem install ruby-debug if you need it."
end

$:.unshift(File.join(File.expand_path(File.dirname(__FILE__)), '..', 'lib'))
require 'liquid.rb'

mode = :strict
if env_mode = ENV['LIQUID_PARSER_MODE']
  puts "-- #{env_mode.upcase} ERROR MODE"
  mode = env_mode.to_sym
end
Liquid::Template.error_mode = mode


module Test
  module Unit
    class TestCase
      def fixture(name)
        File.join(File.expand_path(File.dirname(__FILE__)), "fixtures", name)
      end
    end

    module Assertions
      include Liquid

      def assert_template_result(expected, template, assigns = {}, message = nil)
        assert_equal expected, Template.parse(template).render(assigns)
      end

      def assert_template_result_matches(expected, template, assigns = {}, message = nil)
        return assert_template_result(expected, template, assigns, message) unless expected.is_a? Regexp

        assert_match expected, Template.parse(template).render(assigns)
      end

      def assert_match_syntax_error(match, template, registers = {})
        exception = assert_raise(Liquid::SyntaxError) {
          Template.parse(template).render(assigns)
        }
        assert_match match, exception.message
      end

      def with_error_mode(mode)
        old_mode = Liquid::Template.error_mode
        Liquid::Template.error_mode = mode
        yield
        Liquid::Template.error_mode = old_mode
      end
    end # Assertions
  end # Unit
end # Test
