diff --git a/Tests/MeshLib/TestPntInElement.cpp b/Tests/MeshLib/TestPntInElement.cpp
index 20e4a0a138a9aa23341ed47c3aefe88d387dc7f0..ecbfcc9a954d47853fe49890c346c1781f12706b 100644
--- a/Tests/MeshLib/TestPntInElement.cpp
+++ b/Tests/MeshLib/TestPntInElement.cpp
@@ -39,6 +39,11 @@ std::vector<MeshLib::Node*> createNodes()
     return nodes;
 }
 
+void deleteNodes(std::vector<MeshLib::Node*> &nodes)
+{
+    std::for_each(nodes.begin(), nodes.end(), [](MeshLib::Node* node){ delete node; });
+}
+
 TEST(IsPntInElement, Line)
 {
     GeoLib::Point pnt;
@@ -49,6 +54,7 @@ TEST(IsPntInElement, Line)
     ASSERT_EQ(true, line.isPntInElement(pnt));
     pnt = GeoLib::Point(0,0.1,0.7);
     ASSERT_EQ(false, line.isPntInElement(pnt));
+    deleteNodes(nodes);
 }
 TEST(IsPntInElement, Tri)
 {
@@ -57,11 +63,28 @@ TEST(IsPntInElement, Tri)
     std::array<MeshLib::Node*, 3> tri_nodes = { nodes[0], nodes[1], nodes[4] };
     MeshLib::Tri tri(tri_nodes);
 
-    pnt = GeoLib::Point(0.1,0,.1);
+    pnt = GeoLib::Point(0.1,0,0.1);
     ASSERT_EQ(true, tri.isPntInElement(pnt));
-    pnt = GeoLib::Point(0.9,0,.7);
+    pnt = GeoLib::Point(0.9,0,0.7);
     ASSERT_EQ(false, tri.isPntInElement(pnt));
+    deleteNodes(nodes);
+}
 
+TEST(IsPntInElement, Quad)
+{
+    GeoLib::Point pnt;
+    std::vector<MeshLib::Node*> nodes (createNodes());
+    std::array<MeshLib::Node*, 4> quad_nodes = { nodes[0], nodes[1], nodes[5], nodes[4] };
+    MeshLib::Quad quad(quad_nodes);
+    
+    pnt = GeoLib::Point(0.1,0,0.1);
+    ASSERT_EQ(true, quad.isPntInElement(pnt));
+    pnt = GeoLib::Point(0.999,0,0.001);
+    ASSERT_EQ(true, quad.isPntInElement(pnt));
+    pnt = GeoLib::Point(0.5,0.00001,1);
+    ASSERT_EQ(false, quad.isPntInElement(pnt));
+    ASSERT_EQ(true, quad.isPntInElement(pnt, 0.001));
+    deleteNodes(nodes);
 }
 
 TEST(IsPntInElement, Tet)
@@ -75,6 +98,41 @@ TEST(IsPntInElement, Tet)
     ASSERT_EQ(true, tet.isPntInElement(pnt));
     pnt = GeoLib::Point(0.5,0.6,0.1);
     ASSERT_EQ(false, tet.isPntInElement(pnt));
+    deleteNodes(nodes);
+}
+
+TEST(IsPntInElement, Pyramid)
+{
+    GeoLib::Point pnt;
+    std::vector<MeshLib::Node*> nodes (createNodes());
+    std::array<MeshLib::Node*, 5> pyr_nodes;
+    std::copy(nodes.begin(), nodes.begin()+5, pyr_nodes.begin());
+    MeshLib::Pyramid pyr(pyr_nodes);
+
+    pnt = GeoLib::Point(0.5,0.00001,-0.000001);
+    ASSERT_EQ(false, pyr.isPntInElement(pnt));
+    ASSERT_EQ(true, pyr.isPntInElement(pnt, 0.0001));
+    pnt = GeoLib::Point(0.5,0.5,0.1);
+    ASSERT_EQ(true, pyr.isPntInElement(pnt));
+    pnt = GeoLib::Point(0.5,0.5,0.51);
+    ASSERT_EQ(false, pyr.isPntInElement(pnt));
+    ASSERT_EQ(true, pyr.isPntInElement(pnt, 0.02));
+    deleteNodes(nodes);
+}
+
+TEST(IsPntInElement, Prism)
+{
+    GeoLib::Point pnt;
+    std::vector<MeshLib::Node*> nodes (createNodes());
+    std::array<MeshLib::Node*, 6> prism_nodes = { nodes[0], nodes[1], nodes[2], nodes[4], nodes[5], nodes[6] };
+    MeshLib::Prism prism(prism_nodes);
+
+    pnt = GeoLib::Point(0.5,0.5,0.1);
+    ASSERT_EQ(true, prism.isPntInElement(pnt));
+    pnt = GeoLib::Point(0.49,0.51,0.1);
+    ASSERT_EQ(false, prism.isPntInElement(pnt));
+    ASSERT_EQ(true, prism.isPntInElement(pnt, 0.03));
+    deleteNodes(nodes);
 }
 
 TEST(IsPntInElement, Hex)
@@ -93,4 +151,6 @@ TEST(IsPntInElement, Hex)
     ASSERT_EQ(true, hex.isPntInElement(pnt));
     pnt = GeoLib::Point(1.01,0.99,0.99);
     ASSERT_EQ(false, hex.isPntInElement(pnt));
+    ASSERT_EQ(true, hex.isPntInElement(pnt, 0.02));
+    deleteNodes(nodes);
 }