Beispiel #1
0
 def random_option(self, option):
     self.log_debug(11, 'random_option(%r)', option)
     in_sub = in_cat = False
     repeat = 1
     partial = None
     msg = Message()
     for item in option:
         if isinstance(item, str):
             if item == 'repeat': repeat = 1 + randrange(4)
             elif item == 'sub': in_sub = True
             elif item == 'cat': in_cat = True
             elif item == 'optional':
                 if randrange(3): partial = Message(msg)
                 else: break
             else:
                 if in_sub:
                     # Wrapped subexpression
                     while repeat:
                         result = self.random_expression(item)
                         if result:
                             msg &= result
                             repeat -= 1
                         else: return partial
                 elif in_cat:
                     # Category name
                     while repeat:
                         result = self.random_category(item)
                         if result:
                             msg.append(result)
                             repeat -= 1
                         else: return partial
                 else:
                     # Unwrapped subexpression(s)
                     while repeat:
                         result = self.random_expression(item)
                         if result:
                             msg.extend(result)
                             repeat -= 1
                         else: return partial
                 in_sub = in_cat = False
                 repeat = 1
         elif isinstance(item, Token):
             msg.extend([item] * repeat)
             repeat = 1
     return msg
Beispiel #2
0
 def test_max_neg_int(self):
     # What if we let it overflow the full 14 bits?
     last = Turn(WIN, protocol.max_neg_int - 1, seasons=(SPR, SUM, FAL, AUT, WIN))
     next = last.next()
     msg = Message(next)
     self.assertEqual(msg.fold(), [SPR, protocol.max_neg_int])
Beispiel #3
0
 def test_end_of_time(self):
     # What happens when we run out of years?
     last = Turn(WIN, protocol.max_pos_int - 1, seasons=(SPR, SUM, FAL, AUT, WIN))
     next = last.next()
     msg = Message(next)
     self.assertEqual(msg.fold(), [SPR, protocol.max_pos_int])
Beispiel #4
0
 def handle_press_HUH(self, sender, message):
     flattened = Message(message)
     while ERR in flattened: flattened.pop(flattened.index(ERR))
     folded = flattened.fold()
     self.handle_press_REJ(sender, folded)
Beispiel #5
0
 def test_unicode_folding(self):
     name = [StringToken(c) for c in self.greek.encode("utf-8")]
     msg = Message([NME, name, [u"v1.3"]])
     self.failUnlessEqual(msg.fold()[1][0], self.greek)