diff options
Diffstat (limited to 'Mock')
| -rw-r--r-- | Mock/CommandRegistry.pm | 15 | ||||
| -rw-r--r-- | Mock/IRC.pm | 62 | 
2 files changed, 77 insertions, 0 deletions
diff --git a/Mock/CommandRegistry.pm b/Mock/CommandRegistry.pm new file mode 100644 index 0000000..166879d --- /dev/null +++ b/Mock/CommandRegistry.pm @@ -0,0 +1,15 @@ +package Mock::CommandRegistry; + +use strict; +use warnings; + +use fields qw/commands/; + +sub new { +	my ($class) = @_; +	bless {}, $class; +} + +sub register { +	... +} diff --git a/Mock/IRC.pm b/Mock/IRC.pm new file mode 100644 index 0000000..5c62754 --- /dev/null +++ b/Mock/IRC.pm @@ -0,0 +1,62 @@ +package Mock::IRC; + +use strict; +use warnings; +use Switch; + +use fields qw/_joined_channels _nick_name/; + +sub new { +	my Mock::IRC $self = shift; +	unless ($self) { +		$self = fields::new($self); +		$self->{_nick_name} = ""; +		$self->{_joined_channels} = []; +	} + +	bless {}, $self; +} + +############################################################################### +# Methods used by code/plugins under test +sub yield { +	my ($self, $event, @data) = @_; +	switch($event) { +		case "join" { +			my $channel = $data[0]; +			unless (grep {$_ eq $channel} @{$self->{_joined_channels}}) { +				push @{$self->{_joined_channels}}, $channel; +			} +		} +		case "part" { +			# FIXME supports multi args? +			my $channel = $data[0]; +			@{$self->{_joined_channels}} = grep {$_ ne $channel} @{$self->{_joined_channels}}; +		} +		case "nick" { +			($self->{_nick_name}) = @data; +		} +		else { +			die "Unsupported event type: $event\n"; +		} +	} +} + +sub nick_name { +	my ($self) = @_; +	return $self->{_nick_name}; +} + + +############################################################################### +# Methods used test-side follow +sub idalius_get_channels { +	my ($self) = @_; +	return @{$self->{_joined_channels}}; +} + +sub idalius_is_joined_to { +	my ($self, $channel) = @_; +	return grep {$_ eq $channel} @{$self->{_joined_channels}}; +} +1;  | 
