MATH-1265

Implement "Iterable".


Project: http://git-wip-us.apache.org/repos/asf/commons-math/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-math/commit/537a2242
Tree: http://git-wip-us.apache.org/repos/asf/commons-math/tree/537a2242
Diff: http://git-wip-us.apache.org/repos/asf/commons-math/diff/537a2242

Branch: refs/heads/MATH_3_X
Commit: 537a22428e7b900753b681f9ded432c830540975
Parents: 23f469e
Author: Gilles <er...@apache.org>
Authored: Fri Sep 4 14:39:27 2015 +0200
Committer: Gilles <er...@apache.org>
Committed: Fri Sep 4 14:39:27 2015 +0200

----------------------------------------------------------------------
 src/changes/changes.xml                         |  3 +++
 .../ml/neuralnet/twod/NeuronSquareMesh2D.java   | 12 +++++++--
 .../neuralnet/twod/NeuronSquareMesh2DTest.java  | 27 ++++++++++++++++++++
 3 files changed, 40 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-math/blob/537a2242/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 88594b5..ede16f9 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -51,6 +51,9 @@ If the output is not quite correct, check for invisible 
trailing spaces!
   </properties>
   <body>
     <release version="3.6" date="XXXX-XX-XX" description="">
+      <action dev="erans" type="add" issue="MATH-1265">
+        "NeuronSquareMesh2D" (package "o.a.c.m.ml.neuralnet.twod") implements 
"Iterable".
+      </action>
       <action dev="erans" type="add" issue="MATH-1264">
         "MapUtils" (package "o.a.c.m.ml.neuralnet"): Method to sort units 
according to distance
         from a given vector.

http://git-wip-us.apache.org/repos/asf/commons-math/blob/537a2242/src/main/java/org/apache/commons/math3/ml/neuralnet/twod/NeuronSquareMesh2D.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/commons/math3/ml/neuralnet/twod/NeuronSquareMesh2D.java
 
b/src/main/java/org/apache/commons/math3/ml/neuralnet/twod/NeuronSquareMesh2D.java
index 24b70af..2f4dd2d 100644
--- 
a/src/main/java/org/apache/commons/math3/ml/neuralnet/twod/NeuronSquareMesh2D.java
+++ 
b/src/main/java/org/apache/commons/math3/ml/neuralnet/twod/NeuronSquareMesh2D.java
@@ -19,6 +19,7 @@ package org.apache.commons.math3.ml.neuralnet.twod;
 
 import java.util.List;
 import java.util.ArrayList;
+import java.util.Iterator;
 import java.io.Serializable;
 import java.io.ObjectInputStream;
 import org.apache.commons.math3.ml.neuralnet.Neuron;
@@ -40,7 +41,9 @@ import org.apache.commons.math3.exception.MathInternalError;
  * @see org.apache.commons.math3.ml.neuralnet.sofm
  * @since 3.3
  */
-public class NeuronSquareMesh2D implements Serializable {
+public class NeuronSquareMesh2D
+    implements Iterable<Neuron>,
+               Serializable {
     /** Serial version ID */
     private static final long serialVersionUID = 1L;
     /** Underlying network. */
@@ -194,6 +197,11 @@ public class NeuronSquareMesh2D implements Serializable {
         createLinks();
     }
 
+    /** {@inheritDoc} */
+    public Iterator<Neuron> iterator() {
+        return network.iterator();
+    }
+
     /**
      * Retrieves the underlying network.
      * A reference is returned (enabling, for example, the network to be
@@ -354,7 +362,7 @@ public class NeuronSquareMesh2D implements Serializable {
         } else {
             return new int[] { rowIndex, colIndex };
         }
-     }
+    }
 
     /**
      * Creates the neighbour relationships between neurons.

http://git-wip-us.apache.org/repos/asf/commons-math/blob/537a2242/src/test/java/org/apache/commons/math3/ml/neuralnet/twod/NeuronSquareMesh2DTest.java
----------------------------------------------------------------------
diff --git 
a/src/test/java/org/apache/commons/math3/ml/neuralnet/twod/NeuronSquareMesh2DTest.java
 
b/src/test/java/org/apache/commons/math3/ml/neuralnet/twod/NeuronSquareMesh2DTest.java
index 5799425..6cce0c9 100644
--- 
a/src/test/java/org/apache/commons/math3/ml/neuralnet/twod/NeuronSquareMesh2DTest.java
+++ 
b/src/test/java/org/apache/commons/math3/ml/neuralnet/twod/NeuronSquareMesh2DTest.java
@@ -23,6 +23,7 @@ import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
 import java.util.Collection;
+import java.util.Set;
 import java.util.HashSet;
 
 import org.apache.commons.math3.exception.NumberIsTooSmallException;
@@ -844,4 +845,30 @@ public class NeuronSquareMesh2DTest {
                                              
NeuronSquareMesh2D.HorizontalDirection.RIGHT,
                                              
NeuronSquareMesh2D.VerticalDirection.DOWN).getIdentifier());
     }
+
+    @Test
+    public void testIterator() {
+        final FeatureInitializer[] initArray = { init };
+        final NeuronSquareMesh2D map = new NeuronSquareMesh2D(3, true,
+                                                              3, true,
+                                                              
SquareNeighbourhood.VON_NEUMANN,
+                                                              initArray);
+        final Set<Neuron> fromMap = new HashSet<Neuron>();
+        for (Neuron n : map) {
+            fromMap.add(n);
+        }
+
+        final Network net = map.getNetwork();
+        final Set<Neuron> fromNet = new HashSet<Neuron>();
+        for (Neuron n : net) {
+            fromNet.add(n);
+        }
+
+        for (Neuron n : fromMap) {
+            Assert.assertTrue(fromNet.contains(n));
+        }
+        for (Neuron n : fromNet) {
+            Assert.assertTrue(fromMap.contains(n));
+        }
+    }
 }

Reply via email to