Author: erans
Date: Sun Nov 21 02:36:14 2010
New Revision: 1037372

URL: http://svn.apache.org/viewvc?rev=1037372&view=rev
Log:
Refined test (follow-up of MATH-441).

Modified:
    
commons/proper/math/trunk/src/test/java/org/apache/commons/math/optimization/univariate/MultiStartUnivariateRealOptimizerTest.java

Modified: 
commons/proper/math/trunk/src/test/java/org/apache/commons/math/optimization/univariate/MultiStartUnivariateRealOptimizerTest.java
URL: 
http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/java/org/apache/commons/math/optimization/univariate/MultiStartUnivariateRealOptimizerTest.java?rev=1037372&r1=1037371&r2=1037372&view=diff
==============================================================================
--- 
commons/proper/math/trunk/src/test/java/org/apache/commons/math/optimization/univariate/MultiStartUnivariateRealOptimizerTest.java
 (original)
+++ 
commons/proper/math/trunk/src/test/java/org/apache/commons/math/optimization/univariate/MultiStartUnivariateRealOptimizerTest.java
 Sun Nov 21 02:36:14 2010
@@ -28,11 +28,12 @@ import org.apache.commons.math.optimizat
 import org.apache.commons.math.random.JDKRandomGenerator;
 import org.apache.commons.math.util.FastMath;
 import org.junit.Test;
+import org.junit.Assert;
 
 public class MultiStartUnivariateRealOptimizerTest {
 
     @Test
-    public void testSinMin() throws MathUserException {
+    public void testSinMin() {
         UnivariateRealFunction f = new SinFunction();
         UnivariateRealOptimizer underlying = new BrentOptimizer(1e-10, 1e-14);
         underlying.setMaxEvaluations(300);
@@ -53,7 +54,7 @@ public class MultiStartUnivariateRealOpt
     }
 
     @Test
-    public void testQuinticMin() throws MathUserException {
+    public void testQuinticMin() {
         // The quintic function has zeros at 0, +-0.5 and +-1.
         // The function has extrema (first derivative is zero) at 0.27195613 
and 0.82221643,
         UnivariateRealFunction f = new QuinticFunction();
@@ -77,10 +78,10 @@ public class MultiStartUnivariateRealOpt
         assertTrue(optimizer.getEvaluations() <= 100);
     }
 
-    @Test(expected=MathUserException.class)
-    public void testBadFunction() throws MathUserException {
+    @Test
+    public void testBadFunction() {
         UnivariateRealFunction f = new UnivariateRealFunction() {
-                public double value(double x) throws MathUserException {
+                public double value(double x) {
                     if (x < 0) {
                         throw new MathUserException();
                     }
@@ -93,7 +94,16 @@ public class MultiStartUnivariateRealOpt
         g.setSeed(4312000053L);
         MultiStartUnivariateRealOptimizer<UnivariateRealFunction> optimizer =
             new 
MultiStartUnivariateRealOptimizer<UnivariateRealFunction>(underlying, 5, g);
+ 
+        try {
+            UnivariateRealPointValuePair optimum
+                = optimizer.optimize(f, GoalType.MINIMIZE, -0.3, -0.2);
+            Assert.fail();
+        } catch (MathUserException e) {
+            // Expected.
+        }
 
-        optimizer.optimize(f, GoalType.MINIMIZE, -0.3, -0.2);
+        // Ensure that the exception was thrown because no optimum was found.
+        Assert.assertTrue(optimizer.getOptima()[0] == null);
     }
 }


Reply via email to