Skip to content

Commit 86eac8b

Browse files
committed
Add unit test for RecipeOrganizer.show output.
1 parent 540939a commit 86eac8b

1 file changed

Lines changed: 62 additions & 3 deletions

File tree

diffpy/srfit/tests/testrecipeorganizer.py

Lines changed: 62 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@
1515

1616
"""Tests for refinableobj module."""
1717

18+
import sys
1819
import unittest
20+
import cStringIO
1921

2022
from diffpy.srfit.equation.builder import EquationFactory
2123
from diffpy.srfit.fitbase.calculator import Calculator
@@ -26,6 +28,8 @@
2628

2729
import numpy
2830

31+
# ----------------------------------------------------------------------------
32+
2933
class TestEquationFromString(unittest.TestCase):
3034

3135
def testEquationFromString(self):
@@ -73,6 +77,8 @@ def testEquationFromString(self):
7377

7478
return
7579

80+
# ----------------------------------------------------------------------------
81+
7682
class TestRecipeContainer(unittest.TestCase):
7783

7884
def setUp(self):
@@ -150,16 +156,22 @@ def testLocateManagedObject(self):
150156

151157
return
152158

159+
# ----------------------------------------------------------------------------
160+
153161
class TestRecipeOrganizer(unittest.TestCase):
154162

155163
def setUp(self):
156164
self.m = RecipeOrganizer("test")
157-
158165
# Add a managed container so we can do more in-depth tests.
159166
self.m._containers = {}
160167
self.m._manage(self.m._containers)
161168
return
162169

170+
def tearDown(self):
171+
sys.stdout = sys.__stdout__
172+
return
173+
174+
163175
def testNewParameter(self):
164176
"""Test the addParameter method."""
165177

@@ -174,9 +186,9 @@ def testNewParameter(self):
174186
# Add a new Parameter
175187
p2 = m._newParameter("p2", 0)
176188
self.assertTrue(p2 is m.p2)
177-
178189
return
179190

191+
180192
def testAddParameter(self):
181193
"""Test the addParameter method."""
182194

@@ -493,7 +505,54 @@ def test_releaseOldEquations(self):
493505
self.assertEqual(0, len(self.m._eqfactory.equations))
494506
return
495507

496-
#
508+
509+
def test_show(self):
510+
"""Verify output from the show function.
511+
"""
512+
sys.stdout = cStringIO.StringIO()
513+
self.m.show()
514+
self.assertEqual('', sys.stdout.getvalue())
515+
sys.stdout = cStringIO.StringIO()
516+
self.m._newParameter('x', 1)
517+
self.m._newParameter('y', 2)
518+
self.m.show()
519+
out1 = sys.stdout.getvalue()
520+
lines1 = out1.strip().split('\n')
521+
self.assertEqual(4, len(lines1))
522+
self.assertTrue('Parameters' in lines1)
523+
self.assertFalse('Constraints' in lines1)
524+
self.assertFalse('Restraints' in lines1)
525+
self.m._newParameter('z', 7)
526+
self.m.constrain('y', '3 * z')
527+
sys.stdout = cStringIO.StringIO()
528+
self.m.show()
529+
out2 = sys.stdout.getvalue()
530+
lines2 = out2.strip().split('\n')
531+
self.assertEqual(9, len(lines2))
532+
self.assertTrue('Parameters' in lines2)
533+
self.assertTrue('Constraints' in lines2)
534+
self.assertFalse('Restraints' in lines2)
535+
self.m.restrain('z', lb=2, ub=3, sig=0.001)
536+
sys.stdout = cStringIO.StringIO()
537+
self.m.show()
538+
out3 = sys.stdout.getvalue()
539+
lines3 = out3.strip().split('\n')
540+
self.assertEqual(13, len(lines3))
541+
self.assertTrue('Parameters' in lines3)
542+
self.assertTrue('Constraints' in lines3)
543+
self.assertTrue('Restraints' in lines3)
544+
sys.stdout = cStringIO.StringIO()
545+
self.m.show(pattern='x')
546+
out4 = sys.stdout.getvalue()
547+
lines4 = out4.strip().split('\n')
548+
self.assertEqual(9, len(lines4))
549+
sys.stdout = cStringIO.StringIO()
550+
self.m.show(pattern='^')
551+
out5 = sys.stdout.getvalue()
552+
self.assertEqual(out3, out5)
553+
return
554+
555+
# ----------------------------------------------------------------------------
497556

498557
if __name__ == "__main__":
499558
unittest.main()

0 commit comments

Comments
 (0)