Unverified Commit ae10f82d authored by Ian Humphrey's avatar Ian Humphrey Committed by GitHub
Browse files

Merge pull request #535 from makaylas/testing

Added gmock, more tests for FileName
parents 1c2d12ba 1e45b6b2
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -222,10 +222,10 @@ function(add_isis_module name)
  # - Base module depends on 3rd party libs, other libs also depend on base.
  # - Only the base module gets both a static and shared library.
  if(${name} STREQUAL ${CORE_LIB_NAME})
    set(reqLibs "${ALLLIBS};gtest;${CMAKE_THREAD_LIBS_INIT}")
    set(reqLibs "${ALLLIBS};gtest;gmock;${CMAKE_THREAD_LIBS_INIT}")
    set(alsoStatic ON)
  else()
    set(reqLibs "${CORE_LIB_NAME};${ALLLIBS};gtest;${CMAKE_THREAD_LIBS_INIT}")
    set(reqLibs "${CORE_LIB_NAME};${ALLLIBS};gtest;gmock;${CMAKE_THREAD_LIBS_INIT}")
    set(alsoStatic OFF)
  endif()

+20 −0
Original line number Diff line number Diff line
@@ -17,3 +17,23 @@ if (NOT TARGET gtest)

  add_library(gtest ${GOOGLETEST_SOURCES})
endif()

if (NOT TARGET gmock)
  set(GOOGLEMOCK_ROOT ${CMAKE_SOURCE_DIR}/../gtest/googlemock CACHE STRING "Google Mock source root")

  include_directories(SYSTEM
      ${GOOGLEMOCK_ROOT}
      ${GOOGLEMOCK_ROOT}/include
      )

  set(GOOGLEMOCK_SOURCES
      ${GOOGLEMOCK_ROOT}/src/gmock-all.cc
      ${GOOGLEMOCK_ROOT}/src/gmock_main.cc
      )

  foreach(_source ${GOOGLEMOCK_SOURCES})
      set_source_files_properties(${_source} PROPERTIES GENERATED 1)
  endforeach()

  add_library(gmock ${GOOGLEMOCK_SOURCES})
endif()
+167 −6
Original line number Diff line number Diff line
@@ -5,14 +5,175 @@
#include <gtest/gtest.h>


