Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(108)

Unified Diff: third_party/WebKit/Source/bindings/scripts/name_style_converer_test.py

Issue 2684773003: [WebAgent API]: Implement name style handling. (Closed)
Patch Set: Feedback addressed. Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/bindings/scripts/name_style_converer_test.py
diff --git a/third_party/WebKit/Source/bindings/scripts/name_style_converer_test.py b/third_party/WebKit/Source/bindings/scripts/name_style_converer_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..71067c3a8991ae0f5d6235e5ca48cea71d156c2a
--- /dev/null
+++ b/third_party/WebKit/Source/bindings/scripts/name_style_converer_test.py
@@ -0,0 +1,79 @@
+# Copyright 2017 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.
+
+# pylint: disable=import-error,print-statement,relative-import,protected-access
+
+"""Unit tests for name_style_converter.py."""
+
+import unittest
+
+from name_style_converter import NameStyleConverter
+from name_style_converter import SmartTokenizer
+
+
+class SmartTokenizerTest(unittest.TestCase):
+ def test_simple_cases(self):
+ tokenizer = SmartTokenizer('foo')
+ self.assertEqual(tokenizer.tokenize(), ['foo'])
+
+ tokenizer = SmartTokenizer('fooBar')
+ self.assertEqual(tokenizer.tokenize(), ['foo', 'Bar'])
+
+ tokenizer = SmartTokenizer('fooBarBaz')
+ self.assertEqual(tokenizer.tokenize(), ['foo', 'Bar', 'Baz'])
+
+ tokenizer = SmartTokenizer('Baz')
+ self.assertEqual(tokenizer.tokenize(), ['Baz'])
+
+ tokenizer = SmartTokenizer('')
+ self.assertEqual(tokenizer.tokenize(), [])
+
+ tokenizer = SmartTokenizer('FOO')
+ self.assertEqual(tokenizer.tokenize(), ['FOO'])
+
+ tokenizer = SmartTokenizer('foo2')
+ self.assertEqual(tokenizer.tokenize(), ['foo', '2'])
+
+ def test_tricky_cases(self):
+ tokenizer = SmartTokenizer('XMLHttpRequest')
+ self.assertEqual(tokenizer.tokenize(), ['XML', 'Http', 'Request'])
+
+ tokenizer = SmartTokenizer('HTMLElement')
+ self.assertEqual(tokenizer.tokenize(), ['HTML', 'Element'])
+
+ tokenizer = SmartTokenizer('WebGLRenderingContext')
+ self.assertEqual(tokenizer.tokenize(),
+ ['WebGL', 'Rendering', 'Context'])
+
+ tokenizer = SmartTokenizer('CanvasRenderingContext2D')
+ self.assertEqual(tokenizer.tokenize(),
+ ['Canvas', 'Rendering', 'Context', '2D'])
+
+ tokenizer = SmartTokenizer('SVGSVGElement')
+ self.assertEqual(tokenizer.tokenize(), ['SVG', 'SVG', 'Element'])
+
+
+class NameStyleConverterTest(unittest.TestCase):
+ def test_snake_case(self):
+ converter = NameStyleConverter('HTMLElement')
+ self.assertEqual(converter.to_snake_case(), 'html_element')
+
+ def test_upper_camel_case(self):
+ converter = NameStyleConverter('someSuperThing')
+ self.assertEqual(converter.to_upper_camel_case(), 'SomeSuperThing')
+
+ converter = NameStyleConverter('SVGElement')
+ self.assertEqual(converter.to_upper_camel_case(), 'SVGElement')
+
+ def test_macro_case(self):
+ converter = NameStyleConverter('WebGLBaz2D')
+ self.assertEqual(converter.to_macro_case(), 'WEBGL_BAZ_2D')
+
+ def test_all_cases(self):
+ converter = NameStyleConverter('SVGScriptElement')
+ self.assertEqual(converter.to_all_cases(), {
+ 'snake_case': 'svg_script_element',
+ 'upper_camel_case': 'SVGScriptElement',
+ 'macro_case': 'SVG_SCRIPT_ELEMENT',
+ })

Powered by Google App Engine
This is Rietveld 408576698