# 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())