chromium/chrome/installer/linux/debian/package_version_interval_test.py

#!/usr/bin/env python
# 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 deb_version
import package_version_interval

def make_interval(start_open, start_inclusive, start_cmp,
                  end_open, end_inclusive, end_cmp, dep='', package=''):
  start = package_version_interval.PackageVersionIntervalEndpoint(
      start_open, start_inclusive, start_cmp)
  end = package_version_interval.PackageVersionIntervalEndpoint(
      end_open, end_inclusive, end_cmp)
  return package_version_interval.PackageVersionInterval(
      dep, package, start, end)


# PackageVersionInterval.intersect() test.
assert (make_interval(True, None, None, False, True, 10).intersect(
    make_interval(False, True, 5, True, None, None)) ==
      make_interval(False, True, 5, False, True, 10))
assert (make_interval(False, True, 3, False, True, 7).intersect(
    make_interval(False, True, 4, False, True, 6)) ==
      make_interval(False, True, 4, False, True, 6))
assert (make_interval(False, False, 3, False, False, 7).intersect(
    make_interval(False, True, 3, False, True, 7)) ==
      make_interval(False, False, 3, False, False, 7))

# PackageVersionInterval.contains() test.
assert make_interval(False, False, 3, False, False, 7).contains(5)
assert not make_interval(False, False, 3, False, False, 7).contains(3)
assert not make_interval(False, False, 3, False, False, 7).contains(7)
assert make_interval(False, True, 3, False, True, 7).contains(3)
assert make_interval(False, True, 3, False, True, 7).contains(7)
assert make_interval(True, None, None, False, True, 7).contains(5)
assert make_interval(False, True, 3, True, None, None).contains(5)
assert not make_interval(True, None, None, False, True, 7).contains(8)
assert not make_interval(False, True, 3, True, None, None).contains(2)

# parse_dep() test.
assert (package_version_interval.parse_dep('libfoo (> 1.0)') ==
        make_interval(False, False, deb_version.DebVersion('1.0'),
                                 True, None, None, package='libfoo'))
assert (package_version_interval.parse_dep('libbar (>> a.b.c)') ==
        make_interval(False, False, deb_version.DebVersion('a.b.c'),
                                 True, None, None, package='libbar'))
assert (package_version_interval.parse_dep('libbaz (= 2:1.2.3-1)') ==
        make_interval(
            False, True, deb_version.DebVersion('2:1.2.3-1'),
            False, True, deb_version.DebVersion('2:1.2.3-1'), package='libbaz'))

# PackageVersionInterval.implies() test.
assert package_version_interval.parse_dep('libfoo').implies(
    package_version_interval.parse_dep('libfoo'))
assert package_version_interval.parse_dep('libfoo (>> 2)').implies(
    package_version_interval.parse_dep('libfoo (>> 1)'))
assert not package_version_interval.parse_dep('libfoo (>> 1)').implies(
    package_version_interval.parse_dep('libfoo (>> 2)'))
assert package_version_interval.parse_dep('libfoo (>> 1)').implies(
    package_version_interval.parse_dep('libfoo (>= 1)'))
assert not package_version_interval.parse_dep('libfoo (>= 1)').implies(
    package_version_interval.parse_dep('libfoo (>> 1)'))
assert package_version_interval.parse_dep('libfoo (= 10)').implies(
    package_version_interval.parse_dep('libfoo (>= 1)'))
assert not package_version_interval.parse_dep('libfoo (>= 1)').implies(
    package_version_interval.parse_dep('libfoo (= 10)'))
assert package_version_interval.parse_dep('libfoo (= 10)').implies(
    package_version_interval.parse_dep('libfoo (>> 1)'))
assert not package_version_interval.parse_dep('libfoo (>> 1)').implies(
    package_version_interval.parse_dep('libfoo (= 10)'))
assert package_version_interval.parse_dep('libfoo (= 1)').implies(
    package_version_interval.parse_dep('libfoo (>= 1)'))
assert not package_version_interval.parse_dep('libfoo (>= 1)').implies(
    package_version_interval.parse_dep('libfoo (= 1)'))
assert not package_version_interval.parse_dep('libfoo (= 1)').implies(
    package_version_interval.parse_dep('libfoo (>> 1)'))
assert not package_version_interval.parse_dep('libfoo (>> 1)').implies(
    package_version_interval.parse_dep('libfoo (= 1)'))

# PackageVersionIntervalSet.implies() test.
assert (package_version_interval.parse_interval_set('libfoo | libbar').implies(
    package_version_interval.parse_interval_set('libfoo | libbar')))
assert (package_version_interval.parse_interval_set('libfoo').implies(
    package_version_interval.parse_interval_set('libfoo | libbar')))
assert not (
    package_version_interval.parse_interval_set('libfoo | libbar').implies(
    package_version_interval.parse_interval_set('libfoo')))
assert (package_version_interval.parse_interval_set('libbar').implies(
    package_version_interval.parse_interval_set('libfoo | libbar')))
assert not (
    package_version_interval.parse_interval_set('libfoo | libbar').implies(
    package_version_interval.parse_interval_set('libbar')))
assert (package_version_interval.parse_interval_set(
    'libfoo (>> 2) | libbar (>> 2)').implies(
    package_version_interval.parse_interval_set(
        'libfoo (>> 1) | libbar (>> 1)')))