mailRe: r3200 - in /1.3: data/__init__.py test_suite/unit_tests/data/test___init__.py


Others Months | Index by Date | Thread Index
>>   [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Header


Content

Posted by Edward d'Auvergne on March 16, 2007 - 08:08:
Chris,

I've cleaned up the unit tests so that you should be able to check
that these changes are working properly.  Would you be able to fix the
relax module import statements for the alternative relax data storage
object?  This commit has put relax into a very bad shape (not that
much was functioning anyway, but now nothing is).  I'm also not sure
why but the data storage singleton instance method 'add()' (to add a
new data pipe) is not working as it should.

Cheers,

Edward


On 3/16/07, c.a.macraild@xxxxxxxxxxx <c.a.macraild@xxxxxxxxxxx> wrote:
Author: macraild
Date: Thu Mar 15 17:58:23 2007
New Revision: 3200

URL: http://svn.gna.org/viewcvs/relax?rev=3200&view=rev
Log:
Alternative implimentation of the data object as a singleton.

As proposed here:
https://mail.gna.org/public/relax-devel/2007-03/msg00013.html

and agreed here:
https://mail.gna.org/public/relax-devel/2007-03/msg00058.html#


Modified: 1.3/data/__init__.py 1.3/test_suite/unit_tests/data/test___init__.py

Modified: 1.3/data/__init__.py
URL: 
http://svn.gna.org/viewcvs/relax/1.3/data/__init__.py?rev=3200&r1=3199&r2=3200&view=diff
==============================================================================
--- 1.3/data/__init__.py (original)
+++ 1.3/data/__init__.py Thu Mar 15 17:58:23 2007
@@ -37,28 +37,8 @@
 class Data(dict):
     """The relax data storage object."""

-    # Singleton initialisation, the reference to the single instance of this 
class.
-    __instance = None
-
     # The current data pipe.
     current_pipe = None
-
-
-    def __new__(self, *args, **kargs):
-        """Method for implementing the singleton design pattern.
-
-        If no other class instance currently exists, create a new instance 
of this class.  Otherwise
-        return the class instance.  See 
http://en.wikipedia.org/wiki/Singleton_pattern for a
-        description of this design pattern.
-        """
-
-        # Create a new instance if none exists.
-        if self.__instance is None:
-            self.__instance = dict.__new__(self, *args, **kargs)
-
-        # Return the class instance.
-        return self.__instance
-

     def __repr__(self):
         """The string representation of the object.
@@ -145,3 +125,6 @@
         # Change the current data pipe.
         self.current_pipe = pipe_name

+# Rebind the name Data with an instance to prevent accidental creation
+# of multiple instances of the Data class
+Data = Data()

Modified: 1.3/test_suite/unit_tests/data/test___init__.py
URL: 
http://svn.gna.org/viewcvs/relax/1.3/test_suite/unit_tests/data/test___init__.py?rev=3200&r1=3199&r2=3200&view=diff
==============================================================================
--- 1.3/test_suite/unit_tests/data/test___init__.py (original)
+++ 1.3/test_suite/unit_tests/data/test___init__.py Thu Mar 15 17:58:23 2007
@@ -27,9 +27,12 @@
 from data import Data


-class NewStore(Data): - """Subclass the relax data storage object for the isolation and creation of a new singleton.""" - +class NewStore(dict): + """Dict subclass to act as proxy for the Singleton Data object.""" + def __getattr__(self, attr): + """Delegate to the Data class to get methods for testing""" + return getattr(Data.__class__, attr) +

 class Empty_container:
     """An empty data container."""
@@ -53,15 +56,11 @@
         # Add an object to the data store object.
         self.data_store.test = 1

-        # Create a new reference.
-        self.new_ref = NewStore()
-

     def tearDown(self):
         """Destroy the subclassed data store."""

         # Delete all references (which should decrement the singleton's ref 
counter to 0, hence destroying it).
-        del self.new_ref
         del self.data_store


@@ -104,18 +103,3 @@ self.assert_(hasattr(self.data_store, 'current_pipe'))


- def test_singleton(self): - """Test that the relax data storage object is functioning as a singleton.""" - - # Test that the new reference to NewStore is the singleton instance reference. - self.assertEqual(self.data_store, self.new_ref) - - # Delete all references (which should decrement the singleton's ref counter to 0, hence destroying it). - del self.new_ref - del self.data_store - - # Create a new singleton. - new = NewStore() - - # Test that the object 'test' from the original singleton does not exist. - self.assert_(not hasattr(new, 'test'))


_______________________________________________ relax (http://nmr-relax.com)

This is the relax-commits mailing list
relax-commits@xxxxxxx

To unsubscribe from this list, get a password
reminder, or change your subscription options,
visit the list information page at
https://mail.gna.org/listinfo/relax-commits




Related Messages


Powered by MHonArc, Updated Mon Mar 19 09:20:34 2007