diff --git a/src/gpu/GridGenerator/geometries/Conglomerate/Conglomerate.cpp b/src/gpu/GridGenerator/geometries/Conglomerate/Conglomerate.cpp
index 14b35e69b7fb6e2f76f93909e1ebe81af320bc74..949220d07df0ea14c098db03509b629393a59e1c 100644
--- a/src/gpu/GridGenerator/geometries/Conglomerate/Conglomerate.cpp
+++ b/src/gpu/GridGenerator/geometries/Conglomerate/Conglomerate.cpp
@@ -72,12 +72,12 @@ SPtr<Object> Conglomerate::clone() const
     return conglomerate;
 }
 
-double Conglomerate::getX1Centroid()
+double Conglomerate::getX1Centroid() const
 {
     return (getX1Minimum() + getX1Maximum()) * 0.5;
 }
 
-double Conglomerate::getX1Minimum()
+double Conglomerate::getX1Minimum() const
 {
     double minimum = addObjects[0]->getX1Minimum();
     for(uint i = 1; i < numberOfAddObjects; i++)
@@ -85,7 +85,7 @@ double Conglomerate::getX1Minimum()
     return minimum;
 }
 
-double Conglomerate::getX1Maximum()
+double Conglomerate::getX1Maximum() const
 {
     double maximum = addObjects[0]->getX1Maximum();
     for (uint i = 1; i < numberOfAddObjects; i++)
@@ -93,12 +93,12 @@ double Conglomerate::getX1Maximum()
     return maximum;
 }
 
-double Conglomerate::getX2Centroid()
+double Conglomerate::getX2Centroid() const
 {
     return (getX2Minimum() + getX2Maximum()) * 0.5;
 }
 
-double Conglomerate::getX2Minimum()
+double Conglomerate::getX2Minimum() const
 {
     double minimum = addObjects[0]->getX2Minimum();
     for (uint i = 1; i < numberOfAddObjects; i++)
@@ -106,7 +106,7 @@ double Conglomerate::getX2Minimum()
     return minimum;
 }    
 
-double Conglomerate::getX2Maximum()
+double Conglomerate::getX2Maximum() const
 {
     double maximum = addObjects[0]->getX2Maximum();
     for (uint i = 1; i < numberOfAddObjects; i++)
@@ -114,12 +114,12 @@ double Conglomerate::getX2Maximum()
     return maximum;
 }
 
-double Conglomerate::getX3Centroid()
+double Conglomerate::getX3Centroid() const
 {
     return (getX3Minimum() + getX3Maximum()) * 0.5;
 }
 
-double Conglomerate::getX3Minimum()
+double Conglomerate::getX3Minimum() const
 {
     double minimum = addObjects[0]->getX3Minimum();
     for (uint i = 1; i < numberOfAddObjects; i++)
@@ -127,7 +127,7 @@ double Conglomerate::getX3Minimum()
     return minimum;
 }    
 
