diff options
author | Hiroshi SHIBATA <[email protected]> | 2020-01-11 21:37:00 +0900 |
---|---|---|
committer | SHIBATA Hiroshi <[email protected]> | 2020-01-12 12:28:29 +0900 |
commit | c3ccf23d5807f2ff20127bf5e42df0977bf672fb (patch) | |
tree | d3953c32b61645c7af65d30e626af944f143cf58 /test/rexml/test_validation_rng.rb | |
parent | 012f297311817ecb19f78c55854b033bb4b0397c (diff) |
Make rexml library to the bundle gems
[Feature #16485][ruby-core:96683]
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/2832
Diffstat (limited to 'test/rexml/test_validation_rng.rb')
-rw-r--r-- | test/rexml/test_validation_rng.rb | 793 |
1 files changed, 0 insertions, 793 deletions
diff --git a/test/rexml/test_validation_rng.rb b/test/rexml/test_validation_rng.rb deleted file mode 100644 index b5b50450e0..0000000000 --- a/test/rexml/test_validation_rng.rb +++ /dev/null @@ -1,793 +0,0 @@ -# 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{ -<?xml version="1.0" encoding="UTF-8"?> -<element name="A" xmlns="http://relaxng.org/ns/structure/1.0"> - <element name="B"> - <element name="C"> - <attribute name="X"/> - <zeroOrMore> - <element name="E"> - <empty/> - </element> - </zeroOrMore> - </element> - <element name="D"> - <empty/> - </element> - </element> -</element> - } - validator = REXML::Validation::RelaxNG.new( rng ) - - no_error( validator, %q{<A><B><C X="x"><E/><E/></C><D/></B></A>} ) - error( validator, %q{<A><B><D/><C X="x"/></B></A>} ) - end - - - def test_sequence - rng = %q{ -<?xml version="1.0" encoding="UTF-8"?> -<element name="A" xmlns="http://relaxng.org/ns/structure/1.0"> - <element name="B"> - <element name="C"> - <empty/> - </element> - <element name="D"> - <empty/> - </element> - </element> -</element> - } - validator = REXML::Validation::RelaxNG.new( rng ) - - error( validator, %q{<A><B><C/><C/><D/></B></A>} ) - error( validator, %q{<A><B><D/><C/></B></A>} ) - error( validator, %q{<A><C/><D/></A>} ) - no_error( validator, %q{<A><B><C/><D/></B></A>} ) - end - - - def test_choice - rng = %q{ -<?xml version="1.0" encoding="UTF-8"?> -<element name="A" xmlns="http://relaxng.org/ns/structure/1.0"> - <element name="B"> - <choice> - <element name="C"> - <empty/> - </element> - <element name="D"> - <empty/> - </element> - </choice> - </element> -</element> - } - validator = REXML::Validation::RelaxNG.new( rng ) - - error( validator, %q{<A><B><C/><D/></B></A>} ) - no_error( validator, %q{<A><B><D/></B></A>} ) - no_error( validator, %q{<A><B><C/></B></A>} ) - end - - def test_optional - rng = %q{ -<?xml version="1.0" encoding="UTF-8"?> -<element name="A" xmlns="http://relaxng.org/ns/structure/1.0"> - <element name="B"> - <optional> - <element name="C"> - <empty/> - </element> - </optional> - </element> -</element> - } - validator = REXML::Validation::RelaxNG.new( rng ) - - no_error( validator, %q{<A><B/></A>} ) - no_error( validator, %q{<A><B><C/></B></A>} ) - error( validator, %q{<A><B><D/></B></A>} ) - error( validator, %q{<A><B><C/><C/></B></A>} ) - end - - def test_zero_or_more - rng = %q{ -<?xml version="1.0" encoding="UTF-8"?> -<element name="A" xmlns="http://relaxng.org/ns/structure/1.0"> - <element name="B"> - <zeroOrMore> - <element name="C"> - <empty/> - </element> - </zeroOrMore> - </element> -</element> - } - validator = REXML::Validation::RelaxNG.new( rng ) - no_error( validator, %q{<A><B/></A>} ) - no_error( validator, %q{<A><B><C/></B></A>} ) - no_error( validator, %q{<A><B><C/><C/><C/></B></A>} ) - error( validator, %q{<A><B><D/></B></A>} ) - error( validator, %q{<A></A>} ) - - rng = %q{ -<?xml version="1.0" encoding="UTF-8"?> -<element name="A" xmlns="http://relaxng.org/ns/structure/1.0"> - <element name="B"> - <zeroOrMore> - <element name="C"> - <empty/> - </element> - <element name="D"> - <empty/> - </element> - </zeroOrMore> - </element> -</element> - } - validator = REXML::Validation::RelaxNG.new( rng ) - - no_error( validator, %q{<A><B/></A>} ) - no_error( validator, %q{<A><B><C/><D/></B></A>} ) - no_error( validator, %q{<A><B><C/><D/><C/><D/></B></A>} ) - error( validator, %q{<A><B><D/></B></A>} ) - end - - def test_one_or_more - rng = %q{ -<?xml version="1.0" encoding="UTF-8"?> -<element name="A" xmlns="http://relaxng.org/ns/structure/1.0"> - <element name="B"> - <oneOrMore> - <element name="C"> - <empty/> - </element> - </oneOrMore> - </element> -</element> - } - validator = REXML::Validation::RelaxNG.new( rng ) - - error( validator, %q{<A><B/></A>} ) - no_error( validator, %q{<A><B><C/></B></A>} ) - no_error( validator, %q{<A><B><C/><C/><C/></B></A>} ) - error( validator, %q{<A><B><D/></B></A>} ) - error( validator, %q{<A></A>} ) - end - - def test_attribute - rng = %q{ -<?xml version="1.0" encoding="UTF-8"?> -<element name="A" xmlns="http://relaxng.org/ns/structure/1.0"> - <attribute name="X"/> - <attribute name="Y"/> -</element> - } - validator = REXML::Validation::RelaxNG.new( rng ) - - error( validator, %q{<A><B/></A>} ) - error( validator, %q{<A/>} ) - error( validator, %q{<A X=""/>} ) - no_error( validator, %q{<A X="1" Y="1"/>} ) - end - - def test_choice_attributes - rng = %q{ -<?xml version="1.0" encoding="UTF-8"?> -<element name="A" xmlns="http://relaxng.org/ns/structure/1.0"> - <choice> - <attribute name="X"/> - <attribute name="Y"/> - </choice> -</element> - } - validator = REXML::Validation::RelaxNG.new( rng ) - - error( validator, %q{<A X="1" Y="1"/>} ) - error( validator, %q{<A/>} ) - no_error( validator, %q{<A X="1"/>}) - no_error( validator, %q{<A Y="1"/>} ) - end - - def test_choice_attribute_element - rng = %q{ -<?xml version="1.0" encoding="UTF-8"?> -<element name="A" xmlns="http://relaxng.org/ns/structure/1.0"> - <choice> - <attribute name="X"/> - <element name="B"/> - </choice> -</element> - } - validator = REXML::Validation::RelaxNG.new( rng ) - - error( validator, %q{<A X="1"><B/></A>} ) - error( validator, %q{<A/>} ) - no_error( validator, %q{<A X="1"/>}) - no_error( validator, %q{<A><B/></A>} ) - end - - def test_empty - rng = %q{ -<?xml version="1.0" encoding="UTF-8"?> -<element name="A" xmlns="http://relaxng.org/ns/structure/1.0"> - <empty/> -</element> - } - validator = REXML::Validation::RelaxNG.new( rng ) - - error( validator, %q{<A><B/></A>} ) - error( validator, %q{<A>Text</A>} ) - no_error( validator, %q{<A/>}) - end - - def test_text_val - rng = %q{ -<?xml version="1.0" encoding="UTF-8"?> -<element name="A" xmlns="http://relaxng.org/ns/structure/1.0"> - <text/> -</element> - } - validator = REXML::Validation::RelaxNG.new( rng ) - - error( validator, %q{<A><B/></A>} ) - no_error( validator, %q{<A>Text</A>} ) - error( validator, %q{<A/>}) - end - - def test_choice_text - rng = %q{ -<?xml version="1.0" encoding="UTF-8"?> -<element name="A" xmlns="http://relaxng.org/ns/structure/1.0"> - <choice> - <element name="B"/> - <text/> - </choice> -</element> - } - validator = REXML::Validation::RelaxNG.new( rng ) - - error( validator, %q{<A><B/>Text</A>} ) - error( validator, %q{<A>Text<B/></A>} ) - no_error( validator, %q{<A>Text</A>} ) - no_error( validator, %q{<A><B/></A>} ) - end - - def test_group - rng = %q{ -<?xml version="1.0" encoding="UTF-8"?> -<element name="A" xmlns="http://relaxng.org/ns/structure/1.0"> - <choice> - <element name="B"/> - <group> - <element name="C"/> - <element name="D"/> - </group> - </choice> -</element> - } - validator = REXML::Validation::RelaxNG.new( rng ) - - error( validator, %q{<A><B/><C/></A>} ) - error( validator, %q{<A><C/></A>} ) - no_error( validator, %q{<A><B/></A>} ) - no_error( validator, %q{<A><C/><D/></A>} ) - - rng = %q{ -<?xml version="1.0" encoding="UTF-8"?> -<element name="A" xmlns="http://relaxng.org/ns/structure/1.0"> - <element name="B"/> - <group> - <element name="C"/> - <element name="D"/> - </group> -</element> - } - validator = REXML::Validation::RelaxNG.new( rng ) - - error( validator, %q{<A><B/><C/></A>} ) - error( validator, %q{<A><B/><D/></A>} ) - error( validator, %q{<A><B/></A>} ) - no_error( validator, %q{<A><B/><C/><D/></A>} ) - end - - def test_value - # Values as text nodes - rng = %q{ -<?xml version="1.0" encoding="UTF-8"?> -<element name="A" xmlns="http://relaxng.org/ns/structure/1.0"> - <element name="B"> - <value>VaLuE</value> - </element> -</element> - } - validator = REXML::Validation::RelaxNG.new( rng ) - - error( validator, %q{<A><B>X</B></A>} ) - error( validator, %q{<A><B/></A>} ) - no_error( validator, %q{<A><B>VaLuE</B></A>} ) - - # Values as text nodes, via choice - rng = %q{ -<?xml version="1.0" encoding="UTF-8"?> -<element name="A" xmlns="http://relaxng.org/ns/structure/1.0"> - <element name="B"> - <choice> - <value>Option 1</value> - <value>Option 2</value> - </choice> - </element> -</element> - } - validator = REXML::Validation::RelaxNG.new( rng ) - - error( validator, %q{<A><B/></A>} ) - error( validator, %q{<A><B>XYZ</B></A>} ) - no_error( validator, %q{<A><B>Option 1</B></A>} ) - no_error( validator, %q{<A><B>Option 2</B></A>} ) - - # Attribute values - rng = %q{ -<?xml version="1.0" encoding="UTF-8"?> -<element name="A" xmlns="http://relaxng.org/ns/structure/1.0"> - <attribute name="B"> - <value>VaLuE</value> - </attribute> -</element> - } - validator = REXML::Validation::RelaxNG.new( rng ) - - error( validator, %q{<A/>} ) - error( validator, %q{<A B=""/>} ) - error( validator, %q{<A B="Lala"/>} ) - no_error( validator, %q{<A B="VaLuE"/>} ) - - # Attribute values via choice - rng = %q{ -<?xml version="1.0" encoding="UTF-8"?> -<element name="A" xmlns="http://relaxng.org/ns/structure/1.0"> - <attribute name="B"> - <choice> - <value>Option 1</value> - <value>Option 2</value> - </choice> - </attribute> -</element> - } - validator = REXML::Validation::RelaxNG.new( rng ) - - error( validator, %q{<A B=""/>} ) - error( validator, %q{<A B="Value"/>} ) - no_error( validator, %q{<A B="Option 1"></A>} ) - no_error( validator, %q{<A B="Option 2"/>} ) - end - - def test_interleave - rng = %q{ -<?xml version="1.0" encoding="UTF-8"?> -<element name="A" xmlns="http://relaxng.org/ns/structure/1.0"> - <element name="B"> - <interleave> - <element name="C"/> - <element name="D"/> - <element name="E"/> - </interleave> - </element> -</element> - } - validator = REXML::Validation::RelaxNG.new( rng ) - - error( validator, %q{<A><B><C/></B></A>} ) - error( validator, %q{<A><B><C/><D/><C/></B></A>} ) - no_error( validator, %q{<A><B><C/><D/><E/></B></A>} ) - no_error( validator, %q{<A><B><E/><D/><C/></B></A>} ) - no_error( validator, %q{<A><B><D/><C/><E/></B></A>} ) - no_error( validator, %q{<A><B><E/><C/><D/></B></A>} ) - error( validator, %q{<A><B><E/><C/><D/><C/></B></A>} ) - end - - def test_mixed - rng = %q{ -<?xml version="1.0" encoding="UTF-8"?> -<element name="A" xmlns="http://relaxng.org/ns/structure/1.0"> - <element name="B"> - <mixed> - <element name="D"/> - </mixed> - </element> -</element> - } - validator = REXML::Validation::RelaxNG.new( rng ) - - no_error( validator, %q{<A><B>Text<D/></B></A>} ) - no_error( validator, %q{<A><B><D/>Text</B></A>} ) - end - - def test_ref_sequence - rng = %q{ -<?xml version="1.0" encoding="UTF-8"?> -<grammar xmlns="http://relaxng.org/ns/structure/1.0"> - <start> - <element name="A"> - <ref name="B"/> - <ref name="B"/> - </element> - </start> - - <define name="B"> - <element name="B"> - <attribute name="X"/> - </element> - </define> -</grammar> - } - validator = REXML::Validation::RelaxNG.new( rng ) - - no_error( validator, %q{<A><B X=''/><B X=''/></A>} ) - error( validator, %q{<A><B X=''/></A>} ) - end - - def test_ref_choice - rng = %q{ -<?xml version="1.0" encoding="UTF-8"?> -<grammar xmlns="http://relaxng.org/ns/structure/1.0"> - <start> - <element name="A"> - <choice> - <ref name="B"/> - </choice> - </element> - </start> - - <define name="B"> - <element name="B"/> - <element name="C"/> - </define> -</grammar> - } - validator = REXML::Validation::RelaxNG.new( rng ) - - error( validator, %q{<A><D/></A>} ) - error( validator, %q{<A><B/><C/></A>} ) - no_error( validator, %q{<A><B/></A>} ) - no_error( validator, %q{<A><C/></A>} ) - - rng = %q{ -<?xml version="1.0" encoding="UTF-8"?> -<grammar xmlns="http://relaxng.org/ns/structure/1.0"> - <start> - <element name="A"> - <ref name="B"/> - </element> - </start> - - <define name="B"> - <choice> - <element name="B"/> - <element name="C"/> - </choice> - </define> -</grammar> - } - validator = REXML::Validation::RelaxNG.new( rng ) - - error( validator, %q{<A><D/></A>} ) - error( validator, %q{<A><B/><C/></A>} ) - no_error( validator, %q{<A><B/></A>} ) - no_error( validator, %q{<A><C/></A>} ) - - rng = %q{ -<?xml version="1.0" encoding="UTF-8"?> -<grammar xmlns="http://relaxng.org/ns/structure/1.0"> - <start> - <element name="A"> - <choice> - <ref name="B"/> - <element name="D"/> - </choice> - </element> - </start> - - <define name="B"> - <element name="B"/> - <element name="C"/> - </define> -</grammar> - } - validator = REXML::Validation::RelaxNG.new( rng ) - - error( validator, %q{<A><B/><C/></A>} ) - no_error( validator, %q{<A><B/></A>} ) - no_error( validator, %q{<A><C/></A>} ) - no_error( validator, %q{<A><D/></A>} ) - end - - - def test_ref_zero_plus - rng = %q{ -<?xml version="1.0" encoding="UTF-8"?> -<grammar xmlns="http://relaxng.org/ns/structure/1.0"> - <start> - <element name="A"> - <zeroOrMore> - <ref name="B"/> - </zeroOrMore> - </element> - </start> - - <define name="B"> - <element name="B"> - <attribute name="X"/> - </element> - </define> -</grammar> - } - validator = REXML::Validation::RelaxNG.new( rng ) - - error( validator, %q{<A><B/></A>} ) - no_error( validator, %q{<A/>} ) - no_error( validator, %q{<A><B X=''/></A>} ) - no_error( validator, %q{<A><B X=''/><B X=''/><B X=''/></A>} ) - - rng = %q{ -<?xml version="1.0" encoding="UTF-8"?> -<grammar xmlns="http://relaxng.org/ns/structure/1.0"> - <start> - <element name="A"> - <ref name="B"/> - </element> - </start> - - <define name="B"> - <zeroOrMore> - <element name="B"> - <attribute name="X"/> - </element> - </zeroOrMore> - </define> -</grammar> - } - validator = REXML::Validation::RelaxNG.new( rng ) - - error( validator, %q{<A><B/></A>} ) - no_error( validator, %q{<A/>} ) - no_error( validator, %q{<A><B X=''/></A>} ) - no_error( validator, %q{<A><B X=''/><B X=''/><B X=''/></A>} ) - end - - - def test_ref_one_plus - rng = %q{ -<?xml version="1.0" encoding="UTF-8"?> -<grammar xmlns="http://relaxng.org/ns/structure/1.0"> - <start> - <element name="A"> - <oneOrMore> - <ref name="B"/> - </oneOrMore> - </element> - </start> - - <define name="B"> - <element name="B"> - <attribute name="X"/> - </element> - </define> -</grammar> - } - validator = REXML::Validation::RelaxNG.new( rng ) - - error( validator, %q{<A><B/></A>} ) - error( validator, %q{<A/>} ) - no_error( validator, %q{<A><B X=''/></A>} ) - no_error( validator, %q{<A><B X=''/><B X=''/><B X=''/></A>} ) - - rng = %q{ -<?xml version="1.0" encoding="UTF-8"?> -<grammar xmlns="http://relaxng.org/ns/structure/1.0"> - <start> - <element name="A"> - <ref name="B"/> - </element> - </start> - - <define name="B"> - <oneOrMore> - <element name="B"> - <attribute name="X"/> - </element> - </oneOrMore> - </define> -</grammar> - } - validator = REXML::Validation::RelaxNG.new( rng ) - - error( validator, %q{<A><B/></A>} ) - error( validator, %q{<A/>} ) - no_error( validator, %q{<A><B X=''/></A>} ) - no_error( validator, %q{<A><B X=''/><B X=''/><B X=''/></A>} ) - end - - def test_ref_interleave - rng = %q{ -<?xml version="1.0" encoding="UTF-8"?> -<grammar xmlns="http://relaxng.org/ns/structure/1.0"> - <start> - <element name="A"> - <interleave> - <ref name="B"/> - </interleave> - </element> - </start> - - <define name="B"> - <element name="B"/> - <element name="C"/> - </define> -</grammar> - } - validator = REXML::Validation::RelaxNG.new( rng ) - - error( validator, %q{<A><B/></A>} ) - error( validator, %q{<A><C/></A>} ) - error( validator, %q{<A><C/><C/></A>} ) - no_error( validator, %q{<A><B/><C/></A>} ) - no_error( validator, %q{<A><C/><B/></A>} ) - - rng = %q{ -<?xml version="1.0" encoding="UTF-8"?> -<grammar xmlns="http://relaxng.org/ns/structure/1.0"> - <start> - <element name="A"> - <ref name="B"/> - </element> - </start> - - <define name="B"> - <interleave> - <element name="B"/> - <element name="C"/> - </interleave> - </define> -</grammar> - } - validator = REXML::Validation::RelaxNG.new( rng ) - - error( validator, %q{<A><B/></A>} ) - error( validator, %q{<A><C/></A>} ) - error( validator, %q{<A><C/><C/></A>} ) - no_error( validator, %q{<A><B/><C/></A>} ) - no_error( validator, %q{<A><C/><B/></A>} ) - - rng = %q{ -<?xml version="1.0" encoding="UTF-8"?> -<grammar xmlns="http://relaxng.org/ns/structure/1.0"> - <start> - <element name="A"> - <interleave> - <ref name="B"/> - <ref name="C"/> - </interleave> - </element> - </start> - - <define name="B"> - <element name="B"/> - </define> - <define name="C"> - <element name="C"/> - </define> -</grammar> - } - validator = REXML::Validation::RelaxNG.new( rng ) - - error( validator, %q{<A><B/></A>} ) - error( validator, %q{<A><C/></A>} ) - error( validator, %q{<A><C/><C/></A>} ) - no_error( validator, %q{<A><B/><C/></A>} ) - no_error( validator, %q{<A><C/><B/></A>} ) - end - - def test_ref_recurse - rng = %q{ -<?xml version="1.0" encoding="UTF-8"?> -<grammar xmlns="http://relaxng.org/ns/structure/1.0"> - <start> - <element name="A"> - <ref name="B"/> - </element> - </start> - - <define name="B"> - <element name="B"> - <optional> - <ref name="B"/> - </optional> - </element> - </define> -</grammar> - } - validator = REXML::Validation::RelaxNG.new( rng ) - - error( validator, %q{<A></A>} ) - no_error( validator, %q{<A><B/></A>} ) - no_error( validator, %q{<A><B><B/></B></A>} ) - end - - def test_ref_optional - rng = %q{ -<?xml version="1.0" encoding="UTF-8"?> -<grammar xmlns="http://relaxng.org/ns/structure/1.0"> - <start> - <element name="A"> - <optional> - <ref name="B"/> - </optional> - </element> - </start> - - <define name="B"> - <element name="B"> - </element> - </define> -</grammar> - } - validator = REXML::Validation::RelaxNG.new( rng ) - - no_error( validator, %q{<A></A>} ) - no_error( validator, %q{<A><B/></A>} ) - error( validator, %q{<A><B/><B/></A>} ) - error( validator, %q{<A><C/></A>} ) - - rng = %q{ -<?xml version="1.0" encoding="UTF-8"?> -<grammar xmlns="http://relaxng.org/ns/structure/1.0"> - <start> - <element name="A"> - <ref name="B"/> - </element> - </start> - - <define name="B"> - <optional> - <element name="B"> - </element> - </optional> - </define> -</grammar> - } - validator = REXML::Validation::RelaxNG.new( rng ) - - no_error( validator, %q{<A></A>} ) - no_error( validator, %q{<A><B/></A>} ) - error( validator, %q{<A><B/><B/></A>} ) - error( validator, %q{<A><C/></A>} ) - 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 |