1515
1616"""Tests for refinableobj module."""
1717
18+ import sys
1819import unittest
20+ import cStringIO
1921
2022from diffpy .srfit .equation .builder import EquationFactory
2123from diffpy .srfit .fitbase .calculator import Calculator
2628
2729import numpy
2830
31+ # ----------------------------------------------------------------------------
32+
2933class TestEquationFromString (unittest .TestCase ):
3034
3135 def testEquationFromString (self ):
@@ -73,6 +77,8 @@ def testEquationFromString(self):
7377
7478 return
7579
80+ # ----------------------------------------------------------------------------
81+
7682class TestRecipeContainer (unittest .TestCase ):
7783
7884 def setUp (self ):
@@ -150,16 +156,22 @@ def testLocateManagedObject(self):
150156
151157 return
152158
159+ # ----------------------------------------------------------------------------
160+
153161class 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
498557if __name__ == "__main__" :
499558 unittest .main ()
0 commit comments