From 64c67eaf481766952981d34c8ccdc32bd3ca8666 Mon Sep 17 00:00:00 2001 From: Zeth Green Date: Tue, 2 Feb 2021 21:47:36 +0000 Subject: [PATCH 1/4] Write a test for ParseMMDFile function. --- manuskript/tests/loadsave/__init__.py | 4 + .../tests/loadsave/test_ParseMMDFile.py | 73 +++++++++++++++++++ 2 files changed, 77 insertions(+) create mode 100644 manuskript/tests/loadsave/__init__.py create mode 100644 manuskript/tests/loadsave/test_ParseMMDFile.py diff --git a/manuskript/tests/loadsave/__init__.py b/manuskript/tests/loadsave/__init__.py new file mode 100644 index 0000000..d11d87d --- /dev/null +++ b/manuskript/tests/loadsave/__init__.py @@ -0,0 +1,4 @@ +#!/usr/bin/env python +# --!-- coding: utf8 --!-- + +"""Tests for loadSave.py.""" diff --git a/manuskript/tests/loadsave/test_ParseMMDFile.py b/manuskript/tests/loadsave/test_ParseMMDFile.py new file mode 100644 index 0000000..c669e6b --- /dev/null +++ b/manuskript/tests/loadsave/test_ParseMMDFile.py @@ -0,0 +1,73 @@ +#!/usr/bin/env python +# --!-- coding: utf8 --!-- + +"""Test ParseMMDFile function.""" + +from collections import OrderedDict +from manuskript.load_save.version_1 import parseMMDFile + + +BASE = "title: TheExampleNovel\n" +BASE += "ID: 42\n" +BASE += "type: folder\n" +TEXT = BASE + '\n' +TEXT_WITH_NONE_AT_START = "None: hello\n" + TEXT +TEXT_WITH_NONE_AT_END = BASE + "None: hello\n\n" +TEXT_WITH_HANGING_SPACE = BASE + " " + + +def test_empty_string(): + """An empty string given to parseMMDFile.""" + result = parseMMDFile("") + assert result == ([], '') + + +def test_text(): + """A result as a list of tuples""" + result = parseMMDFile(TEXT) + assert result == ([ + ('title', 'TheExampleNovel'), + ('ID', '42'), + ('type', 'folder') + ], '') + + +def test_text_asdict(): + """A result as an OrderedDict.""" + result = parseMMDFile(TEXT, True) + assert result == (OrderedDict([ + ('title', 'TheExampleNovel'), + ('ID', '42'), + ('type', 'folder')] + ), '') + + +def test_text_with_none_at_start(): + """If the description is None, replace with an empty string.""" + result = parseMMDFile(TEXT_WITH_NONE_AT_START) + assert result == ([ + ('', 'hello'), + ('title', 'TheExampleNovel'), + ('ID', '42'), + ('type', 'folder') + ], '') + + +def test_text_wth_none_at_end(): + """If the last description is None, replace with an empty string.""" + result = parseMMDFile(TEXT_WITH_NONE_AT_END) + assert result == ([ + ('title', 'TheExampleNovel'), + ('ID', '42'), + ('type', 'folder'), + ('', 'hello') + ], '') + + +def test_text_hanging_space(): + """Hanging space invalidates the line.""" + result = parseMMDFile(TEXT_WITH_HANGING_SPACE) + assert result == ([ + ('title', 'TheExampleNovel'), + ('ID', '42') + ], '') From 2410598de04c70cd58e2a23da5658ec24fcd752a Mon Sep 17 00:00:00 2001 From: Zeth Green Date: Tue, 2 Feb 2021 21:54:39 +0000 Subject: [PATCH 2/4] More consistant naming. --- manuskript/tests/{loadsave => load_save}/__init__.py | 0 manuskript/tests/{loadsave => load_save}/test_ParseMMDFile.py | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename manuskript/tests/{loadsave => load_save}/__init__.py (100%) rename manuskript/tests/{loadsave => load_save}/test_ParseMMDFile.py (100%) diff --git a/manuskript/tests/loadsave/__init__.py b/manuskript/tests/load_save/__init__.py similarity index 100% rename from manuskript/tests/loadsave/__init__.py rename to manuskript/tests/load_save/__init__.py diff --git a/manuskript/tests/loadsave/test_ParseMMDFile.py b/manuskript/tests/load_save/test_ParseMMDFile.py similarity index 100% rename from manuskript/tests/loadsave/test_ParseMMDFile.py rename to manuskript/tests/load_save/test_ParseMMDFile.py From 0bbf70b455004674656534b083822535b2c63851 Mon Sep 17 00:00:00 2001 From: Zeth Green Date: Tue, 2 Feb 2021 21:59:02 +0000 Subject: [PATCH 3/4] Make the naming match here too. --- manuskript/tests/load_save/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manuskript/tests/load_save/__init__.py b/manuskript/tests/load_save/__init__.py index d11d87d..eb4e6c0 100644 --- a/manuskript/tests/load_save/__init__.py +++ b/manuskript/tests/load_save/__init__.py @@ -1,4 +1,4 @@ #!/usr/bin/env python # --!-- coding: utf8 --!-- -"""Tests for loadSave.py.""" +"""Tests for load_save module.""" From 344c21be5f460a1f477ef6619b32c237abba9e31 Mon Sep 17 00:00:00 2001 From: Zeth Green Date: Tue, 2 Feb 2021 23:29:17 +0000 Subject: [PATCH 4/4] Add a test to prove a scene's content comes through. --- manuskript/tests/load_save/test_ParseMMDFile.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/manuskript/tests/load_save/test_ParseMMDFile.py b/manuskript/tests/load_save/test_ParseMMDFile.py index c669e6b..0b9c7f3 100644 --- a/manuskript/tests/load_save/test_ParseMMDFile.py +++ b/manuskript/tests/load_save/test_ParseMMDFile.py @@ -14,6 +14,8 @@ TEXT = BASE + '\n' TEXT_WITH_NONE_AT_START = "None: hello\n" + TEXT TEXT_WITH_NONE_AT_END = BASE + "None: hello\n\n" TEXT_WITH_HANGING_SPACE = BASE + " " +CONTENT = "Once upon a time, there was a dog" +TEXT_WITH_CONTENT = TEXT + CONTENT def test_empty_string(): @@ -71,3 +73,9 @@ def test_text_hanging_space(): ('title', 'TheExampleNovel'), ('ID', '42') ], '') + + +def test_text_with_content(): + """The scene has text.""" + result = parseMMDFile(TEXT_WITH_CONTENT) + assert result[1] == CONTENT