def test_save_load():
    r = save_load(BaseRecommender())
    assert_equal(type(r), BaseRecommender)
    r = MyRecommender()
    r2 = save_load(r)
    assert_equal(type(r2), type(r))
    assert_array_equal(r2.foo, r.foo)
    assert_equal(r2.description, r.description)
def test_zero_known_item_scores():
    train = get_random_coo_matrix().tocsr()
    predictions = np.random.random_sample(train.shape)
    r = BaseRecommender()
    safe = r._zero_known_item_scores(predictions, train)
    num_users, num_items = predictions.shape
    for u in xrange(num_users):
        for i in xrange(num_items):
            if i in train[u].indices:
                assert_less_equal(safe[u, i], 0)
            else:
                assert_equal(safe[u, i], predictions[u, i])
def test_read_recommender_description():
    check_read_description(BaseRecommender())
    check_read_description(MyRecommender())
def test_save_filepath_condition():
    r = BaseRecommender()
    invalid_filepath = 'no suffix'
    assert_raises(ValueError, r.save, invalid_filepath)