-double Conglomerate::getX3Maximum()
+double Conglomerate::getX3Maximum() const
 {
     double maximum = addObjects[0]->getX3Maximum();
     for (uint i = 1; i < numberOfAddObjects; i++)
@@ -162,13 +162,13 @@ bool Conglomerate::isPointInObject(const double& x1, const double& x2, const dou
     return false;
 }
 
-void Conglomerate::scale(double delta)
+void Conglomerate::changeSizeByDelta(double delta)
 {
     for (uint i = 0; i < numberOfAddObjects; i++)
-        addObjects[i]->scale(delta);
+        addObjects[i]->changeSizeByDelta(delta);
 
     for (uint i = 0; i < numberOfSubtractObjects; i++)
-        subtractObjects[i]->scale(delta);
+        subtractObjects[i]->changeSizeByDelta(delta);
 }
 
 void Conglomerate::findInnerNodes(SPtr<GridImp> grid)
diff --git a/src/gpu/GridGenerator/geometries/Conglomerate/Conglomerate.h b/src/gpu/GridGenerator/geometries/Conglomerate/Conglomerate.h
index 0b3f7ad7b67554b72ad78188d68d9570bf21e090..a8eb1a7ca1ea97cf0e0b7ad41201ac60ef6f35d1 100644
--- a/src/gpu/GridGenerator/geometries/Conglomerate/Conglomerate.h
+++ b/src/gpu/GridGenerator/geometries/Conglomerate/Conglomerate.h
@@ -53,17 +53,17 @@ public:
 
     SPtr<Object> clone() const override;
 
-    double getX1Centroid() override;
-    double getX1Minimum() override;
-    double getX1Maximum() override;
-    double getX2Centroid() override;
-    double getX2Minimum() override;
-    double getX2Maximum() override;
-    double getX3Centroid() override;
-    double getX3Minimum() override;
-    double getX3Maximum() override;
-
-    void scale(double delta) override;
+    double getX1Centroid() const override;
+    double getX1Minimum() const override;
+    double getX1Maximum() const override;
+    double getX2Centroid() const override;
+    double getX2Minimum() const override;
+    double getX2Maximum() const override;
+    double getX3Centroid() const override;
+    double getX3Minimum() const override;
+    double getX3Maximum() const override;
+
+    void changeSizeByDelta(double delta) override;
 
     bool isPointInObject(const double& x1, const double& x2, const double& x3, const double& minOffset, const double& maxOffset) override;
 
diff --git a/src/gpu/GridGenerator/geometries/Cuboid/Cuboid.cpp b/src/gpu/GridGenerator/geometries/Cuboid/Cuboid.cpp
index fde944bc8a035caf0bbf19de01ec8d9f9005031d..de8afcd87802cc18f9e76ceb3d514997519dc404 100644
--- a/src/gpu/GridGenerator/geometries/Cuboid/Cuboid.cpp
+++ b/src/gpu/GridGenerator/geometries/Cuboid/Cuboid.cpp
@@ -46,47 +46,47 @@ SPtr<Object> Cuboid::clone() const
     return std::make_shared<Cuboid>(minX1, minX2, minX3, maxX1, maxX2, maxX3);
 }
 
-double Cuboid::getX1Centroid()
+double Cuboid::getX1Centroid() const
 {
    return getCenter(minX1, maxX1);
 }
 
-double Cuboid::getX1Minimum()
+double Cuboid::getX1Minimum() const
 {
     return getMinimum(minX1, maxX1);
 }
 
-double Cuboid::getX1Maximum()
+double Cuboid::getX1Maximum() const
 {
     return getMaximum(minX1, maxX1);
 }
 
-double Cuboid::getX2Centroid()
+double Cuboid::getX2Centroid() const
 {
     return getCenter(minX2, maxX2);
 }
 
-double Cuboid::getX2Minimum()
+double Cuboid::getX2Minimum() const
 {
     return getMinimum(minX2, maxX2);
 }    
 
-double Cuboid::getX2Maximum()
+double Cuboid::getX2Maximum() const
 {
     return getMaximum(minX2, maxX2);
 }
 
-double Cuboid::getX3Centroid()
+double Cuboid::getX3Centroid() const
 {
     return getCenter(minX3, maxX3);
 }
 
-double Cuboid::getX3Minimum()
-{    
+double Cuboid::getX3Minimum() const
+{
     return getMinimum(minX3, maxX3);
 }    
 
-double Cuboid::getX3Maximum()
+double Cuboid::getX3Maximum() const
 {
     return getMaximum(minX3, maxX3);
 }
@@ -131,7 +131,7 @@ bool Cuboid::isBetween(const real& coord, const real& start, const real& end)
 }
 
 
