# frozen_string_literal: false
require "test/unit/testcase"
require "rexml/document"
require "rexml/validation/relaxng"
module REXMLTests
class RNGValidation < Test::Unit::TestCase
include REXML
def test_validate
rng = %q{
}
validator = REXML::Validation::RelaxNG.new( rng )
no_error( validator, %q{} )
error( validator, %q{} )
end
def test_sequence
rng = %q{
}
validator = REXML::Validation::RelaxNG.new( rng )
error( validator, %q{} )
error( validator, %q{} )
error( validator, %q{} )
no_error( validator, %q{} )
end
def test_choice
rng = %q{
}
validator = REXML::Validation::RelaxNG.new( rng )
error( validator, %q{} )
no_error( validator, %q{} )
no_error( validator, %q{} )
end
def test_optional
rng = %q{
}
validator = REXML::Validation::RelaxNG.new( rng )
no_error( validator, %q{} )
no_error( validator, %q{} )
error( validator, %q{} )
error( validator, %q{} )
end
def test_zero_or_more
rng = %q{
}
validator = REXML::Validation::RelaxNG.new( rng )
no_error( validator, %q{} )
no_error( validator, %q{} )
no_error( validator, %q{} )
error( validator, %q{} )
error( validator, %q{} )
rng = %q{
}
validator = REXML::Validation::RelaxNG.new( rng )
no_error( validator, %q{} )
no_error( validator, %q{} )
no_error( validator, %q{} )
error( validator, %q{} )
end
def test_one_or_more
rng = %q{
}
validator = REXML::Validation::RelaxNG.new( rng )
error( validator, %q{} )
no_error( validator, %q{} )
no_error( validator, %q{} )
error( validator, %q{} )
error( validator, %q{} )
end
def test_attribute
rng = %q{
}
validator = REXML::Validation::RelaxNG.new( rng )
error( validator, %q{} )
error( validator, %q{} )
error( validator, %q{} )
no_error( validator, %q{} )
end
def test_choice_attributes
rng = %q{
}
validator = REXML::Validation::RelaxNG.new( rng )
error( validator, %q{} )
error( validator, %q{} )
no_error( validator, %q{})
no_error( validator, %q{} )
end
def test_choice_attribute_element
rng = %q{
}
validator = REXML::Validation::RelaxNG.new( rng )
error( validator, %q{} )
error( validator, %q{} )
no_error( validator, %q{})
no_error( validator, %q{} )
end
def test_empty
rng = %q{
}
validator = REXML::Validation::RelaxNG.new( rng )
error( validator, %q{} )
error( validator, %q{Text} )
no_error( validator, %q{})
end
def test_text_val
rng = %q{
}
validator = REXML::Validation::RelaxNG.new( rng )
error( validator, %q{} )
no_error( validator, %q{Text} )
error( validator, %q{})
end
def test_choice_text
rng = %q{
}
validator = REXML::Validation::RelaxNG.new( rng )
error( validator, %q{Text} )
error( validator, %q{Text} )
no_error( validator, %q{Text} )
no_error( validator, %q{} )
end
def test_group
rng = %q{
}
validator = REXML::Validation::RelaxNG.new( rng )
error( validator, %q{} )
error( validator, %q{} )
no_error( validator, %q{} )
no_error( validator, %q{} )
rng = %q{
}
validator = REXML::Validation::RelaxNG.new( rng )
error( validator, %q{} )
error( validator, %q{} )
error( validator, %q{} )
no_error( validator, %q{} )
end
def test_value
# Values as text nodes
rng = %q{
VaLuE
}
validator = REXML::Validation::RelaxNG.new( rng )
error( validator, %q{X} )
error( validator, %q{} )
no_error( validator, %q{VaLuE} )
# Values as text nodes, via choice
rng = %q{
Option 1
Option 2
}
validator = REXML::Validation::RelaxNG.new( rng )
error( validator, %q{} )
error( validator, %q{XYZ} )
no_error( validator, %q{Option 1} )
no_error( validator, %q{Option 2} )
# Attribute values
rng = %q{
VaLuE
}
validator = REXML::Validation::RelaxNG.new( rng )
error( validator, %q{} )
error( validator, %q{} )
error( validator, %q{} )
no_error( validator, %q{} )
# Attribute values via choice
rng = %q{
Option 1
Option 2
}
validator = REXML::Validation::RelaxNG.new( rng )
error( validator, %q{} )
error( validator, %q{} )
no_error( validator, %q{} )
no_error( validator, %q{} )
end
def test_interleave
rng = %q{
}
validator = REXML::Validation::RelaxNG.new( rng )
error( validator, %q{} )
error( validator, %q{} )
no_error( validator, %q{} )
no_error( validator, %q{} )
no_error( validator, %q{} )
no_error( validator, %q{} )
error( validator, %q{} )
end
def test_mixed
rng = %q{
}
validator = REXML::Validation::RelaxNG.new( rng )
no_error( validator, %q{Text} )
no_error( validator, %q{Text} )
end
def test_ref_sequence
rng = %q{
}
validator = REXML::Validation::RelaxNG.new( rng )
no_error( validator, %q{} )
error( validator, %q{} )
end
def test_ref_choice
rng = %q{
}
validator = REXML::Validation::RelaxNG.new( rng )
error( validator, %q{} )
error( validator, %q{} )
no_error( validator, %q{} )
no_error( validator, %q{} )
rng = %q{
}
validator = REXML::Validation::RelaxNG.new( rng )
error( validator, %q{} )
error( validator, %q{} )
no_error( validator, %q{} )
no_error( validator, %q{} )
rng = %q{
}
validator = REXML::Validation::RelaxNG.new( rng )
error( validator, %q{} )
no_error( validator, %q{} )
no_error( validator, %q{} )
no_error( validator, %q{} )
end
def test_ref_zero_plus
rng = %q{
}
validator = REXML::Validation::RelaxNG.new( rng )
error( validator, %q{} )
no_error( validator, %q{} )
no_error( validator, %q{} )
no_error( validator, %q{} )
rng = %q{
}
validator = REXML::Validation::RelaxNG.new( rng )
error( validator, %q{} )
no_error( validator, %q{} )
no_error( validator, %q{} )
no_error( validator, %q{} )
end
def test_ref_one_plus
rng = %q{
}
validator = REXML::Validation::RelaxNG.new( rng )
error( validator, %q{} )
error( validator, %q{} )
no_error( validator, %q{} )
no_error( validator, %q{} )
rng = %q{
}
validator = REXML::Validation::RelaxNG.new( rng )
error( validator, %q{} )
error( validator, %q{} )
no_error( validator, %q{} )
no_error( validator, %q{} )
end
def test_ref_interleave
rng = %q{
}
validator = REXML::Validation::RelaxNG.new( rng )
error( validator, %q{} )
error( validator, %q{} )
error( validator, %q{} )
no_error( validator, %q{} )
no_error( validator, %q{} )
rng = %q{
}
validator = REXML::Validation::RelaxNG.new( rng )
error( validator, %q{} )
error( validator, %q{} )
error( validator, %q{} )
no_error( validator, %q{} )
no_error( validator, %q{} )
rng = %q{
}
validator = REXML::Validation::RelaxNG.new( rng )
error( validator, %q{} )
error( validator, %q{} )
error( validator, %q{} )
no_error( validator, %q{} )
no_error( validator, %q{} )
end
def test_ref_recurse
rng = %q{
}
validator = REXML::Validation::RelaxNG.new( rng )
error( validator, %q{} )
no_error( validator, %q{} )
no_error( validator, %q{} )
end
def test_ref_optional
rng = %q{
}
validator = REXML::Validation::RelaxNG.new( rng )
no_error( validator, %q{} )
no_error( validator, %q{} )
error( validator, %q{} )
error( validator, %q{} )
rng = %q{
}
validator = REXML::Validation::RelaxNG.new( rng )
no_error( validator, %q{} )
no_error( validator, %q{} )
error( validator, %q{} )
error( validator, %q{} )
end
def error( validator, source )
parser = REXML::Parsers::TreeParser.new( source )
parser.add_listener( validator.reset )
assert_raise( REXML::Validation::ValidationException,
"Expected a validation error" ) { parser.parse }
end
def no_error( validator, source )
parser = REXML::Parsers::TreeParser.new( source )
parser.add_listener( validator.reset )
assert_nothing_raised { parser.parse }
end
end
end