diff --git a/Tests/FileIO/TestGLIReader.cpp b/Tests/FileIO/TestGLIReader.cpp
index d3bf6360c13292ebbe89c02a44d964ebdb5d124f..5ef27e6c33cc6262a2e90e7a9da1abb8a081cbc6 100644
--- a/Tests/FileIO/TestGLIReader.cpp
+++ b/Tests/FileIO/TestGLIReader.cpp
@@ -72,7 +72,74 @@ TEST_F(OGSIOVer4InterfaceTest, SimpleTIN)
 	boost::filesystem::remove(tin_fname);
 }
 
-TEST_F(OGSIOVer4InterfaceTest, InvalidTIN)
+TEST_F(OGSIOVer4InterfaceTest, StillCorrectTINWihtAdditionalValueAtEndOfLine)
+{
+	std::string tin_fname(BaseLib::BuildInfo::tests_tmp_path+"Surface.tin");
+	std::ofstream tin_out (tin_fname);
+	tin_out << "0 0.0 0.0 0.0 1.0 0.0.0 0.0 0.0 1.0 10\n";
+	tin_out << "1 0.0 0.0 0.0 1.0 0.0.0 0.0 0.0 1.0\n";
+	tin_out.close();
+
+	// read geometry
+	GeoLib::GEOObjects geometries;
+	std::vector<std::string> errors;
+	std::string geometry_name("TestGeometry");
+	FileIO::Legacy::readGLIFileV4(_gli_fname, &geometries, geometry_name, errors);
+
+	std::vector<GeoLib::Surface*> const*
+		sfcs(geometries.getSurfaceVec(geometry_name));
+	ASSERT_TRUE(sfcs != nullptr);
+	ASSERT_EQ(1u, geometries.getSurfaceVec(geometry_name)->size());
+	ASSERT_EQ(2u, (*geometries.getSurfaceVec(geometry_name))[0]->getNTriangles());
+
+	boost::filesystem::remove(tin_fname);
+}
+
+TEST_F(OGSIOVer4InterfaceTest, InvalidTIN_ZeroAreaTri)
+{
+	std::string tin_fname(BaseLib::BuildInfo::tests_tmp_path+"Surface.tin");
+	std::ofstream tin_out (tin_fname);
+	tin_out << "0 0.0 0.0 0.0 1.0 0.0.0 0.0 0.0 0.0\n";
+	tin_out.close();
+
+	// read geometry
+	GeoLib::GEOObjects geometries;
+	std::vector<std::string> errors;
+	std::string geometry_name("TestGeometry");
+	FileIO::Legacy::readGLIFileV4(_gli_fname, &geometries, geometry_name, errors);
+
+	std::vector<GeoLib::Surface*> const*
+		sfcs(geometries.getSurfaceVec(geometry_name));
+	ASSERT_TRUE(sfcs == nullptr);
+
+	boost::filesystem::remove(tin_fname);
+}
+
+
+TEST_F(OGSIOVer4InterfaceTest, InvalidTIN_LineDoesNotStartWithID)
+{
+	std::string tin_fname(BaseLib::BuildInfo::tests_tmp_path+"Surface.tin");
+	std::ofstream tin_out (tin_fname);
+	tin_out << "0 0.0 0.0 0.0 1.0 0.0.0 0.0 0.0 1.0\n";
+	tin_out << "a\n";
+	tin_out << "1 0.0 0.0 0.0 1.0 0.0.0 0.0 0.0 1.0\n";
+	tin_out.close();
+
+	// read geometry
+	GeoLib::GEOObjects geometries;
+	std::vector<std::string> errors;
+	std::string geometry_name("TestGeometry");
+	FileIO::Legacy::readGLIFileV4(_gli_fname, &geometries, geometry_name, errors);
+
+	std::vector<GeoLib::Surface*> const*
+		sfcs(geometries.getSurfaceVec(geometry_name));
+	ASSERT_TRUE(sfcs == nullptr);
+
+	boost::filesystem::remove(tin_fname);
+}
+
+
+TEST_F(OGSIOVer4InterfaceTest, InvalidTIN_PointIsMissing)
 {
 	std::string tin_fname(BaseLib::BuildInfo::tests_tmp_path+"Surface.tin");
 	std::ofstream tin_out (tin_fname);
@@ -93,7 +160,7 @@ TEST_F(OGSIOVer4InterfaceTest, InvalidTIN)
 	boost::filesystem::remove(tin_fname);
 }
 
-TEST_F(OGSIOVer4InterfaceTest, InvalidTIN_II)
+TEST_F(OGSIOVer4InterfaceTest, InvalidTIN_CoordOfPointIsMissing)
 {
 	std::string tin_fname(BaseLib::BuildInfo::tests_tmp_path+"Surface.tin");
 	std::ofstream tin_out (tin_fname);
@@ -114,3 +181,26 @@ TEST_F(OGSIOVer4InterfaceTest, InvalidTIN_II)
 	boost::filesystem::remove(tin_fname);
 }
 
+TEST_F(OGSIOVer4InterfaceTest, SimpleTIN_AdditionalEmptyLinesAtEnd)
+{
+	std::string tin_fname(BaseLib::BuildInfo::tests_tmp_path+"Surface.tin");
+	std::ofstream tin_out (tin_fname);
+	tin_out << "0 0.0 0.0 0.0 1.0 0.0.0 0.0 0.0 1.0 10\n";
+	tin_out << "1 0.0 0.0 0.0 1.0 0.0.0 0.0 0.0 1.0\n\n\n";
+	tin_out.close();
+
+	// read geometry
+	GeoLib::GEOObjects geometries;
+	std::vector<std::string> errors;
+	std::string geometry_name("TestGeometry");
+	FileIO::Legacy::readGLIFileV4(_gli_fname, &geometries, geometry_name, errors);
+
+	std::vector<GeoLib::Surface*> const*
+		sfcs(geometries.getSurfaceVec(geometry_name));
+	ASSERT_TRUE(sfcs != nullptr);
+	ASSERT_EQ(1u, geometries.getSurfaceVec(geometry_name)->size());
+	ASSERT_EQ(2u, (*geometries.getSurfaceVec(geometry_name))[0]->getNTriangles());
+
+	boost::filesystem::remove(tin_fname);
+}
+