115 lines
3.9 KiB
Python
115 lines
3.9 KiB
Python
# Copyright 2019 (c) Anna Schumaker.
|
|
from . import data
|
|
import os
|
|
import pathlib
|
|
import unittest
|
|
import xdg.BaseDirectory
|
|
|
|
xdg_data_home = pathlib.Path(xdg.BaseDirectory.xdg_data_home)
|
|
testing_data = xdg_data_home / "emmental-testing"
|
|
testing_file = testing_data / "test.file"
|
|
testing_temp = testing_data / ".test.file.tmp"
|
|
|
|
class TestDataModule(unittest.TestCase):
|
|
def tearDown(self):
|
|
testing_file.unlink(missing_ok=True)
|
|
|
|
def test_dir(self):
|
|
self.assertEqual(data.emmental_data, testing_data)
|
|
self.assertTrue(testing_data.exists())
|
|
self.assertTrue(testing_data.is_dir())
|
|
self.assertEqual(data.READ, 'rb')
|
|
self.assertEqual(data.WRITE, 'wb')
|
|
self.assertEqual(data.READ_TEXT, 'r')
|
|
self.assertEqual(data.WRITE_TEXT, 'w')
|
|
|
|
def test_data_file_init(self):
|
|
f = data.DataFile("test.file", data.READ)
|
|
self.assertEqual(f.path, testing_file)
|
|
self.assertEqual(f.temp, testing_temp)
|
|
self.assertFalse(f.exists())
|
|
self.assertEqual(f.mode, data.READ)
|
|
self.assertIsNone(f.file)
|
|
|
|
f = data.DataFile("test.file", data.WRITE)
|
|
self.assertEqual(f.temp, testing_temp)
|
|
self.assertFalse(f.exists())
|
|
self.assertEqual(f.mode, data.WRITE)
|
|
self.assertIsNone(f.file)
|
|
|
|
def test_data_file_read_write(self):
|
|
test = [ "test", "saving", "a", "list" ]
|
|
with data.DataFile("test.file", data.READ) as f:
|
|
self.assertIsNone(f.file)
|
|
f.pickle(test)
|
|
self.assertIsNone(f.unpickle())
|
|
f.remove()
|
|
self.assertFalse(f.exists())
|
|
|
|
with data.DataFile("test.file", data.WRITE) as f:
|
|
self.assertIsNotNone(f.file)
|
|
self.assertEqual(pathlib.Path(f.file.name), testing_temp)
|
|
self.assertFalse(f.exists())
|
|
self.assertTrue(testing_temp.exists())
|
|
f.pickle(test)
|
|
f.remove()
|
|
self.assertFalse(f.exists())
|
|
|
|
self.assertIsNone(f.file)
|
|
self.assertFalse(testing_temp.exists())
|
|
self.assertTrue(f.exists())
|
|
|
|
with data.DataFile("test.file", data.READ) as f:
|
|
self.assertIsNotNone(f.file)
|
|
self.assertEqual(pathlib.Path(f.file.name), testing_file)
|
|
lst = f.unpickle()
|
|
self.assertEqual(test, lst)
|
|
f.remove()
|
|
self.assertTrue(f.exists())
|
|
|
|
f = data.DataFile("test.file", data.READ)
|
|
f.remove()
|
|
self.assertFalse(f.exists())
|
|
|
|
def test_data_file_read_write_text(self):
|
|
test = "test saving a string"
|
|
with data.DataFile("test.file", data.READ_TEXT) as f:
|
|
self.assertIsNone(f.file)
|
|
f.write(test)
|
|
self.assertIsNone(f.read())
|
|
f.remove()
|
|
self.assertFalse(f.exists())
|
|
|
|
with data.DataFile("test.file", data.WRITE_TEXT) as f:
|
|
self.assertIsNotNone(f.file)
|
|
self.assertEqual(pathlib.Path(f.file.name), testing_temp)
|
|
self.assertFalse(f.exists())
|
|
self.assertTrue(testing_temp.exists())
|
|
f.write(test)
|
|
f.remove()
|
|
self.assertFalse(f.exists())
|
|
|
|
self.assertIsNone(f.file)
|
|
self.assertFalse(testing_temp.exists())
|
|
self.assertTrue(f.exists())
|
|
|
|
with data.DataFile("test.file", data.READ_TEXT) as f:
|
|
self.assertIsNotNone(f.file)
|
|
self.assertEqual(pathlib.Path(f.file.name), testing_file)
|
|
txt = f.read()
|
|
self.assertEqual(test, txt)
|
|
f.remove()
|
|
self.assertTrue(f.exists())
|
|
|
|
f = data.DataFile("test.file", data.READ)
|
|
f.remove()
|
|
self.assertFalse(f.exists())
|
|
|
|
def test_data_file_exception(self):
|
|
f = data.DataFile("test.file", data.WRITE_TEXT)
|
|
with self.assertRaises(Exception):
|
|
with f:
|
|
f.write("test")
|
|
raise Exception("Test Exception")
|
|
self.assertFalse(f.exists())
|