Author: dylan
Date: 2005-06-23 06:34:47 -0400 (Thu, 23 Jun 2005)
New Revision: 805
Added:
trunk/perl/server/lib/Haver/Server/Entity/Avatar.pm
trunk/perl/server/t/003_entity.t
Removed:
trunk/perl/server/lib/Haver/Server/Avatar.pm
Modified:
trunk/
trunk/perl/server/lib/Haver/Server/Entity.pm
trunk/perl/server/lib/Haver/Server/Entity/User.pm
trunk/perl/server/t/001_avatar.t
trunk/perl/server/t/002_user.t
Log:
[EMAIL PROTECTED]: dylan | 2005-06-23 06:34:25 -0400
adding Entity::Avatar code, saving and loading, and test cases.
Property changes on: trunk
___________________________________________________________________
Name: svk:merge
- 1f59643a-e6e5-0310-bc24-f7d4c744f460:/haver/havercurs-objc:43089
1f59643a-e6e5-0310-bc24-f7d4c744f460:/haver/local/trunk:11166
1f59643a-e6e5-0310-bc24-f7d4c744f460:/haver/local/trunk-merge-10131:11178
27e50396-46e3-0310-8b22-ae223a1f35ce:/local:212
e9404bb1-7af0-0310-a7ff-e22194cd388b:/haver/local:1152
edfcd8bd-4ce7-0310-a97e-bb1efd40edf3:/local:238
+ 1f59643a-e6e5-0310-bc24-f7d4c744f460:/haver/havercurs-objc:43089
1f59643a-e6e5-0310-bc24-f7d4c744f460:/haver/local/trunk:11166
1f59643a-e6e5-0310-bc24-f7d4c744f460:/haver/local/trunk-merge-10131:11178
27e50396-46e3-0310-8b22-ae223a1f35ce:/local:212
e9404bb1-7af0-0310-a7ff-e22194cd388b:/haver/local:1153
edfcd8bd-4ce7-0310-a97e-bb1efd40edf3:/local:238
Deleted: trunk/perl/server/lib/Haver/Server/Avatar.pm
===================================================================
--- trunk/perl/server/lib/Haver/Server/Avatar.pm 2005-06-23 10:34:44 UTC
(rev 804)
+++ trunk/perl/server/lib/Haver/Server/Avatar.pm 2005-06-23 10:34:47 UTC
(rev 805)
@@ -1,45 +0,0 @@
-# vim: set ts=4 sw=4 noexpandtab si ai sta tw=104:
-# This module is copyrighted, see end of file for details.
-package Haver::Server::Avatar;
-use strict;
-use warnings;
-use Haver::Base -base;
-
-our $VERSION = 0.08;
-
-
-field -weak => 'wheel';
-field _access => {};
-
-
-sub put {
- my ($self, $msg) = @_;
-
- if (my $w = $self->wheel) {
- $w->put($msg);
- return 1;
- } else {
- return undef;
- }
-}
-
-sub grant {
- my ($self, $where, $what, $level) = @_;
-
- $self->{_access}{$where}{$what} = $level || 1;
-}
-
-sub revoke {
- my ($self, $where, $what) = @_;
-
- return undef if not exists $self->{_access}{$where};
- return delete $self->{_access}{$where}{$what};
-}
-
-sub may {
- my ($self, $where, $what) = @_;
-
- return undef unless exists $self->{_access}{$where};
- return undef unless exists $self->{_access}{$where}{$what};
- return $self->{_access}{$where}{$what};
-}
Added: trunk/perl/server/lib/Haver/Server/Entity/Avatar.pm
===================================================================
--- trunk/perl/server/lib/Haver/Server/Entity/Avatar.pm 2005-06-23 10:34:44 UTC
(rev 804)
+++ trunk/perl/server/lib/Haver/Server/Entity/Avatar.pm 2005-06-23 10:34:47 UTC
(rev 805)
@@ -0,0 +1,58 @@
+# vim: set ts=4 sw=4 noexpandtab si ai sta tw=104:
+# This module is copyrighted, see end of file for details.
+package Haver::Server::Entity::Avatar;
+use strict;
+use warnings;
+use Haver::Server::Entity -base;
+
+our $VERSION = 0.08;
+
+
+field -weak => 'wheel';
+field _access => {};
+
+
+sub put {
+ my ($self, $msg) = @_;
+
+ if (my $w = $self->wheel) {
+ $w->put($msg);
+ return 1;
+ } else {
+ return undef;
+ }
+}
+
+sub save {
+ my ($self) = @_;
+ my $data = super;
+ $data->{access} = $self->_access;
+ return $data;
+}
+
+sub load {
+ my ($self, $data) = @_;
+ super($data);
+ $self->_access($data->{access});
+}
+
+sub grant {
+ my ($self, $where, $what, $level) = @_;
+
+ $self->{_access}{$where}{$what} = $level || 1;
+}
+
+sub revoke {
+ my ($self, $where, $what) = @_;
+
+ return undef if not exists $self->{_access}{$where};
+ return delete $self->{_access}{$where}{$what};
+}
+
+sub may {
+ my ($self, $where, $what) = @_;
+
+ return undef unless exists $self->{_access}{$where};
+ return undef unless exists $self->{_access}{$where}{$what};
+ return $self->{_access}{$where}{$what};
+}
Property changes on: trunk/perl/server/lib/Haver/Server/Entity/Avatar.pm
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: trunk/perl/server/lib/Haver/Server/Entity/User.pm
===================================================================
--- trunk/perl/server/lib/Haver/Server/Entity/User.pm 2005-06-23 10:34:44 UTC
(rev 804)
+++ trunk/perl/server/lib/Haver/Server/Entity/User.pm 2005-06-23 10:34:47 UTC
(rev 805)
@@ -5,20 +5,30 @@
use warnings;
use Haver::Server::Entity::Avatar -base;
-const namespace => 'user';
-field _channels => {};
+const (namespace => 'user');
+field (_channels => {});
sub join {
my ($self, $chan) = @_;
$chan->add($self);
- $self->add_index($chan);
+ $self->add_channel($chan->name);
}
sub part {
my ($self, $chan) = @_;
$chan->remove($self->namespace, $self->name);
- $self->remove_index($chan);
+ $self->remove_channel($chan->name);
}
+sub add_channel {
+ my ($self, $name) = @_;
+ $self->{_channels}{$name} = 1;
+}
+
+sub remove_channel {
+ my ($self, $name) = @_;
+ delete $self->{_channels}{$name};
+}
+
1;
Modified: trunk/perl/server/lib/Haver/Server/Entity.pm
===================================================================
--- trunk/perl/server/lib/Haver/Server/Entity.pm 2005-06-23 10:34:44 UTC
(rev 804)
+++ trunk/perl/server/lib/Haver/Server/Entity.pm 2005-06-23 10:34:47 UTC
(rev 805)
@@ -6,7 +6,7 @@
use Haver::Base -base;
use Haver::Util;
-field _name => '&undef';
+field _name => '&undef';
field attr => {};
stub 'namespace';
stub 'put';
@@ -14,11 +14,11 @@
sub name {
my $self = shift;
if (@_ == 0) {
- return $self->_name;
+ return $self->{_name};
} else {
my $name = shift;
if (Haver::Util::is_valid_name($name)) {
- return $self->_name($name);
+ return $self->{_name} = $name;
} else {
croak "Can't set name to invalid value of $name!";
}
Modified: trunk/perl/server/t/001_avatar.t
===================================================================
--- trunk/perl/server/t/001_avatar.t 2005-06-23 10:34:44 UTC (rev 804)
+++ trunk/perl/server/t/001_avatar.t 2005-06-23 10:34:47 UTC (rev 805)
@@ -22,6 +22,12 @@
$ava->put(['FOO', 'bar', 'baz']);
is_deeply(['FOO', 'bar', 'baz'], $dummy->msg, 'put()');
+$ava->grant('&lobby', 'kick', 10);
+my $data = $ava->save;
+my $ava2 = new Haver::Server::Entity::Avatar;
+$ava2->load($data);
+is($ava->may('&lobby', 'kick'), $ava2->may('&lobby', 'kick'), "saving/loading
ACLs");
+
BEGIN {
package DummyWheel;
sub new {
Modified: trunk/perl/server/t/002_user.t
===================================================================
--- trunk/perl/server/t/002_user.t 2005-06-23 10:34:44 UTC (rev 804)
+++ trunk/perl/server/t/002_user.t 2005-06-23 10:34:47 UTC (rev 805)
@@ -1,7 +1,7 @@
#!/usr/bin/perl
# vim: set ft=perl:
-use Test::More tests => 7;
+use Test::More tests => 6;
BEGIN {
use_ok('Haver::Server::Entity::User');
use_ok('Haver::Server::Entity::Channel');
@@ -21,15 +21,3 @@
ok($chan->contains('user', $user->name), "user in channel");
$user->part($chan);
ok(not($chan->contains('user', $user->name)), "user not in channel");
-
-$user->grant('&lobby', 'kick');
-$user->attr->{away} = "I'm afk, taking over the world";
-
-my $data = $user->save;
-my $user2 = new Haver::Server::Entity::User;
-$user2->load($data);
-$user2->join($chan);
-$user2->part($chan);
-
-
-is_deeply($user, $user2, "saving/loading users");
Added: trunk/perl/server/t/003_entity.t
===================================================================
--- trunk/perl/server/t/003_entity.t 2005-06-23 10:34:44 UTC (rev 804)
+++ trunk/perl/server/t/003_entity.t 2005-06-23 10:34:47 UTC (rev 805)
@@ -0,0 +1,34 @@
+#!/usr/bin/perl
+# vim: set ft=perl:
+
+use Test::More tests => 5;
+BEGIN {
+ use_ok('Haver::Server::Entity');
+};
+
+my $ent = new Haver::Server::Entity (
+ name => 'thing',
+ attr => {
+ foo => "bar",
+ bar => "baz",
+ baz => "quux",
+ },
+);
+
+ok($ent, "avatar object created");
+
+eval {
+ $ent->name("####INVALIDNAME^^^");
+};
+if ($@) {
+ pass("Can't set name to bad thing");
+} else {
+ fail("Set name to bad thing. This is bad");
+}
+is($ent->name, 'thing', "Is the name the same?");
+
+my $data = $ent->save;
+my $ent2 = new Haver::Server::Entity;
+$ent2->load($data);
+is_deeply($ent, $ent2, "saving and loading works");
+