pub enum TestScenario {
Show 32 variants
W1ClearDimensionWinner,
W2SameDimensionsDifferentSize,
W3SameDimensionsSameSize,
W4SomeMissingDimensions,
W5OnlyOneHasDimensions,
W6AllMissingDimensions,
W7ThreePlusDuplicates,
W8SamePixelsDifferentAspect,
C1WinnerLacksGpsLoserHas,
C2WinnerLacksDatetimeLoserHas,
C3WinnerLacksDescriptionLoserHas,
C4WinnerLacksAllLoserHasAll,
C5BothHaveGps,
C6MultipleLosersContribute,
C7NoLoserHasNeeded,
C8WinnerHasEverything,
F1GpsConflict,
F2GpsWithinThreshold,
F3TimezoneConflict,
F4CameraConflict,
F5CaptureTimeConflict,
F6MultipleConflicts,
F7NoConflicts,
X1SingleAssetGroup,
X2LargeGroup,
X3LargeFile,
X4SpecialCharsFilename,
X5Video,
X7Png,
X9UnicodeDescription,
X10VeryOldDate,
X11FutureDate,
}Expand description
Test scenarios for categorizing duplicate groups.
Each scenario represents a specific test case that needs coverage in the integration test suite.
Variants§
W1ClearDimensionWinner
Clear dimension winner (different width x height)
W2SameDimensionsDifferentSize
Same dimensions, different file size
W3SameDimensionsSameSize
Same dimensions, same file size
W4SomeMissingDimensions
Some assets missing dimensions
W5OnlyOneHasDimensions
Only one asset has dimensions
W6AllMissingDimensions
All assets missing dimensions
W7ThreePlusDuplicates
3+ assets in group
W8SamePixelsDifferentAspect
Same pixel count, different aspect ratio
C1WinnerLacksGpsLoserHas
Winner lacks GPS, loser has GPS
C2WinnerLacksDatetimeLoserHas
Winner lacks datetime, loser has datetime
C3WinnerLacksDescriptionLoserHas
Winner lacks description, loser has description
C4WinnerLacksAllLoserHasAll
Winner lacks all three, loser has all
C5BothHaveGps
Both have GPS (no consolidation needed)
C6MultipleLosersContribute
Multiple losers contribute different fields
C7NoLoserHasNeeded
No loser has what winner lacks
C8WinnerHasEverything
Winner already has everything
F1GpsConflict
GPS conflict (different locations)
F2GpsWithinThreshold
GPS within threshold (should NOT conflict)
F3TimezoneConflict
Timezone conflict
F4CameraConflict
Camera info conflict
F5CaptureTimeConflict
Capture time conflict
F6MultipleConflicts
Multiple conflicts
F7NoConflicts
No conflicts
X1SingleAssetGroup
Single asset “group”
X2LargeGroup
Large group (10+ duplicates)
X3LargeFile
Large file (>50MB)
X4SpecialCharsFilename
Special characters in filename
X5Video
Video duplicates
X7Png
PNG files (limited EXIF)
X9UnicodeDescription
Unicode in description
X10VeryOldDate
Very old date (<1990)
X11FutureDate
Future date
Implementations§
Trait Implementations§
Source§impl Clone for TestScenario
impl Clone for TestScenario
Source§fn clone(&self) -> TestScenario
fn clone(&self) -> TestScenario
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for TestScenario
Source§impl Debug for TestScenario
impl Debug for TestScenario
Source§impl<'de> Deserialize<'de> for TestScenario
impl<'de> Deserialize<'de> for TestScenario
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl Display for TestScenario
impl Display for TestScenario
impl Eq for TestScenario
Source§impl Hash for TestScenario
impl Hash for TestScenario
Source§impl PartialEq for TestScenario
impl PartialEq for TestScenario
Source§fn eq(&self, other: &TestScenario) -> bool
fn eq(&self, other: &TestScenario) -> bool
self and other values to be equal, and is used by ==.Source§impl Serialize for TestScenario
impl Serialize for TestScenario
impl StructuralPartialEq for TestScenario
Auto Trait Implementations§
impl Freeze for TestScenario
impl RefUnwindSafe for TestScenario
impl Send for TestScenario
impl Sync for TestScenario
impl Unpin for TestScenario
impl UnsafeUnpin for TestScenario
impl UnwindSafe for TestScenario
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> ToStringFallible for Twhere
T: Display,
impl<T> ToStringFallible for Twhere
T: Display,
Source§fn try_to_string(&self) -> Result<String, TryReserveError>
fn try_to_string(&self) -> Result<String, TryReserveError>
ToString::to_string, but without panic on OOM.