Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
B
BTrees
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
BTrees
Commits
a3debcf3
Commit
a3debcf3
authored
Dec 05, 2012
by
Tres Seaver
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
100% coverage.\!
parent
ee89c134
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
22 additions
and
80 deletions
+22
-80
BTrees/check.py
BTrees/check.py
+2
-2
BTrees/tests/test_check.py
BTrees/tests/test_check.py
+20
-78
No files found.
BTrees/check.py
View file @
a3debcf3
...
@@ -368,7 +368,7 @@ class Checker(Walker):
...
@@ -368,7 +368,7 @@ class Checker(Walker):
"."
.
join
(
map
(
str
,
path
)))
"."
.
join
(
map
(
str
,
path
)))
self
.
errors
.
append
(
s
)
self
.
errors
.
append
(
s
)
class
Printer
(
Walker
):
class
Printer
(
Walker
):
#pragma NO COVER
def
__init__
(
self
,
obj
):
def
__init__
(
self
,
obj
):
Walker
.
__init__
(
self
,
obj
)
Walker
.
__init__
(
self
,
obj
)
...
@@ -422,6 +422,6 @@ def check(btree):
...
@@ -422,6 +422,6 @@ def check(btree):
Checker
(
btree
).
check
()
Checker
(
btree
).
check
()
def
display
(
btree
):
def
display
(
btree
):
#pragma NO COVER
"Display the internal structure of a BTree, Bucket, TreeSet or Set."
"Display the internal structure of a BTree, Bucket, TreeSet or Set."
Printer
(
btree
).
display
()
Printer
(
btree
).
display
()
BTrees/tests/test_check.py
View file @
a3debcf3
...
@@ -264,15 +264,6 @@ class CheckerTests(unittest.TestCase):
...
@@ -264,15 +264,6 @@ class CheckerTests(unittest.TestCase):
def
_makeOne
(
self
,
obj
):
def
_makeOne
(
self
,
obj
):
return
self
.
_getTargetClass
()(
obj
)
return
self
.
_getTargetClass
()(
obj
)
def
_makeTree
(
self
,
fill
):
from
BTrees.OOBTree
import
OOBTree
from
BTrees.OOBTree
import
_BUCKET_SIZE
tree
=
OOBTree
()
if
fill
:
for
i
in
range
(
_BUCKET_SIZE
+
1
):
tree
[
i
]
=
2
*
i
return
tree
def
test_walk_w_empty_bucket
(
self
):
def
test_walk_w_empty_bucket
(
self
):
from
BTrees.OOBTree
import
OOBucket
from
BTrees.OOBTree
import
OOBucket
obj
=
OOBucket
()
obj
=
OOBucket
()
...
@@ -287,7 +278,7 @@ class CheckerTests(unittest.TestCase):
...
@@ -287,7 +278,7 @@ class CheckerTests(unittest.TestCase):
checker
.
check
()
#noraise
checker
.
check
()
#noraise
def
test_walk_w_empty_btree
(
self
):
def
test_walk_w_empty_btree
(
self
):
obj
=
self
.
_makeTree
(
False
)
obj
=
_makeTree
(
False
)
checker
=
self
.
_makeOne
(
obj
)
checker
=
self
.
_makeOne
(
obj
)
path
=
'/'
path
=
'/'
parent
=
object
()
parent
=
object
()
...
@@ -299,7 +290,7 @@ class CheckerTests(unittest.TestCase):
...
@@ -299,7 +290,7 @@ class CheckerTests(unittest.TestCase):
checker
.
check
()
#noraise
checker
.
check
()
#noraise
def
test_walk_w_degenerate_btree
(
self
):
def
test_walk_w_degenerate_btree
(
self
):
obj
=
self
.
_makeTree
(
False
)
obj
=
_makeTree
(
False
)
obj
[
'a'
]
=
1
obj
[
'a'
]
=
1
checker
=
self
.
_makeOne
(
obj
)
checker
=
self
.
_makeOne
(
obj
)
path
=
'/'
path
=
'/'
...
@@ -312,7 +303,7 @@ class CheckerTests(unittest.TestCase):
...
@@ -312,7 +303,7 @@ class CheckerTests(unittest.TestCase):
checker
.
check
()
#noraise
checker
.
check
()
#noraise
def
test_walk_w_normal_btree
(
self
):
def
test_walk_w_normal_btree
(
self
):
obj
=
self
.
_makeTree
(
False
)
obj
=
_makeTree
(
False
)
checker
=
self
.
_makeOne
(
obj
)
checker
=
self
.
_makeOne
(
obj
)
path
=
'/'
path
=
'/'
parent
=
object
()
parent
=
object
()
...
@@ -324,7 +315,7 @@ class CheckerTests(unittest.TestCase):
...
@@ -324,7 +315,7 @@ class CheckerTests(unittest.TestCase):
checker
.
check
()
#noraise
checker
.
check
()
#noraise
def
test_walk_w_key_too_large
(
self
):
def
test_walk_w_key_too_large
(
self
):
obj
=
self
.
_makeTree
(
True
)
obj
=
_makeTree
(
True
)
state
=
obj
.
__getstate__
()
state
=
obj
.
__getstate__
()
# Damage an invariant by dropping the BTree key to 14.
# Damage an invariant by dropping the BTree key to 14.
new_state
=
(
state
[
0
][
0
],
14
,
state
[
0
][
2
]),
state
[
1
]
new_state
=
(
state
[
0
][
0
],
14
,
state
[
0
][
2
]),
state
[
1
]
...
@@ -341,7 +332,7 @@ class CheckerTests(unittest.TestCase):
...
@@ -341,7 +332,7 @@ class CheckerTests(unittest.TestCase):
self
.
assertTrue
(
">= upper bound"
in
str
(
e
))
self
.
assertTrue
(
">= upper bound"
in
str
(
e
))
def
test_walk_w_key_too_small
(
self
):
def
test_walk_w_key_too_small
(
self
):
obj
=
self
.
_makeTree
(
True
)
obj
=
_makeTree
(
True
)
state
=
obj
.
__getstate__
()
state
=
obj
.
__getstate__
()
# Damage an invariant by bumping the BTree key to 16.
# Damage an invariant by bumping the BTree key to 16.
new_state
=
(
state
[
0
][
0
],
16
,
state
[
0
][
2
]),
state
[
1
]
new_state
=
(
state
[
0
][
0
],
16
,
state
[
0
][
2
]),
state
[
1
]
...
@@ -358,7 +349,7 @@ class CheckerTests(unittest.TestCase):
...
@@ -358,7 +349,7 @@ class CheckerTests(unittest.TestCase):
self
.
assertTrue
(
"< lower bound"
in
str
(
e
))
self
.
assertTrue
(
"< lower bound"
in
str
(
e
))
def
test_walk_w_keys_swapped
(
self
):
def
test_walk_w_keys_swapped
(
self
):
obj
=
self
.
_makeTree
(
True
)
obj
=
_makeTree
(
True
)
state
=
obj
.
__getstate__
()
state
=
obj
.
__getstate__
()
# Damage an invariant by bumping the BTree key to 16.
# Damage an invariant by bumping the BTree key to 16.
(
b0
,
num
,
b1
),
firstbucket
=
state
(
b0
,
num
,
b1
),
firstbucket
=
state
...
@@ -401,74 +392,25 @@ class Test_check(unittest.TestCase):
...
@@ -401,74 +392,25 @@ class Test_check(unittest.TestCase):
return
tree
return
tree
def
test_normal
(
self
):
def
test_normal
(
self
):
# Looks like (state, first_bucket)
from
BTrees.OOBTree
import
OOBTree
# where state looks like (bucket0, 15, bucket1).
tree
=
OOBTree
()
tree
=
self
.
_makeOne
()
for
i
in
range
(
31
):
tree
[
i
]
=
2
*
i
state
=
tree
.
__getstate__
()
state
=
tree
.
__getstate__
()
self
.
assertEqual
(
len
(
state
),
2
)
self
.
assertEqual
(
len
(
state
),
2
)
self
.
assertEqual
(
len
(
state
[
0
]),
3
)
self
.
assertEqual
(
len
(
state
[
0
]),
3
)
self
.
assertEqual
(
state
[
0
][
1
],
15
)
self
.
assertEqual
(
state
[
0
][
1
],
15
)
tree
.
_check
()
# shouldn't blow up
self
.
_callFUT
(
tree
)
#noraise
self
.
_callFUT
(
tree
)
# shouldn't blow up
def
test_key_too_large
(
self
):
# Damage an invariant by dropping the BTree key to 14.
def
_makeTree
(
fill
):
tree
=
self
.
_makeOne
()
from
BTrees.OOBTree
import
OOBTree
state
=
tree
.
__getstate__
()
from
BTrees.OOBTree
import
_BUCKET_SIZE
news
=
(
state
[
0
][
0
],
14
,
state
[
0
][
2
]),
state
[
1
]
tree
=
OOBTree
()
tree
.
__setstate__
(
news
)
if
fill
:
tree
.
_check
()
# not caught
for
i
in
range
(
_BUCKET_SIZE
+
1
):
try
:
tree
[
i
]
=
2
*
i
# Expecting "... key %r >= upper bound %r at index %d"
return
tree
self
.
_callFUT
(
tree
)
except
AssertionError
as
detail
:
self
.
assertTrue
(
">= upper bound"
in
str
(
detail
))
else
:
self
.
fail
(
"expected check(tree) to catch the problem"
)
def
test_key_too_small
(
self
):
# Damage an invariant by bumping the BTree key to 16.
tree
=
self
.
_makeOne
()
state
=
tree
.
__getstate__
()
news
=
(
state
[
0
][
0
],
16
,
state
[
0
][
2
]),
state
[
1
]
tree
.
__setstate__
(
news
)
tree
.
_check
()
# not caught
try
:
# Expecting "... key %r < lower bound %r at index %d"
self
.
_callFUT
(
tree
)
except
AssertionError
as
detail
:
self
.
assertTrue
(
"< lower bound"
in
str
(
detail
))
else
:
self
.
fail
(
"expected check(tree) to catch the problem"
)
def
test_keys_swapped
(
self
):
# Damage an invariant by swapping two key/value pairs.
tree
=
self
.
_makeOne
()
state
=
tree
.
__getstate__
()
# Looks like (state, first_bucket)
# where state looks like (bucket0, 15, bucket1).
(
b0
,
num
,
b1
),
firstbucket
=
state
self
.
assertEqual
(
b0
[
4
],
8
)
self
.
assertEqual
(
b0
[
5
],
10
)
b0state
=
b0
.
__getstate__
()
self
.
assertEqual
(
len
(
b0state
),
2
)
# b0state looks like
# ((k0, v0, k1, v1, ...), nextbucket)
pairs
,
nextbucket
=
b0state
self
.
assertEqual
(
pairs
[
8
],
4
)
self
.
assertEqual
(
pairs
[
9
],
8
)
self
.
assertEqual
(
pairs
[
10
],
5
)
self
.
assertEqual
(
pairs
[
11
],
10
)
newpairs
=
pairs
[:
8
]
+
(
5
,
10
,
4
,
8
)
+
pairs
[
12
:]
b0
.
__setstate__
((
newpairs
,
nextbucket
))
tree
.
_check
()
# not caught
try
:
self
.
_callFUT
(
tree
)
except
AssertionError
,
detail
:
self
.
assertTrue
(
"key 5 at index 4 >= key 4 at index 5"
in
str
(
detail
))
else
:
self
.
fail
(
"expected check(tree) to catch the problem"
)
def
test_suite
():
def
test_suite
():
...
...
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