-void Cuboid::scale(double delta)
+void Cuboid::changeSizeByDelta(double delta)
 {
     this->minX1 -= delta;
     this->minX2 -= delta;
diff --git a/src/gpu/GridGenerator/geometries/Cuboid/Cuboid.h b/src/gpu/GridGenerator/geometries/Cuboid/Cuboid.h
index 7ff5c14c2f17b4ed80f4f1e0c03d26ea1a2eb196..35d5d04c77f0b0928f214160910e69c6290172f0 100644
--- a/src/gpu/GridGenerator/geometries/Cuboid/Cuboid.h
+++ b/src/gpu/GridGenerator/geometries/Cuboid/Cuboid.h
@@ -44,17 +44,17 @@ public:
 
     SPtr<Object> clone() const override;
 
-    double getX1Centroid() override;
-    double getX1Minimum() override;
-    double getX1Maximum() override;
-    double getX2Centroid() override;
-    double getX2Minimum() override;
-    double getX2Maximum() override;
-    double getX3Centroid() override;
-    double getX3Minimum() override;
-    double getX3Maximum() override;
+    double getX1Centroid() const override;
+    double getX1Minimum() const override;
+    double getX1Maximum() const override;
+    double getX2Centroid() const override;
+    double getX2Minimum() const override;
+    double getX2Maximum() const override;
+    double getX3Centroid() const override;
+    double getX3Minimum() const override;
+    double getX3Maximum() const override;
 
-    void scale(double delta) override;
+    void changeSizeByDelta(double delta) override;
 
     bool isPointInObject(const double& x1, const double& x2, const double& x3, const double& minOffset, const double& maxOffset) override;
 
diff --git a/src/gpu/GridGenerator/geometries/Object.h b/src/gpu/GridGenerator/geometries/Object.h
index 8bb0a35d5e38df1f7db390fdf5ee750295788395..116bb8fc2f7b972b22f05352fe5128841752d187 100644
--- a/src/gpu/GridGenerator/geometries/Object.h
+++ b/src/gpu/GridGenerator/geometries/Object.h
@@ -46,20 +46,20 @@ public:
     virtual ~Object() = default;
     virtual SPtr<Object> clone() const = 0;
 
-    virtual double getX1Centroid() = 0;
-    virtual double getX1Minimum()  = 0;
-    virtual double getX1Maximum()  = 0;
+    virtual double getX1Centroid() const = 0;
+    virtual double getX1Minimum() const  = 0;
+    virtual double getX1Maximum() const  = 0;
 
-    virtual double getX2Centroid() = 0;
-    virtual double getX2Minimum()  = 0;
-    virtual double getX2Maximum()  = 0;
+    virtual double getX2Centroid() const = 0;
+    virtual double getX2Minimum() const  = 0;
+    virtual double getX2Maximum() const  = 0;
 
-    virtual double getX3Centroid() = 0;
-    virtual double getX3Minimum()  = 0;
-    virtual double getX3Maximum()  = 0;
+    virtual double getX3Centroid() const = 0;
+    virtual double getX3Minimum() const  = 0;
+    virtual double getX3Maximum() const  = 0;
 
 
-    virtual void scale(double delta) = 0;
+    virtual void changeSizeByDelta(double delta) = 0;
 
 
     virtual bool isPointInObject(const double& x1, const double& x2, const double& x3, const double& minOffset, const double& maxOffset) = 0;
diff --git a/src/gpu/GridGenerator/geometries/Sphere/Sphere.cpp b/src/gpu/GridGenerator/geometries/Sphere/Sphere.cpp
index 4669bbcfb9848a910bc86f9331a394daf6c55dd5..2a54c710c32e7d5ec36ce79357ddcb04da52658d 100644
--- a/src/gpu/GridGenerator/geometries/Sphere/Sphere.cpp
+++ b/src/gpu/GridGenerator/geometries/Sphere/Sphere.cpp
@@ -54,47 +54,47 @@ SPtr<Object> Sphere::clone() const
     return std::make_shared<Sphere>(centerX, centerY, centerZ, radius);
 }
 
-double Sphere::getX1Centroid()
+double Sphere::getX1Centroid() const
 {
     return centerX;
 }
 
-double Sphere::getX1Minimum()
+double Sphere::getX1Minimum() const
 {
     return centerX - radius;
 }
 
-double Sphere::getX1Maximum()
+double Sphere::getX1Maximum() const
 {
     return centerX + radius;
 }
 
-double Sphere::getX2Centroid()
+double Sphere::getX2Centroid() const
 {
     return centerY;
 }
 
-double Sphere::getX2Minimum()
+double Sphere::getX2Minimum() const
 {
     return centerY - radius;
 }
 
-double Sphere::getX2Maximum()
+double Sphere::getX2Maximum() const
 {
     return centerY + radius;
 }
 
-double Sphere::getX3Centroid()
+double Sphere::getX3Centroid() const
 {
     return centerZ;
 }
 
-double Sphere::getX3Minimum()
+double Sphere::getX3Minimum() const
 {
     return centerZ - radius;
 }
 
-double Sphere::getX3Maximum()
+double Sphere::getX3Maximum() const
 {
     return centerZ + radius;
 }
@@ -115,7 +115,7 @@ bool Sphere::isPointInObject(const double& x1, const double& x2, const double& x
 }
 
 
-void Sphere::scale(double delta)
+void Sphere::changeSizeByDelta(double delta)
 {
     this->radius += delta;
 }
