Page MenuHomec4science

test_transkription_position.py
No OneTemporary

File Metadata

Created
Thu, May 9, 21:02

test_transkription_position.py

import unittest
from os import sep, path
from os.path import dirname, isdir, isfile
import lxml.etree as ET
import sys
sys.path.append('svgscripts')
from datatypes.debug_message import DebugMessage
from datatypes.matrix import Matrix
from datatypes.page import Page
from datatypes.page_creator import PageCreator
from datatypes.positional_word_part import PositionalWordPart
from datatypes.transkription_position import TranskriptionPosition
from datatypes.transkriptionField import TranskriptionField
from datatypes.word_position import WordPosition
class TestTranskriptionPosition(unittest.TestCase):
def setUp(self):
DATADIR = dirname(__file__) + sep + 'test_data'
if not isdir(DATADIR):
DATADIR = dirname(dirname(__file__)) + sep + 'test_data'
self.test_svg_file = DATADIR + sep + 'W_I_8_page125_web.svg'
self.test_xml = DATADIR + sep + 'W_I_8_page125.xml'
self.dir = DATADIR
def test_init(self):
dmsg = DebugMessage(message='test')
word_position = TranskriptionPosition(id=1, height=10, width=10, x=0, y=10, debug_message=dmsg)
self.assertEqual(word_position.tag, WordPosition.TRANSKRIPTION)
self.assertEqual(word_position.id, '1')
self.assertEqual(word_position.debug_message.message, 'test')
self.assertEqual(word_position.height, 10)
self.assertEqual(word_position.top, 10)
self.assertEqual(word_position.bottom, 20)
self.assertEqual(word_position.left, 0)
self.assertEqual(word_position.isOnTranskription(), True)
self.assertEqual(word_position.isOnFaksimile(), False)
def test_attach_object_to_tree(self):
matrix = Matrix('matrix(0 0 0 0 0 0)')
dmsg = DebugMessage(message='test')
pwps = [ PositionalWordPart(text='test') ]
word_position = TranskriptionPosition(id=1, height=10, width=10, x=0, y=10, matrix=matrix, debug_message=dmsg, positional_word_parts=pwps)
empty_tree = ET.ElementTree(ET.Element('page'))
word_position.attach_object_to_tree(empty_tree)
#print(ET.dump(empty_tree.getroot()))
for node in empty_tree.getroot().xpath('//' + word_position.tag):
self.assertEqual(node.get('id'), '1')
self.assertEqual(node.get('bottom'), '20')
self.assertEqual(node.get('transform'), matrix.toString())
self.assertEqual(node.get('writing-process-id'), '-1')
word_position = TranskriptionPosition(node=empty_tree.getroot().find('.//' + word_position.tag))
self.assertEqual(word_position.height, 10)
self.assertEqual(word_position.debug_message is not None, True)
self.assertEqual(word_position.debug_message.message, 'test')
self.assertEqual(len(word_position.positional_word_parts), 1)
def test_CREATE_TRANSKRIPTION_POSITION_LIST(self):
page = PageCreator(self.test_xml, svg_file=self.test_svg_file)
tf = TranskriptionField(page.svg_file)
word_part_objs = [{'text': 'es', 'class': 'st5 st6', 'x': 258.148, 'y': '8.5' }]
transkription_positions = TranskriptionPosition.CREATE_TRANSKRIPTION_POSITION_LIST(page, word_part_objs, transkription_field=tf)
self.assertEqual(transkription_positions[0].top, 3.829)
self.assertEqual(transkription_positions[0].height, 5.672)
word_part_objs = [{'text': 'Meine', 'class': 'st5 st8', 'x': 8.504, 'y': 70.5 }]
transkription_positions = TranskriptionPosition.CREATE_TRANSKRIPTION_POSITION_LIST(page, word_part_objs, transkription_field=tf)
self.assertEqual(transkription_positions[0].height, 9.125)
self.assertEqual(transkription_positions[0].top, 62.376)
self.assertEqual(transkription_positions[0].bottom, 71.501)
def test_CREATE_TRANSKRIPTION_POSITION_LIST_FROM_PWPS(self):
page = PageCreator(self.test_xml, svg_file=self.test_svg_file)
tf = TranskriptionField(page.svg_file)
word_part_objs = [{'text': 'Meine', 'class': 'st5 st8', 'x': 8.504, 'y': 70.5 }]
transkription_positions = TranskriptionPosition.CREATE_TRANSKRIPTION_POSITION_LIST(page, word_part_objs, transkription_field=tf)
transkription_positions[0].positional_word_parts[2].transform = Matrix('rotate(20)')
transkription_positions = TranskriptionPosition.CREATE_TRANSKRIPTION_POSITION_LIST_FROM_PWPS(transkription_positions[0].positional_word_parts)
self.assertEqual(len(transkription_positions), 3)
transkription_positions = TranskriptionPosition.CREATE_TRANSKRIPTION_POSITION_LIST(page, word_part_objs, transkription_field=tf)
transkription_positions[0].positional_word_parts[0].style_class = 'st5 st10'
transkription_positions = TranskriptionPosition.CREATE_TRANSKRIPTION_POSITION_LIST_FROM_PWPS(transkription_positions[0].positional_word_parts)
self.assertEqual(len(transkription_positions), 2)
def test_get_semantic_dictionary(self):
dictionary = TranskriptionPosition.get_semantic_dictionary()
#print(dictionary)
#self.assertEqual(TranskriptionPosition.XML_TAG in dictionary['properties'].get('writing_process_id').get('xpath'), True)
def test_is_mergeable_with(self):
page = PageCreator(self.test_xml, svg_file=self.test_svg_file)
tf = TranskriptionField(page.svg_file)
word_part_objs = [{'text': 'Meine', 'class': 'st5 st8', 'x': 8.504, 'y': 70.5 }]
transkription_positionA = TranskriptionPosition.CREATE_TRANSKRIPTION_POSITION_LIST(page, word_part_objs, transkription_field=tf)[0]
transkription_positionB = TranskriptionPosition.CREATE_TRANSKRIPTION_POSITION_LIST(page, word_part_objs, transkription_field=tf)[0]
self.assertEqual(transkription_positionA.is_mergebale_with(transkription_positionB), True)
transkription_positionA.writing_process_id = 0
transkription_positionB.writing_process_id = 1
self.assertEqual(transkription_positionA.is_mergebale_with(transkription_positionB), False)
transkription_positionB.writing_process_id = -1
self.assertEqual(transkription_positionA.is_mergebale_with(transkription_positionB), True)
def test_split(self):
page = PageCreator(self.test_xml, svg_file=self.test_svg_file)
tf = TranskriptionField(page.svg_file)
word_part_objs = [{'text': 'Meine', 'class': 'st5 st8', 'x': 8.504, 'y': 70.5 }]
transkription_position = TranskriptionPosition.CREATE_TRANSKRIPTION_POSITION_LIST(page, word_part_objs, transkription_field=tf)[0]
tr_positions = transkription_position.split(transkription_position.left + transkription_position.width/2)
self.assertEqual(tr_positions[0] is not None, True)
self.assertEqual(tr_positions[1] is not None, True)
transkription_position = TranskriptionPosition.CREATE_TRANSKRIPTION_POSITION_LIST(page, word_part_objs, transkription_field=tf)[0]
tr_positions = transkription_position.split(transkription_position.left + transkription_position.width/2, transkription_position.left + transkription_position.width - 4)
self.assertEqual(len(tr_positions), 3)
if __name__ == "__main__":
unittest.main()

Event Timeline