1
1
// SPDX-License-Identifier: MPL-2.0
2
2
3
+ use pubgrub:: error:: PubGrubError ;
3
4
use pubgrub:: range:: Range ;
4
5
use pubgrub:: solver:: { resolve, OfflineDependencyProvider } ;
5
6
use pubgrub:: version:: NumberVersion ;
@@ -25,3 +26,29 @@ fn same_result_on_repeated_runs() {
25
26
}
26
27
}
27
28
}
29
+
30
+ #[ test]
31
+ fn should_always_find_a_satisfier ( ) {
32
+ let mut dependency_provider = OfflineDependencyProvider :: < _ , NumberVersion > :: new ( ) ;
33
+ dependency_provider. add_dependencies ( "a" , 0 , vec ! [ ( "b" , Range :: none( ) ) ] ) ;
34
+ assert ! ( matches!(
35
+ resolve( & dependency_provider, "a" , 0 ) ,
36
+ Err ( PubGrubError :: DependencyOnTheEmptySet { .. } )
37
+ ) ) ;
38
+
39
+ dependency_provider. add_dependencies ( "c" , 0 , vec ! [ ( "a" , Range :: any( ) ) ] ) ;
40
+ assert ! ( matches!(
41
+ resolve( & dependency_provider, "c" , 0 ) ,
42
+ Err ( PubGrubError :: DependencyOnTheEmptySet { .. } )
43
+ ) ) ;
44
+ }
45
+
46
+ #[ test]
47
+ fn cannot_depend_on_self ( ) {
48
+ let mut dependency_provider = OfflineDependencyProvider :: < _ , NumberVersion > :: new ( ) ;
49
+ dependency_provider. add_dependencies ( "a" , 0 , vec ! [ ( "a" , Range :: any( ) ) ] ) ;
50
+ assert ! ( matches!(
51
+ resolve( & dependency_provider, "a" , 0 ) ,
52
+ Err ( PubGrubError :: SelfDependency { .. } )
53
+ ) ) ;
54
+ }
0 commit comments