blob: 1821e4f11970f95f13df846f6b074cc31a9d08f7 [file] [log] [blame]
# Copyright 2022 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Tests for classification_types.py"""
import unittest
from fuchsia.tools.licenses.classification_types import *
class TestClassificationTypes(unittest.TestCase):
def test_StringMatcher_to_json(self):
sm = StringMatcher.create(["foo", "bar"])
self.assertEqual(sm.to_json(), ["foo", "bar"])
def test_StringMatcher_exact_matches(self):
sm = StringMatcher.create(["foo", "bar"])
self.assertTrue(sm.matches("foo"))
self.assertTrue(sm.matches("bar"))
self.assertFalse(sm.matches("baz"))
self.assertEqual(sm.get_matches(["foo", "bar", "baz"]), ["foo", "bar"])
self.assertEqual(
sm.get_matches(["foo", "foo", "foo"]), ["foo", "foo", "foo"])
self.assertTrue(sm.matches_all(["foo"]))
self.assertTrue(sm.matches_all(["foo", "bar"]))
self.assertTrue(sm.matches_all(["foo", "bar", "foo", "bar"]))
self.assertFalse(sm.matches_all(["foo", "bar", "baz"]))
self.assertFalse(sm.matches_all(["baz"]))
def test_AsterixStringExpression_asterix_matches_everything(self):
exp = AsterixStringExpression.create("*")
self.assertTrue(exp.matches(""))
self.assertTrue(exp.matches("foo"))
def test_AsterixStringExpression_asterix_prefix(self):
exp = AsterixStringExpression.create("*foo")
self.assertTrue(exp.matches("foo"))
self.assertTrue(exp.matches(" foo"))
self.assertFalse(exp.matches("foo "))
def test_AsterixStringExpression_asterix_suffix(self):
exp = AsterixStringExpression.create("foo*")
self.assertTrue(exp.matches("foo"))
self.assertTrue(exp.matches("foo "))
self.assertFalse(exp.matches(" foo"))
def test_AsterixStringExpression_asterix_middle(self):
exp = AsterixStringExpression.create("fo*o")
self.assertTrue(exp.matches("foo"))
self.assertTrue(exp.matches("fo o"))
self.assertFalse(exp.matches("fo o "))
self.assertFalse(exp.matches(" fo o"))
def test_AsterixStringExpression_mulitple_asterix(self):
exp = AsterixStringExpression.create("b*a*r")
self.assertTrue(exp.matches("bar"))
self.assertTrue(exp.matches("b a r"))
self.assertTrue(exp.matches("ba r"))
self.assertTrue(exp.matches("b ar"))
self.assertFalse(exp.matches(" bar"))
self.assertFalse(exp.matches("bar "))
exp = AsterixStringExpression.create("*b*a*r")
self.assertTrue(exp.matches(" bar"))
self.assertTrue(exp.matches(" b a r"))
self.assertFalse(exp.matches(" b a r "))
exp = AsterixStringExpression.create("b*a*r*")
self.assertTrue(exp.matches("bar "))
self.assertTrue(exp.matches("b a r "))
self.assertFalse(exp.matches(" b a r "))
exp = AsterixStringExpression.create("*b*a*r*")
self.assertTrue(exp.matches("b a r"))
self.assertTrue(exp.matches(" b a r"))
self.assertTrue(exp.matches("b a r "))
self.assertTrue(exp.matches(" b a r "))
def test_StringMatcher_asterix_matches(self):
sm = StringMatcher.create(["fo*o", "*bar", "baz*", "*w*a*z*"])
self.assertTrue(sm.matches("foo"))
self.assertTrue(sm.matches("bar"))
self.assertTrue(sm.matches("baz"))
self.assertTrue(sm.matches("waz"))
self.assertFalse(sm.matches("XYZ"))
self.assertTrue(sm.matches("foXYZo"))
self.assertFalse(sm.matches("XYZfoo"))
self.assertFalse(sm.matches("fooXYZ"))
self.assertFalse(sm.matches("fXYZoo"))
self.assertTrue(sm.matches("XYZbar"))
self.assertFalse(sm.matches("bXYZar"))
self.assertFalse(sm.matches("barXYZ"))
self.assertTrue(sm.matches("bazXYZ"))
self.assertFalse(sm.matches("bXYZaz"))
self.assertFalse(sm.matches("XYZbaz"))
self.assertTrue(sm.matches("waz"))
self.assertTrue(sm.matches("w a z"))
self.assertTrue(sm.matches(" w a z "))
self.assertFalse(sm.matches("z a w"))
self.assertTrue(sm.matches("XwYaZz"))
self.assertTrue(sm.matches("wXaYzZ"))
if __name__ == '__main__':
unittest.main()