Commit 3c7c8d86 authored by Makayla Shepherd's avatar Makayla Shepherd
Browse files

Updated with the new testing guidelines and added new tests.

parent 2be2cb47
Loading
Loading
Loading
Loading
+97 −49
Original line number Diff line number Diff line
@@ -5,127 +5,175 @@
#include <gtest/gtest.h>


TEST(FileNameTests, OriginalPath) {
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";
  Isis::FileName file(test);
  FileName file(test);
  
  EXPECT_EQ("/testy/mc/test/face", file.originalPath());
}

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

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

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

TEST(FileNameTests, Name) {
TEST(FileName, Name) {
  QString test = "/testy/mc/test/face/test.cub";
  Isis::FileName file(test);
  FileName file(test);
  
  EXPECT_EQ("test.cub", file.name());
}

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

//TODO How is this going to work? Before we used ISISROOT. Will that still work?
//TODO Waiting for GMock

// TEST(FileNameTests, Expanded) {
//   QString test = "/testy/mc/test/face/test.cub";
//   Isis::FileName file(test);
//   
//   EXPECT_EQ("cub", file.expanded());
// TEST(FileName, Expanded) {
// }

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

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

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

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

//TODO There are a lot of different tests for versioning. Do we want to replicate them all??

TEST(FileNameTests, isNotVersioned) {
  QString test = "/testy/mc/test/face/test.cub";
  Isis::FileName file(test);
  
  EXPECT_EQ(false, file.isVersioned());
}

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

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

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

//TODO How do we want to deal with test data?
//TODO Waiting for GMock

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

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

// TEST(FileNameTests, HighestVersion) {
//   QString test = "/testy/mc/test/face/test{ddMMMyyyy}..cub";
//   Isis::FileName file(test);
//   
//   EXPECT_EQ(true, file.isVersioned());
// TEST(FileName, Version) {
// }

//TODO How do we test equal operators?
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));