Skip to content

Commit

Permalink
cleanup test
Browse files Browse the repository at this point in the history
  • Loading branch information
parejkoj committed Aug 8, 2018
1 parent eaaaaca commit 70238d5
Showing 1 changed file with 17 additions and 5 deletions.
22 changes: 17 additions & 5 deletions tests/test_jointcal.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,21 +31,29 @@ def setUp(self):
self.jointcal = lsst.jointcal.JointcalTask(config=self.config)

self.goodChi2 = lsst.jointcal.chi2.Chi2Statistic()
# chi2/ndof == 2.0 should be non-bad
self.goodChi2.chi2 = 200.0
self.goodChi2.ndof = 100

self.badChi2 = lsst.jointcal.chi2.Chi2Statistic()
self.badChi2.chi2 = 600.0
self.badChi2.ndof = 100

self.maxSteps = 20
self.name = "testing"
self.whatToFit = "" # unneeded, since we're mocking the fitter

# Mock the fitter and association manager, so we can force particular
# return values/exceptions. Default to "good" return values.
self.fitter = unittest.mock.Mock(spec=lsst.jointcal.PhotometryFit)
self.fitter.computeChi2.return_value = self.goodChi2
self.fitter.minimize.return_value = MinimizeResult.Converged
self.associations = unittest.mock.Mock(spec=lsst.jointcal.Associations)
self.associations.getCcdImageList.return_value = self.ccdImageList

def test_iterateFit_success(self):
chi2 = self.jointcal._iterate_fit(self.associations, self.fitter, 20, "testing", "")
chi2 = self.jointcal._iterate_fit(self.associations, self.fitter,
self.maxSteps, self.name, self.whatToFit)
self.assertEqual(chi2, self.goodChi2)
# Once for the for loop, the second time for the rank update.
self.assertEqual(self.fitter.minimize.call_count, 2)
Expand All @@ -54,16 +62,19 @@ def test_iterateFit_failed(self):
self.fitter.minimize.return_value = MinimizeResult.Failed

with self.assertRaises(RuntimeError):
self.jointcal._iterate_fit(self.associations, self.fitter, 20, "testing", "")
self.jointcal._iterate_fit(self.associations, self.fitter,
self.maxSteps, self.name, self.whatToFit)
self.assertEqual(self.fitter.minimize.call_count, 1)

def test_iterateFit_badFinalChi2(self):
log = unittest.mock.Mock(spec=lsst.log.Log)
self.jointcal.log = log
self.fitter.computeChi2.return_value = self.badChi2

chi2 = self.jointcal._iterate_fit(self.associations, self.fitter, 20, "testing", "")
chi2 = self.jointcal._iterate_fit(self.associations, self.fitter,
self.maxSteps, self.name, self.whatToFit)
self.assertEqual(chi2, self.badChi2)
log.info.assert_called_with("Fit completed with: %s", str(self.badChi2))
log.error.assert_called_with("Potentially bad fit: High chi-squared/ndof.")

def test_iterateFit_exceedMaxSteps(self):
Expand All @@ -72,10 +83,11 @@ def test_iterateFit_exceedMaxSteps(self):
self.fitter.minimize.return_value = MinimizeResult.Chi2Increased
maxSteps = 3

chi2 = self.jointcal._iterate_fit(self.associations, self.fitter, maxSteps, "testing", "")
chi2 = self.jointcal._iterate_fit(self.associations, self.fitter,
maxSteps, self.name, self.whatToFit)
self.assertEqual(chi2, self.goodChi2)
self.assertEqual(self.fitter.minimize.call_count, maxSteps)
log.error.assert_called_with("testing failed to converge after 3 steps")
log.error.assert_called_with("testing failed to converge after %s steps" % maxSteps)


class MemoryTester(lsst.utils.tests.MemoryTestCase):
Expand Down

0 comments on commit 70238d5

Please sign in to comment.