# Copyright (C) 2003-2006 Kouichirou Eto, All rights reserved. # This is free software with ABSOLUTELY NO WARRANTY. # You can redistribute it and/or modify it under the terms of the GNU GPL 2. $LOAD_PATH.unshift '..' unless $LOAD_PATH.include? '..' require 'qwik/test-common' begin require 'xml/libxml' $have_libxml_so = true rescue LoadError $have_libxml_so = false end if $0 == __FILE__ $test = true end class TestLibXml < Test::Unit::TestCase def test_parser str = <<'EOT' FrontPage - example.com/test

user | user@e.com (.logout)

FrontPage

FrontPage

これは新規qwikWebサイトの入口となるページです。

使い方

ページの上の方にある「編集」というリンクをたどると、このページの編集モードになります。

表示されたテキストの内容を変更し、「Save」ボタンをクリックすると、このページの内容が変更されます。

記述方法

ページの内容はテキストで書かれており、いくつかの記号によって見出しなどの指定をします。詳しい情報は、TextFormatをご覧下さい。

qwikWeb

詳しくは、qwikWebホームページをご覧ください。

QuickML

メーリングリスト機能の使い方は、QuickMLホームページをご覧ください。

last modified: 2004-05-20

EOT if $have_libxml_so ok_eq('2.6.11', XML::Parser::LIBXML_VERSION) ok_eq(28, XML::Parser::VERNUM) xp = XML::Parser.new xp.string = str.page_to_xml doc = xp.parse assert_instance_of(XML::Document, doc) e = nil doc.find('//a'){|ee| e = ee } end end def test_text if $have_libxml_so xp = XML::Parser.new xp.string = '

a

' doc = xp.parse assert_instance_of(XML::Document, doc) e = nil doc.find('//title'){|e| e = ee } end end end class TestAssertXPath < Test::Unit::TestCase include TestSession def test_ok_xp t_add_user session('/test/') ok_in(['FrontPage'], '//h1') ok_xp([:a, {:href=>'.logout'}, 'Logout'], '//a') ok_in(['Logout'], '//a') end end class CheckLibXml_OriginalTest < Test::Unit::TestCase def make_sample_xml str = "\n" 10000.times {|i| str << 'Node sample text'+"\n" } str << "\n" str end def nutest_rexml #9.851 seconds. require 'rexml/document' xmlStr = make_sample_xml doc = REXML::Document.new xmlStr sum = avgSum = count = 0 doc.elements.each('/nodes/node') { |e| count += 1 sum += e.attributes['sum'].to_i avgSum += e.attributes['avg'].to_i } puts "count(node): #{count}, sum(sum): #{sum}, avg(avg): #{avgSum/count}" end def nutest_libxml #4.685 seconds require 'xml/libxml' xmlStr = make_sample_xml xp = XML::Parser.new xp.string = xmlStr doc = xp.parse sum = avgSum = count = 0 doc.find('/nodes/node').each { |e| count += 1 sum += e['sum'].to_i avgSum += e['avg'].to_i } puts "count(node): #{count}, sum(sum): #{sum}, avg(avg): #{avgSum/count}" end def test_dummy #0.117 seconds. xmlStr = make_sample_xml end end