Index: sasmodels/model_test.py
===================================================================
--- sasmodels/model_test.py	(revision a430f5f6225c7f11c9819060ea52815f3a71e86d)
+++ sasmodels/model_test.py	(revision 66525220bd0776626c4e777688f4abdfa970d258)
@@ -329,13 +329,13 @@
             else:
                 y1 = y
-                y2 = test[3] if not isinstance(test[3], list) else [test[3]]
-                F1, F2, R_eff, volume, volume_ratio = call_Fq(kernel, pars)
-                if F1 is not None:  # F1 is none for models with Iq instead of Fq
-                    self._check_vectors(x, y1, F1, 'F')
-                self._check_vectors(x, y2, F2, 'F^2')
+                y2 = test[3] if isinstance(test[3], list) else [test[3]]
+                F, Fsq, R_eff, volume, volume_ratio = call_Fq(kernel, pars)
+                if F is not None:  # F is none for models with Iq instead of Fq
+                    self._check_vectors(x, y1, F, 'F')
+                self._check_vectors(x, y2, Fsq, 'F^2')
                 self._check_scalar(test[4], R_eff, 'R_eff')
                 self._check_scalar(test[5], volume, 'volume')
                 self._check_scalar(test[6], volume_ratio, 'form:shell ratio')
-                return F2
+                return Fsq
 
         def _check_scalar(self, target, actual, name):
@@ -414,4 +414,6 @@
     """
     import math
+    if target == 0.:
+        return actual == 0.
     shift = 10**math.ceil(math.log10(np.abs(target)))
     return np.abs(target-actual)/shift < 1.5*10**-digits
Index: sasmodels/models/cylinder.py
===================================================================
--- sasmodels/models/cylinder.py	(revision 0b8a1fc941701e9f60c61e73bf3ed742b12062d9)
+++ sasmodels/models/cylinder.py	(revision 66525220bd0776626c4e777688f4abdfa970d258)
@@ -110,7 +110,7 @@
 ----------------------------
 
-* **Author:** 
-* **Last Modified by:** 
-* **Last Reviewed by:** 
+* **Author:**
+* **Last Modified by:**
+* **Last Reviewed by:**
 * **Source added by :** Steve King **Date:** March 25, 2019
 """
@@ -184,26 +184,28 @@
             phi_pd=10, phi_pd_n=5)
 
-# pylint: disable=bad-whitespace, line-too-long
+# Test 1-D and 2-D models
 qx, qy = 0.2 * np.cos(2.5), 0.2 * np.sin(2.5)
-# After redefinition of angles, find new tests values.  Was 10 10 in old coords
+theta, phi = 80.1534480601659, 10.1510817110481  # (10, 10) in sasview 3.x
 tests = [
     [{}, 0.2, 0.042761386790780453],
     [{}, [0.2], [0.042761386790780453]],
-    #  new coords
-    [{'theta':80.1534480601659, 'phi':10.1510817110481}, (qx, qy), 0.03514647218513852],
-    [{'theta':80.1534480601659, 'phi':10.1510817110481}, [(qx, qy)], [0.03514647218513852]],
-    # old coords
-    #[{'theta':10.0, 'phi':10.0}, (qx, qy), 0.03514647218513852],
-    #[{'theta':10.0, 'phi':10.0}, [(qx, qy)], [0.03514647218513852]],
+    [{'theta': theta, 'phi': phi}, (qx, qy), 0.03514647218513852],
+    [{'theta': theta, 'phi': phi}, [(qx, qy)], [0.03514647218513852]],
 ]
-del qx, qy  # not necessary to delete, but cleaner
-
-# Default radius and length
-def calc_volume(radius, length):
-    """Return form volume for cylinder."""
-    return pi*radius**2*length
-def calc_r_effs(radius, length):
-    """Return effective radii for modes 0-7 of cylinder."""
-    return [
+del qx, qy, theta, phi  # not necessary to delete, but cleaner
+
+def _extend_with_reff_tests(radius, length):
+    """Test R_eff and form volume calculations"""
+    # V and Vr are the same for each R_eff mode
+    V = pi*radius**2*length  # shell volume = form volume for solid objects
+    Vr = 1.0  # form:shell volume ratio
+    # Use test value for I(0.2) from above to check Fsq value.  Need to
+    # remove scale and background before testing.
+    q = 0.2
+    scale, background = V, 0.001
+    Fsq = (0.042761386790780453 - background)*scale
+    F = None  # Need target value for <F>
+    # Various values for R_eff, depending on mode
+    r_effs = [
         0.,
         0.5*(0.75*radius*(2.0*radius*length
@@ -216,19 +218,18 @@
         np.sqrt(4*radius**2 + length**2)/2.,
     ]
-r_effs = calc_r_effs(parameters[2][2], parameters[3][2])
-cyl_vol = calc_volume(parameters[2][2], parameters[3][2])
-#tests.extend([
-#    ({'effective_radius_type': 0}, 0.1, 667.7347318577124, 1.0000, r_effs[0], cyl_vol, 1.0),
-     # first & second None do not work here, replacind 2nd Non by real number gives error also
-#    ({'effective_radius_type': 1}, 0.1, None, None, r_effs[1], None, None),
-#    ({'effective_radius_type': 2}, 0.1, None, None, r_effs[2], None, None),
-#   ({'effective_radius_type': 3}, 0.1, None, None, r_effs[3], None, None),
-#    ({'effective_radius_type': 4}, 0.1, None, None, r_effs[4], None, None),
-#    ({'effective_radius_type': 5}, 0.1, None, None, r_effs[5], None, None),
-#    ({'effective_radius_type': 6}, 0.1, None, None, r_effs[6], None, None),
-#    ({'effective_radius_type': 7}, 0.1, None, None, r_effs[7], None, None),
-#])
-del r_effs, cyl_vol
-# pylint: enable=bad-whitespace, line-too-long
+    tests.extend([
+        ({'radius_effective_mode': 0}, q, F, Fsq, r_effs[0], V, Vr),
+        ({'radius_effective_mode': 1}, q, F, Fsq, r_effs[1], V, Vr),
+        ({'radius_effective_mode': 2}, q, F, Fsq, r_effs[2], V, Vr),
+        ({'radius_effective_mode': 3}, q, F, Fsq, r_effs[3], V, Vr),
+        ({'radius_effective_mode': 4}, q, F, Fsq, r_effs[4], V, Vr),
+        ({'radius_effective_mode': 5}, q, F, Fsq, r_effs[5], V, Vr),
+        ({'radius_effective_mode': 6}, q, F, Fsq, r_effs[6], V, Vr),
+        ({'radius_effective_mode': 7}, q, F, Fsq, r_effs[7], V, Vr),
+    ])
+
+# Test Reff and volume with default model parameters
+_extend_with_reff_tests(parameters[2][2], parameters[3][2])
+del _extend_with_reff_tests
 
 # ADDED by:  RKH  ON: 18Mar2016 renamed sld's etc