TEST(FileNameTests, BaseName) {
  QString test = "test.log";
  Isis::FileName file(test);
using namespace Isis;

class FileName_Fixture_Versioned : public ::testing::TestWithParam<const char*> {
  // Intentionally empty
};

class FileName_Fixture_NotVersioned : public ::testing::TestWithParam<const char*> {
  // Intentionally empty
};


TEST(FileName, DefaultConstructor) {
  FileName file;
  
//   EXPECT_EQ("", file.originalPath());
//   EXPECT_EQ("", file.path());
//   EXPECT_EQ("", file.attributes());
  EXPECT_EQ("", file.baseName());
  EXPECT_EQ("", file.name());
  EXPECT_EQ("", file.extension());
}

TEST(FileName, OriginalPath) {
  QString test = "/testy/mc/test/face/test.cub";
  FileName file(test);
  
  EXPECT_EQ("/testy/mc/test/face", file.originalPath());
}

TEST(FileName, Path) {
  QString test = "/testy/mc/test/face/test.cub";
  FileName file(test);
  
  EXPECT_EQ("/testy/mc/test/face", file.path());
}

TEST(FileName, Attributes) {
  QString test = "/testy/mc/test/face/test.cub";
  FileName file(test);
  
  EXPECT_EQ("", file.attributes());
  
  QString testAtt = "/testy/mc/test/face/test.cub+Bsq";
  FileName fileAtt(testAtt);
  
  EXPECT_EQ("Bsq", fileAtt.attributes());
}

TEST(FileName, BaseName) {
  QString test = "/testy/mc/test/face/test.cub";
  FileName file(test);
  
  EXPECT_EQ("test", file.baseName());
}

int main(int argc, char **argv) {
   ::testing::InitGoogleTest(&argc, argv);
   return RUN_ALL_TESTS();
TEST(FileName, Name) {
  QString test = "/testy/mc/test/face/test.cub";
  FileName file(test);
  
  EXPECT_EQ("test.cub", file.name());
}

TEST(FileName, Extension) {
  QString test = "/testy/mc/test/face/test.cub";
  FileName file(test);
  
  EXPECT_EQ("cub", file.extension());
}

//TODO Waiting for GMock

// TEST(FileName, Expanded) {
// }

TEST(FileName, Original) {
  QString test = "$ISISROOT/testy/mc/test/face/test.cub";
  FileName file(test);
  
  EXPECT_EQ("$ISISROOT/testy/mc/test/face/test.cub", file.original());
}

TEST(FileName, AddExtension) {
  QString test = "/testy/mc/test/face/test.cub";
  FileName file(test);
  
  EXPECT_EQ("txt", file.addExtension(".txt").extension());
}

TEST(FileName, RemoveExtension) {
  QString test = "/testy/mc/test/face/test.cub";
  FileName file(test);
  std::cout << file.removeExtension().extension().toStdString() << std::endl;
  EXPECT_EQ("", file.removeExtension().extension());
}

TEST(FileName, SetExtension) {
  QString test = "/testy/mc/test/face/test.cub";
  FileName file(test);
  
  EXPECT_EQ("log", file.setExtension("log").extension());
}

TEST(FileName, isQuestionMarksNoExtensionVersioned) {
  QString test = "/testy/mc/test/face/test??????";
  FileName file(test);
  
  EXPECT_EQ(true, file.isVersioned());
}

TEST(FileName, isQuestionMarksExtensionVersioned) {
  QString test = "/testy/mc/test/face/test??????.cub";
  FileName file(test);
  
  EXPECT_EQ(true, file.isVersioned());
}

TEST(FileName, isDDMMMYYYVersioned) {
  QString test = "/testy/mc/test/face/test{ddMMMyyyy}..cub";
  FileName file(test);
  
  EXPECT_EQ(true, file.isVersioned());
}

//TODO Waiting for GMock

// TEST(FileName, HighestVersion) {
// }

// TEST(FileName, NewVersion) {
// }

// TEST(FileName, Version) {
// }

TEST(FileName, ToString) {
  QString test = "/testy/mc/test/face/test.cub";
  FileName file(test);
  
  EXPECT_EQ("/testy/mc/test/face/test.cub", file.toString());
}

// TODO Waiting for GMock
// TEST(FileName, EqualOperator) {
// }

// TEST(FileName, NotEqualOperator) {
// }

TEST_P(FileName_Fixture_Versioned, IsVersioned) {
  FileName file(GetParam());
  
  EXPECT_TRUE(file.isVersioned());
}

const char* versionedFiles[] = {"tttt??????", "tttt??????.tmp", "tttt_?.tmp", "??tttt", 
                                "?tttt000008.tmp", "junk?", "tttt{ddMMMyyyy}.tmp", 
                                "tt{MMM}tt{dd}yy{yy}.tmp", "tt{d}tt{MMM}.tmp", "tt{d}tt{MMMM}.tmp",
                                "tt{dd}.tmp", "tttt{dd}.tmp", "$TEMPORARY/{MMM}-{dd}-{yy}_v???.tmp"};

INSTANTIATE_TEST_CASE_P(FileName, FileName_Fixture_Versioned, ::testing::ValuesIn(versionedFiles));
                                   
TEST_P(FileName_Fixture_NotVersioned, IsVersioned) {
  FileName file(GetParam());
  
  EXPECT_FALSE(file.isVersioned());
}

const char* notVersionedFiles[] = {"tttt"};
//TODO These actually throw errors so they cannot be checked like this
//"tttt{}.tmp", "ttttt{}.tmp", "??tttt??", "tttt{aaaa}.tmp"};

INSTANTIATE_TEST_CASE_P(FileName, FileName_Fixture_NotVersioned, ::testing::ValuesIn(notVersionedFiles));