[test] TestReshape: check that shapes actually change
authorEvan Shelhamer <shelhamer@imaginarynumber.net>
Wed, 23 Sep 2015 20:40:24 +0000 (13:40 -0700)
committerEvan Shelhamer <shelhamer@imaginarynumber.net>
Thu, 24 Sep 2015 03:24:11 +0000 (20:24 -0700)
Check that output spatial shape varies with input shape while the output
num matches the input num.

src/caffe/test/test_net.cpp

index 16c1d35..ab4afba 100644 (file)
@@ -2262,8 +2262,8 @@ TEST_F(FilterNetTest, TestFilterInOutByExcludeMultiRule) {
 TYPED_TEST(NetTest, TestReshape) {
   typedef typename TypeParam::Dtype Dtype;
   // We set up bottom blobs of two different sizes, switch between
-  // them, and check that forward and backward both run and the results
-  // are the same.
+  // them, check that forward and backward both run and the results
+  // are the same, and check that the output shapes change.
   Caffe::set_random_seed(this->seed_);
   Caffe::set_mode(Caffe::CPU);
   FillerParameter filler_param;
@@ -2317,6 +2317,18 @@ TYPED_TEST(NetTest, TestReshape) {
   for (int i = 0; i < output2.count(); ++i) {
     EXPECT_FLOAT_EQ(*(output2.cpu_data() + i), *(output_blob->cpu_data() + i));
   }
+
+  EXPECT_EQ(output1.num(), blob1.num());
+  EXPECT_EQ(output2.num(), blob2.num());
+  bool same_spatial_shape = true;
+  const int kFirstSpatialAxis = 2;
+  for (int i = kFirstSpatialAxis; i < output1.num_axes(); ++i) {
+    if (output1.shape(i) != output2.shape(i)) {
+      same_spatial_shape = false;
+      break;
+    }
+  }
+  EXPECT_FALSE(same_spatial_shape);
 }
 
 TYPED_TEST(NetTest, TestSkipPropagateDown) {