blob: a493f6778ae24f2097d682ff1e01c8369d3972ac [file] [log] [blame]
# 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()