mirror of https://github.com/balkian/keepit.git
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
99 lines
2.5 KiB
Python
99 lines
2.5 KiB
Python
import sys
|
|
import os
|
|
import subprocess
|
|
from unittest import TestCase
|
|
|
|
from keepit import keepit, diff, hash_df
|
|
from keepit.backends import Pickle
|
|
|
|
import pandas as pd
|
|
|
|
# df = pd.DataFrame([[0, 'hola', True, None], [1, 'adiós', False, 5]], columns=['int', 'str', 'bool', 'other'])
|
|
|
|
this_directory = os.path.abspath(os.path.dirname(__file__))
|
|
|
|
|
|
count = 0
|
|
|
|
@keepit()
|
|
def prueba(first, name='something', value=29):
|
|
global count
|
|
count += 1
|
|
return pd.DataFrame([[count, first, name, value], ], columns=['time', 'first', 'name', 'value'])
|
|
|
|
|
|
@keepit()
|
|
def prueba_df():
|
|
return pd.read_csv(os.path.join(this_directory, 'test.tsv'), sep='\t')
|
|
|
|
|
|
@keepit()
|
|
def prueba_df_argument(df):
|
|
return count
|
|
|
|
|
|
class TestMain(TestCase):
|
|
|
|
|
|
def setUpClass():
|
|
back = Pickle()
|
|
back.erase_all()
|
|
assert not back.find()
|
|
assert (not os.path.exists(back.res_folder)) or (not os.listdir(back.res_folder))
|
|
|
|
def tearDownClass():
|
|
back = Pickle()
|
|
back.erase_all()
|
|
|
|
def test_basic(self):
|
|
|
|
try:
|
|
prueba()
|
|
except TypeError:
|
|
pass
|
|
|
|
p1 = prueba('hello')
|
|
print(p1)
|
|
p2 = prueba('hello')
|
|
print(p2)
|
|
print(diff(p1, p2))
|
|
assert p1.equals(p2) # Columns and rows are equal
|
|
|
|
p3 = prueba('other')
|
|
print(p3)
|
|
assert not p1.equals(p3)
|
|
|
|
p4 = prueba('hello', name='different')
|
|
print(p4)
|
|
assert not p1.equals(p4)
|
|
|
|
def test_list_and_drop(self):
|
|
assert len(prueba.list()) > 0
|
|
prueba.drop_all()
|
|
assert len(prueba.list()) == 0
|
|
|
|
def test_df(self):
|
|
df1 = prueba_df()
|
|
df2 = prueba_df()
|
|
|
|
assert df1.equals(df2)
|
|
assert hash_df(df1) == hash_df(df2)
|
|
prueba_df.drop_all()
|
|
|
|
def test_different_program(self):
|
|
'''A value saved by a different interpreter should be reusable.'''
|
|
from create_custom import custom_function
|
|
custom_function.drop_all()
|
|
subprocess.check_call([sys.executable, os.path.join(this_directory, 'create_custom.py')])
|
|
# create_custom returns different results when run as a script.
|
|
# We make sure we are using the "stored" value, and not the result from the imported function
|
|
assert custom_function() == 'main'
|
|
|
|
def test_df_arg(self):
|
|
|
|
df1 = pd.read_csv(os.path.join(this_directory, 'test.tsv'), sep='\t')
|
|
res1 = prueba_df_argument(df1)
|
|
df2 = pd.read_csv(os.path.join(this_directory, 'test.tsv'), sep='\t')
|
|
res2 = prueba_df_argument(df2)
|
|
assert res1 == res2
|