From 023bb8107234bf85fefe5de222cc7e2014c4a320 Mon Sep 17 00:00:00 2001
From: Quoc-Tuan Truong <tuantq.vnu@gmail.com>
Date: Thu, 20 Dec 2018 17:56:29 +0800
Subject: [PATCH] Add tests for base_strategy and ratio_split

---
 cornac/eval_strategies/tests/__init__.py      |  0
 .../tests/test_base_strategy.py               | 34 +++++++++++++
 .../eval_strategies/tests/test_ratio_split.py | 49 +++++++++++++++++++
 3 files changed, 83 insertions(+)
 create mode 100644 cornac/eval_strategies/tests/__init__.py
 create mode 100644 cornac/eval_strategies/tests/test_base_strategy.py
 create mode 100644 cornac/eval_strategies/tests/test_ratio_split.py

diff --git a/cornac/eval_strategies/tests/__init__.py b/cornac/eval_strategies/tests/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/cornac/eval_strategies/tests/test_base_strategy.py b/cornac/eval_strategies/tests/test_base_strategy.py
new file mode 100644
index 00000000..67963136
--- /dev/null
+++ b/cornac/eval_strategies/tests/test_base_strategy.py
@@ -0,0 +1,34 @@
+# -*- coding: utf-8 -*-
+
+"""
+@author: Quoc-Tuan Truong <tuantq.vnu@gmail.com>
+"""
+
+from ..base_strategy import BaseStrategy
+
+
+def test_init():
+    bs = BaseStrategy(None, verbose=True)
+
+    assert not bs.exclude_unknowns
+    assert 1. == bs.rating_threshold
+
+
+def test_trainset_none():
+    bs = BaseStrategy(None, verbose=True)
+
+    try:
+        bs.evaluate(None, {}, False)
+    except ValueError:
+        assert True
+
+
+def test_testset_none():
+    bs = BaseStrategy(None, train_set=[], verbose=True)
+
+    try:
+        bs.evaluate(None, {}, False)
+    except ValueError:
+        assert True
+
+
diff --git a/cornac/eval_strategies/tests/test_ratio_split.py b/cornac/eval_strategies/tests/test_ratio_split.py
new file mode 100644
index 00000000..25b06463
--- /dev/null
+++ b/cornac/eval_strategies/tests/test_ratio_split.py
@@ -0,0 +1,49 @@
+# -*- coding: utf-8 -*-
+
+"""
+@author: Quoc-Tuan Truong <tuantq.vnu@gmail.com>
+"""
+
+from ..ratio_split import RatioSplit
+
+
+def test_validate_size():
+    train_size, val_size, test_size = RatioSplit._validate_sizes(0.1, 0.2, 10)
+    assert 7 == train_size
+    assert 1 == val_size
+    assert 2 == test_size
+
+    train_size, val_size, test_size = RatioSplit._validate_sizes(None, 0.5, 10)
+    assert 5 == train_size
+    assert 0 == val_size
+    assert 5 == test_size
+
+    train_size, val_size, test_size = RatioSplit._validate_sizes(None, None, 10)
+    assert 10 == train_size
+    assert 0 == val_size
+    assert 0 == test_size
+
+    train_size, val_size, test_size = RatioSplit._validate_sizes(2, 2, 10)
+    assert 6 == train_size
+    assert 2 == val_size
+    assert 2 == test_size
+
+    try:
+        RatioSplit._validate_sizes(-1, 0.2, 10)
+    except ValueError:
+        assert True
+
+    try:
+        RatioSplit._validate_sizes(11, 0.2, 10)
+    except ValueError:
+        assert True
+
+    try:
+        RatioSplit._validate_sizes(0, 11, 10)
+    except ValueError:
+        assert True
+
+    try:
+        RatioSplit._validate_sizes(3, 8, 10)
+    except ValueError:
+        assert True
\ No newline at end of file
-- 
GitLab