Index: build/gn_helpers_unittest.py |
diff --git a/build/gn_helpers_unittest.py b/build/gn_helpers_unittest.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..a493f6778ae24f2097d682ff1e01c8369d3972ac |
--- /dev/null |
+++ b/build/gn_helpers_unittest.py |
@@ -0,0 +1,73 @@ |
+# Copyright 2016 The Chromium Authors. All rights reserved. |
+# Use of this source code is governed by a BSD-style license that can be |
+# found in the LICENSE file. |
+ |
+import gn_helpers |
+import unittest |
+ |
+class UnitTest(unittest.TestCase): |
+ def test_ToGNString(self): |
+ self.assertEqual( |
+ gn_helpers.ToGNString([1, 'two', [ '"thr$\\', True, False, [] ]]), |
+ '[ 1, "two", [ "\\"thr\\$\\\\", true, false, [ ] ] ]') |
+ |
+ def test_UnescapeGNString(self): |
+ # Backslash followed by a \, $, or " means the folling character without |
+ # the special meaning. Backslash followed by everything else is a literal. |
+ self.assertEqual( |
+ gn_helpers.UnescapeGNString('\\as\\$\\\\asd\\"'), |
+ '\\as$\\asd"') |
+ |
+ def test_FromGNString(self): |
+ self.assertEqual( |
+ gn_helpers.FromGNString('[1, -20, true, false,["as\\"", []]]'), |
+ [ 1, -20, True, False, [ 'as"', [] ] ]) |
+ |
+ with self.assertRaises(gn_helpers.GNException): |
+ parser = gn_helpers.GNValueParser('123 456') |
+ parser.Parse() |
+ |
+ def test_ParseNumber(self): |
+ parser = gn_helpers.GNValueParser('123') |
+ self.assertEqual(parser.ParseNumber(), 123) |
+ |
+ with self.assertRaises(gn_helpers.GNException): |
+ parser = gn_helpers.GNValueParser('') |
+ parser.ParseNumber() |
+ with self.assertRaises(gn_helpers.GNException): |
+ parser = gn_helpers.GNValueParser('a123') |
+ parser.ParseNumber() |
+ |
+ def test_ParseString(self): |
+ parser = gn_helpers.GNValueParser('"asdf"') |
+ self.assertEqual(parser.ParseString(), 'asdf') |
+ |
+ with self.assertRaises(gn_helpers.GNException): |
+ parser = gn_helpers.GNValueParser('') # Empty. |
+ parser.ParseString() |
+ with self.assertRaises(gn_helpers.GNException): |
+ parser = gn_helpers.GNValueParser('asdf') # Unquoted. |
+ parser.ParseString() |
+ with self.assertRaises(gn_helpers.GNException): |
+ parser = gn_helpers.GNValueParser('"trailing') # Unterminated. |
+ parser.ParseString() |
+ |
+ def test_ParseList(self): |
+ parser = gn_helpers.GNValueParser('[1,]') # Optional end comma OK. |
+ self.assertEqual(parser.ParseList(), [ 1 ]) |
+ |
+ with self.assertRaises(gn_helpers.GNException): |
+ parser = gn_helpers.GNValueParser('') # Empty. |
+ parser.ParseList() |
+ with self.assertRaises(gn_helpers.GNException): |
+ parser = gn_helpers.GNValueParser('asdf') # No []. |
+ parser.ParseList() |
+ with self.assertRaises(gn_helpers.GNException): |
+ parser = gn_helpers.GNValueParser('[1, 2') # Unterminated |
+ parser.ParseList() |
+ with self.assertRaises(gn_helpers.GNException): |
+ parser = gn_helpers.GNValueParser('[1 2]') # No separating comma. |
+ parser.ParseList() |
+ |
+if __name__ == '__main__': |
+ unittest.main() |