- add sources.
[platform/framework/web/crosswalk.git] / src / tools / json_schema_compiler / dart_generator_test.py
1 #!/usr/bin/env python
2 # Copyright (c) 2012 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 os
7 import sys
8 import unittest
9
10 from compiler import GenerateSchema
11
12 # If --rebase is passed to this test, this is set to True, indicating the test
13 # output should be re-generated for each test (rather than running the tests
14 # themselves).
15 REBASE_MODE = False
16
17 # The directory containing the input and expected output files corresponding
18 # to each test name.
19 TESTS_DIR = 'dart_test'
20
21 class DartTest(unittest.TestCase):
22
23   def _RunTest(self, test_filename):
24     '''Given the name of a test, runs compiler.py on the file:
25       TESTS_DIR/test_filename.idl
26     and compares it to the output in the file:
27       TESTS_DIR/test_filename.dart
28     '''
29     file_rel = os.path.join(TESTS_DIR, test_filename)
30
31     output_dir = None
32     if REBASE_MODE:
33       output_dir = TESTS_DIR
34     output_code = GenerateSchema('dart', ['%s.idl' % file_rel], TESTS_DIR,
35                                  output_dir, None, None)
36
37     if not REBASE_MODE:
38       with open('%s.dart' % file_rel) as f:
39         expected_output = f.read()
40       # Remove the first line of the output code (as it contains the filename).
41       # Also remove all blank lines, ignoring them from the comparison.
42       # Compare with lists instead of strings for clearer diffs (especially with
43       # whitespace) when a test fails.
44       self.assertEqual([l for l in expected_output.split('\n') if l],
45                        [l for l in output_code.split('\n')[1:] if l])
46
47   def setUp(self):
48     # Increase the maximum diff amount to see the full diff on a failed test.
49     self.maxDiff = 2000
50
51   def testComments(self):
52     self._RunTest('comments')
53
54   def testDictionaries(self):
55     self._RunTest('dictionaries')
56
57   def testEmptyNamespace(self):
58     self._RunTest('empty_namespace')
59
60   def testEmptyType(self):
61     self._RunTest('empty_type')
62
63   def testEvents(self):
64     self._RunTest('events')
65
66   def testBasicFunction(self):
67     self._RunTest('functions')
68
69   def testOpratableType(self):
70     self._RunTest('operatable_type')
71
72   def testTags(self):
73     self._RunTest('tags')
74
75
76 if __name__ == '__main__':
77   if '--rebase' in sys.argv:
78     print "Running in rebase mode."
79     REBASE_MODE = True
80     sys.argv.remove('--rebase')
81   unittest.main()