277
289
assert_not_equal("", entry.to_s)
294
def assert_atom_person_to_s(target_class)
297
uri = "http://example.com/person/"
298
email = "person@example.com"
300
target = target_class.new
301
assert_equal("", target.to_s)
303
target = target_class.new
304
person_name = target_class::Name.new
305
person_name.content = name
306
target.name = person_name
307
xml_target = REXML::Document.new(target.to_s).root
308
assert_equal(["name"], xml_target.elements.collect {|e| e.name})
309
assert_equal([name], xml_target.elements.collect {|e| e.text})
311
person_uri = target_class::Uri.new
312
person_uri.content = uri
313
target.uri = person_uri
314
xml_target = REXML::Document.new(target.to_s).root
315
assert_equal(["name", "uri"], xml_target.elements.collect {|e| e.name})
316
assert_equal([name, uri], xml_target.elements.collect {|e| e.text})
318
person_email = target_class::Email.new
319
person_email.content = email
320
target.email = person_email
321
xml_target = REXML::Document.new(target.to_s).root
322
assert_equal(["name", "uri", "email"],
323
xml_target.elements.collect {|e| e.name})
324
assert_equal([name, uri, email],
325
xml_target.elements.collect {|e| e.text})
329
def assert_atom_category_to_s(target_class)
332
scheme = "http://example.com/music"
335
category = target_class.new
336
assert_equal("", category.to_s)
338
category = target_class.new
339
category.scheme = scheme
340
assert_equal("", category.to_s)
342
category = target_class.new
343
category.label = label
344
assert_equal("", category.to_s)
346
category = target_class.new
347
category.scheme = scheme
348
category.label = label
349
assert_equal("", category.to_s)
351
category = target_class.new
353
xml = REXML::Document.new(category.to_s).root
354
assert_rexml_element([], {"term" => term}, nil, xml)
356
category = target_class.new
358
category.scheme = scheme
359
xml = REXML::Document.new(category.to_s).root
360
assert_rexml_element([], {"term" => term, "scheme" => scheme}, nil, xml)
362
category = target_class.new
364
category.label = label
365
xml = REXML::Document.new(category.to_s).root
366
assert_rexml_element([], {"term" => term, "label" => label}, nil, xml)
368
category = target_class.new
370
category.scheme = scheme
371
category.label = label
372
xml = REXML::Document.new(category.to_s).root
373
attrs = {"term" => term, "scheme" => scheme, "label" => label}
374
assert_rexml_element([], attrs, nil, xml)
378
def assert_atom_generator_to_s(target_class)
380
content = "Feed generator"
381
uri = "http://example.com/generator"
384
generator = target_class.new
385
assert_equal("", generator.to_s)
387
generator = target_class.new
389
assert_equal("", generator.to_s)
391
generator = target_class.new
392
generator.version = version
393
assert_equal("", generator.to_s)
395
generator = target_class.new
397
generator.version = version
398
assert_equal("", generator.to_s)
400
generator = target_class.new
401
generator.content = content
402
xml = REXML::Document.new(generator.to_s).root
403
assert_rexml_element([], {}, content, xml)
405
generator = target_class.new
406
generator.content = content
408
xml = REXML::Document.new(generator.to_s).root
409
assert_rexml_element([], {"uri" => uri}, content, xml)
411
generator = target_class.new
412
generator.content = content
413
generator.version = version
414
xml = REXML::Document.new(generator.to_s).root
415
assert_rexml_element([], {"version" => version}, content, xml)
417
generator = target_class.new
418
generator.content = content
420
generator.version = version
421
xml = REXML::Document.new(generator.to_s).root
422
assert_rexml_element([], {"uri" => uri, "version" => version},
427
def assert_atom_icon_to_s(target_class)
429
content = "http://example.com/icon.png"
431
icon = target_class.new
432
assert_equal("", icon.to_s)
434
icon = target_class.new
435
icon.content = content
436
xml = REXML::Document.new(icon.to_s).root
437
assert_rexml_element([], {}, content, xml)
441
def assert_atom_id_to_s(target_class)
443
content = "http://example.com/1"
445
id = target_class.new
446
assert_equal("", id.to_s)
448
id = target_class.new
450
xml = REXML::Document.new(id.to_s).root
451
assert_rexml_element([], {}, content, xml)
455
def assert_atom_link_to_s(target_class)
457
href = "http://example.com/atom.xml"
459
type = "application/atom+xml"
464
link = target_class.new
465
assert_equal("", link.to_s)
467
link = target_class.new
469
xml = REXML::Document.new(link.to_s).root
470
assert_rexml_element([], {"href" => href}, nil, xml)
472
optional_arguments = %w(rel type hreflang title length)
473
optional_arguments.each do |name|
474
rest = optional_arguments.reject {|x| x == name}
476
link = target_class.new
477
link.__send__("#{name}=", eval(name))
478
assert_equal("", link.to_s)
481
link.__send__("#{n}=", eval(n))
482
assert_equal("", link.to_s)
485
link = target_class.new
487
link.__send__("#{name}=", eval(name))
488
attrs = [["href", href], [name, eval(name)]]
489
xml = REXML::Document.new(link.to_s).root
490
assert_rexml_element([], attrs, nil, xml)
493
link.__send__("#{n}=", eval(n))
494
attrs << [n, eval(n)]
495
xml = REXML::Document.new(link.to_s).root
496
assert_rexml_element([], attrs, nil, xml)
502
def assert_atom_logo_to_s(target_class)
504
content = "http://example.com/logo.png"
506
logo = target_class.new
507
assert_equal("", logo.to_s)
509
logo = target_class.new
510
logo.content = content
511
xml = REXML::Document.new(logo.to_s).root
512
assert_rexml_element([], {}, content, xml)
516
def assert_atom_text_construct_to_s(target_class)
518
text_content = "plain text"
519
html_content = "<em>#{text_content}</em>"
520
xhtml_uri = "http://www.w3.org/1999/xhtml"
521
xhtml_em = RSS::XML::Element.new("em", nil, xhtml_uri, {}, text_content)
522
xhtml_content = RSS::XML::Element.new("div", nil, xhtml_uri,
523
{"xmlns" => xhtml_uri},
526
text = target_class.new
527
assert_equal("", text.to_s)
529
text = target_class.new
531
assert_equal("", text.to_s)
533
text = target_class.new
534
text.content = text_content
535
xml = REXML::Document.new(text.to_s).root
536
assert_rexml_element([], {}, text_content, xml)
538
text = target_class.new
540
text.content = text_content
541
xml = REXML::Document.new(text.to_s).root
542
assert_rexml_element([], {"type" => "text"}, text_content, xml)
544
text = target_class.new
546
text.content = html_content
547
xml = REXML::Document.new(text.to_s).root
548
assert_rexml_element([], {"type" => "html"}, html_content, xml)
550
text = target_class.new
552
text.content = xhtml_content
553
assert_equal("", text.to_s)
555
text = target_class.new
557
text.__send__(target_class.xml_setter, xhtml_content)
558
xml = REXML::Document.new(text.to_s).root
559
assert_rexml_element([[xhtml_uri, "div"]], {"type" => "xhtml"},
561
assert_rexml_element([[xhtml_uri, "em"]], nil, nil, xml.elements[1])
562
assert_rexml_element([], {}, text_content, xml.elements[1].elements[1])
564
text = target_class.new
566
text.__send__(target_class.xml_setter, xhtml_em)
567
xml = REXML::Document.new(text.to_s).root
568
assert_rexml_element([[xhtml_uri, "div"]], {"type" => "xhtml"},
570
assert_rexml_element([[xhtml_uri, "em"]], nil, nil, xml.elements[1])
571
assert_rexml_element([], {}, text_content, xml.elements[1].elements[1])
575
def assert_atom_date_construct_to_s(target_class)
577
date = target_class.new
578
assert_equal("", date.to_s)
581
"2003-12-13T18:30:02Z",
582
"2003-12-13T18:30:02.25Z",
583
"2003-12-13T18:30:02+01:00",
584
"2003-12-13T18:30:02.25+01:00",
586
date = target_class.new
587
date.content = content
588
xml = REXML::Document.new(date.to_s).root
589
assert_rexml_element([], {}, content, xml, :time)
591
date = target_class.new
592
date.content = Time.parse(content)
593
xml = REXML::Document.new(date.to_s).root
594
assert_rexml_element([], {}, content, xml, :time)
599
def assert_atom_content_to_s(target_class)
601
assert_atom_text_construct_to_s(target_class)
602
assert_atom_content_inline_other_xml_to_s(target_class)
603
assert_atom_content_inline_other_text_to_s(target_class)
604
assert_atom_content_inline_other_base64_to_s(target_class)
605
assert_atom_content_out_of_line_to_s(target_class)
609
def assert_atom_content_inline_other_xml_to_s(target_class)
611
content = target_class.new
612
content.type = "text/xml"
613
assert_equal("", content.to_s)
615
content = target_class.new
616
content.type = "text/xml"
617
content.xml = RSS::XML::Element.new("em")
618
xml = REXML::Document.new(content.to_s).root
619
assert_rexml_element([["", "em"]], {"type" => "text/xml"}, nil, xml)
623
def assert_atom_content_inline_other_text_to_s(target_class)
625
content = target_class.new
626
content.type = "text/plain"
627
assert_equal("", content.to_s)
629
content = target_class.new
630
content.type = "text/plain"
631
content.xml = RSS::XML::Element.new("em")
632
assert_equal("", content.to_s)
634
content = target_class.new
635
content.type = "text/plain"
636
content.content = "content"
637
xml = REXML::Document.new(content.to_s).root
638
assert_rexml_element([], {"type" => "text/plain"}, "content", xml)
642
def assert_atom_content_inline_other_base64_to_s(target_class)
653
type = "application/zip"
654
original_content = Zlib::Deflate.deflate(text)
656
content = target_class.new
658
content.content = original_content
659
xml = REXML::Document.new(content.to_s).root
660
assert_rexml_element([], {"type" => type},
661
Base64.encode64(original_content), xml)
665
def assert_atom_content_out_of_line_to_s(target_class)
667
type = "application/zip"
668
src = "http://example.com/xxx.zip"
670
content = target_class.new
671
assert(!content.out_of_line?)
673
assert(content.out_of_line?)
674
xml = REXML::Document.new(content.to_s).root
675
assert_rexml_element([], {"src" => src}, nil, xml)
677
content = target_class.new
678
assert(!content.out_of_line?)
680
assert(!content.out_of_line?)
682
assert(content.out_of_line?)
683
xml = REXML::Document.new(content.to_s).root
684
assert_rexml_element([], {"type" => type, "src" => src}, nil, xml)