From 543eb176a9130a68dc1935bb0b74b7bdeca7f317 Mon Sep 17 00:00:00 2001
From: Per Cederqvist <ceder@lysator.liu.se>
Date: Tue, 8 Aug 2000 22:47:01 +0000
Subject: [PATCH] First commit.  Contains the first of many test cases.

---
 src/server/testsuite/lyskomd.0/gen-15.py | 186 +++++++++++++++++++++++
 1 file changed, 186 insertions(+)
 create mode 100644 src/server/testsuite/lyskomd.0/gen-15.py

diff --git a/src/server/testsuite/lyskomd.0/gen-15.py b/src/server/testsuite/lyskomd.0/gen-15.py
new file mode 100644
index 000000000..83cd0870a
--- /dev/null
+++ b/src/server/testsuite/lyskomd.0/gen-15.py
@@ -0,0 +1,186 @@
+import string
+
+class factory:
+    def __init__(self, bcc_trigg, bcc_visible, other_trigg, other_visible):
+        self.__bcc_trigg = bcc_trigg
+        self.__bcc_visible = bcc_trigg + bcc_visible
+        self.__other_trigg = bcc_trigg + other_trigg
+        self.__other_visible = bcc_trigg + other_trigg + other_visible
+        for n in bcc_visible:
+            if n not in self.__other_visible:
+                self.__other_visible.append(n)
+
+    def create(self, misc, conf, loc):
+        if misc == 15:
+            trigg = self.__bcc_trigg
+            visib = self.__bcc_visible
+        else:
+            trigg = self.__other_trigg
+            visib = self.__other_visible
+        return misc_group(misc, conf, loc, trigg, visib)
+
+
+class misc_group:
+    def __init__(self, misc, conf, loc, trigg, visib):
+        self.__misc = misc
+        self.__conf = conf
+        self.__loc = loc
+        self.__trigg = trigg
+        self.__visib = visib
+
+    def miscs(self, viewer, rec_time = None, sent_by = None, sent_at = None):
+        if viewer not in self.__visib:
+            return []
+        res = ["%d %d" % (self.__misc, self.__conf),
+               "6 %d" % self.__loc]
+        if rec_time != None:
+            res.append("7 $any_time")
+        if sent_by != None:
+            res.append("8 %d" % sent_by)
+        if sent_at != None:
+            res.append("9 $any_time")
+        return res
+
+    def trigger(self, viewer):
+        return viewer in self.__trigg
+ 
+
+# (creator, recipient): trigger-bcc, trigger-other, is-visible-for
+obj = { 
+    (6, 6): factory([6], [], [], [7, 8, 9]),
+    (6, 7): factory([7], [6], [], [8, 9]),
+    (6, 8): factory([8], [6], [], [7, 9]),
+    (6, 9): factory([9], [6], [], [7, 8]),
+    (6, 10): factory([7, 8], [6], [], [9]),
+    }
+
+class loc_no_allocator:
+    def __init__(self):
+        self.__prev = {}
+
+    def alloc(self, conf):
+        res = self.__prev.get(conf, 0) + 1
+        self.__prev[conf] = res
+        return res
+
+locno = loc_no_allocator()
+
+def talk_to(person):
+    global active_person
+
+    if active_person != person:
+        print "talk_to client %d" % (person - 6)
+        active_person = 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 = []
+    crea = []
+    for (m, r) in recipients:
+        misc.append(obj[(author, r)].create(m, r, locno.alloc(r)))
+        crea.append("%d %d" % (m, r))
+    talk_to(author)
+    cs = ref.next()
+    tx = tno.next()
+    print "send \"%d 86 [holl \"text %d\"] %d { %s } 0 { }\\n\"" % (
+        cs, tx, len(crea), string.join(crea, " "))
+    new_text(author, tx, misc)
+    talk_to(author)
+    print "simple_expect \"=%d %d\"" % (cs, tx)
+    return (tx, misc)
+
+PERSONS = range(6, 10)
+
+def new_text(author, txt, misc):
+    for viewer in PERSONS:
+        sent = 0
+        pattern = []
+        for m in misc:
+            if m.trigger(viewer):
+                sent = 1
+            pattern = pattern + m.miscs(viewer)
+        if sent:
+            talk_to(viewer)
+            print "simple_expect \":18 15 %d $any_time " \
+                  "%d 0 %d 0 %d { %s } 0 \\\\\\*\"" % (
+                txt, author, len("text %d" % txt),
+                len(pattern), string.join(pattern, " "))
+        else:
+            talk_to(viewer)
+            print "send \"%d 35\\n\"" % ref.next()
+            print "simple_expect \"=%d $any_time\"" % ref.curr
+
+def setup():
+    print "lyskomd_start"
+    for p in PERSONS:
+        print "client_start %d" % (p - 6)
+        talk_to(p)
+        print "send \"A3Hfoo\\n\""
+        print "simple_expect \"LysKOM\" \"connected %d\"" % p
+        print "send \"%d 80 4 { 14 15 16 17 }\\n\"" % ref.next()
+        print "simple_expect \"=%d\"" % ref.curr
+        print "send \"%d 89 [holl \"Person %d\"] [holl \"foo\"] " \
+              "00000000 0 { }\\n\"" % (ref.next(), p)
+        print "simple_expect \"=%d %d\"" % (ref.curr, p)
+        print "send \"%d 62 %d [holl \"foo\"] 0\\n\"" % (ref.next(), p)
+        print "simple_expect \"=%d\"" % ref.curr 
+    for (creator, conf, conf_type) in [
+        (7, 10, "0000"),
+        (7, 11, "1000"),
+        (7, 12, "1010"),
+        (9, 13, "0000"),
+        (9, 14, "1000"),
+        (9, 15, "1010"),
+        ]:
+
+        talk_to(creator)
+        print "send \"%d 88 [holl \"conf %d\"] %s 0 { }\\n\"" % (
+            ref.next(), conf, conf_type)
+        print "simple_expect \"=%d %d\"" % (ref.curr, conf)
+    talk_to(7)
+    for conf in [10, 11, 12]:
+        for reader in [7, 8]:
+            print "send \"%d 100 %d %d 100 3 00000000\\n\"" % (
+                ref.next(), conf, reader)
+            print "simple_expect \"=%d\"" % ref.curr
+    talk_to(9)
+    for conf in [13, 14, 15]:
+        for reader in [7, 8]:
+            print "send \"%d 100 %d %d 100 6 00000000\\n\"" % (
+                ref.next(), conf, reader)
+            print "simple_expect \"=%d\"" % ref.curr
+    talk_to(7)
+    print "send \"%d 15 7 7\\n\"" % ref.next()
+    print "simple_expect \"=%d\"" % ref.curr
+
+def disco():
+    for p in PERSONS[:-1]:
+        talk_to(p)
+        print "send \"%d 55 0\\n\"" % ref.next()
+        print "simple_expect \"=%d\"" % ref.curr
+        print "client_death %d" % (p - 6)
+    talk_to(PERSONS[-1])
+    print "send \"%d 62 5 [holl \"gazonk\"] 1\\n\"" % ref.next()
+    print "simple_expect \"=%d\"" % ref.curr
+    print "send \"%d 42 255\\n\"" % ref.next()
+    print "simple_expect \"=%d\"" % ref.curr
+    print "send \"%d 44 0\\n\"" % ref.next()
+    print "simple_expect \"=%d\"" % ref.curr
+    print "client_death %d" % (PERSONS[-1] - 6)
+    print "lyskomd_death"
+
+setup()
+create(6, [(0, 6)])
+disco()
-- 
GitLab