Upstream version 9.37.197.0
[platform/framework/web/crosswalk.git] / src / third_party / trace-viewer / third_party / pywebsocket / src / test / test_memorizingfile.py
1 #!/usr/bin/env python
2 #
3 # Copyright 2011, Google Inc.
4 # All rights reserved.
5 #
6 # Redistribution and use in source and binary forms, with or without
7 # modification, are permitted provided that the following conditions are
8 # met:
9 #
10 #     * Redistributions of source code must retain the above copyright
11 # notice, this list of conditions and the following disclaimer.
12 #     * Redistributions in binary form must reproduce the above
13 # copyright notice, this list of conditions and the following disclaimer
14 # in the documentation and/or other materials provided with the
15 # distribution.
16 #     * Neither the name of Google Inc. nor the names of its
17 # contributors may be used to endorse or promote products derived from
18 # this software without specific prior written permission.
19 #
20 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31
32
33 """Tests for memorizingfile module."""
34
35
36 import StringIO
37 import unittest
38
39 import set_sys_path  # Update sys.path to locate mod_pywebsocket module.
40
41 from mod_pywebsocket import memorizingfile
42
43
44 class UtilTest(unittest.TestCase):
45     """A unittest for memorizingfile module."""
46
47     def check(self, memorizing_file, num_read, expected_list):
48         for unused in range(num_read):
49             memorizing_file.readline()
50         actual_list = memorizing_file.get_memorized_lines()
51         self.assertEqual(len(expected_list), len(actual_list))
52         for expected, actual in zip(expected_list, actual_list):
53             self.assertEqual(expected, actual)
54
55     def check_with_size(self, memorizing_file, read_size, expected_list):
56         read_list = []
57         read_line = ''
58         while True:
59             line = memorizing_file.readline(read_size)
60             line_length = len(line)
61             self.assertTrue(line_length <= read_size)
62             if line_length == 0:
63                 if read_line != '':
64                     read_list.append(read_line)
65                 break
66             read_line += line
67             if line[line_length - 1] == '\n':
68                 read_list.append(read_line)
69                 read_line = ''
70         actual_list = memorizing_file.get_memorized_lines()
71         self.assertEqual(len(expected_list), len(actual_list))
72         self.assertEqual(len(expected_list), len(read_list))
73         for expected, actual, read in zip(expected_list, actual_list,
74                                           read_list):
75             self.assertEqual(expected, actual)
76             self.assertEqual(expected, read)
77
78     def test_get_memorized_lines(self):
79         memorizing_file = memorizingfile.MemorizingFile(StringIO.StringIO(
80                 'Hello\nWorld\nWelcome'))
81         self.check(memorizing_file, 3, ['Hello\n', 'World\n', 'Welcome'])
82
83     def test_get_memorized_lines_limit_memorized_lines(self):
84         memorizing_file = memorizingfile.MemorizingFile(StringIO.StringIO(
85                 'Hello\nWorld\nWelcome'), 2)
86         self.check(memorizing_file, 3, ['Hello\n', 'World\n'])
87
88     def test_get_memorized_lines_empty_file(self):
89         memorizing_file = memorizingfile.MemorizingFile(StringIO.StringIO(
90                 ''))
91         self.check(memorizing_file, 10, [])
92
93     def test_get_memorized_lines_with_size(self):
94         for size in range(1, 10):
95             memorizing_file = memorizingfile.MemorizingFile(StringIO.StringIO(
96                 'Hello\nWorld\nWelcome'))
97             self.check_with_size(memorizing_file, size,
98                                  ['Hello\n', 'World\n', 'Welcome'])
99
100 if __name__ == '__main__':
101     unittest.main()
102
103
104 # vi:sts=4 sw=4 et