[mlpack-git] master: Update knn test to use rvalue references. (fe0039b)

gitdub at mlpack.org gitdub at mlpack.org
Tue Aug 23 15:58:25 EDT 2016


Repository : https://github.com/mlpack/mlpack
On branch  : master
Link       : https://github.com/mlpack/mlpack/compare/1148f1652e139c9037eb3813550090313d089a30...a8a8a1381b529a01420de6e792a4a1e7bd58a626

>---------------------------------------------------------------

commit fe0039bee3cc904395bc57eb18ae023ee5fce469
Author: MarcosPividori <marcos.pividori at gmail.com>
Date:   Thu Jul 28 18:27:13 2016 -0300

    Update knn test to use rvalue references.


>---------------------------------------------------------------

fe0039bee3cc904395bc57eb18ae023ee5fce469
 src/mlpack/tests/aknn_test.cpp |  5 +++--
 src/mlpack/tests/knn_test.cpp  | 39 +++++++++++++++++++--------------------
 2 files changed, 22 insertions(+), 22 deletions(-)

diff --git a/src/mlpack/tests/aknn_test.cpp b/src/mlpack/tests/aknn_test.cpp
index ea7f34b..c59d646 100644
--- a/src/mlpack/tests/aknn_test.cpp
+++ b/src/mlpack/tests/aknn_test.cpp
@@ -147,7 +147,7 @@ BOOST_AUTO_TEST_CASE(SingleCoverTreeTest)
       arma::mat> tree(dataset);
 
   NeighborSearch<NearestNeighborSort, LMetric<2>, arma::mat, StandardCoverTree>
-      coverTreeSearch(&tree, SINGLE_TREE_MODE, 0.05);
+      coverTreeSearch(std::move(tree), SINGLE_TREE_MODE, 0.05);
 
   arma::Mat<size_t> neighborsCoverTree;
   arma::mat distancesCoverTree;
@@ -177,7 +177,8 @@ BOOST_AUTO_TEST_CASE(DualCoverTreeTest)
       arma::mat> referenceTree(dataset);
 
   NeighborSearch<NearestNeighborSort, EuclideanDistance, arma::mat,
-      StandardCoverTree> coverTreeSearch(&referenceTree, DUAL_TREE_MODE, 0.05);
+      StandardCoverTree> coverTreeSearch(std::move(referenceTree),
+      DUAL_TREE_MODE, 0.05);
 
   arma::Mat<size_t> neighborsCoverTree;
   arma::mat distancesCoverTree;
diff --git a/src/mlpack/tests/knn_test.cpp b/src/mlpack/tests/knn_test.cpp
index 09d6737..3e6d50a 100644
--- a/src/mlpack/tests/knn_test.cpp
+++ b/src/mlpack/tests/knn_test.cpp
@@ -231,7 +231,7 @@ BOOST_AUTO_TEST_CASE(TrainTreeTest)
 
   std::vector<size_t> oldFromNewReferences;
   KNN::Tree tree(dataset, oldFromNewReferences);
-  empty.Train(&tree);
+  empty.Train(std::move(tree));
 
   empty.Search(5, neighbors, distances);
   baseline.Search(5, baselineNeighbors, baselineDistances);
@@ -275,7 +275,7 @@ BOOST_AUTO_TEST_CASE(NaiveTrainTreeTest)
   arma::mat dataset = arma::randu<arma::mat>(5, 100);
   KNN::Tree tree(dataset);
 
