Sha256: 47040241f19aeae18f8040e97eeed7b06c747c621b860d6b5a4193875e8cc904

Contents?: true

Size: 1.32 KB

Versions: 2

Compression:

Stored size: 1.32 KB

Contents

# $Id: app.rb 3893 2007-03-06 20:12:09Z francis $
#
#


$:.unshift(File.dirname(__FILE__) + '/../lib')

require 'eventmachine'
require 'evma_xmlpushparser'


class TestApp < Test::Unit::TestCase

	Host = "127.0.0.1"
	Port = 9250

	class Xml < EventMachine::Connection
		include EventMachine::XmlPushParser
		attr_reader :elements, :element_ends
		def initialize *args
			super
			@elements = {}
			@element_ends = []
		end
		def start_document
		end
		def start_element nm, attrs
			if ["aaa","bbb"].include?(nm)
				@elements[nm] = attrs
			else
				raise "error"
			end
		end
		def end_element nm
			@element_ends << nm
		end
		def end_document
			EventMachine.stop
		end
	end

	module XmlClient
		def post_init
			send_data '<?xml version="1.0"?><aaa'
			send_data ' attr1="1" attr2="2">chars<bbb/'
			send_data '></a'
			send_data 'aa>'
			close_connection_after_writing
		end
	end

	def test_a
		obj = nil
		EventMachine.run {
			EventMachine.start_server(Host, Port, Xml) {|xml| obj = xml}
			EventMachine.connect Host, Port, XmlClient
			EventMachine.add_timer(2) {EventMachine.stop} # avoid hang in case of error
		}

		assert_equal( ["aaa","bbb"], obj.elements.keys.sort )
		assert_equal( {"attr1"=>"1","attr2"=>"2"}, obj.elements["aaa"] )
		assert_equal( {}, obj.elements["bbb"] )
		assert_equal( ["bbb","aaa"], obj.element_ends)
	end
end


Version data entries

2 entries across 2 versions & 2 rubygems

Version Path
troystribling-evma_xmlpushparser-0.0.1 test/app.rb
evma_xmlpushparser-0.0.1 test/app.rb