--- /dev/null
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More no_plan => 1;
+use Test::Exception;
+
+BEGIN {
+ use_ok('MooseX::MetaDescription');
+}
+
+{
+ package Foo;
+ use metaclass 'MooseX::MetaDescription::Meta::Class' => (
+ description => {
+ 'Hello' => 'World',
+ 'World' => 'Hello',
+ }
+ );
+ use Moose;
+
+ package Bar;
+ use Moose;
+
+ extends 'Foo';
+
+ __PACKAGE__->meta->description->{'Hello'} = 'Earth';
+
+ package Baz;
+ use Moose;
+
+ extends 'Bar';
+}
+
+# check the meta-desc
+
+my $foo_class = Foo->meta;
+isa_ok($foo_class, 'MooseX::MetaDescription::Meta::Class');
+isa_ok($foo_class->metadescription, 'MooseX::MetaDescription::Description');
+is($foo_class->metadescription->descriptor, $foo_class, '... got the circular ref');
+
+my $bar_class = Bar->meta;
+isa_ok($bar_class, 'MooseX::MetaDescription::Meta::Class');
+isa_ok($bar_class->metadescription, 'MooseX::MetaDescription::Description');
+is($bar_class->metadescription->descriptor, $bar_class, '... got the circular ref');
+
+my $baz_class = Baz->meta;
+isa_ok($baz_class, 'MooseX::MetaDescription::Meta::Class');
+isa_ok($baz_class->metadescription, 'MooseX::MetaDescription::Description');
+is($baz_class->metadescription->descriptor, $baz_class, '... got the circular ref');
+
+
+foreach my $x ('Foo', Foo->new) {
+ is_deeply(
+ $x->meta->description,
+ {
+ 'Hello' => 'World',
+ 'World' => 'Hello'
+ },
+ '... got the right class description'
+ );
+}
+
+foreach my $x ('Bar', Bar->new) {
+ is_deeply(
+ $x->meta->description,
+ {
+ 'Hello' => 'Earth',
+ 'World' => 'Hello'
+ },
+ '... got the right class description'
+ );
+}
+
+foreach my $x ('Baz', Baz->new) {
+ is_deeply(
+ $x->meta->description,
+ {
+ 'Hello' => 'Earth',
+ 'World' => 'Hello'
+ },
+ '... got the right class description'
+ );
+}
+