-  BOOST_REQUIRE_THROW(empty.Train(&tree), std::invalid_argument);
+  BOOST_REQUIRE_THROW(empty.Train(std::move(tree)), std::invalid_argument);
 }
 
 /**
@@ -373,28 +373,32 @@ BOOST_AUTO_TEST_CASE(ExhaustiveSyntheticTest)
   // calculation.
   std::vector<size_t> oldFromNew;
   std::vector<size_t> newFromOld;
-  TreeType* tree = new TreeType(data, oldFromNew, newFromOld, 1);
+  TreeType tree(data, oldFromNew, newFromOld, 1);
+
+  KNN knn(std::move(tree));
+
   for (int i = 0; i < 3; i++)
   {
-    KNN* knn;
 
     switch (i)
     {
       case 0: // Use the dual-tree method.
-        knn = new KNN(tree, DUAL_TREE_MODE);
+        knn.Naive() = false;
+        knn.SingleMode() = false;
         break;
       case 1: // Use the single-tree method.
-        knn = new KNN(tree, SINGLE_TREE_MODE);
+        knn.Naive() = false;
+        knn.SingleMode() = true;
         break;
       case 2: // Use the naive method.
-        knn = new KNN(tree->Dataset(), NAIVE_MODE);
+        knn.Naive() = true;
         break;
     }
 
     // Now perform the actual calculation.
     arma::Mat<size_t> neighbors;
     arma::mat distances;
-    knn->Search(10, neighbors, distances);
+    knn.Search(10, neighbors, distances);
 
     // Now the exhaustive check for correctness.  This will be long.  We must
     // also remember that the distances returned are squared distances.  As a
@@ -643,12 +647,7 @@ BOOST_AUTO_TEST_CASE(ExhaustiveSyntheticTest)
     BOOST_REQUIRE_EQUAL(neighbors(9, newFromOld[10]), newFromOld[4]);
     BOOST_REQUIRE_CLOSE(distances(9, newFromOld[10]), 4.05, 1e-5);
 
-    // Clean the memory.
-    delete knn;
   }
-
-  // Delete the tree.
-  delete tree;
 }
 
 /**
@@ -769,7 +768,7 @@ BOOST_AUTO_TEST_CASE(SingleCoverTreeTest)
       arma::mat> tree(data);
 
   NeighborSearch<NearestNeighborSort, LMetric<2>, arma::mat, StandardCoverTree>
-      coverTreeSearch(&tree, SINGLE_TREE_MODE);
+      coverTreeSearch(std::move(tree), SINGLE_TREE_MODE);
 
   KNN naive(data, NAIVE_MODE);
 
@@ -807,11 +806,11 @@ BOOST_AUTO_TEST_CASE(DualCoverTreeTest)
       arma::mat> referenceTree(dataset);
 
   NeighborSearch<NearestNeighborSort, EuclideanDistance, arma::mat,
-      StandardCoverTree> coverTreeSearch(&referenceTree);
+      StandardCoverTree> coverTreeSearch(std::move(referenceTree));
 
   arma::Mat<size_t> coverNeighbors;
   arma::mat coverDistances;
-  coverTreeSearch.Search(&referenceTree, 5, coverNeighbors, coverDistances);
+  coverTreeSearch.Search(dataset, 5, coverNeighbors, coverDistances);
 
   for (size_t i = 0; i < coverNeighbors.n_elem; ++i)
   {
@@ -835,14 +834,14 @@ BOOST_AUTO_TEST_CASE(SingleBallTreeTest)
       arma::mat> TreeType;
   TreeType tree(data);
 
+  KNN naive(tree.Dataset(), NAIVE_MODE);
+
   // BinarySpaceTree modifies data. Use modified data to maintain the
   // correspondance between points in the dataset for both methods. The order of
   // query points in both methods should be same.
 
   NeighborSearch<NearestNeighborSort, EuclideanDistance, arma::mat, BallTree>
-      ballTreeSearch(&tree, SINGLE_TREE_MODE);
-
-  KNN naive(tree.Dataset(), NAIVE_MODE);
+      ballTreeSearch(std::move(tree), SINGLE_TREE_MODE);
 
   arma::Mat<size_t> ballTreeNeighbors;
   arma::mat ballTreeDistances;
@@ -1248,7 +1247,7 @@ BOOST_AUTO_TEST_CASE(NeighborPtrDeleteTest)
   // Build the tree ourselves.
   std::vector<size_t> oldFromNewReferences;
   KNN::Tree tree(dataset);
-  KNN knn(&tree);
+  KNN knn(std::move(tree));
 
   // Now make a query set.
   arma::mat queryset = arma::randu<arma::mat>(5, 50);




More information about the mlpack-git mailing list