Index: sansmodels/src/sans/models/test/utest_dispersity.py
===================================================================
--- sansmodels/src/sans/models/test/utest_dispersity.py	(revision eba988511d86410985b5a1c35ce70dd3968132a8)
+++ sansmodels/src/sans/models/test/utest_dispersity.py	(revision 26e4a247fb629283560bcebfc702766d91e89b16)
@@ -57,34 +57,6 @@
         
         new_model = self.model.clone()
-        print "gaussian",self.model.run(0.001)
         self.assertAlmostEqual(new_model.run(0.001), 4723.32213339, 3)
         self.assertAlmostEqual(new_model.runXY([0.001,0.001]), 4743.56, 2)
-        
-    def test_schulz_zero(self):
-        from sans.models.dispersion_models import SchulzDispersion
-        disp = SchulzDispersion()
-        self.model.set_dispersion('radius', disp)
-        self.model.dispersion['radius']['width'] = 5.0
-        #self.model.dispersion['radius']['width'] = 0.0
-        self.model.dispersion['radius']['npts'] = 100
-        #self.model.setParam('scale', 1.0)
-        self.model.setParam('scale', 10.0)
-        print "schulz",self.model.run(0.001), self.model.dispersion
-        self.assertAlmostEqual(self.model.run(0.001), 450.355, 3)
-        self.assertAlmostEqual(self.model.runXY([0.001,0.001]), 452.299, 3)
-        
-    def test_lognormal_zero(self):
-        from sans.models.dispersion_models import LogNormalDispersion
-        disp = LogNormalDispersion()
-        self.model.set_dispersion('radius', disp)
-        self.model.dispersion['radius']['width'] = 5.0
-        #self.model.dispersion['radius']['width'] = 0.0
-        self.model.dispersion['radius']['npts'] = 100
-        #self.model.setParam('scale', 1.0)
-        self.model.setParam('scale', 10.0)
-        print "model dispersion",self.model.dispersion
-        print "lognormal",self.model.run(0.001)
-        self.assertAlmostEqual(self.model.run(0.001), 450.355, 3)
-        self.assertAlmostEqual(self.model.runXY([0.001,0.001]), 452.299, 3)
         
     def test_gaussian_zero(self):
Index: sansmodels/src/sans/models/test/utest_models.py
===================================================================
--- sansmodels/src/sans/models/test/utest_models.py	(revision eba988511d86410985b5a1c35ce70dd3968132a8)
+++ sansmodels/src/sans/models/test/utest_models.py	(revision 26e4a247fb629283560bcebfc702766d91e89b16)
@@ -24,9 +24,9 @@
     def test1D(self):
         """ Test 1D model for a sphere """
-        self.assertAlmostEqual(self.comp.run(1.0), 5.6387e-5, 4)
+        self.assertAlmostEqual(self.comp.run(1.0), 56.3878, 4)
         
     def test1D_2(self):
         """ Test 2D model for a sphere """
-        self.assertAlmostEqual(self.comp.run([1.0, 1.3]), 5.63878e-5, 4)
+        self.assertAlmostEqual(self.comp.run([1.0, 1.3]), 56.3878, 4)
 
 class TestCyl(unittest.TestCase):