diff --git a/src/gpu/GridGenerator/geometries/Sphere/Sphere.h b/src/gpu/GridGenerator/geometries/Sphere/Sphere.h
index 9ac8821a9c95fce8de16c22688ef3c585197804a..92f600d203a30ca504542161c6f6305d9d2e9ac0 100644
--- a/src/gpu/GridGenerator/geometries/Sphere/Sphere.h
+++ b/src/gpu/GridGenerator/geometries/Sphere/Sphere.h
@@ -46,20 +46,20 @@ public:
 
     SPtr<Object> clone() const override;
 
-    double getX1Centroid() override;
-    double getX1Minimum() override;
-    double getX1Maximum() override;
-    double getX2Centroid() override;
-    double getX2Minimum() override;
-    double getX2Maximum() override;
-    double getX3Centroid() override;
-    double getX3Minimum() override;
-    double getX3Maximum() override;
+    double getX1Centroid() const override;
+    double getX1Minimum() const override;
+    double getX1Maximum() const override;
+    double getX2Centroid() const override;
+    double getX2Minimum() const override;
+    double getX2Maximum() const override;
+    double getX3Centroid() const override;
+    double getX3Minimum() const override;
+    double getX3Maximum() const override;
 
     bool isPointInObject(const double& x1, const double& x2, const double& x3, const double& minOffset, const double& maxOffset) override;
 
 
-    void scale(double delta) override;
+    void changeSizeByDelta(double delta) override;
     
     int getIntersection(const Vertex &P, const Vertex &direction, Vertex &pointOnObject, real &qVal) override;
 
diff --git a/src/gpu/GridGenerator/geometries/TriangularMesh/TriangularMesh.cpp b/src/gpu/GridGenerator/geometries/TriangularMesh/TriangularMesh.cpp
index 91bb8f030e76fa6e083e7765feb18c7ccc517ee1..e5ab3c83291b8f4fd27bb3eee5f26d3fcdb69278 100644
--- a/src/gpu/GridGenerator/geometries/TriangularMesh/TriangularMesh.cpp
+++ b/src/gpu/GridGenerator/geometries/TriangularMesh/TriangularMesh.cpp
@@ -185,7 +185,7 @@ bool intersectPlane(const Vertex &normal, const Vertex &pointOnPlane, const Vert
     return false;
 }
 
