OLD | NEW |
| (Empty) |
1 #!/usr/bin/env python | |
2 # Copyright 2014 The Chromium Authors. All rights reserved. | |
3 # Use of this source code is governed by a BSD-style license that can be | |
4 # found in the LICENSE file. | |
5 | |
6 import unittest | |
7 from checker import FileCache, Flattener, LineNumber | |
8 | |
9 | |
10 class NodeTest(unittest.TestCase): | |
11 def __init__(self, *args, **kwargs): | |
12 unittest.TestCase.__init__(self, *args, **kwargs) | |
13 self.maxDiff = None | |
14 | |
15 def setUp(self): | |
16 FileCache._cache["/debug.js"] = """ | |
17 // Copyright 2002 Older Chromium Author dudes. | |
18 function debug(msg) { if (window.DEBUG) alert(msg); } | |
19 """.strip() | |
20 | |
21 FileCache._cache["/global.js"] = """ | |
22 // Copyright 2014 Old Chromium Author dudes. | |
23 <include src="/debug.js"> | |
24 var global = 'type checking!'; | |
25 """.strip() | |
26 | |
27 FileCache._cache["/checked.js"] = """ | |
28 // Copyright 2028 Future Chromium Author dudes. | |
29 /** | |
30 * @fileoverview Coolest app ever. | |
31 * @author Douglas Crockford (douglas@crockford.com) | |
32 */ | |
33 <include src="/global.js"> | |
34 debug(global); | |
35 // Here continues checked.js, a swell file. | |
36 """.strip() | |
37 | |
38 self.flattener_ = Flattener("/checked.js") | |
39 | |
40 def testInline(self): | |
41 self.assertMultiLineEqual(""" | |
42 // Copyright 2028 Future Chromium Author dudes. | |
43 /** | |
44 * @fileoverview Coolest app ever. | |
45 * @author Douglas Crockford (douglas@crockford.com) | |
46 */ | |
47 // Copyright 2014 Old Chromium Author dudes. | |
48 // Copyright 2002 Older Chromium Author dudes. | |
49 function debug(msg) { if (window.DEBUG) alert(msg); } | |
50 var global = 'type checking!'; | |
51 debug(global); | |
52 // Here continues checked.js, a swell file. | |
53 """.strip(), self.flattener_.contents) | |
54 | |
55 def assertLineNumber(self, abs_line, expected_line): | |
56 actual_line = self.flattener_.get_file_from_line(abs_line) | |
57 self.assertEqual(expected_line.file, actual_line.file) | |
58 self.assertEqual(expected_line.line_number, actual_line.line_number) | |
59 | |
60 def testGetFileFromLine(self): | |
61 self.assertLineNumber(1, LineNumber("/checked.js", 1)) | |
62 self.assertLineNumber(5, LineNumber("/checked.js", 5)) | |
63 self.assertLineNumber(6, LineNumber("/global.js", 1)) | |
64 self.assertLineNumber(7, LineNumber("/debug.js", 1)) | |
65 self.assertLineNumber(8, LineNumber("/debug.js", 2)) | |
66 self.assertLineNumber(9, LineNumber("/global.js", 3)) | |
67 self.assertLineNumber(10, LineNumber("/checked.js", 7)) | |
68 self.assertLineNumber(11, LineNumber("/checked.js", 8)) | |
69 | |
70 | |
71 class IfStrippingTest(unittest.TestCase): | |
72 def __init__(self, *args, **kwargs): | |
73 unittest.TestCase.__init__(self, *args, **kwargs) | |
74 self.maxDiff = None | |
75 | |
76 def setUp(self): | |
77 FileCache._cache["/century.js"] = """ | |
78 function getCurrentCentury() { | |
79 <if expr="netscape_os"> | |
80 alert("Oh wow!"); | |
81 return "XX"; | |
82 </if> | |
83 return "XXI"; | |
84 } | |
85 """.strip() | |
86 | |
87 self.flattener_ = Flattener("/century.js") | |
88 | |
89 def testIfStripping(self): | |
90 self.assertMultiLineEqual(""" | |
91 function getCurrentCentury() { | |
92 | |
93 alert("Oh wow!"); | |
94 return "XX"; | |
95 | |
96 return "XXI"; | |
97 } | |
98 """.strip(), self.flattener_.contents) | |
99 | |
100 | |
101 if __name__ == '__main__': | |
102 unittest.main() | |
OLD | NEW |