# frozen_string_literal: false
require_relative "../rexml_test_utils"
require "rexml/document"
module REXMLTests
class TestXPathCompare < Test::Unit::TestCase
def match(xml, xpath)
document = REXML::Document.new(xml)
REXML::XPath.match(document, xpath)
end
class TestEqual < self
class TestNodeSet < self
def test_boolean_true
xml = <<-XML
XML
assert_equal([true],
match(xml, "/root/child=true()"))
end
def test_boolean_false
xml = <<-XML
XML
assert_equal([false],
match(xml, "/root/child=true()"))
end
def test_number_true
xml = <<-XML
100
200
XML
assert_equal([true],
match(xml, "/root/child=100"))
end
def test_number_false
xml = <<-XML
100
200
XML
assert_equal([false],
match(xml, "/root/child=300"))
end
def test_string_true
xml = <<-XML
text
string
XML
assert_equal([true],
match(xml, "/root/child='string'"))
end
def test_string_false
xml = <<-XML
text
string
XML
assert_equal([false],
match(xml, "/root/child='nonexistent'"))
end
end
class TestBoolean < self
def test_number_true
xml = ""
assert_equal([true],
match(xml, "true()=1"))
end
def test_number_false
xml = ""
assert_equal([false],
match(xml, "true()=0"))
end
def test_string_true
xml = ""
assert_equal([true],
match(xml, "true()='string'"))
end
def test_string_false
xml = ""
assert_equal([false],
match(xml, "true()=''"))
end
end
class TestNumber < self
def test_string_true
xml = ""
assert_equal([true],
match(xml, "1='1'"))
end
def test_string_false
xml = ""
assert_equal([false],
match(xml, "1='2'"))
end
end
end
class TestGreaterThan < self
class TestNodeSet < self
def test_boolean_truex
xml = <<-XML
XML
assert_equal([true],
match(xml, "/root/child>false()"))
end
def test_boolean_false
xml = <<-XML
XML
assert_equal([false],
match(xml, "/root/child>true()"))
end
def test_number_true
xml = <<-XML
100
200
XML
assert_equal([true],
match(xml, "/root/child>199"))
end
def test_number_false
xml = <<-XML
100
200
XML
assert_equal([false],
match(xml, "/root/child>200"))
end
def test_string_true
xml = <<-XML
100
200
XML
assert_equal([true],
match(xml, "/root/child>'199'"))
end
def test_string_false
xml = <<-XML
100
200
XML
assert_equal([false],
match(xml, "/root/child>'200'"))
end
end
class TestBoolean < self
def test_string_true
xml = ""
assert_equal([true],
match(xml, "true()>'0'"))
end
def test_string_false
xml = ""
assert_equal([false],
match(xml, "true()>'1'"))
end
end
class TestNumber < self
def test_boolean_true
xml = ""
assert_equal([true],
match(xml, "true()>0"))
end
def test_number_false
xml = ""
assert_equal([false],
match(xml, "true()>1"))
end
def test_string_true
xml = ""
assert_equal([true],
match(xml, "1>'0'"))
end
def test_string_false
xml = ""
assert_equal([false],
match(xml, "1>'1'"))
end
end
class TestString < self
def test_string_true
xml = ""
assert_equal([true],
match(xml, "'1'>'0'"))
end
def test_string_false
xml = ""
assert_equal([false],
match(xml, "'1'>'1'"))
end
end
end
end
end