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");
+


Reply via email to