Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F84512021
test_positional_word_part.py
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Mon, Sep 23, 08:18
Size
4 KB
Mime Type
text/x-python
Expires
Wed, Sep 25, 08:18 (1 d, 23 h)
Engine
blob
Format
Raw Data
Handle
20958806
Attached To
rNIETZSCHEPYTHON nietzsche-python
test_positional_word_part.py
View Options
import
unittest
from
os
import
sep
,
path
from
os.path
import
isdir
,
dirname
,
basename
import
lxml.etree
as
ET
import
sys
sys
.
path
.
append
(
'svgscripts'
)
from
datatypes.matrix
import
Matrix
from
datatypes.positional_word_part
import
PositionalWordPart
from
datatypes.page
import
Page
from
datatypes.positional_object
import
PositionalObject
class
TestPositionalWordPart
(
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
+
'path_svg.svg'
self
.
test_xml
=
DATADIR
+
sep
+
'W_I_8_page125.xml'
self
.
word_part_objs
=
[{
'text'
:
'a'
},
{
'text'
:
'b'
},
{
'text'
:
'c'
}]
x
=
0
for
dict
in
self
.
word_part_objs
:
dict
[
'class'
]
=
'st15'
dict
[
'x'
]
=
x
dict
[
'y'
]
=
11
x
+=
1
def
test_init
(
self
):
pwp
=
PositionalWordPart
(
text
=
'test'
)
self
.
assertEqual
(
pwp
.
text
,
'test'
)
def
test_attach_object_to_tree
(
self
):
pwp
=
PositionalWordPart
(
text
=
'test'
,
symbol_id
=
'glyph-32-1'
,
style_class
=
'st1 st2 st3'
)
empty_tree
=
ET
.
ElementTree
(
ET
.
Element
(
'page'
))
pwp
.
attach_object_to_tree
(
empty_tree
)
for
node
in
empty_tree
.
getroot
()
.
xpath
(
'//'
+
pwp
.
tag
):
self
.
assertEqual
(
node
.
get
(
'id'
),
'0'
)
self
.
assertEqual
(
node
.
get
(
'symbol-id'
),
'glyph-32-1'
)
def
test_init_node
(
self
):
pwp
=
PositionalWordPart
(
text
=
'test'
,
symbol_id
=
'glyph-32-1'
,
style_class
=
'st1 st2 st3'
)
empty_tree
=
ET
.
ElementTree
(
ET
.
Element
(
'page'
))
pwp
.
attach_object_to_tree
(
empty_tree
)
pwp2
=
PositionalWordPart
(
node
=
empty_tree
.
getroot
()
.
find
(
'./'
+
pwp
.
tag
))
self
.
assertEqual
(
pwp2
.
id
,
pwp
.
id
)
self
.
assertEqual
(
pwp2
.
text
,
pwp
.
text
)
def
test_CREATE_POSITIONAL_WORD_PART
(
self
):
svg_tree
=
ET
.
parse
(
self
.
test_svg_file
)
namespaces
=
{
k
if
k
is
not
None
else
'ns'
:
v
for
k
,
v
in
svg_tree
.
getroot
()
.
nsmap
.
items
()
}
xmin
=
311.8125
ymin
=
158.0117
text
=
'es'
style_class
=
'st5 st6'
x
=
258.148
y
=
8.5
svg_x
=
x
+
xmin
svg_y
=
y
+
ymin
use_nodes
=
svg_tree
.
xpath
(
'//ns:use[@x>="{0}" and @x<="{1}" and @y>="{2}" and @y<="{3}"]'
\
.
format
(
svg_x
-.
1
,
svg_x
+.
1
,
svg_y
-
0.1
,
svg_y
+.
1
),
namespaces
=
namespaces
)
self
.
assertEqual
(
len
(
use_nodes
),
1
)
pwp
=
PositionalWordPart
.
CREATE_POSITIONAL_WORD_PART
(
text
[
0
],
use_nodes
[
0
],
namespaces
,
xmin
=
xmin
,
ymin
=
ymin
,
style_class
=
style_class
)
self
.
assertEqual
(
pwp
.
height
,
3.672
)
self
.
assertEqual
(
pwp
.
width
,
2.594
)
def
test_CREATE_POSITIONAL_WORD_PART_LIST
(
self
):
page
=
Page
(
xml_source_file
=
self
.
test_xml
)
svg_tree
=
ET
.
parse
(
self
.
test_svg_file
)
namespaces
=
{
k
if
k
is
not
None
else
'ns'
:
v
for
k
,
v
in
svg_tree
.
getroot
()
.
nsmap
.
items
()
}
xmin
=
311.8125
ymin
=
158.0117
text
=
'es'
style_class
=
'st5 st6'
x
=
258.148
y
=
8.5
word_part_obj
=
{
'text'
:
text
,
'x'
:
x
,
'y'
:
y
,
'matrix'
:
None
,
'class'
:
style_class
}
pwp_list
=
PositionalWordPart
.
CREATE_POSITIONAL_WORD_PART_LIST
(
word_part_obj
,
svg_tree
,
namespaces
,
page
,
xmin
=
xmin
,
ymin
=
ymin
)
self
.
assertEqual
(
len
(
pwp_list
),
len
(
text
))
self
.
assertEqual
(
pwp_list
[
0
]
.
height
,
3.672
)
self
.
assertEqual
(
pwp_list
[
0
]
.
width
,
2.594
)
text
=
'ergleicher'
word_part_obj
=
{
'text'
:
text
,
'x'
:
174.619
,
'y'
:
189.6
,
'matrix'
:
None
,
'class'
:
style_class
}
pwp_list
=
PositionalWordPart
.
CREATE_POSITIONAL_WORD_PART_LIST
(
word_part_obj
,
svg_tree
,
namespaces
,
page
,
xmin
=
xmin
,
ymin
=
ymin
)
self
.
assertEqual
(
len
(
pwp_list
),
len
(
text
))
def
test_CREATE_SIMPLE_POSITIONAL_WORD_PART_LIST
(
self
):
page
=
Page
(
xml_source_file
=
self
.
test_xml
)
pwps
=
PositionalWordPart
.
CREATE_SIMPLE_POSITIONAL_WORD_PART_LIST
(
page
,
self
.
word_part_objs
)
self
.
assertEqual
(
len
(
pwps
),
3
)
self
.
assertEqual
(
pwps
[
0
]
.
text
,
'a'
)
self
.
assertEqual
(
pwps
[
0
]
.
style_class
,
'st15'
)
self
.
assertEqual
(
pwps
[
0
]
.
width
,
0.8
)
self
.
assertEqual
(
pwps
[
2
]
.
width
,
3.85
)
def
test_get_semanticAndDataDict
(
self
):
matrix
=
Matrix
(
'matrix(0 0 0 0 0 0)'
)
pwp
=
PositionalWordPart
(
matrix
=
matrix
,
text
=
'test'
,
symbol_id
=
'glyph-32-1'
,
style_class
=
'st1 st2 st3'
)
empty_tree
=
ET
.
ElementTree
(
ET
.
Element
(
'page'
))
pwp
.
attach_object_to_tree
(
empty_tree
)
dict
=
PositionalWordPart
.
get_semantic_dictionary
()
for
key
in
dict
[
'properties'
]
.
keys
():
cls
,
cardinality
,
xpath
=
dict
[
'properties'
]
.
get
(
key
)
results
=
empty_tree
.
xpath
(
'.//'
+
xpath
)
self
.
assertEqual
(
len
(
results
),
1
)
#print('{} {}'.format(xpath, results[0]))
if
__name__
==
"__main__"
:
unittest
.
main
()
Event Timeline
Log In to Comment