]> git.stg.codes - stg.git/blobdiff - tests/test_fee_charge_rules.cpp
Add new unit test - checking fee charging rules
[stg.git] / tests / test_fee_charge_rules.cpp
diff --git a/tests/test_fee_charge_rules.cpp b/tests/test_fee_charge_rules.cpp
new file mode 100644 (file)
index 0000000..93b7dd6
--- /dev/null
@@ -0,0 +1,63 @@
+#include "tut/tut.hpp"
+
+#include "stg/settings.h"
+#include "stg/user_property.h"
+#include "user_impl.h"
+
+const volatile time_t stgTime = 0;
+
+namespace tut
+{
+    struct fee_charge_rules_data {
+    };
+
+    typedef test_group<fee_charge_rules_data> tg;
+    tg fee_charge_rules_test_group("Fee charge rules tests group");
+
+    typedef tg::object testobject;
+
+    class TEST_SETTINGS : public SETTINGS {
+        public:
+            TEST_SETTINGS(unsigned _feeChargeType)
+                : feeChargeType(_feeChargeType) {}
+
+            const std::string & GetDirName(size_t) const { return dirName; }
+            const std::string & GetScriptsDir() const { return scriptsDir; }
+            unsigned            GetDetailStatWritePeriod() const { return 10; }
+            unsigned            GetStatWritePeriod() const { return 10; }
+            unsigned            GetDayFee() const { return 0; }
+            bool                GetFullFee() const { return false; }
+            unsigned            GetDayResetTraff() const { return 0; }
+            bool                GetSpreadFee() const { return false; }
+            bool                GetFreeMbAllowInet() const { return false; }
+            bool                GetDayFeeIsLastDay() const { return false; }
+            bool                GetWriteFreeMbTraffCost() const { return false; }
+            bool                GetShowFeeInCash() const { return false; }
+            unsigned            GetMessageTimeout() const { return 0; }
+            unsigned            GetFeeChargeType() const { return feeChargeType; }
+            const std::string & GetMonitorDir() const { return monitorDir; }
+            bool                GetMonitoring() const { return false; }
+
+        private:
+            std::string dirName;
+            std::string scriptsDir;
+            std::string monitorDir;
+            unsigned feeChargeType;
+    };
+
+    template<>
+    template<>
+    void testobject::test<1>()
+    {
+        set_test_name("Check classic rules");
+
+        TEST_SETTINGS settings(0);
+        USER_IMPL user(&settings, NULL, NULL, NULL, NULL);
+
+        USER_PROPERTY<double> & cash(user.GetProperty().cash);
+
+        ensure_equals("user.cash == 0", user.GetProperty().cash, 0);
+        cash = 100;
+        ensure_equals("user.cash == 0", user.GetProperty().cash, 100);
+    }
+}