add read methods to text and json files

This commit is contained in:
stubbfel
2014-05-19 22:03:31 +02:00
parent 4ae29f9304
commit 87192e35dc
4 changed files with 68 additions and 17 deletions

View File

@@ -1,6 +1,6 @@
__author__ = 'stubbfel'
import json
from utilities.textfileutility import TextFile
from utilities.textfile import TextFile
class JsonFile(TextFile):
@@ -12,7 +12,7 @@ class JsonFile(TextFile):
"""
super(JsonFile, self).__init__(filename)
def write_json(self, json_object):
def write_json_file(self, json_object):
"""
write a json object to a text file
:param json_object: json object, which has to be saved. If the object is a string,
@@ -27,4 +27,10 @@ class JsonFile(TextFile):
json_string = json.dumps(json_object, indent=4)
self.write_text_file(json_string)
def read_json_file(self):
"""
method read and convert the content of the file to a json object
:return: dict - json object
"""
return json.loads(self.read_text_file())

View File

@@ -30,6 +30,15 @@ class TextFile:
if self.exists_file:
os.remove(self._filename)
def read_text_file(self):
"""
method return and read the content of a text file
:return: str - file content
"""
with open(self._filename, newline='\n') as file:
return file.read()
@property
def exists_file(self):
"""

View File

@@ -1,7 +1,8 @@
__author__ = 'stubbfel'
import unittest
from utilities.jsonutility import JsonFile
from utilities.jsonfile import JsonFile
from utilities.textfile import TextFile
import os.path
@@ -10,18 +11,44 @@ class JsonUtilitiesTest(unittest.TestCase):
self.__jf = JsonFile("test.json")
self.__jf.check_and_remove_file()
def test_write_json(self):
self.__jf.write_json({1: "4711", "123": "0815"})
def tearDown(self):
self.__jf.check_and_remove_file()
def test_read_json_file(self):
self.__jf.write_json_file({1: "4711", "123": "0815"})
jo = self.__jf.read_json_file()
self.assertEqual(jo["1"], "4711")
self.assertEqual(jo["123"], "0815")
def test_read_json_file_from_string(self):
self.__jf.write_json_file("{\"1\": \"4711\", \"123\": \"0815\"}")
jo = self.__jf.read_json_file()
self.assertEqual(jo["1"], "4711")
self.assertEqual(jo["123"], "0815")
def test_read_json_file_returns_error_if_json_object_is_emptystring(self):
tf = TextFile("test.json")
tf.write_text_file("")
self.assertRaises(ValueError, self.__jf.read_json_file)
def test_read_json_file_returns_error_if_json_object_is_wrong_json_string(self):
tf = TextFile("test.json")
tf.write_text_file("{1}")
self.assertRaises(ValueError, self.__jf.read_json_file)
def test_write_json_file(self):
self.__jf.write_json_file({1: "4711", "123": "0815"})
self.assertTrue(os.path.isfile("test.json"))
self.__jf.check_and_remove_file()
def test_write_json_returns_error_if_json_object_is_emptystring(self):
self.assertRaises(ValueError, self.__jf.write_json, "")
self.__jf.check_and_remove_file()
def test_write_json_file(self):
self.__jf.write_json_file("{\"1\": \"4711\", \"123\": \"0815\"}")
self.assertTrue(os.path.isfile("test.json"))
def test_write_json_returns_error_if_json_object_is_wrong_json_string(self):
self.assertRaises(ValueError, self.__jf.write_json, "{1}")
self.__jf.check_and_remove_file()
def test_write_json_file_returns_error_if_json_object_is_emptystring(self):
self.assertRaises(ValueError, self.__jf.write_json_file, "")
def test_write_json_file_returns_error_if_json_object_is_wrong_json_string(self):
self.assertRaises(ValueError, self.__jf.write_json_file, "{1}")
if __name__ == '__main__':
unittest.main()

View File

@@ -1,7 +1,7 @@
__author__ = 'stubbfel'
import unittest
from utilities.textfileutility import TextFile
from utilities.textfile import TextFile
import os.path
@@ -10,16 +10,25 @@ class TextFileUtilitiesTest(unittest.TestCase):
self.__tf = TextFile("test.txt")
self.__tf.check_and_remove_file()
def test_write_file(self):
self.__tf.write_text_file("this is a test")
def tearDown(self):
self.__tf.check_and_remove_file()
def test_write_text_file(self):
self.__tf.write_text_file("this is a test")
self.assertTrue(self.__tf.exists_file)
self.assertEqual(self.__tf.read_text_file(), "this is a test")
def test_read_text_file(self):
self.__tf.write_text_file("this is a test")
self.assertEqual(self.__tf.read_text_file(), "this is a test")
def test_read_text_file_non_existing_file(self):
self.assertRaises(FileNotFoundError, self.__tf.read_text_file)
def test_exists_file_true_case(self):
self.assertEqual(os.path.isfile("test.txt"), self.__tf.exists_file)
self.__tf.check_and_remove_file()
def test_exists_file_false_case(self):
self.__tf.check_and_remove_file()
self.assertEqual(os.path.isfile("test.txt"), self.__tf.exists_file)
def test_check_and_remove_file(self):