chromium/tools/binary_size/libsupersize/match_util_test.py

#!/usr/bin/env python3
# Copyright 2017 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import re
import unittest

import match_util


class MatchHelperTest(unittest.TestCase):

  def testExpandRegexIdentifierPlaceholder(self):
    def matches(pattern, target):
      regex = re.compile(match_util.ExpandRegexIdentifierPlaceholder(pattern))
      return bool(regex.search(target) and regex.search(' %s ' % target))

    self.assertTrue(matches(r'{{hello_world}}', 'helloWorld'))
    self.assertTrue(matches(r'{{hello_world}}', 'HelloWorld'))
    self.assertTrue(matches(r'{{hello_world}}', 'kHelloWorld'))
    self.assertTrue(matches(r'{{hello_world}}', 'hello_world'))
    self.assertTrue(matches(r'{{hello_world}}', '_hello_world'))
    self.assertTrue(matches(r'{{hello_world}}', 'hello_world_}}'))
    self.assertTrue(matches(r'{{hello_world}}', 'HELLO_WORLD'))
    self.assertTrue(matches(r'{{hello_world}}', 'HELLO_WORLD1'))
    self.assertTrue(matches(r'{{hello_world}}', 'kHelloWorld1'))
    self.assertFalse(matches(r'{{hello_world}}', 'hello world'))
    self.assertFalse(matches(r'{{hello_world}}', 'helloworld'))
    self.assertFalse(matches(r'{{hello_world}}', 'f_hello_world'))
    self.assertFalse(matches(r'{{hello_world}}', 'hello_world_f'))
    self.assertFalse(matches(r'{{hello_world}}', 'hello/world'))
    self.assertFalse(matches(r'{{hello_world}}', 'helloWORLD'))
    self.assertFalse(matches(r'{{hello_world}}', 'HELLOworld'))
    self.assertFalse(matches(r'{{hello_world}}', 'HELLOWORLD'))
    self.assertFalse(matches(r'{{hello_world}}', 'FOO_HELLO_WORLD'))
    self.assertFalse(matches(r'{{hello_world}}', 'HELLO_WORLD_BAR'))
    self.assertFalse(matches(r'{{hello_world}}', 'FooHelloWorld'))
    self.assertFalse(matches(r'{{hello_world}}', 'HelloWorldBar'))
    self.assertFalse(matches(r'{{hello_world}}', 'foohello/world'))
    self.assertFalse(matches(r'{{hello_world}}', '1HELLO_WORLD'))

    self.assertTrue(matches(r'{{_hello_world_}}', 'helloWorld'))
    self.assertTrue(matches(r'{{_hello_world_}}', 'HelloWorld'))
    self.assertTrue(matches(r'{{_hello_world_}}', 'kHelloWorld'))
    self.assertTrue(matches(r'{{_hello_world_}}', 'hello_world'))
    self.assertTrue(matches(r'{{_hello_world_}}', '_hello_world'))
    self.assertTrue(matches(r'{{_hello_world_}}', 'hello_world_'))
    self.assertTrue(matches(r'{{_hello_world_}}', 'HELLO_WORLD'))
    self.assertTrue(matches(r'{{_hello_world_}}', 'HELLO_WORLD1'))
    self.assertTrue(matches(r'{{_hello_world_}}', 'kHelloWorld1'))
    self.assertFalse(matches(r'{{_hello_world_}}', 'hello world'))
    self.assertFalse(matches(r'{{_hello_world_}}', 'helloworld'))
    self.assertTrue(matches(r'{{_hello_world_}}', 'f_hello_world'))
    self.assertTrue(matches(r'{{_hello_world_}}', 'hello_world_f'))
    self.assertFalse(matches(r'{{_hello_world_}}', 'hello/world'))
    self.assertFalse(matches(r'{{_hello_world_}}', 'helloWORLD'))
    self.assertFalse(matches(r'{{_hello_world_}}', 'HELLOworld'))
    self.assertFalse(matches(r'{{_hello_world_}}', 'HELLOWORLD'))
    self.assertTrue(matches(r'{{_hello_world_}}', 'FOO_HELLO_WORLD'))
    self.assertTrue(matches(r'{{_hello_world_}}', 'HELLO_WORLD_BAR'))
    self.assertTrue(matches(r'{{_hello_world_}}', 'FooHelloWorld'))
    self.assertTrue(matches(r'{{_hello_world_}}', 'HelloWorldBar'))
    self.assertFalse(matches(r'{{_hello_world_}}', 'foohello/world'))
    self.assertFalse(matches(r'{{_hello_world_}}', '1HELLO_WORLD'))


if __name__ == '__main__':
  unittest.main()