Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
lyskom-server-ceder-1616-generations-topgit
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Per Cederqvist
lyskom-server-ceder-1616-generations-topgit
Commits
0e34c9e8
Commit
0e34c9e8
authored
Sep 03, 2000
by
Per Cederqvist
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
(text_stat): New class. Rewrite the rest of this file to use it.
Give authors special privileges regarding bcc-recpts.
parent
06a1d24d
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
251 additions
and
157 deletions
+251
-157
src/server/testsuite/lyskomd.0/gen-15.py
src/server/testsuite/lyskomd.0/gen-15.py
+251
-157
No files found.
src/server/testsuite/lyskomd.0/gen-15.py
View file @
0e34c9e8
...
...
@@ -9,9 +9,12 @@ EXTENDED = 0
DEBUG
=
1
class
factory
:
def
__init__
(
self
,
bcc_trigg
,
bcc_visible
,
other_trigg
,
other_visible
,
rd
):
def
__init__
(
self
,
bcc_trigg
,
bcc_visible
,
bcc_author_visible
,
other_trigg
,
other_visible
,
rd
):
self
.
__bcc_trigg
=
bcc_trigg
self
.
__bcc_visible
=
bcc_trigg
+
bcc_visible
self
.
__bcc_author_visible
=
(
bcc_trigg
+
bcc_visible
+
bcc_author_visible
)
self
.
__other_trigg
=
bcc_trigg
+
other_trigg
self
.
__other_visible
=
bcc_trigg
+
other_trigg
+
other_visible
for
n
in
bcc_visible
:
...
...
@@ -19,16 +22,18 @@ class factory:
self
.
__other_visible
.
append
(
n
)
self
.
__readable
=
bcc_trigg
+
other_trigg
+
rd
def
create
(
self
,
misc
,
conf
,
loc
,
def
create
(
self
,
author
,
misc
,
conf
,
loc
,
rec_time
=
None
,
sent_by
=
None
,
sent_at
=
None
):
if
misc
==
15
:
trigg
=
self
.
__bcc_trigg
visib
=
self
.
__bcc_visible
author_visib
=
self
.
__bcc_author_visible
else
:
trigg
=
self
.
__other_trigg
visib
=
self
.
__other_visible
return
misc_group
(
misc
,
conf
,
loc
,
trigg
,
visib
,
self
.
__readable
,
rec_time
,
sent_by
,
sent_at
)
author_visib
=
self
.
__other_visible
return
misc_group
(
misc
,
conf
,
loc
,
trigg
,
visib
,
author_visib
,
self
.
__readable
,
rec_time
,
sent_by
,
sent_at
,
author
)
def
a_list_pattern
(
lst
):
...
...
@@ -40,22 +45,36 @@ def a_list_pattern(lst):
def
a_list_rq
(
lst
):
return
"%d { %s }"
%
(
len
(
lst
),
string
.
join
(
lst
,
" "
))
class
sequence_allocator
:
def
__init__
(
self
,
start
):
self
.
curr
=
start
def
next
(
self
):
self
.
curr
=
self
.
curr
+
1
return
self
.
curr
class
misc_group
:
def
__init__
(
self
,
misc
,
conf
,
loc
,
trigg
,
visib
,
readable
,
re
c_time
,
sent_by
,
sent_at
):
def
__init__
(
self
,
misc
,
conf
,
loc
,
trigg
,
visib
,
visib_by_author
,
re
adable
,
rec_time
,
sent_by
,
sent_at
,
author
):
self
.
__misc
=
misc
self
.
__conf
=
conf
self
.
__loc
=
loc
self
.
__trigg
=
trigg
self
.
__visib
=
visib
self
.
__visib_by_author
=
visib_by_author
self
.
__readable
=
readable
self
.
__rec_time
=
rec_time
self
.
__sent_by
=
sent_by
self
.
__sent_at
=
sent_at
self
.
__author
=
author
def
visible
(
self
,
viewer
):
return
(
viewer
in
self
.
__visib
or
(
viewer
==
self
.
__author
and
viewer
in
self
.
__visib_by_author
))
def
miscs
(
self
,
viewer
):
if
viewer
not
in
self
.
__visib
:
if
not
self
.
visible
(
viewer
)
:
return
[]
res
=
[
"%d %d"
%
(
self
.
__misc
,
self
.
__conf
),
"6 %d"
%
self
.
__loc
]
...
...
@@ -67,63 +86,93 @@ class misc_group:
res
.
append
(
"9 $any_time"
)
return
res
def
async
(
self
,
viewer
,
t
xt
):
if
viewer
not
in
self
.
__visib
:
def
async
(
self
,
viewer
,
t
ext_no
):
if
not
self
.
visible
(
viewer
)
:
return
None
return
"%d %d %d"
%
(
t
xt
,
self
.
__conf
,
self
.
__misc
)
return
"%d %d %d"
%
(
t
ext_no
,
self
.
__conf
,
self
.
__misc
)
def
trigger
(
self
,
viewer
):
return
viewer
in
self
.
__trigg
def
readable
(
self
,
viewer
):
return
viewer
in
self
.
__readable
# (creator, recipient): bcc-trigg, bcc-vis, other-trigg, other-vis, rd
def
recipient
(
self
):
return
self
.
__conf
def
recipient_type
(
self
):
return
self
.
__misc
class
text_stat
:
tno
=
sequence_allocator
(
0
)
def
__init__
(
self
,
author
):
self
.
__author
=
author
self
.
__misc_groups
=
[]
self
.
__text_no
=
self
.
tno
.
next
()
def
add_misc_group
(
self
,
misc_grp
):
assert
isinstance
(
misc_grp
,
misc_group
)
self
.
__misc_groups
.
append
(
misc_grp
)
def
author
(
self
):
return
self
.
__author
def
misc_groups
(
self
):
return
self
.
__misc_groups
[:]
def
text_no
(
self
):
return
self
.
__text_no
def
remove_misc_group
(
self
,
removed
):
self
.
__misc_groups
.
remove
(
removed
)
# (creat, rcpt): bcc-trigg, bcc-vis, bcc-author-vis, other-trigg, other-vis, rd
obj
=
{
(
6
,
6
):
factory
([
6
],
[],
[],
[
7
,
8
,
9
],
[]),
(
6
,
7
):
factory
([],
[
6
,
7
],
[],
[
8
,
9
],
[
7
]),
(
6
,
8
):
factory
([
8
],
[
6
],
[],
[
7
,
9
],
[]),
(
6
,
9
):
factory
([
9
],
[
6
],
[],
[
7
,
8
],
[]),
(
6
,
10
):
factory
([
7
,
8
],
[
6
,
9
],
[],
[],
[
6
,
9
]),
(
6
,
11
):
factory
([
7
,
8
],
[
6
],
[],
[
9
],
[]),
(
6
,
12
):
factory
([
7
,
8
],
[
6
],
[],
[
9
],
[]),
(
6
,
13
):
factory
([
7
,
8
],
[
6
,
9
],
[],
[],
[
6
,
9
]),
(
6
,
14
):
factory
([
7
,
8
],
[
6
,
9
],
[],
[],
[
9
]),
(
6
,
15
):
factory
([
7
,
8
],
[
6
,
9
],
[],
[],
[
9
]),
(
7
,
6
):
factory
([
6
],
[
7
],
[],
[
8
,
9
],
[]),
(
7
,
7
):
factory
([],
[
7
],
[],
[
6
,
8
,
9
],
[
7
]),
(
7
,
8
):
factory
([
8
],
[
7
],
[],
[
6
,
7
,
9
],
[]),
(
7
,
9
):
factory
([
9
],
[
7
],
[],
[
6
,
7
,
8
],
[]),
(
7
,
10
):
factory
([
7
,
8
],
[
6
,
9
],
[],
[],
[
6
,
9
]),
(
7
,
11
):
factory
([
7
,
8
],
[],
[],
[
6
,
9
],
[]),
(
7
,
12
):
factory
([
7
,
8
],
[],
[],
[],
[]),
(
7
,
13
):
factory
([
7
,
8
],
[
6
,
9
],
[],
[],
[
6
,
9
]),
(
7
,
14
):
factory
([
7
,
8
],
[
9
],
[],
[
6
],
[
9
]),
(
7
,
15
):
factory
([
7
,
8
],
[
9
],
[],
[],
[
9
]),
(
8
,
6
):
factory
([
6
],
[
8
],
[],
[
7
,
9
],
[]),
(
8
,
7
):
factory
([],
[
7
,
8
],
[],
[
6
,
9
],
[
7
]),
(
8
,
8
):
factory
([
8
],
[],
[],
[
6
,
7
,
9
],
[]),
(
8
,
9
):
factory
([
9
],
[
8
],
[],
[
6
,
7
],
[]),
(
8
,
10
):
factory
([
7
,
8
],
[
6
,
9
],
[],
[],
[
6
,
9
]),
(
8
,
11
):
factory
([
7
,
8
],
[],
[],
[
6
,
9
],
[]),
(
8
,
12
):
factory
([
7
,
8
],
[],
[],
[],
[]),
(
8
,
13
):
factory
([
7
,
8
],
[
6
,
9
],
[],
[],
[
6
,
9
]),
(
8
,
14
):
factory
([
7
,
8
],
[
9
],
[],
[
6
],
[
9
]),
(
8
,
15
):
factory
([
7
,
8
],
[
9
],
[],
[],
[
9
]),
(
9
,
6
):
factory
([
6
],
[
9
],
[],
[
7
,
8
],
[]),
(
9
,
7
):
factory
([],
[
7
,
9
],
[],
[
6
,
8
],
[
7
]),
(
9
,
8
):
factory
([
8
],
[
9
],
[],
[
6
,
7
],
[]),
(
9
,
9
):
factory
([
9
],
[],
[],
[
6
,
7
,
8
],
[]),
(
9
,
10
):
factory
([
7
,
8
],
[
6
,
9
],
[],
[],
[
6
,
9
]),
(
9
,
11
):
factory
([
7
,
8
],
[
9
],
[],
[
6
],
[]),
(
9
,
12
):
factory
([
7
,
8
],
[
9
],
[],
[],
[]),
(
9
,
13
):
factory
([
7
,
8
],
[
6
,
9
],
[],
[],
[
6
,
9
]),
(
9
,
14
):
factory
([
7
,
8
],
[
9
],
[],
[
6
],
[
9
]),
(
9
,
15
):
factory
([
7
,
8
],
[
9
],
[],
[],
[
9
]),
(
6
,
6
):
factory
([
6
],
[],
[
7
,
8
,
9
],
[
],
[
7
,
8
,
9
],
[]),
(
6
,
7
):
factory
([],
[
6
,
7
],
[
8
,
9
],
[
],
[
8
,
9
],
[
7
]),
(
6
,
8
):
factory
([
8
],
[
6
],
[
7
,
9
],
[
],
[
7
,
9
],
[]),
(
6
,
9
):
factory
([
9
],
[
6
],
[
7
,
8
],
[
],
[
7
,
8
],
[]),
(
6
,
10
):
factory
([
7
,
8
],
[
6
,
9
],
[],
[],
[
],
[
6
,
9
]),
(
6
,
11
):
factory
([
7
,
8
],
[
6
],
[
9
],
[
],
[
9
],
[]),
(
6
,
12
):
factory
([
7
,
8
],
[
6
],
[],
[
],
[
9
],
[]),
(
6
,
13
):
factory
([
7
,
8
],
[
6
,
9
],
[],
[],
[
],
[
6
,
9
]),
(
6
,
14
):
factory
([
7
,
8
],
[
6
,
9
],
[],
[],
[
],
[
9
]),
(
6
,
15
):
factory
([
7
,
8
],
[
6
,
9
],
[],
[],
[
],
[
9
]),
(
7
,
6
):
factory
([
6
],
[
7
],
[
8
,
9
],
[
],
[
8
,
9
],
[]),
(
7
,
7
):
factory
([],
[
7
],
[
6
,
8
,
9
],
[
],
[
6
,
8
,
9
],
[
7
]),
(
7
,
8
):
factory
([
8
],
[
7
],
[
6
,
9
],
[
],
[
6
,
7
,
9
],
[]),
(
7
,
9
):
factory
([
9
],
[
7
],
[
6
,
8
],
[
],
[
6
,
7
,
8
],
[]),
(
7
,
10
):
factory
([
7
,
8
],
[
6
,
9
],
[],
[],
[
],
[
6
,
9
]),
(
7
,
11
):
factory
([
7
,
8
],
[],
[
6
,
9
],
[
],
[
6
,
9
],
[]),
(
7
,
12
):
factory
([
7
,
8
],
[],
[],
[],
[]
,
[]
),
(
7
,
13
):
factory
([
7
,
8
],
[
6
,
9
],
[],
[],
[
],
[
6
,
9
]),
(
7
,
14
):
factory
([
7
,
8
],
[
9
],
[
6
],
[
],
[
6
],
[
9
]),
(
7
,
15
):
factory
([
7
,
8
],
[
9
],
[],
[],
[
],
[
9
]),
(
8
,
6
):
factory
([
6
],
[
8
],
[
7
,
9
],
[
],
[
7
,
9
],
[]),
(
8
,
7
):
factory
([],
[
7
,
8
],
[
6
,
9
],
[
],
[
6
,
9
],
[
7
]),
(
8
,
8
):
factory
([
8
],
[],
[
6
,
7
,
9
],
[
],
[
6
,
7
,
9
],
[]),
(
8
,
9
):
factory
([
9
],
[
8
],
[
6
,
7
],
[
],
[
6
,
7
],
[]),
(
8
,
10
):
factory
([
7
,
8
],
[
6
,
9
],
[],
[],
[
],
[
6
,
9
]),
(
8
,
11
):
factory
([
7
,
8
],
[],
[
6
,
9
],
[
],
[
6
,
9
],
[]),
(
8
,
12
):
factory
([
7
,
8
],
[],
[],
[],
[]
,
[]
),
(
8
,
13
):
factory
([
7
,
8
],
[
6
,
9
],
[],
[],
[
],
[
6
,
9
]),
(
8
,
14
):
factory
([
7
,
8
],
[
9
],
[
6
],
[
],
[
6
],
[
9
]),
(
8
,
15
):
factory
([
7
,
8
],
[
9
],
[],
[],
[
],
[
9
]),
(
9
,
6
):
factory
([
6
],
[
9
],
[
7
,
8
],
[
],
[
7
,
8
],
[]),
(
9
,
7
):
factory
([],
[
7
,
9
],
[
6
,
8
],
[
],
[
6
,
8
],
[
7
]),
(
9
,
8
):
factory
([
8
],
[
9
],
[
6
,
7
],
[
],
[
6
,
7
],
[]),
(
9
,
9
):
factory
([
9
],
[],
[
6
,
7
,
8
],
[
],
[
6
,
7
,
8
],
[]),
(
9
,
10
):
factory
([
7
,
8
],
[
6
,
9
],
[],
[],
[
],
[
6
,
9
]),
(
9
,
11
):
factory
([
7
,
8
],
[
9
],
[
6
],
[
],
[
6
],
[]),
(
9
,
12
):
factory
([
7
,
8
],
[
9
],
[],
[],
[]
,
[]
),
(
9
,
13
):
factory
([
7
,
8
],
[
6
,
9
],
[],
[],
[
],
[
6
,
9
]),
(
9
,
14
):
factory
([
7
,
8
],
[
9
],
[
6
],
[
],
[
6
],
[
9
]),
(
9
,
15
):
factory
([
7
,
8
],
[
9
],
[],
[],
[
],
[
9
]),
}
...
...
@@ -147,70 +196,68 @@ def talk_to(person):
active_person
=
None
class
sequence_allocator
:
def
__init__
(
self
,
start
):
self
.
curr
=
start
def
next
(
self
):
self
.
curr
=
self
.
curr
+
1
return
self
.
curr
ref
=
sequence_allocator
(
999
)
tno
=
sequence_allocator
(
0
)
def
create
(
author
,
recipients
):
misc
=
[]
print
txt
=
text_stat
(
author
)
crea
=
[]
for
(
m
,
r
)
in
recipients
:
misc
.
append
(
obj
[(
author
,
r
)].
create
(
m
,
r
,
locno
.
alloc
(
r
)))
txt
.
add_misc_group
(
obj
[(
author
,
r
)].
create
(
author
,
m
,
r
,
locno
.
alloc
(
r
)))
crea
.
append
(
"%d %d"
%
(
m
,
r
))
talk_to
(
author
)
cs
=
ref
.
next
()
tx
=
tno
.
next
(
)
print
"# Creating text %d by %d"
%
(
txt
.
text_no
(),
txt
.
author
()
)
print
"send
\"
%d 86 [holl
\"
text %d
\"
] %s 0 { }
\\
n
\"
"
%
(
cs
,
tx
,
a_list_rq
(
crea
))
new_text
(
author
,
tx
,
misc
)
talk_to
(
author
)
print
"simple_expect
\"
=%d %d
\"
"
%
(
cs
,
tx
)
verify_text_stat
(
tx
,
author
,
misc
)
return
(
tx
,
misc
)
def
add_misc
(
author
,
txt
,
misc_type
,
rcpt
,
old_misc
):
misc
=
obj
[(
author
,
rcpt
)].
create
(
misc_type
,
rcpt
,
locno
.
alloc
(
rcpt
),
sent_at
=
1
)
cs
,
txt
.
text_no
(),
a_list_rq
(
crea
))
new_text
(
txt
)
talk_to
(
author
)
print
"simple_expect
\"
=%d %d
\"
"
%
(
cs
,
txt
.
text_no
())
verify_text_stat
(
txt
)
return
txt
def
add_misc
(
adder
,
txt
,
misc_type
,
rcpt
):
sent_by
=
None
if
adder
!=
txt
.
author
():
sent_by
=
adder
misc
=
obj
[(
adder
,
rcpt
)].
create
(
txt
.
author
(),
misc_type
,
rcpt
,
locno
.
alloc
(
rcpt
),
sent_at
=
1
,
sent_by
=
sent_by
)
talk_to
(
adder
)
cs
=
ref
.
next
()
print
"send
\"
%d 30 %d %d %d
\\
n
\"
"
%
(
cs
,
txt
,
rcpt
,
misc_type
)
new_recipient
(
author
,
txt
,
misc
,
old_misc
)
talk_to
(
author
)
print
"# Adding recipient to text %d; adder %d"
%
(
txt
.
text_no
(),
adder
)
print
"send
\"
%d 30 %d %d %d
\\
n
\"
"
%
(
cs
,
txt
.
text_no
(),
rcpt
,
misc_type
)
new_recipient
(
adder
,
txt
,
misc
)
talk_to
(
adder
)
print
"simple_expect
\"
=%d
\"
"
%
cs
return
misc
txt
.
add_misc_group
(
misc
)
def
verify_text_stat
(
tx
,
author
,
misc
):
def
verify_text_stat
(
tx
t
):
for
p
in
PERSONS
:
talk_to
(
p
)
print
"send
\"
%d 90 %d
\\
n
\"
"
%
(
ref
.
next
(),
tx
)
visib
=
p
==
author
print
"send
\"
%d 90 %d
\\
n
\"
"
%
(
ref
.
next
(),
tx
t
.
text_no
()
)
visib
=
p
==
txt
.
author
()
pattern
=
[]
for
m
in
misc
:
for
m
in
txt
.
misc_groups
()
:
pattern
=
pattern
+
m
.
miscs
(
p
)
if
m
.
readable
(
p
):
visib
=
1
if
visib
:
print
"simple_expect
\"
=%d $any_time "
\
"%d 0 %d 0 %s 0
\\\\\\
*
\"
"
%
(
ref
.
curr
,
author
,
len
(
"text %d"
%
tx
),
ref
.
curr
,
txt
.
author
(),
len
(
"text %d"
%
txt
.
text_no
()
),
a_list_pattern
(
pattern
))
else
:
print
"simple_expect
\"
%%%d 14 %d
\"
"
%
(
ref
.
curr
,
tx
)
print
"simple_expect
\"
%%%d 14 %d
\"
"
%
(
ref
.
curr
,
tx
t
.
text_no
()
)
PERSONS
=
range
(
6
,
10
)
def
new_text
(
author
,
txt
,
misc
):
def
new_text
(
txt
):
for
viewer
in
PERSONS
:
sent
=
0
pattern
=
[]
for
m
in
misc
:
for
m
in
txt
.
misc_groups
()
:
if
m
.
trigger
(
viewer
):
sent
=
1
pattern
=
pattern
+
m
.
miscs
(
viewer
)
...
...
@@ -218,20 +265,20 @@ def new_text(author, txt, misc):
talk_to
(
viewer
)
print
"simple_expect
\"
:18 15 %d $any_time "
\
"%d 0 %d 0 %s 0
\\\\\\
*
\"
"
%
(
txt
,
author
,
len
(
"text %d"
%
txt
),
txt
.
text_no
(),
txt
.
author
(),
len
(
"text %d"
%
txt
.
text_no
()
),
a_list_pattern
(
pattern
))
elif
author
!=
viewer
and
DEBUG
:
elif
txt
.
author
()
!=
viewer
and
DEBUG
:
talk_to
(
viewer
)
print
"send
\"
%d 35
\\
n
\"
"
%
ref
.
next
()
print
"simple_expect
\"
=%d $any_time
\"
"
%
ref
.
curr
def
new_recipient
(
author
,
tx
,
misc
,
old_
misc
):
def
new_recipient
(
author
,
tx
t
,
misc
):
for
viewer
in
PERSONS
:
sent
=
0
for
m
in
old_misc
+
[
misc
]:
for
m
in
txt
.
misc_groups
()
+
[
misc
]:
if
m
.
trigger
(
viewer
):
sent
=
1
async
=
misc
.
async
(
viewer
,
tx
)
async
=
misc
.
async
(
viewer
,
tx
t
.
text_no
()
)
if
sent
and
async
!=
None
:
talk_to
(
viewer
)
print
"simple_expect
\"
:3 16 %s
\"
"
%
async
...
...
@@ -240,19 +287,20 @@ def new_recipient(author, tx, misc, old_misc):
print
"send
\"
%d 35
\\
n
\"
"
%
ref
.
next
()
print
"simple_expect
\"
=%d $any_time
\"
"
%
ref
.
curr
def
delete
(
author
,
txt
,
misc
):
def
delete
(
deleter
,
txt
):
nr
=
ref
.
next
()
talk_to
(
author
)
print
"send
\"
%d 29 %d
\\
n
\"
"
%
(
nr
,
txt
)
deleted_text
(
author
,
txt
,
misc
)
talk_to
(
author
)
talk_to
(
deleter
)
print
"# Deleting text %d; deleter %d"
%
(
txt
.
text_no
(),
deleter
)
print
"send
\"
%d 29 %d
\\
n
\"
"
%
(
nr
,
txt
.
text_no
())
deleted_text
(
deleter
,
txt
)
talk_to
(
deleter
)
print
"simple_expect
\"
=%d
\"
"
%
nr
def
deleted_text
(
author
,
txt
,
misc
):
def
deleted_text
(
deleter
,
txt
):
for
viewer
in
PERSONS
:
sent
=
0
pattern
=
[]
for
m
in
misc
:
for
m
in
txt
.
misc_groups
()
:
if
m
.
trigger
(
viewer
):
sent
=
1
pattern
=
pattern
+
m
.
miscs
(
viewer
)
...
...
@@ -260,9 +308,41 @@ def deleted_text(author, txt, misc):
talk_to
(
viewer
)
print
"simple_expect
\"
:18 14 %d $any_time "
\
"%d 0 %d 0 %s 0
\\\\\\
*
\"
"
%
(
txt
,
author
,
len
(
"text %d"
%
txt
),
txt
.
text_no
(),
txt
.
author
(),
len
(
"text %d"
%
txt
.
text_no
()
),
a_list_pattern
(
pattern
))
elif
author
!=
viewer
and
DEBUG
:
elif
deleter
!=
viewer
and
DEBUG
:
talk_to
(
viewer
)
print
"send
\"
%d 35
\\
n
\"
"
%
ref
.
next
()
print
"simple_expect
\"
=%d $any_time
\"
"
%
ref
.
curr
def
remove_misc
(
remover
,
txt
,
recip
):
for
removed
in
txt
.
misc_groups
():
if
removed
.
recipient
()
==
recip
:
break
else
:
raise
'no-such-recipient'
nr
=
ref
.
next
()
talk_to
(
remover
)
print
"# Removing recipient from text %d; remover %d"
%
(
txt
.
text_no
(),
remover
)
print
"send
\"
%d 31 %d %d
\\
n
\"
"
%
(
nr
,
txt
.
text_no
(),
recip
)
sub_recipient
(
remover
,
txt
,
recip
,
removed
.
recipient_type
())
talk_to
(
remover
)
print
"simple_expect
\"
=%d
\"
"
%
nr
txt
.
remove_misc_group
(
removed
)
def
sub_recipient
(
remover
,
txt
,
recip
,
misc_type
):
for
viewer
in
PERSONS
:
sent
=
0
for
m
in
txt
.
misc_groups
():
if
m
.
trigger
(
viewer
):
sent
=
1
if
sent
:
talk_to
(
viewer
)
print
"simple_expect
\"
:3 17 %d %d %s
\"
"
%
(
txt
.
text_no
(),
recip
,
misc_type
)
elif
remover
!=
viewer
and
DEBUG
:
talk_to
(
viewer
)
print
"send
\"
%d 35
\\
n
\"
"
%
ref
.
next
()
print
"simple_expect
\"
=%d $any_time
\"
"
%
ref
.
curr
...
...
@@ -326,56 +406,70 @@ def disco():
print
"client_death %d"
%
(
PERSONS
[
-
1
]
-
6
)
print
"lyskomd_death"
setup
()
print
"send_user
\"
testing simple create+delete
\\
n
\"
"
for
author
in
[
6
,
7
,
8
,
9
]:
for
misc_type
in
[
0
,
1
,
15
]:
for
rcpt
in
[
6
,
7
,
8
,
9
,
10
,
11
,
12
,
13
,
14
,
15
]:
if
author
in
[
6
,
9
]
and
rcpt
in
[
12
,
15
]:
continue
(
txt
,
misc
)
=
create
(
author
,
[(
misc_type
,
rcpt
)])
delete
(
author
,
txt
,
misc
)
if
not
EXTENDED
:
continue
for
second_misc_type
in
[
0
,
1
,
15
]:
for
second_rcpt
in
[
6
,
7
,
8
,
9
,
10
,
11
,
12
,
13
,
14
,
15
]:
if
rcpt
==
second_rcpt
:
continue
if
author
in
[
6
,
9
]
and
second_rcpt
in
[
12
,
15
]:
continue
(
txt
,
misc
)
=
create
(
author
,
[
(
misc_type
,
rcpt
),
(
second_misc_type
,
second_rcpt
)])
delete
(
author
,
txt
,
misc
)
print
"send_user
\"
testing simple create+add+delete
\\
n
\"
"
for
author
in
[
6
,
7
,
8
,
9
]:
for
misc_type
in
[
0
,
1
,
15
]:
for
rcpt
in
[
6
,
7
,
8
,
9
,
10
,
11
,
12
,
13
,
14
,
15
]:
if
author
in
[
6
,
9
]
and
rcpt
in
[
12
,
15
]:
continue
(
txt
,
misc
)
=
create
(
author
,
[])
misc
.
append
(
add_misc
(
author
,
txt
,
misc_type
,
rcpt
,
misc
))
verify_text_stat
(
txt
,
author
,
misc
)
delete
(
author
,
txt
,
misc
)
if
not
EXTENDED
:
continue
for
second_misc_type
in
[
0
,
1
,
15
]:
for
second_rcpt
in
[
6
,
7
,
8
,
9
,
10
,
11
,
12
,
13
,
14
,
15
]:
if
rcpt
==
second_rcpt
:
continue
if
author
in
[
6
,
9
]
and
second_rcpt
in
[
12
,
15
]:
continue
(
txt
,
misc
)
=
create
(
author
,
[])
misc
.
append
(
add_misc
(
author
,
txt
,
misc_type
,
rcpt
,
misc
))
verify_text_stat
(
txt
,
author
,
misc
)
misc
.
append
(
add_misc
(
author
,
txt
,
second_misc_type
,
second_rcpt
,
misc
))
verify_text_stat
(
txt
,
author
,
misc
)
delete
(
author
,
txt
,
misc
)
disco
()
def
simple_create_delete
():
print
"send_user
\"
testing simple create+delete
\\
n
\"
"
for
author
in
[
6
,
7
,
8
,
9
]:
for
misc_type
in
[
0
,
1
,
15
]:
for
rcpt
in
[
6
,
7
,
8
,
9
,
10
,
11
,
12
,
13
,
14
,
15
]:
if
author
in
[
6
,
9
]
and
rcpt
in
[
12
,
15
]:
continue
txt
=
create
(
author
,
[(
misc_type
,
rcpt
)])
delete
(
author
,
txt
)
if
not
EXTENDED
:
continue
for
second_misc_type
in
[
0
,
1
,
15
]:
for
second_rcpt
in
[
6
,
7
,
8
,
9
,
10
,
11
,
12
,
13
,
14
,
15
]:
if
rcpt
==
second_rcpt
:
continue
if
author
in
[
6
,
9
]
and
second_rcpt
in
[
12
,
15
]:
continue
txt
=
create
(
author
,
[
(
misc_type
,
rcpt
),
(
second_misc_type
,
second_rcpt
)])
delete
(
author
,
txt
)
def
simple_create_add_delete
():
print
"send_user
\"
testing simple create+add+delete
\\
n
\"
"
for
author
in
[
6
,
7
,
8
,
9
]:
for
misc_type
in
[
0
,
1
,
15
]:
for
rcpt
in
[
6
,
7
,
8
,
9
,
10
,
11
,
12
,
13
,
14
,
15
]:
if
author
in
[
6
,
9
]
and
rcpt
in
[
12
,
15
]:
continue
txt
=
create
(
author
,
[])
add_misc
(
author
,
txt
,
misc_type
,
rcpt
)
verify_text_stat
(
txt
)
delete
(
author
,
txt
)
if
not
EXTENDED
:
continue
for
second_misc_type
in
[
0
,
1
,
15
]:
for
second_rcpt
in
[
6
,
7
,
8
,
9
,
10
,
11
,
12
,
13
,
14
,
15
]:
if
rcpt
==
second_rcpt
:
continue
if
author
in
[
6
,
9
]
and
second_rcpt
in
[
12
,
15
]:
continue
txt
=
create
(
author
,
[])
add_misc
(
author
,
txt
,
misc_type
,
rcpt
)
verify_text_stat
(
txt
)
add_misc
(
author
,
txt
,
second_misc_type
,
second_rcpt
)
verify_text_stat
(
txt
)
delete
(
author
,
txt
)
def
special_cases
():
print
"send_user
\"
testing some special cases
\\
n
\"
"
txt
=
create
(
7
,
[(
0
,
10
)])
add_misc
(
6
,
txt
,
15
,
8
)
verify_text_stat
(
txt
)
remove_misc
(
7
,
txt
,
10
)
verify_text_stat
(
txt
)
delete
(
7
,
txt
)
def
generate_test
():
setup
()
simple_create_delete
()
simple_create_add_delete
()
special_cases
()
disco
()
generate_test
()
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