| #!/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)'))) |