Skip to content

Commit b31be34

Browse files
committed
refactor: update tests to version_set
1 parent 26385d0 commit b31be34

12 files changed

+108
-78
lines changed

examples/branching_error_reporting.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,11 @@ use pubgrub::report::{DefaultStringReporter, Reporter};
66
use pubgrub::solver::{resolve, OfflineDependencyProvider};
77
use pubgrub::version::SemanticVersion;
88

9+
type SemVS = Range<SemanticVersion>;
10+
911
// https://github.com/dart-lang/pub/blob/master/doc/solver.md#branching-error-reporting
1012
fn main() {
11-
let mut dependency_provider = OfflineDependencyProvider::<&str, SemanticVersion>::new();
13+
let mut dependency_provider = OfflineDependencyProvider::<&str, SemVS>::new();
1214
#[rustfmt::skip]
1315
// root 1.0.0 depends on foo ^1.0.0
1416
dependency_provider.add_dependencies(

examples/caching_dependency_provider.rs

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,21 @@ use std::error::Error;
66
use pubgrub::package::Package;
77
use pubgrub::range::Range;
88
use pubgrub::solver::{resolve, Dependencies, DependencyProvider, OfflineDependencyProvider};
9-
use pubgrub::version::{NumberVersion, Version};
9+
use pubgrub::version::NumberVersion;
10+
use pubgrub::version_set::VersionSet;
11+
12+
type NumVS = Range<NumberVersion>;
1013

1114
// An example implementing caching dependency provider that will
1215
// store queried dependencies in memory and check them before querying more from remote.
13-
struct CachingDependencyProvider<P: Package, V: Version, DP: DependencyProvider<P, V>> {
16+
struct CachingDependencyProvider<P: Package, VS: VersionSet, DP: DependencyProvider<P, VS>> {
1417
remote_dependencies: DP,
15-
cached_dependencies: RefCell<OfflineDependencyProvider<P, V>>,
18+
cached_dependencies: RefCell<OfflineDependencyProvider<P, VS>>,
1619
}
1720

18-
impl<P: Package, V: Version, DP: DependencyProvider<P, V>> CachingDependencyProvider<P, V, DP> {
21+
impl<P: Package, VS: VersionSet, DP: DependencyProvider<P, VS>>
22+
CachingDependencyProvider<P, VS, DP>
23+
{
1924
pub fn new(remote_dependencies_provider: DP) -> Self {
2025
CachingDependencyProvider {
2126
remote_dependencies: remote_dependencies_provider,
@@ -24,22 +29,22 @@ impl<P: Package, V: Version, DP: DependencyProvider<P, V>> CachingDependencyProv
2429
}
2530
}
2631

27-
impl<P: Package, V: Version, DP: DependencyProvider<P, V>> DependencyProvider<P, V>
28-
for CachingDependencyProvider<P, V, DP>
32+
impl<P: Package, VS: VersionSet, DP: DependencyProvider<P, VS>> DependencyProvider<P, VS>
33+
for CachingDependencyProvider<P, VS, DP>
2934
{
30-
fn choose_package_version<T: std::borrow::Borrow<P>, U: std::borrow::Borrow<Range<V>>>(
35+
fn choose_package_version<T: std::borrow::Borrow<P>, U: std::borrow::Borrow<VS>>(
3136
&self,
3237
packages: impl Iterator<Item = (T, U)>,
33-
) -> Result<(T, Option<V>), Box<dyn Error>> {
38+
) -> Result<(T, Option<VS::V>), Box<dyn Error>> {
3439
self.remote_dependencies.choose_package_version(packages)
3540
}
3641

3742
// Caches dependencies if they were already queried
3843
fn get_dependencies(
3944
&self,
4045
package: &P,
41-
version: &V,
42-
) -> Result<Dependencies<P, V>, Box<dyn Error>> {
46+
version: &VS::V,
47+
) -> Result<Dependencies<P, VS>, Box<dyn Error>> {
4348
let mut cache = self.cached_dependencies.borrow_mut();
4449
match cache.get_dependencies(package, version) {
4550
Ok(Dependencies::Unknown) => {
@@ -65,7 +70,7 @@ impl<P: Package, V: Version, DP: DependencyProvider<P, V>> DependencyProvider<P,
6570

6671
fn main() {
6772
// Simulating remote provider locally.
68-
let mut remote_dependencies_provider = OfflineDependencyProvider::<&str, NumberVersion>::new();
73+
let mut remote_dependencies_provider = OfflineDependencyProvider::<&str, NumVS>::new();
6974

7075
// Add dependencies as needed. Here only root package is added.
7176
remote_dependencies_provider.add_dependencies("root", 1, Vec::new());

examples/doc_interface.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,15 @@ use pubgrub::range::Range;
44
use pubgrub::solver::{resolve, OfflineDependencyProvider};
55
use pubgrub::version::NumberVersion;
66

7+
type NumVS = Range<NumberVersion>;
8+
79
// `root` depends on `menu` and `icons`
810
// `menu` depends on `dropdown`
911
// `dropdown` depends on `icons`
1012
// `icons` has no dependency
1113
#[rustfmt::skip]
1214
fn main() {
13-
let mut dependency_provider = OfflineDependencyProvider::<&str, NumberVersion>::new();
15+
let mut dependency_provider = OfflineDependencyProvider::<&str, NumVS>::new();
1416
dependency_provider.add_dependencies(
1517
"root", 1, vec![("menu", Range::any()), ("icons", Range::any())],
1618
);

examples/doc_interface_error.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ use pubgrub::report::{DefaultStringReporter, Reporter};
66
use pubgrub::solver::{resolve, OfflineDependencyProvider};
77
use pubgrub::version::SemanticVersion;
88

9+
type SemVS = Range<SemanticVersion>;
10+
911
// `root` depends on `menu`, `icons 1.0.0` and `intl 5.0.0`
1012
// `menu 1.0.0` depends on `dropdown < 2.0.0`
1113
// `menu >= 1.1.0` depends on `dropdown >= 2.0.0`
@@ -15,7 +17,7 @@ use pubgrub::version::SemanticVersion;
1517
// `intl` has no dependency
1618
#[rustfmt::skip]
1719
fn main() {
18-
let mut dependency_provider = OfflineDependencyProvider::<&str, SemanticVersion>::new();
20+
let mut dependency_provider = OfflineDependencyProvider::<&str, SemVS>::new();
1921
// Direct dependencies: menu and icons.
2022
dependency_provider.add_dependencies("root", (1, 0, 0), vec![
2123
("menu", Range::any()),

examples/doc_interface_semantic.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ use pubgrub::report::{DefaultStringReporter, Reporter};
66
use pubgrub::solver::{resolve, OfflineDependencyProvider};
77
use pubgrub::version::SemanticVersion;
88

9+
type SemVS = Range<SemanticVersion>;
10+
911
// `root` depends on `menu` and `icons 1.0.0`
1012
// `menu 1.0.0` depends on `dropdown < 2.0.0`
1113
// `menu >= 1.1.0` depends on `dropdown >= 2.0.0`
@@ -14,7 +16,7 @@ use pubgrub::version::SemanticVersion;
1416
// `icons` has no dependency
1517
#[rustfmt::skip]
1618
fn main() {
17-
let mut dependency_provider = OfflineDependencyProvider::<&str, SemanticVersion>::new();
19+
let mut dependency_provider = OfflineDependencyProvider::<&str, SemVS>::new();
1820
// Direct dependencies: menu and icons.
1921
dependency_provider.add_dependencies("root", (1, 0, 0), vec![
2022
("menu", Range::any()),

examples/linear_error_reporting.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,11 @@ use pubgrub::report::{DefaultStringReporter, Reporter};
66
use pubgrub::solver::{resolve, OfflineDependencyProvider};
77
use pubgrub::version::SemanticVersion;
88

9+
type SemVS = Range<SemanticVersion>;
10+
911
// https://github.com/dart-lang/pub/blob/master/doc/solver.md#linear-error-reporting
1012
fn main() {
11-
let mut dependency_provider = OfflineDependencyProvider::<&str, SemanticVersion>::new();
13+
let mut dependency_provider = OfflineDependencyProvider::<&str, SemVS>::new();
1214
#[rustfmt::skip]
1315
// root 1.0.0 depends on foo ^1.0.0 and baz ^1.0.0
1416
dependency_provider.add_dependencies(

src/lib.rs

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,10 @@
4949
//! # use pubgrub::solver::{OfflineDependencyProvider, resolve};
5050
//! # use pubgrub::version::NumberVersion;
5151
//! # use pubgrub::range::Range;
52-
//! #
53-
//! let mut dependency_provider = OfflineDependencyProvider::<&str, NumberVersion>::new();
52+
//!
53+
//! type NumVS = Range<NumberVersion>;
54+
//!
55+
//! let mut dependency_provider = OfflineDependencyProvider::<&str, NumVS>::new();
5456
//!
5557
//! dependency_provider.add_dependencies(
5658
//! "root", 1, vec![("menu", Range::any()), ("icons", Range::any())],
@@ -84,16 +86,18 @@
8486
//! #
8587
//! # struct MyDependencyProvider;
8688
//! #
87-
//! impl DependencyProvider<String, SemanticVersion> for MyDependencyProvider {
88-
//! fn choose_package_version<T: Borrow<String>, U: Borrow<Range<SemanticVersion>>>(&self,packages: impl Iterator<Item=(T, U)>) -> Result<(T, Option<SemanticVersion>), Box<dyn Error>> {
89+
//! type SemVS = Range<SemanticVersion>;
90+
//!
91+
//! impl DependencyProvider<String, SemVS> for MyDependencyProvider {
92+
//! fn choose_package_version<T: Borrow<String>, U: Borrow<SemVS>>(&self,packages: impl Iterator<Item=(T, U)>) -> Result<(T, Option<SemanticVersion>), Box<dyn Error>> {
8993
//! unimplemented!()
9094
//! }
9195
//!
9296
//! fn get_dependencies(
9397
//! &self,
9498
//! package: &String,
9599
//! version: &SemanticVersion,
96-
//! ) -> Result<Dependencies<String, SemanticVersion>, Box<dyn Error>> {
100+
//! ) -> Result<Dependencies<String, SemVS>, Box<dyn Error>> {
97101
//! unimplemented!()
98102
//! }
99103
//! }
@@ -153,13 +157,13 @@
153157
//! [Output](crate::report::Reporter::Output) type and a single method.
154158
//! ```
155159
//! # use pubgrub::package::Package;
156-
//! # use pubgrub::version::Version;
160+
//! # use pubgrub::version_set::VersionSet;
157161
//! # use pubgrub::report::DerivationTree;
158162
//! #
159-
//! pub trait Reporter<P: Package, V: Version> {
163+
//! pub trait Reporter<P: Package, VS: VersionSet> {
160164
//! type Output;
161165
//!
162-
//! fn report(derivation_tree: &DerivationTree<P, V>) -> Self::Output;
166+
//! fn report(derivation_tree: &DerivationTree<P, VS>) -> Self::Output;
163167
//! }
164168
//! ```
165169
//! Implementing a [Reporter](crate::report::Reporter) may involve a lot of heuristics
@@ -173,8 +177,11 @@
173177
//! # use pubgrub::report::{DefaultStringReporter, Reporter};
174178
//! # use pubgrub::error::PubGrubError;
175179
//! # use pubgrub::version::NumberVersion;
180+
//! # use pubgrub::range::Range;
181+
//! #
182+
//! # type NumVS = Range<NumberVersion>;
176183
//! #
177-
//! # let dependency_provider = OfflineDependencyProvider::<&str, NumberVersion>::new();
184+
//! # let dependency_provider = OfflineDependencyProvider::<&str, NumVS>::new();
178185
//! # let root_package = "root";
179186
//! # let root_version = 1;
180187
//! #

src/solver.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,12 @@
4444
//! # use pubgrub::solver::{resolve, OfflineDependencyProvider};
4545
//! # use pubgrub::version::NumberVersion;
4646
//! # use pubgrub::error::PubGrubError;
47+
//! # use pubgrub::range::Range;
4748
//! #
48-
//! # fn try_main() -> Result<(), PubGrubError<&'static str, NumberVersion>> {
49-
//! # let dependency_provider = OfflineDependencyProvider::<&str, NumberVersion>::new();
49+
//! # type NumVS = Range<NumberVersion>;
50+
//! #
51+
//! # fn try_main() -> Result<(), PubGrubError<&'static str, NumVS>> {
52+
//! # let dependency_provider = OfflineDependencyProvider::<&str, NumVS>::new();
5053
//! # let package = "root";
5154
//! # let version = 1;
5255
//! let solution = resolve(&dependency_provider, package, version)?;

tests/examples.rs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,13 @@ use pubgrub::solver::{resolve, OfflineDependencyProvider};
55
use pubgrub::type_aliases::Map;
66
use pubgrub::version::{NumberVersion, SemanticVersion};
77

8+
type NumVS = Range<NumberVersion>;
9+
type SemVS = Range<SemanticVersion>;
10+
811
#[test]
912
/// https://github.com/dart-lang/pub/blob/master/doc/solver.md#no-conflicts
1013
fn no_conflict() {
11-
let mut dependency_provider = OfflineDependencyProvider::<&str, SemanticVersion>::new();
14+
let mut dependency_provider = OfflineDependencyProvider::<&str, SemVS>::new();
1215
#[rustfmt::skip]
1316
dependency_provider.add_dependencies(
1417
"root", (1, 0, 0),
@@ -38,7 +41,7 @@ fn no_conflict() {
3841
#[test]
3942
/// https://github.com/dart-lang/pub/blob/master/doc/solver.md#avoiding-conflict-during-decision-making
4043
fn avoiding_conflict_during_decision_making() {
41-
let mut dependency_provider = OfflineDependencyProvider::<&str, SemanticVersion>::new();
44+
let mut dependency_provider = OfflineDependencyProvider::<&str, SemVS>::new();
4245
#[rustfmt::skip]
4346
dependency_provider.add_dependencies(
4447
"root", (1, 0, 0),
@@ -73,7 +76,7 @@ fn avoiding_conflict_during_decision_making() {
7376
#[test]
7477
/// https://github.com/dart-lang/pub/blob/master/doc/solver.md#performing-conflict-resolution
7578
fn conflict_resolution() {
76-
let mut dependency_provider = OfflineDependencyProvider::<&str, SemanticVersion>::new();
79+
let mut dependency_provider = OfflineDependencyProvider::<&str, SemVS>::new();
7780
#[rustfmt::skip]
7881
dependency_provider.add_dependencies(
7982
"root", (1, 0, 0),
@@ -106,7 +109,7 @@ fn conflict_resolution() {
106109
#[test]
107110
/// https://github.com/dart-lang/pub/blob/master/doc/solver.md#conflict-resolution-with-a-partial-satisfier
108111
fn conflict_with_partial_satisfier() {
109-
let mut dependency_provider = OfflineDependencyProvider::<&str, SemanticVersion>::new();
112+
let mut dependency_provider = OfflineDependencyProvider::<&str, SemVS>::new();
110113
#[rustfmt::skip]
111114
// root 1.0.0 depends on foo ^1.0.0 and target ^2.0.0
112115
dependency_provider.add_dependencies(
@@ -171,7 +174,7 @@ fn conflict_with_partial_satisfier() {
171174
///
172175
/// Solution: a0, b0, c0, d0
173176
fn double_choices() {
174-
let mut dependency_provider = OfflineDependencyProvider::<&str, NumberVersion>::new();
177+
let mut dependency_provider = OfflineDependencyProvider::<&str, NumVS>::new();
175178
dependency_provider.add_dependencies("a", 0, vec![("b", Range::any()), ("c", Range::any())]);
176179
dependency_provider.add_dependencies("b", 0, vec![("d", Range::exact(0))]);
177180
dependency_provider.add_dependencies("b", 1, vec![("d", Range::exact(1))]);

0 commit comments

Comments
 (0)