Index: sansmodels/src/sans/models/test/utest_other_dispersity.py
===================================================================
--- sansmodels/src/sans/models/test/utest_other_dispersity.py	(revision 26e4a247fb629283560bcebfc702766d91e89b16)
+++ sansmodels/src/sans/models/test/utest_other_dispersity.py	(revision 26e4a247fb629283560bcebfc702766d91e89b16)
@@ -0,0 +1,132 @@
+"""
+    Unit tests for dispersion functionality of 
+    C++ model classes
+"""
+
+import unittest, math, numpy
+
+class TestCylinder(unittest.TestCase):
+    """
+        Testing C++ Cylinder model
+    """
+    def setUp(self):
+        from sans.models.CylinderModel import CylinderModel
+        self.model= CylinderModel()
+        
+        self.model.setParam('scale', 1.0)
+        self.model.setParam('radius', 20.0)
+        self.model.setParam('length', 400.0)
+        self.model.setParam('contrast', 3.e-6)
+        self.model.setParam('background', 0.0)
+        self.model.setParam('cyl_theta', 0.0)
+        self.model.setParam('cyl_phi', 0.0)
+        
+    def test_simple(self):
+        self.assertAlmostEqual(self.model.run(0.001), 450.355, 3)
+        self.assertAlmostEqual(self.model.runXY([0.001,0.001]), 452.299, 3)
+        
+    def test_constant(self):
+        from sans.models.dispersion_models import DispersionModel
+        disp = DispersionModel()
+        self.model.setParam('scale', 10.0)
+        self.model.set_dispersion('radius', disp)
+        self.model.dispersion['radius']['width'] = 5.0
+        self.model.dispersion['radius']['npts'] = 100
+        
+        self.assertAlmostEqual(self.model.run(0.001), 4527.47250339, 3)
+        self.assertAlmostEqual(self.model.runXY([0.001, 0.001]), 4546.997777604715, 3)
+        
+    def test_gaussian(self):
+        from sans.models.dispersion_models import GaussianDispersion
+        disp = GaussianDispersion()
+        self.model.set_dispersion('radius', disp)
+        self.model.dispersion['radius']['width'] = 5.0
+        self.model.dispersion['radius']['npts'] = 100
+        self.model.setParam('scale', 10.0)
+        
+        self.assertAlmostEqual(self.model.run(0.001), 4723.32213339, 3)
+        self.assertAlmostEqual(self.model.runXY([0.001,0.001]), 4743.56, 2)
+        
+    def test_clone(self):
+        from sans.models.dispersion_models import GaussianDispersion
+        disp = GaussianDispersion()
+        self.model.set_dispersion('radius', disp)
+        self.model.dispersion['radius']['width'] = 5.0
+        self.model.dispersion['radius']['npts'] = 100
+        self.model.setParam('scale', 10.0)
+        
+        new_model = self.model.clone()
+        print "gaussian",self.model.run(0.001)
+        self.assertAlmostEqual(new_model.run(0.001), 4723.32213339, 3)
+        self.assertAlmostEqual(new_model.runXY([0.001,0.001]), 4743.56, 2)
+        
+    def test_schulz_zero(self):
+        from sans.models.dispersion_models import SchulzDispersion
+        disp = SchulzDispersion()
+        self.model.set_dispersion('radius', disp)
+        self.model.dispersion['radius']['width'] = 5.0
+        #self.model.dispersion['radius']['width'] = 0.0
+        self.model.dispersion['radius']['npts'] = 100
+        #self.model.setParam('scale', 1.0)
+        self.model.setParam('scale', 10.0)
+        print "schulz",self.model.run(0.001), self.model.dispersion
+        self.assertAlmostEqual(self.model.run(0.001), 450.355, 3)
+        self.assertAlmostEqual(self.model.runXY([0.001,0.001]), 452.299, 3)
+        
+    def test_lognormal_zero(self):
+        from sans.models.dispersion_models import LogNormalDispersion
+        disp = LogNormalDispersion()
+        self.model.set_dispersion('radius', disp)
+        self.model.dispersion['radius']['width'] = 5.0
+        #self.model.dispersion['radius']['width'] = 0.0
+        self.model.dispersion['radius']['npts'] = 100
+        #self.model.setParam('scale', 1.0)
+        self.model.setParam('scale', 10.0)
+        print "model dispersion",self.model.dispersion
+        print "lognormal",self.model.run(0.001)
+        self.assertAlmostEqual(self.model.run(0.001), 450.355, 3)
+        self.assertAlmostEqual(self.model.runXY([0.001,0.001]), 452.299, 3)
+        
+    def test_gaussian_zero(self):
+        from sans.models.dispersion_models import GaussianDispersion
+        disp = GaussianDispersion()
+        self.model.set_dispersion('radius', disp)
+        self.model.dispersion['radius']['width'] = 0.0
+        self.model.dispersion['radius']['npts'] = 100
+        self.model.setParam('scale', 1.0)
+        
+        self.assertAlmostEqual(self.model.run(0.001), 450.355, 3)
+        self.assertAlmostEqual(self.model.runXY([0.001,0.001]), 452.299, 3)
+        
+    def test_array(self):
+        """
+            Perform complete rotational average and
+            compare to 1D
+        """
+        from sans.models.dispersion_models import ArrayDispersion
+        disp_ph = ArrayDispersion()
+        disp_th = ArrayDispersion()
+        
+        values_ph = numpy.zeros(100)
+        values_th = numpy.zeros(100)
+        weights   = numpy.zeros(100)
+        for i in range(100):
+            values_ph[i]=(2.0*math.pi/99.0*i)
+            values_th[i]=(math.pi/99.0*i)
+            weights[i]=(1.0)
+        
+        disp_ph.set_weights(values_ph, weights)
+        disp_th.set_weights(values_th, weights)
+        
+        self.model.set_dispersion('cyl_theta', disp_th)
+        self.model.set_dispersion('cyl_phi', disp_ph)
+        
+        val_1d = self.model.run(math.sqrt(0.0002))
+        val_2d = self.model.runXY([0.01,0.01]) 
+        
+        self.assertTrue(math.fabs(val_1d-val_2d)/val_1d < 0.02)
+        
+
+if __name__ == '__main__':
+    unittest.main()
+   
