--- /dev/null
+#!/usr/bin/env python
+from neco.execution.resource import Resource, ResourceFactory, clsinit
+from neco.execution.attribute import Attribute
+
+import unittest
+
+@clsinit
+class MyResource(Resource):
+ _rtype = "MyResource"
+
+ @classmethod
+ def _register_attributes(cls):
+ cool_attr = Attribute("my_attr", "is a really nice attribute!")
+ cls._register_attribute(cool_attr)
+
+ def __init__(self, ec, guid):
+ super(MyResource, self).__init__(ec, guid)
+
+@clsinit
+class AnotherResource(Resource):
+ _rtype = "AnotherResource"
+
+ def __init__(self, ec, guid):
+ super(AnotherResource, self).__init__(ec, guid)
+
+class EC(object):
+ pass
+
+
+class ResourceTestCase(unittest.TestCase):
+ def test_add_resource_factory(self):
+ ResourceFactory.register_type(MyResource)
+ ResourceFactory.register_type(AnotherResource)
+
+ self.assertEquals(MyResource.rtype(), "MyResource")
+ self.assertEquals(len(MyResource._attributes), 1)
+
+ self.assertEquals(Resource.rtype(), "Resource")
+ self.assertEquals(len(Resource._attributes), 0)
+
+ self.assertEquals(AnotherResource.rtype(), "AnotherResource")
+ self.assertEquals(len(AnotherResource._attributes), 0)
+
+ self.assertEquals(len(ResourceFactory.resource_types()), 2)
+
+if __name__ == '__main__':
+ unittest.main()
+