1#!/usr/bin/env ruby 2# encoding: utf-8 3 4require 'test/unit' 5require File.join(File.dirname(__FILE__), 'setup_variant') 6 7class TestJSONFixtures < Test::Unit::TestCase 8 def setup 9 fixtures = File.join(File.dirname(__FILE__), 'fixtures/*.json') 10 passed, failed = Dir[fixtures].partition { |f| f['pass'] } 11 @passed = passed.inject([]) { |a, f| a << [ f, File.read(f) ] }.sort 12 @failed = failed.inject([]) { |a, f| a << [ f, File.read(f) ] }.sort 13 end 14 15 def test_passing 16 for name, source in @passed 17 begin 18 assert JSON.parse(source), 19 "Did not pass for fixture '#{name}': #{source.inspect}" 20 rescue => e 21 warn "\nCaught #{e.class}(#{e}) for fixture '#{name}': #{source.inspect}\n#{e.backtrace * "\n"}" 22 raise e 23 end 24 end 25 end 26 27 def test_failing 28 for name, source in @failed 29 assert_raises(JSON::ParserError, JSON::NestingError, 30 "Did not fail for fixture '#{name}': #{source.inspect}") do 31 JSON.parse(source) 32 end 33 end 34 end 35end 36