Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
cpython
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
Batuhan Osman TASKAYA
cpython
Commits
14fbe727
Kaydet (Commit)
14fbe727
authored
Haz 17, 2014
tarafından
Terry Jan Reedy
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
Issue #21694: Add unittest for ParenMatch. Patch by Saimadhav Heblikar.
üst
67fbed5d
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
119 additions
and
4 deletions
+119
-4
ParenMatch.py
Lib/idlelib/ParenMatch.py
+10
-4
test_parenmatch.py
Lib/idlelib/idle_test/test_parenmatch.py
+109
-0
No files found.
Lib/idlelib/ParenMatch.py
Dosyayı görüntüle @
14fbe727
...
...
@@ -90,7 +90,8 @@ class ParenMatch:
self
.
set_timeout
=
self
.
set_timeout_none
def
flash_paren_event
(
self
,
event
):
indices
=
HyperParser
(
self
.
editwin
,
"insert"
)
.
get_surrounding_brackets
()
indices
=
(
HyperParser
(
self
.
editwin
,
"insert"
)
.
get_surrounding_brackets
())
if
indices
is
None
:
self
.
warn_mismatched
()
return
...
...
@@ -167,6 +168,11 @@ class ParenMatch:
# associate a counter with an event; only disable the "paren"
# tag if the event is for the most recent timer.
self
.
counter
+=
1
self
.
editwin
.
text_frame
.
after
(
self
.
FLASH_DELAY
,
lambda
self
=
self
,
c
=
self
.
counter
:
\
self
.
handle_restore_timer
(
c
))
self
.
editwin
.
text_frame
.
after
(
self
.
FLASH_DELAY
,
lambda
self
=
self
,
c
=
self
.
counter
:
self
.
handle_restore_timer
(
c
))
if
__name__
==
'__main__'
:
import
unittest
unittest
.
main
(
'idlelib.idle_test.test_parenmatch'
,
verbosity
=
2
)
Lib/idlelib/idle_test/test_parenmatch.py
0 → 100644
Dosyayı görüntüle @
14fbe727
"""Test idlelib.ParenMatch."""
# This must currently be a gui test because ParenMatch methods use
# several text methods not defined on idlelib.idle_test.mock_tk.Text.
import
unittest
from
unittest.mock
import
Mock
from
test.support
import
requires
from
tkinter
import
Tk
,
Text
from
idlelib.ParenMatch
import
ParenMatch
class
DummyEditwin
:
def
__init__
(
self
,
text
):
self
.
text
=
text
self
.
indentwidth
=
8
self
.
tabwidth
=
8
self
.
context_use_ps1
=
True
class
ParenMatchTest
(
unittest
.
TestCase
):
@classmethod
def
setUpClass
(
cls
):
requires
(
'gui'
)
cls
.
root
=
Tk
()
cls
.
text
=
Text
(
cls
.
root
)
cls
.
editwin
=
DummyEditwin
(
cls
.
text
)
cls
.
editwin
.
text_frame
=
Mock
()
@classmethod
def
tearDownClass
(
cls
):
del
cls
.
text
,
cls
.
editwin
cls
.
root
.
destroy
()
del
cls
.
root
def
tearDown
(
self
):
self
.
text
.
delete
(
'1.0'
,
'end'
)
def
test_paren_expression
(
self
):
"""
Test ParenMatch with 'expression' style.
"""
text
=
self
.
text
pm
=
ParenMatch
(
self
.
editwin
)
pm
.
set_style
(
'expression'
)
text
.
insert
(
'insert'
,
'def foobar(a, b'
)
pm
.
flash_paren_event
(
'event'
)
self
.
assertIn
(
'<<parenmatch-check-restore>>'
,
text
.
event_info
())
self
.
assertTupleEqual
(
text
.
tag_prevrange
(
'paren'
,
'end'
),
(
'1.10'
,
'1.15'
))
text
.
insert
(
'insert'
,
')'
)
pm
.
restore_event
()
self
.
assertNotIn
(
'<<parenmatch-check-restore>>'
,
text
.
event_info
())
self
.
assertEqual
(
text
.
tag_prevrange
(
'paren'
,
'end'
),
())
# paren_closed_event can only be tested as below
pm
.
paren_closed_event
(
'event'
)
self
.
assertTupleEqual
(
text
.
tag_prevrange
(
'paren'
,
'end'
),
(
'1.10'
,
'1.16'
))
def
test_paren_default
(
self
):
"""
Test ParenMatch with 'default' style.
"""
text
=
self
.
text
pm
=
ParenMatch
(
self
.
editwin
)
pm
.
set_style
(
'default'
)
text
.
insert
(
'insert'
,
'def foobar(a, b'
)
pm
.
flash_paren_event
(
'event'
)
self
.
assertIn
(
'<<parenmatch-check-restore>>'
,
text
.
event_info
())
self
.
assertTupleEqual
(
text
.
tag_prevrange
(
'paren'
,
'end'
),
(
'1.10'
,
'1.11'
))
text
.
insert
(
'insert'
,
')'
)
pm
.
restore_event
()
self
.
assertNotIn
(
'<<parenmatch-check-restore>>'
,
text
.
event_info
())
self
.
assertEqual
(
text
.
tag_prevrange
(
'paren'
,
'end'
),
())
def
test_paren_corner
(
self
):
"""
Test corner cases in flash_paren_event and paren_closed_event.
These cases force conditional expression and alternate paths.
"""
text
=
self
.
text
pm
=
ParenMatch
(
self
.
editwin
)
text
.
insert
(
'insert'
,
'# this is a commen)'
)
self
.
assertIsNone
(
pm
.
paren_closed_event
(
'event'
))
text
.
insert
(
'insert'
,
'
\n
def'
)
self
.
assertIsNone
(
pm
.
flash_paren_event
(
'event'
))
self
.
assertIsNone
(
pm
.
paren_closed_event
(
'event'
))
text
.
insert
(
'insert'
,
' a, *arg)'
)
self
.
assertIsNone
(
pm
.
paren_closed_event
(
'event'
))
def
test_handle_restore_timer
(
self
):
pm
=
ParenMatch
(
self
.
editwin
)
pm
.
restore_event
=
Mock
()
pm
.
handle_restore_timer
(
0
)
self
.
assertTrue
(
pm
.
restore_event
.
called
)
pm
.
restore_event
.
reset_mock
()
pm
.
handle_restore_timer
(
1
)
self
.
assertFalse
(
pm
.
restore_event
.
called
)
if
__name__
==
'__main__'
:
unittest
.
main
(
verbosity
=
2
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment