summaryrefslogtreecommitdiff
path: root/pexpect/tests/test_performance.py
blob: 883b5dbbba48c5f915162f5b2728443ded8f36eb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-
# $Id$

import unittest, time
import pexpect
import PexpectTestCase

# This isn't exactly a unit test, but it fits in nicely with the rest of the tests.

class PerformanceTestCase (PexpectTestCase.PexpectTestCase):

    """Testing the performance of expect, with emphasis on wading through long
    inputs. """

    def plain_range(self, n):
        e = pexpect.spawn('python')
        self.assertEqual(e.expect('>>>'), 0)
        e.sendline('for n in range(1, %d+1): print n' % n)
        self.assertEqual(e.expect(r'\.{3}'), 0)
        e.sendline('')
        self.assertEqual(e.expect(['inquisition', '%d' % n]), 1)

    def window_range(self, n):
        e = pexpect.spawn('python')
        self.assertEqual(e.expect('>>>'), 0)
        e.sendline('for n in range(1, %d+1): print n' % n)
        self.assertEqual(e.expect(r'\.{3}'), 0)
        e.sendline('')
        self.assertEqual(e.expect(['inquisition', '%d' % n], searchwindowsize=10), 1)

    def exact_range(self, n):
        e = pexpect.spawn('python')
        self.assertEqual(e.expect_exact(['>>>']), 0)
        e.sendline('for n in range(1, %d+1): print n' % n)
        self.assertEqual(e.expect_exact(['...']), 0)
        e.sendline('')
        self.assertEqual(e.expect_exact(['inquisition', '%d' % n],timeout=520), 1)

    def ewin_range(self, n):
        e = pexpect.spawn('python')
        self.assertEqual(e.expect_exact(['>>>']), 0)
        e.sendline('for n in range(1, %d+1): print n' % n)
        self.assertEqual(e.expect_exact(['...']), 0)
        e.sendline('')
        self.assertEqual(e.expect_exact(['inquisition', '%d' % n], searchwindowsize=10), 1)

    def faster_range(self, n):
        e = pexpect.spawn('python')
        self.assertEqual(e.expect('>>>'), 0)
        e.sendline('range(1, %d+1)' % n)
        self.assertEqual(e.expect(['inquisition', '%d' % n]), 1)

    def test_100000(self):
        start_time = time.time()
        self.plain_range (100000)
        print "100000 calls to plain_range:", (time.time() - start_time)
        start_time = time.time()
        self.window_range(100000)
        print "100000 calls to window_range:", (time.time() - start_time)
        start_time = time.time()
        self.exact_range (100000)
        print "100000 calls to exact_range:", (time.time() - start_time)
        start_time = time.time()
        self.ewin_range  (100000)
        print "100000 calls to ewin_range:", (time.time() - start_time)
        start_time = time.time()
        self.faster_range(100000)
        print "100000 calls to faster_range:", (time.time() - start_time)

if __name__ == "__main__":
    unittest.main()

suite = unittest.makeSuite(PerformanceTestCase,'test')