diff --git a/internal/ceres/parameter_block_test.cc b/internal/ceres/parameter_block_test.cc
index 09156f8..a76c408 100644
--- a/internal/ceres/parameter_block_test.cc
+++ b/internal/ceres/parameter_block_test.cc
@@ -169,5 +169,42 @@
   EXPECT_FALSE(parameter_block.SetState(&y));
 }
 
+TEST(ParameterBlock, DefaultBounds) {
+  double x[2];
+  ParameterBlock parameter_block(x, 2, -1, NULL);
+  const double* upper_bounds = parameter_block.upper_bounds();
+  EXPECT_EQ(upper_bounds[0], std::numeric_limits<double>::max());
+  EXPECT_EQ(upper_bounds[1], std::numeric_limits<double>::max());
+  const double* lower_bounds = parameter_block.lower_bounds();
+  EXPECT_EQ(lower_bounds[0], -std::numeric_limits<double>::max());
+  EXPECT_EQ(lower_bounds[1], -std::numeric_limits<double>::max());
+}
+
+TEST(ParameterBlock, SetBounds) {
+  double x[2];
+  ParameterBlock parameter_block(x, 2, -1, NULL);
+  parameter_block.SetUpperBound(1, 1);
+  parameter_block.SetLowerBound(0, 1);
+
+  const double* upper_bounds = parameter_block.upper_bounds();
+  EXPECT_EQ(upper_bounds[0], std::numeric_limits<double>::max());
+  EXPECT_EQ(upper_bounds[1], 1.0);
+  const double* lower_bounds = parameter_block.lower_bounds();
+  EXPECT_EQ(lower_bounds[0], 1.0);
+  EXPECT_EQ(lower_bounds[1], -std::numeric_limits<double>::max());
+}
+
+TEST(ParameterBlock, PlusWithBoundsConstraints) {
+  double x[] = {1.0, 0.0};
+  double delta[] = {2.0, -10.0};
+  ParameterBlock parameter_block(x, 2, -1, NULL);
+  parameter_block.SetUpperBound(0, 2.0);
+  parameter_block.SetLowerBound(1, -1.0);
+  double x_plus_delta[2];
+  parameter_block.Plus(x, delta, x_plus_delta);
+  EXPECT_EQ(x_plus_delta[0], 2.0);
+  EXPECT_EQ(x_plus_delta[1], -1.0);
+}
+
 }  // namespace internal
 }  // namespace ceres