-void TriangularMesh::scale(double offset)
+void TriangularMesh::changeSizeByDelta(double offset)
 {
     std::vector<Triangle> triangles = this->triangleVec;
 
diff --git a/src/gpu/GridGenerator/geometries/TriangularMesh/TriangularMesh.h b/src/gpu/GridGenerator/geometries/TriangularMesh/TriangularMesh.h
index 7c050dd70b3908f3e4b021872887c74833594a26..14ff453951b4b74ca28378a7ad7cea31095a4c87 100644
--- a/src/gpu/GridGenerator/geometries/TriangularMesh/TriangularMesh.h
+++ b/src/gpu/GridGenerator/geometries/TriangularMesh/TriangularMesh.h
@@ -88,16 +88,16 @@ private:
 
 public:
     SPtr<Object> clone() const override;
-    double getX1Centroid() override { throw "Not implemented in TriangularMesh"; }
-    double getX1Minimum() override { return minmax.minX; }
-    double getX1Maximum() override { return minmax.maxX; }
-    double getX2Centroid() override { throw "Not implemented in TriangularMesh"; }
-    double getX2Minimum() override { return minmax.minY; }
-    double getX2Maximum() override { return minmax.maxY; }
-    double getX3Centroid() override { throw "Not implemented in TriangularMesh"; }
-    double getX3Minimum() override { return minmax.minZ; }
-    double getX3Maximum() override { return minmax.maxZ; }
-    void scale(double delta) override;
+    double getX1Centroid() const override { throw "Not implemented in TriangularMesh"; }
+    double getX1Minimum() const override { return minmax.minX; }
+    double getX1Maximum() const override { return minmax.maxX; }
+    double getX2Centroid() const override { throw "Not implemented in TriangularMesh"; }
+    double getX2Minimum() const override { return minmax.minY; }
+    double getX2Maximum() const override { return minmax.maxY; }
+    double getX3Centroid() const override { throw "Not implemented in TriangularMesh"; }
+    double getX3Minimum() const override { return minmax.minZ; }
+    double getX3Maximum() const override { return minmax.maxZ; }
+    void changeSizeByDelta(double delta) override;
     bool isPointInObject(const double& x1, const double& x2, const double& x3, const double& minOffset,
         const double& maxOffset) override {
         return false;
diff --git a/src/gpu/GridGenerator/geometries/VerticalCylinder/VerticalCylinder.cpp b/src/gpu/GridGenerator/geometries/VerticalCylinder/VerticalCylinder.cpp
index 5019f2a7547c509df6b7afd034cae179356c74ec..909651be66e1d10974822c62cc3ca158985f420b 100644
--- a/src/gpu/GridGenerator/geometries/VerticalCylinder/VerticalCylinder.cpp
+++ b/src/gpu/GridGenerator/geometries/VerticalCylinder/VerticalCylinder.cpp
@@ -48,47 +48,47 @@ SPtr<Object> VerticalCylinder::clone() const
     return std::make_shared<VerticalCylinder>(centerX, centerY, centerZ, radius, height);
 }
 
-double VerticalCylinder::getX1Centroid()
+double VerticalCylinder::getX1Centroid() const
 {
     return centerX;
 }
 
-double VerticalCylinder::getX1Minimum()
+double VerticalCylinder::getX1Minimum() const
 {
     return centerX - radius;
 }
 
-double VerticalCylinder::getX1Maximum()
+double VerticalCylinder::getX1Maximum() const
 {
     return centerX + radius;
 }
 
-double VerticalCylinder::getX2Centroid()
+double VerticalCylinder::getX2Centroid() const
 {
     return centerY;
 }
 
-double VerticalCylinder::getX2Minimum()
+double VerticalCylinder::getX2Minimum() const
 {
     return centerY - radius;
 }
 
-double VerticalCylinder::getX2Maximum()
+double VerticalCylinder::getX2Maximum() const
 {
     return centerY + radius;
 }
 
-double VerticalCylinder::getX3Centroid()
+double VerticalCylinder::getX3Centroid() const
 {
     return centerZ;
 }
 
-double VerticalCylinder::getX3Minimum()
+double VerticalCylinder::getX3Minimum() const
 {
     return centerZ - 0.5 * height;
 }
 
-double VerticalCylinder::getX3Maximum()
+double VerticalCylinder::getX3Maximum() const
 {
     return centerZ + 0.5 * height;
 }
@@ -111,8 +111,18 @@ bool VerticalCylinder::isPointInObject(const double& x1, const double& x2, const
 }
 
 
-void VerticalCylinder::scale(double delta)
+void VerticalCylinder::changeSizeByDelta(double delta)
 {
     this->radius += delta;
-    this->height += delta;
+    this->height += 2 * delta;
 }
+
+double VerticalCylinder::getRadius() const
+{
+    return radius;
+}
+
+double VerticalCylinder::getHeight() const
+{
+    return height;
+}
\ No newline at end of file
diff --git a/src/gpu/GridGenerator/geometries/VerticalCylinder/VerticalCylinder.h b/src/gpu/GridGenerator/geometries/VerticalCylinder/VerticalCylinder.h
index 64cdecef5824388a31a4f545c85b1194d3f4c77b..f312df8f6b6d666098a8729c6494f4701f40b63c 100644
--- a/src/gpu/GridGenerator/geometries/VerticalCylinder/VerticalCylinder.h
+++ b/src/gpu/GridGenerator/geometries/VerticalCylinder/VerticalCylinder.h
@@ -40,26 +40,30 @@ class GRIDGENERATOR_EXPORT VerticalCylinder : public Object
 {
 public:
     VerticalCylinder(const double& centerX, const double& centerY, const double& centerZ, const double& radius, const double& height);
+    // the axis is in the z-direction
 
     static SPtr<VerticalCylinder> makeShared(double centerX, double centerY, double centerZ, double radius, double height);
 
     SPtr<Object> clone() const override;
 
-    double getX1Centroid() override;
-    double getX1Minimum() override;
-    double getX1Maximum() override;
-    double getX2Centroid() override;
-    double getX2Minimum() override;
-    double getX2Maximum() override;
-    double getX3Centroid() override;
-    double getX3Minimum() override;
-    double getX3Maximum() override;
+    double getX1Centroid() const override;
+    double getX1Minimum() const override;
+    double getX1Maximum() const override;
+    double getX2Centroid() const override;
+    double getX2Minimum() const override;
+    double getX2Maximum() const override;
+    double getX3Centroid() const override;
+    double getX3Minimum() const override;
+    double getX3Maximum() const override;
+
+    double getRadius() const;
+    double getHeight() const;
 
     bool isPointInObject(const double& x1, const double& x2, const double& x3, const double& minOffset, const double& maxOffset) override;
 
 
-    void scale(double delta) override;
-   
+    void changeSizeByDelta(double delta) override;
+
 protected:
     double centerX;
     double centerY;
diff --git a/src/gpu/GridGenerator/geometries/VerticalCylinder/VerticalCylinderTest.cpp b/src/gpu/GridGenerator/geometries/VerticalCylinder/VerticalCylinderTest.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..7bca5db9988000ecb925667a70e0615fadff5376
--- /dev/null
+++ b/src/gpu/GridGenerator/geometries/VerticalCylinder/VerticalCylinderTest.cpp
@@ -0,0 +1,57 @@
+#include <gmock/gmock.h>
+
+#include "VerticalCylinder.h"
+
+class VerticalCylinderTest : public testing::Test
+{
+protected:
+    std::array<double, 3> center = { 0.1, 0.2, 0.3 };
+    double radius = 2.0;
+    double height = 8.0;
+    VerticalCylinder cylinder = VerticalCylinder(center[0], center[1], center[2], radius, height);
+};
+
+TEST_F(VerticalCylinderTest, getCentroid)
+{
+    EXPECT_THAT(cylinder.getX1Centroid(), testing::Eq(center[0]));
+    EXPECT_THAT(cylinder.getX2Centroid(), testing::Eq(center[1]));
+    EXPECT_THAT(cylinder.getX3Centroid(), testing::Eq(center[2]));
+}
+
+TEST_F(VerticalCylinderTest, getMinimum)
+{
+    EXPECT_THAT(cylinder.getX1Minimum(), testing::Eq(-radius + center[0]));
+    EXPECT_THAT(cylinder.getX2Minimum(), testing::Eq(-radius + center[1]));
+    EXPECT_THAT(cylinder.getX3Minimum(), testing::Eq(-0.5 * height + center[2]));
+}
+
+TEST_F(VerticalCylinderTest, getMaximum)
+{
+    EXPECT_THAT(cylinder.getX1Maximum(), testing::Eq(radius + center[0]));
+    EXPECT_THAT(cylinder.getX2Maximum(), testing::Eq(radius + center[1]));
+    EXPECT_THAT(cylinder.getX3Maximum(), testing::Eq(0.5 * height + center[2]));
+}
+
+TEST_F(VerticalCylinderTest, isPointInObject)
+{
+    double epsilon = 0.0001;
+    EXPECT_TRUE(cylinder.isPointInObject(center[0], center[1], center[2], 0.0, 0.0));
+
+    // x
+    EXPECT_TRUE(cylinder.isPointInObject(center[0] - radius + epsilon, center[1], center[2], 0.0, 0.0));
+    EXPECT_FALSE(cylinder.isPointInObject(center[0] - radius - epsilon, center[1], center[2], 0.0, 0.0));
+    EXPECT_TRUE(cylinder.isPointInObject(center[0] + radius - epsilon, center[1], center[2], 0.0, 0.0));
+    EXPECT_FALSE(cylinder.isPointInObject(center[0] + radius + epsilon, center[1], center[2], 0.0, 0.0));
+
+    // y
+    EXPECT_TRUE(cylinder.isPointInObject(center[0], center[1] - radius + epsilon, center[2], 0.0, 0.0));
+    EXPECT_FALSE(cylinder.isPointInObject(center[0], center[1] - radius - epsilon, center[2], 0.0, 0.0));
+    EXPECT_TRUE(cylinder.isPointInObject(center[0], center[1] + radius - epsilon, center[2], 0.0, 0.0));
+    EXPECT_FALSE(cylinder.isPointInObject(center[0], center[1] + radius + epsilon, center[2], 0.0, 0.0));
+
+    // z
+    EXPECT_TRUE(cylinder.isPointInObject(center[0], center[1], center[2] - 0.5 * height + epsilon, 0.0, 0.0));
+    EXPECT_FALSE(cylinder.isPointInObject(center[0], center[1], center[2] - 0.5 * height - epsilon, 0.0, 0.0));
+    EXPECT_TRUE(cylinder.isPointInObject(center[0], center[1], center[2] + 0.5 * height - epsilon, 0.0, 0.0));
+    EXPECT_FALSE(cylinder.isPointInObject(center[0], center[1], center[2] + 0.5 * height + epsilon, 0.0, 0.0));
+}
\ No newline at end of file