Example #1
0
 def test_wiretap(self):
     attic = Location("Attic", "A dark attic.")
     player = Player("fritz", "m")
     player.io = ConsoleIo(None)
     player.io.supports_smartquotes = False
     player.set_screen_sizes(0, 100)
     julie = NPC("julie", "f")
     julie.move(attic)
     player.move(attic)
     julie.tell("message for julie")
     attic.tell("message for room")
     self.assertEqual(["message for room\n"], player.get_output_paragraphs_raw())
     with self.assertRaises(SecurityViolation):
         player.create_wiretap(julie)
     player.privileges = {"wizard"}
     player.create_wiretap(julie)
     player.create_wiretap(attic)
     julie.tell("message for julie")
     attic.tell("message for room")
     output = player.get_output()
     self.assertTrue("[wiretapped from 'Attic': message for room]" in output)
     self.assertTrue("[wiretapped from 'julie': message for julie]" in output)
     self.assertTrue("[wiretapped from 'julie': message for room]" in output)
     self.assertTrue("message for room " in output)
     # test removing the wiretaps
     player.clear_wiretaps()
     import gc
     gc.collect()
     julie.tell("message for julie")
     attic.tell("message for room")
     self.assertEqual(["message for room\n"], player.get_output_paragraphs_raw())
Example #2
0
 def test_tell_formatted(self):
     player = Player("fritz", "m")
     player.io = ConsoleIo(None)
     player.set_screen_sizes(0, 100)
     player.tell("line1")
     player.tell("line2", "\n")
     player.tell("hello\nnewline")
     player.tell("\n")  # paragraph separator
     player.tell("ints", 42, 999)
     self.assertEqual("line1 line2  hello newline\nints 42 999\n", player.get_output())
     player.tell("para1", end=False)
     player.tell("para2", end=True)
     player.tell("para3")
     player.tell("\n")
     player.tell("para4", "\n", "para5")
     self.assertEqual("para1 para2\npara3\npara4  para5\n", player.get_output())
     player.tell("word " * 30)
     self.assertNotEqual(("word " * 30).strip(), player.get_output())
     player.tell("word " * 30, format=False)
     self.assertEqual(("word " * 30) + "\n", player.get_output())  # when format=False output should be unformatted
     player.tell("   xyz   \n  123", format=False)
     self.assertEqual("   xyz   \n  123\n", player.get_output())
     player.tell("line1", end=True)
     player.tell("\n")
     player.tell("line2", end=True)
     player.tell("\n")
     player.tell("\n")
     self.assertEqual(["line1\n", "\n", "line2\n", "\n", "\n"], player.get_output_paragraphs_raw())
     player.tell("line1", end=True)
     player.tell("\n")
     player.tell("line2", end=True)
     player.tell("\n")
     player.tell("\n")
     self.assertEqual("line1\n\nline2\n\n\n", player.get_output())
Example #3
0
 def test_peek_output(self):
     player = Player("fritz", "m")
     player.io = ConsoleIo(None)
     player.set_screen_sizes(0, 100)
     player.tell("line1")
     player.tell("line2", 42)
     self.assertEqual(["line1\nline2\n42\n"], player.peek_output_paragraphs_raw())
     self.assertEqual("line1 line2 42\n", player.get_output())
     self.assertEqual([], player.peek_output_paragraphs_raw())
Example #4
0
 def test_write_output(self):
     player = Player("julie", "f")
     player.io = ConsoleIo(None)
     old_stdout = sys.stdout
     sys.stdout = StringIO()
     try:
         player.tell("hello 1", end=True)
         player.tell("hello 2", end=True)
         player.write_output()
         self.assertEqual("  hello 1\n  hello 2\n", sys.stdout.getvalue())
     finally:
         sys.stdout = old_stdout
Example #5
0
 def test_input(self):
     player = Player("julie", "f")
     player.io = ConsoleIo(None)
     old_stdout = sys.stdout
     sys.stdout = StringIO()
     try:
         player.tell("first this text")
         player.store_input_line("input text\n")
         x = player.input("inputprompt")
         self.assertEqual("input text", x)
         self.assertEqual("  first this text\ninputprompt", sys.stdout.getvalue())  # should have outputted the buffered text
     finally:
         sys.stdout = old_stdout
Example #6
0
 def test_tell_formats(self):
     player = Player("fritz", "m")
     player.io = ConsoleIo(None)
     player.set_screen_sizes(0, 100)
     player.tell("a b c", format=True)
     player.tell("d e f", format=True)
     self.assertEqual(["a b c\nd e f\n"], player.get_output_paragraphs_raw())
     player.tell("a b c", format=True)
     player.tell("d e f", format=True)
     self.assertEqual("a b c d e f\n", player.get_output())
     player.tell("a b c", format=False)
     player.tell("d e f", format=False)
     self.assertEqual(["a b c\nd e f\n"], player.get_output_paragraphs_raw())
     player.tell("a b c", format=False)
     player.tell("d e f", format=False)
     self.assertEqual("a b c\nd e f\n", player.get_output())
     player.tell("a b c", format=True)
     player.tell("d e f", format=False)
     self.assertEqual(["a b c\n", "d e f\n"], player.get_output_paragraphs_raw())
     player.tell("a b c", format=True)
     player.tell("d e f", format=False)
     self.assertEqual("a b c\nd e f\n", player.get_output())