import pickle
from six.moves import range

from fuel.utils import do_not_pickle_attributes


@do_not_pickle_attributes("non_pickable", "bulky_attr")
class TestClass(object):
    def __init__(self):
        self.load()

    def load(self):
        self.bulky_attr = list(range(100))
        self.non_pickable = lambda x: x


def test_do_not_pickle_attributes():
    cl = TestClass()

    dump = pickle.dumps(cl)

    loaded = pickle.loads(dump)
    assert loaded.bulky_attr == list(range(100))
    assert loaded.non_pickable is not None

from numpy.testing import assert_raises, assert_equal
from six.moves import range, cPickle

from fuel.iterator import DataIterator
from fuel.utils import do_not_pickle_attributes


@do_not_pickle_attributes("non_picklable", "bulky_attr")
class DummyClass(object):
    def __init__(self):
        self.load()

    def load(self):
        self.bulky_attr = list(range(100))
        self.non_picklable = lambda x: x


class FaultyClass(object):
    pass


@do_not_pickle_attributes("iterator")
class UnpicklableClass(object):
    def __init__(self):
        self.load()

    def load(self):
        self.iterator = DataIterator(None)


@do_not_pickle_attributes("attribute")
class NonLoadingClass(object):
    def load(self):
        pass


class TestDoNotPickleAttributes(object):
    def test_load(self):
        instance = cPickle.loads(cPickle.dumps(DummyClass()))
        assert_equal(instance.bulky_attr, list(range(100)))
        assert instance.non_picklable is not None

    def test_value_error_no_load_method(self):
        assert_raises(ValueError, do_not_pickle_attributes("x"), FaultyClass)

    def test_value_error_iterator(self):
        assert_raises(ValueError, cPickle.dumps, UnpicklableClass())

    def test_value_error_attribute_non_loaded(self):
        assert_raises(ValueError, getattr, NonLoadingClass(), 'attribute')

Increase test coverage in utils.py
Increase test coverage in utils.py

- import pickle
+ from numpy.testing import assert_raises, assert_equal
- from six.moves import range
+ from six.moves import range, cPickle
  
+ from fuel.iterator import DataIterator
  from fuel.utils import do_not_pickle_attributes
  
  
- @do_not_pickle_attributes("non_pickable", "bulky_attr")
+ @do_not_pickle_attributes("non_picklable", "bulky_attr")
- class TestClass(object):
+ class DummyClass(object):
      def __init__(self):
          self.load()
  
      def load(self):
          self.bulky_attr = list(range(100))
-         self.non_pickable = lambda x: x
+         self.non_picklable = lambda x: x
  
  
- def test_do_not_pickle_attributes():
-     cl = TestClass()
+ class FaultyClass(object):
+     pass
  
-     dump = pickle.dumps(cl)
  
-     loaded = pickle.loads(dump)
-     assert loaded.bulky_attr == list(range(100))
-     assert loaded.non_pickable is not None
+ @do_not_pickle_attributes("iterator")
+ class UnpicklableClass(object):
+     def __init__(self):
+         self.load()
  
+     def load(self):
+         self.iterator = DataIterator(None)
+ 
+ 
+ @do_not_pickle_attributes("attribute")
+ class NonLoadingClass(object):
+     def load(self):
+         pass
+ 
+ 
+ class TestDoNotPickleAttributes(object):
+     def test_load(self):
+         instance = cPickle.loads(cPickle.dumps(DummyClass()))
+         assert_equal(instance.bulky_attr, list(range(100)))
+         assert instance.non_picklable is not None
+ 
+     def test_value_error_no_load_method(self):
+         assert_raises(ValueError, do_not_pickle_attributes("x"), FaultyClass)
+ 
+     def test_value_error_iterator(self):
+         assert_raises(ValueError, cPickle.dumps, UnpicklableClass())
+ 
+     def test_value_error_attribute_non_loaded(self):
+         assert_raises(ValueError, getattr, NonLoadingClass(), 'attribute')
+ 
Increase test coverage in utils.py
## Code Before:
import pickle
from six.moves import range

from fuel.utils import do_not_pickle_attributes


@do_not_pickle_attributes("non_pickable", "bulky_attr")
class TestClass(object):
    def __init__(self):
        self.load()

    def load(self):
        self.bulky_attr = list(range(100))
        self.non_pickable = lambda x: x


def test_do_not_pickle_attributes():
    cl = TestClass()

    dump = pickle.dumps(cl)

    loaded = pickle.loads(dump)
    assert loaded.bulky_attr == list(range(100))
    assert loaded.non_pickable is not None

## Instruction:
Increase test coverage in utils.py
## Code After:
from numpy.testing import assert_raises, assert_equal
from six.moves import range, cPickle

from fuel.iterator import DataIterator
from fuel.utils import do_not_pickle_attributes


@do_not_pickle_attributes("non_picklable", "bulky_attr")
class DummyClass(object):
    def __init__(self):
        self.load()

    def load(self):
        self.bulky_attr = list(range(100))
        self.non_picklable = lambda x: x


class FaultyClass(object):
    pass


@do_not_pickle_attributes("iterator")
class UnpicklableClass(object):
    def __init__(self):
        self.load()

    def load(self):
        self.iterator = DataIterator(None)


@do_not_pickle_attributes("attribute")
class NonLoadingClass(object):
    def load(self):
        pass


class TestDoNotPickleAttributes(object):
    def test_load(self):
        instance = cPickle.loads(cPickle.dumps(DummyClass()))
        assert_equal(instance.bulky_attr, list(range(100)))
        assert instance.non_picklable is not None

    def test_value_error_no_load_method(self):
        assert_raises(ValueError, do_not_pickle_attributes("x"), FaultyClass)

    def test_value_error_iterator(self):
        assert_raises(ValueError, cPickle.dumps, UnpicklableClass())

    def test_value_error_attribute_non_loaded(self):
        assert_raises(ValueError, getattr, NonLoadingClass(), 'attribute')
