Sha256: f03dc7d61f23239a76d0d09e39dbed0db4e6342e0e5713a630d8d40786c1effb

Contents?: true

Size: 1.93 KB

Versions: 30

Compression:

Stored size: 1.93 KB

Contents

require 'test/unit'
require File.dirname(__FILE__) + '/../lib/json-schema'

class BitwiseAndAttribute < JSON::Schema::Attribute
  def self.validate(current_schema, data, fragments, processor, validator, options = {})
    if data.is_a?(Integer) && data & current_schema.schema['bitwise-and'].to_i == 0
      message = "The property '#{build_fragment(fragments)}' did not evaluate  to true when bitwise-AND'd with  #{current_schema.schema['bitwise-or']}"
      raise JSON::Schema::ValidationError.new(message, fragments, self, current_schema)
    end
  end
end

class ExtendedSchema < JSON::Schema::Validator
  def initialize
    super
    extend_schema_definition("http://json-schema.org/draft-03/schema#")
    @attributes["bitwise-and"] = BitwiseAndAttribute
    @uri = URI.parse("http://test.com/test.json")
  end
  
  JSON::Validator.register_validator(self.new)
end

class JSONSchemaTestExtendedSchema < Test::Unit::TestCase
  def test_schema_from_file
    schema = {
      "$schema" => "http://json-schema.org/draft-03/schema#",
      "properties" => {
        "a" => {
          "bitwise-and" => 1
        },
        "b" => {
          "type" => "string"
        }
      }
    }
    
    data = {"a" => 0, "b" => "taco"}
    assert(JSON::Validator.validate(schema,data))
    data = {"a" => 1, "b" => "taco"}
    assert(JSON::Validator.validate(schema,data))
    data = {"a" => 1, "b" => 5}
    assert(!JSON::Validator.validate(schema,data))
    
    schema = {
      "$schema" => "http://test.com/test.json",
      "properties" => {
        "a" => {
          "bitwise-and" => 1
        },
        "b" => {
          "type" => "string"
        }
      }
    }
    
    data = {
      "a" => 0
    }
    
    data = {"a" => 1, "b" => "taco"}
    assert(JSON::Validator.validate(schema,data))
    data = {"a" => 0, "b" => "taco"}
    assert(!JSON::Validator.validate(schema,data))
    data = {"a" => 1, "b" => 5}
    assert(!JSON::Validator.validate(schema,data))
  end
end

Version data entries

30 entries across 30 versions & 2 rubygems

Version Path
json-schema-2.4.1 test/test_extended_schema.rb
json-schema-2.4.0 test/test_extended_schema.rb
json-schema-2.3.0 test/test_extended_schema.rb
json-schema-2.2.5 test/test_extended_schema.rb
json-schema-pvdgm-2.3.1 test/test_extended_schema.rb
json-schema-2.2.4 test/test_extended_schema.rb
json-schema-2.2.3 test/test_extended_schema.rb
json-schema-2.2.2 test/test_extended_schema.rb
json-schema-2.2.1 test/test_extended_schema.rb
json-schema-1.2.1 test/test_extended_schema.rb
json-schema-2.2.0 test/test_extended_schema.rb
json-schema-1.2.0 test/test_extended_schema.rb
json-schema-2.1.9 test/test_extended_schema.rb
json-schema-2.1.8 test/test_extended_schema.rb
json-schema-2.1.7 test/test_extended_schema.rb
json-schema-2.1.6 test/test_extended_schema.rb
json-schema-2.1.5 test/test_extended_schema.rb
json-schema-2.1.4 test/test_extended_schema.rb
json-schema-2.1.3 test/test_extended_schema.rb
json-schema-2.1.2 test/test_extended_schema.rb