File: Email-MIME-CreateHTML-Resolver.t

package info (click to toggle)
libemail-mime-createhtml-perl 1.042-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 228 kB
  • sloc: perl: 632; makefile: 2
file content (75 lines) | stat: -rw-r--r-- 3,203 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#!/usr/local/bin/perl

#
# Unit test for Email::MIME::CreateHTML::Resolver
#
# -t Trace
# -T Deep trace
#

use strict;
use Test::Assertions::TestScript;

#Compilation
require Email::MIME::CreateHTML::Resolver;
ASSERT($INC{'Email/MIME/CreateHTML/Resolver.pm'}, "Compiled Email::MIME::CreateHTML::Resolver version $Email::MIME::CreateHTML::Resolver::VERSION");

#Try some different URLs
my $obj = Email::MIME::CreateHTML::Resolver->new()->_select_resolver('http://www.bbc.co.uk/');
ASSERT(ref $obj eq 'Email::MIME::CreateHTML::Resolver::LWP', 'HTTP URL');

$obj = Email::MIME::CreateHTML::Resolver->new()->_select_resolver('https://ssl.bbc.co.uk/');
ASSERT(ref $obj eq 'Email::MIME::CreateHTML::Resolver::LWP', 'HTTPS URL');

$obj = Email::MIME::CreateHTML::Resolver->new()->_select_resolver('ftp://www.bbc.co.uk/');
ASSERT(ref $obj eq 'Email::MIME::CreateHTML::Resolver::LWP', 'FTP URL');

$obj = Email::MIME::CreateHTML::Resolver->new()->_select_resolver('/absolute/filepath/file.extension');
ASSERT(ref $obj eq 'Email::MIME::CreateHTML::Resolver::Filesystem', 'absolute filepath');

$obj = Email::MIME::CreateHTML::Resolver->new()->_select_resolver('some/filepath/file.extension');
ASSERT(ref $obj eq 'Email::MIME::CreateHTML::Resolver::Filesystem', 'relative filepath');

$obj = Email::MIME::CreateHTML::Resolver->new()->_select_resolver('\\server\filepath\file.extension');
ASSERT(ref $obj eq 'Email::MIME::CreateHTML::Resolver::Filesystem', 'UNC filepath');

$obj = Email::MIME::CreateHTML::Resolver->new()->_select_resolver('c:\some\filepath\file.extension');
ASSERT(ref $obj eq 'Email::MIME::CreateHTML::Resolver::Filesystem', 'windows-style filepath');

$obj = Email::MIME::CreateHTML::Resolver->new()->_select_resolver('file://some/filepath/file.extension');
ASSERT(ref $obj eq 'Email::MIME::CreateHTML::Resolver::Filesystem', 'file URL');

#Try custom resolver
my $resolver = new UnitTestResolver;
$obj = Email::MIME::CreateHTML::Resolver->new({resolver => $resolver})->_select_resolver('http://www.bbc.co.uk/');
ASSERT(ref $obj eq 'UnitTestResolver', 'Custom resolver');

#Error checking
ASSERT(DIED(sub { Email::MIME::CreateHTML::Resolver->new()->get_resource('')}) && $@ =~ /get_resource without a URI/, "No URI");
ASSERT(DIED(sub { Email::MIME::CreateHTML::Resolver->new({resolver => 1})->_select_resolver('abc')}), "Resolver not an object");
ASSERT(DIED(sub { Email::MIME::CreateHTML::Resolver->new({resolver => new Dummy()})->_select_resolver('abc')}) && $@ =~ /resolver does not seem to use the expected interface/, "Resolver doesn't have get_resource method");
ASSERT(DIED(sub { Email::MIME::CreateHTML::Resolver->new({object_cache => new Dummy()})->_select_resolver('abc')}) && $@ =~ /object_cache does not seem to use the expected cache interface/, "Dodgy object cache");

# Dummy object for error checking
package Dummy;
sub new {
	return bless({}, shift);
}

#######################################################
#
# Trivial resource resolver for testing
#
#######################################################

package UnitTestResolver;

sub new {
	return bless({}, shift());	
}

sub get_resource {
	return ("invariant value","invariant-name","text/plain","iso8859-1");	
}

1;