diff options
Diffstat (limited to 'crates/shirabe/tests/filter')
| -rw-r--r-- | crates/shirabe/tests/filter/platform_requirement_filter/mod.rs | 1 | ||||
| -rw-r--r-- | crates/shirabe/tests/filter/platform_requirement_filter/platform_requirement_filter_factory_test.rs | 75 |
2 files changed, 76 insertions, 0 deletions
diff --git a/crates/shirabe/tests/filter/platform_requirement_filter/mod.rs b/crates/shirabe/tests/filter/platform_requirement_filter/mod.rs index 1199c1c..0991fef 100644 --- a/crates/shirabe/tests/filter/platform_requirement_filter/mod.rs +++ b/crates/shirabe/tests/filter/platform_requirement_filter/mod.rs @@ -1,2 +1,3 @@ mod ignore_all_platform_requirement_filter_test; mod ignore_nothing_platform_requirement_filter_test; +mod platform_requirement_filter_factory_test; diff --git a/crates/shirabe/tests/filter/platform_requirement_filter/platform_requirement_filter_factory_test.rs b/crates/shirabe/tests/filter/platform_requirement_filter/platform_requirement_filter_factory_test.rs index f8230a4..306ce0c 100644 --- a/crates/shirabe/tests/filter/platform_requirement_filter/platform_requirement_filter_factory_test.rs +++ b/crates/shirabe/tests/filter/platform_requirement_filter/platform_requirement_filter_factory_test.rs @@ -1 +1,76 @@ //! ref: composer/tests/Composer/Test/Filter/PlatformRequirementFilter/PlatformRequirementFilterFactoryTest.php + +use shirabe::filter::platform_requirement_filter::{ + IgnoreAllPlatformRequirementFilter, IgnoreListPlatformRequirementFilter, + IgnoreNothingPlatformRequirementFilter, PlatformRequirementFilterFactory, +}; +use shirabe_php_shim::PhpMixed; + +#[test] +fn test_from_bool_or_list() { + // 'true creates IgnoreAllFilter' + let filter = PlatformRequirementFilterFactory::from_bool_or_list(PhpMixed::Bool(true)).unwrap(); + assert!( + filter + .as_any() + .downcast_ref::<IgnoreAllPlatformRequirementFilter>() + .is_some() + ); + + // 'false creates IgnoreNothingFilter' + let filter = PlatformRequirementFilterFactory::from_bool_or_list(PhpMixed::Bool(false)).unwrap(); + assert!( + filter + .as_any() + .downcast_ref::<IgnoreNothingPlatformRequirementFilter>() + .is_some() + ); + + // 'list creates IgnoreListFilter' + let filter = PlatformRequirementFilterFactory::from_bool_or_list(PhpMixed::List(vec![ + PhpMixed::String("php".to_string()), + PhpMixed::String("ext-json".to_string()), + ])) + .unwrap(); + assert!( + filter + .as_any() + .downcast_ref::<IgnoreListPlatformRequirementFilter>() + .is_some() + ); +} + +#[test] +#[ignore = "get_debug_type is todo!() in the php-shim (used to build the error message)"] +fn test_from_bool_throws_exception_if_type_is_unknown() { + let result = PlatformRequirementFilterFactory::from_bool_or_list(PhpMixed::Null); + let err = result.unwrap_err(); + assert_eq!( + "PlatformRequirementFilter: Unknown $boolOrList parameter null. Please report at https://github.com/composer/composer/issues/new.", + err.to_string() + ); +} + +#[test] +fn test_ignore_all() { + let platform_requirement_filter = PlatformRequirementFilterFactory::ignore_all(); + + assert!( + platform_requirement_filter + .as_any() + .downcast_ref::<IgnoreAllPlatformRequirementFilter>() + .is_some() + ); +} + +#[test] +fn test_ignore_nothing() { + let platform_requirement_filter = PlatformRequirementFilterFactory::ignore_nothing(); + + assert!( + platform_requirement_filter + .as_any() + .downcast_ref::<IgnoreNothingPlatformRequirementFilter>() + .is_some() + ); +} |
