Parcourir la source

Add unit tests for Time

Eric Ramat il y a 4 ans
Parent
commit
40aea2936c
3 fichiers modifiés avec 83 ajouts et 0 suppressions
  1. 1 0
      src/tests/CMakeLists.txt
  2. 12 0
      src/tests/common/CMakeLists.txt
  3. 70 0
      src/tests/common/tests.cpp

+ 1 - 0
src/tests/CMakeLists.txt

@@ -1,3 +1,4 @@
+ADD_SUBDIRECTORY(common)
 ADD_SUBDIRECTORY(dsde)
 ADD_SUBDIRECTORY(dtss)
 ADD_SUBDIRECTORY(mixed)

+ 12 - 0
src/tests/common/CMakeLists.txt

@@ -0,0 +1,12 @@
+add_definitions(-DWITH_TRACE)
+
+INCLUDE_DIRECTORIES(
+        ${CMAKE_SOURCE_DIR}/src
+        ${ARTIS_INCLUDE_DIRS}
+        ${Boost_INCLUDE_DIRS})
+
+LINK_DIRECTORIES()
+
+ADD_EXECUTABLE(common-tests tests.cpp)
+
+TARGET_LINK_LIBRARIES(common-tests)

+ 70 - 0
src/tests/common/tests.cpp

@@ -0,0 +1,70 @@
+/**
+ * @file tests/common/tests.cpp
+ * @author The ARTIS Development Team
+ * See the AUTHORS or Authors.txt file
+ */
+
+/*
+ * ARTIS - the multimodeling and simulation environment
+ * This file is a part of the ARTIS environment
+ *
+ * Copyright (C) 2013-2019 ULCO http://www.univ-littoral.fr
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <artis-star/common/time/DoubleTime.hpp>
+#include <artis-star/common/time/IntegerTime.hpp>
+#include <artis-star/common/time/RationalTime.hpp>
+
+#define CATCH_CONFIG_MAIN
+
+#include <tests/catch.hpp>
+
+using namespace artis::common;
+
+TEST_CASE("double time", "common")
+{
+    artis::common::DoubleTime::type t1 = 0;
+    artis::common::DoubleTime::type t2 = artis::common::DoubleTime::infinity;
+
+    REQUIRE(t1 != artis::common::DoubleTime::infinity);
+    REQUIRE(t1 == artis::common::DoubleTime::null);
+    REQUIRE(t2 == artis::common::DoubleTime::infinity);
+    REQUIRE(t2 != artis::common::DoubleTime::null);
+}
+
+TEST_CASE("integer time", "common")
+{
+    artis::common::IntegerTime::type t1 = 0;
+    artis::common::IntegerTime::type t2 = artis::common::IntegerTime::infinity;
+
+    REQUIRE(t1 != artis::common::IntegerTime::infinity);
+    REQUIRE(t1 == artis::common::IntegerTime::null);
+    REQUIRE(t2 == artis::common::IntegerTime::infinity);
+    REQUIRE(t2 != artis::common::IntegerTime::null);
+}
+
+TEST_CASE("rational time", "common")
+{
+    artis::common::RationalTime::type t1 = 0;
+    artis::common::RationalTime::type t2 = artis::common::RationalTime::infinity;
+
+    REQUIRE(t1 != artis::common::RationalTime::infinity);
+    REQUIRE(t1 == artis::common::RationalTime::null);
+    REQUIRE(t2 == artis::common::RationalTime::infinity);
+    REQUIRE(t2 != artis::common::RationalTime::null);
+    REQUIRE(t1 + 1 == 1);
+    REQUIRE(t1 + artis::common::RationalTime::type(1, 2) == artis::common::RationalTime::type(1, 2));
+}