Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F73036844
ut_tagged.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
Thu, Jul 18, 05:09
Size
6 KB
Mime Type
text/x-python
Expires
Sat, Jul 20, 05:09 (1 d, 21 h)
Engine
blob
Format
Raw Data
Handle
19134957
Attached To
R3596 pybliographer
ut_tagged.py
View Options
# -*- coding: latin-1 -*-
import
os
,
pybut
,
sys
,
re
import
StringIO
from
Pyblio.Parsers.Syntax
import
Tagged
from
Pyblio
import
Store
class
TestTagged
(
pybut
.
TestCase
):
""" Check that the state machine of the Tagged parser behaves as
advertised """
def
setUp
(
self
):
import
StringIO
self
.
fd
=
StringIO
.
StringIO
()
self
.
t
=
Tagged
.
Parser
(
self
.
fd
)
return
def
parsingFails
(
self
):
try
:
while
1
:
d
=
self
.
t
.
next
()
if
d
is
None
:
break
assert
False
except
SyntaxError
:
pass
return
def
parsingOk
(
self
):
ret
=
[]
while
1
:
d
=
self
.
t
.
next
()
if
d
is
None
:
break
ret
.
append
(
d
)
return
ret
def
testNoNestedRecord
(
self
):
""" Reject nested records """
self
.
t
.
record_start
()
self
.
t
.
record_start
()
self
.
parsingFails
()
return
def
testNoRecordEnd
(
self
):
""" Reject non-closed records """
self
.
t
.
record_start
()
self
.
parsingFails
()
return
def
testEmptyRecord
(
self
):
self
.
t
.
record_start
()
self
.
t
.
record_end
()
r
=
self
.
parsingOk
()
assert
r
==
[(
'D'
,
[])],
'obtained
%s
'
%
`r`
return
def
testNoEmptyField
(
self
):
self
.
t
.
record_start
()
self
.
t
.
field_start
(
'ST'
,
1
)
self
.
t
.
record_end
()
self
.
parsingFails
()
return
def
testNoEmptyFieldWithData
(
self
):
self
.
t
.
record_start
()
self
.
t
.
field_start
(
'ST'
,
1
)
self
.
t
.
field_data
(
'data'
)
self
.
t
.
record_end
()
self
.
parsingFails
()
return
def
testNoNestedFields
(
self
):
self
.
t
.
record_start
()
self
.
t
.
field_start
(
'ST'
,
1
)
self
.
t
.
field_start
(
'ST'
,
1
)
self
.
t
.
field_end
()
self
.
t
.
field_end
()
self
.
t
.
record_end
()
self
.
parsingFails
()
return
def
testSingleField
(
self
):
self
.
t
.
record_start
()
self
.
t
.
field_start
(
'ST'
,
1
)
self
.
t
.
field_data
(
'data'
)
self
.
t
.
field_end
()
self
.
t
.
record_end
()
r
=
self
.
parsingOk
()
assert
r
==
[(
'D'
,
[(
1
,
'ST'
,
u'data'
)])],
'obtained
%s
'
%
`r`
return
def
testMeta
(
self
):
self
.
t
.
metadata_add
(
'key'
,
'value'
)
self
.
t
.
record_start
()
self
.
t
.
field_start
(
'ST'
,
1
)
self
.
t
.
field_data
(
'data'
)
self
.
t
.
field_end
()
self
.
t
.
record_end
()
r
=
self
.
parsingOk
()
assert
r
==
[(
'M'
,
(
'key'
,
'value'
)),
(
'D'
,
[(
1
,
'ST'
,
u'data'
)])],
'obtained
%s
'
%
`r`
return
def
testNoMiddleMeta
(
self
):
self
.
t
.
record_start
()
self
.
t
.
metadata_add
(
'key'
,
'value'
)
self
.
t
.
field_start
(
'ST'
,
1
)
self
.
t
.
field_data
(
'data'
)
self
.
t
.
field_end
()
self
.
t
.
record_end
()
self
.
parsingFails
()
return
def
testMultipleFields
(
self
):
self
.
t
.
record_start
()
self
.
t
.
field_start
(
'ST'
,
1
)
self
.
t
.
field_data
(
'data'
)
self
.
t
.
field_end
()
self
.
t
.
field_start
(
'UV'
,
2
)
self
.
t
.
field_data
(
'doto'
)
self
.
t
.
field_end
()
self
.
t
.
record_end
()
r
=
self
.
parsingOk
()
assert
r
==
[(
'D'
,
[(
1
,
'ST'
,
u'data'
),
(
2
,
'UV'
,
u'doto'
)])],
'obtained
%s
'
%
`r`
return
def
testMultipleRecords
(
self
):
self
.
t
.
record_start
()
self
.
t
.
field_start
(
'ST'
,
1
)
self
.
t
.
field_data
(
'data'
)
self
.
t
.
field_end
()
self
.
t
.
field_start
(
'UV'
,
2
)
self
.
t
.
field_data
(
'doto'
)
self
.
t
.
field_end
()
self
.
t
.
record_end
()
self
.
t
.
record_start
()
self
.
t
.
field_start
(
'WX'
,
3
)
self
.
t
.
field_data
(
'dutu'
)
self
.
t
.
field_end
()
self
.
t
.
field_start
(
'YZ'
,
4
)
self
.
t
.
field_data
(
'diti'
)
self
.
t
.
field_end
()
self
.
t
.
record_end
()
r
=
self
.
parsingOk
()
assert
r
==
[(
'D'
,
[(
1
,
'ST'
,
u'data'
),
(
2
,
'UV'
,
u'doto'
)]),
(
'D'
,
[(
3
,
'WX'
,
u'dutu'
),
(
4
,
'YZ'
,
u'diti'
)])],
'obtained
%s
'
%
`r`
return
from
Pyblio.Parsers.Syntax
import
RIS
class
TestRISTransport
(
pybut
.
TestCase
):
""" Test that the RIS parser works according to the spec """
def
parsingOk
(
self
,
txt
):
fd
=
StringIO
.
StringIO
(
txt
)
rt
=
[]
ris
=
RIS
.
RISParser
(
fd
)
while
1
:
d
=
ris
.
next
()
if
d
is
None
:
break
rt
.
append
(
d
)
return
rt
def
testEmptyIsValid
(
self
):
r
=
self
.
parsingOk
(
'
\n\n
'
)
assert
r
==
[],
'obtained
%s
'
%
`r`
def
testSingleRecord
(
self
):
r
=
self
.
parsingOk
(
'''
TY - TYPE\r
A1 - Gobry, Frederic\r
ER - \r
'''
)
assert
r
==
[(
'D'
,
[(
2
,
'TY'
,
u'TYPE'
),
(
3
,
'A1'
,
u'Gobry, Frederic'
)])],
\
'obtained
%s
'
%
`r`
return
def
testMultiRecord
(
self
):
r
=
self
.
parsingOk
(
'''
TY - TYPE\r
A1 - Gobry, Frederic\r
ER - \r
TY - TYPE\r
A1 - Gobry 2, Frederic\r
ER - \r
'''
)
assert
r
==
[(
'D'
,
[(
2
,
'TY'
,
u'TYPE'
),
(
3
,
'A1'
,
u'Gobry, Frederic'
)]),
(
'D'
,
[(
5
,
'TY'
,
u'TYPE'
),
(
6
,
'A1'
,
u'Gobry 2, Frederic'
)])],
\
'obtained
%s
'
%
`r`
return
def
testMultiLines
(
self
):
r
=
self
.
parsingOk
(
'''
TY - TYPE\r
A1 - Gobry,\r
Frederic\r
ER - \r
TY - TYPE\r
A1 - Gobry 2,\r
Frederic\r
ER - \r
'''
)
assert
r
==
[(
'D'
,
[(
2
,
'TY'
,
u'TYPE'
),
(
3
,
'A1'
,
u'Gobry, Frederic'
)]),
(
'D'
,
[(
7
,
'TY'
,
u'TYPE'
),
(
8
,
'A1'
,
u'Gobry 2, Frederic'
)])],
\
'obtained
%s
'
%
`r`
return
suite
=
pybut
.
suite
(
TestTagged
,
TestRISTransport
)
if
__name__
==
'__main__'
:
pybut
.
run
(
suite
)
Event Timeline
Log In to Comment