2020-07-29 20:52:44 +00:00
import unittest
from hydrus . core import HydrusConstants as HC
from hydrus . core import HydrusData
from hydrus . core import HydrusSerialisable
2021-04-07 21:26:45 +00:00
from hydrus . core import HydrusTags
2020-07-29 20:52:44 +00:00
2020-07-08 22:00:33 +00:00
from hydrus . client import ClientApplicationCommand as CAC
2020-04-22 21:00:35 +00:00
from hydrus . client import ClientConstants as CC
from hydrus . client import ClientData
from hydrus . client import ClientDefaults
from hydrus . client import ClientDuplicates
2020-07-29 20:52:44 +00:00
from hydrus . client import ClientSearch
2020-04-22 21:00:35 +00:00
from hydrus . client . gui import ClientGUIShortcuts
from hydrus . client . importing import ClientImportSubscriptions
from hydrus . client . importing import ClientImportSubscriptionQuery
2021-06-30 21:27:35 +00:00
from hydrus . client . importing . options import ClientImportOptions
from hydrus . client . importing . options import FileImportOptions
from hydrus . client . importing . options import TagImportOptions
2020-05-20 21:36:02 +00:00
from hydrus . client . media import ClientMedia
from hydrus . client . media import ClientMediaManagers
from hydrus . client . media import ClientMediaResult
2020-08-05 20:10:36 +00:00
from hydrus . client . metadata import ClientTags
2020-07-29 20:52:44 +00:00
2020-04-22 21:00:35 +00:00
from hydrus . test import TestController as TC
2017-03-08 23:23:12 +00:00
2017-03-29 19:39:34 +00:00
class TestSerialisables ( unittest . TestCase ) :
2017-03-08 23:23:12 +00:00
def _dump_and_load_and_test ( self , obj , test_func ) :
serialisable_tuple = obj . GetSerialisableTuple ( )
self . assertIsInstance ( serialisable_tuple , tuple )
if isinstance ( obj , HydrusSerialisable . SerialisableBaseNamed ) :
( serialisable_type , name , version , serialisable_info ) = serialisable_tuple
elif isinstance ( obj , HydrusSerialisable . SerialisableBase ) :
( serialisable_type , version , serialisable_info ) = serialisable_tuple
self . assertEqual ( serialisable_type , obj . SERIALISABLE_TYPE )
self . assertEqual ( version , obj . SERIALISABLE_VERSION )
dupe_obj = HydrusSerialisable . CreateFromSerialisableTuple ( serialisable_tuple )
self . assertIsNot ( obj , dupe_obj )
test_func ( obj , dupe_obj )
#
json_string = obj . DumpToString ( )
self . assertIsInstance ( json_string , str )
dupe_obj = HydrusSerialisable . CreateFromString ( json_string )
self . assertIsNot ( obj , dupe_obj )
test_func ( obj , dupe_obj )
#
2019-01-09 22:59:03 +00:00
network_bytes = obj . DumpToNetworkBytes ( )
2017-03-08 23:23:12 +00:00
2019-01-09 22:59:03 +00:00
self . assertIsInstance ( network_bytes , bytes )
2017-03-08 23:23:12 +00:00
2019-01-09 22:59:03 +00:00
dupe_obj = HydrusSerialisable . CreateFromNetworkBytes ( network_bytes )
2017-03-08 23:23:12 +00:00
self . assertIsNot ( obj , dupe_obj )
test_func ( obj , dupe_obj )
def test_basics ( self ) :
2017-03-15 20:13:04 +00:00
def test ( obj , dupe_obj ) :
2019-01-09 22:59:03 +00:00
self . assertEqual ( len ( list ( obj . items ( ) ) ) , len ( list ( dupe_obj . items ( ) ) ) )
2017-03-15 20:13:04 +00:00
2019-01-09 22:59:03 +00:00
for ( key , value ) in list ( obj . items ( ) ) :
2017-03-15 20:13:04 +00:00
self . assertEqual ( value , dupe_obj [ key ] )
#
2017-03-08 23:23:12 +00:00
d = HydrusSerialisable . SerialisableDictionary ( )
d [ 1 ] = 2
d [ 3 ] = ' test1 '
d [ ' test2 ' ] = 4
d [ ' test3 ' ] = 5
d [ 6 ] = HydrusSerialisable . SerialisableDictionary ( { i : ' test ' + str ( i ) for i in range ( 20 ) } )
2020-03-11 21:52:11 +00:00
d [ ClientSearch . Predicate ( ClientSearch . PREDICATE_TYPE_TAG , ' test pred 1 ' ) ] = 56
2017-03-08 23:23:12 +00:00
2020-03-11 21:52:11 +00:00
d [ ClientSearch . Predicate ( ClientSearch . PREDICATE_TYPE_TAG , ' test pred 2 ' ) ] = HydrusSerialisable . SerialisableList ( [ ClientSearch . Predicate ( ClientSearch . PREDICATE_TYPE_TAG , ' test ' + str ( i ) ) for i in range ( 10 ) ] )
2017-03-08 23:23:12 +00:00
2019-01-09 22:59:03 +00:00
self . assertEqual ( len ( list ( d . keys ( ) ) ) , 7 )
2017-03-15 20:13:04 +00:00
2019-01-09 22:59:03 +00:00
for ( key , value ) in list ( d . items ( ) ) :
2017-03-15 20:13:04 +00:00
self . assertEqual ( d [ key ] , value )
self . _dump_and_load_and_test ( d , test )
#
db = HydrusSerialisable . SerialisableBytesDictionary ( )
db [ HydrusData . GenerateKey ( ) ] = HydrusData . GenerateKey ( )
db [ HydrusData . GenerateKey ( ) ] = [ HydrusData . GenerateKey ( ) for i in range ( 10 ) ]
db [ 1 ] = HydrusData . GenerateKey ( )
db [ 2 ] = [ HydrusData . GenerateKey ( ) for i in range ( 10 ) ]
2019-01-09 22:59:03 +00:00
self . assertEqual ( len ( list ( db . keys ( ) ) ) , 4 )
2017-03-15 20:13:04 +00:00
2019-01-09 22:59:03 +00:00
for ( key , value ) in list ( db . items ( ) ) :
2017-03-15 20:13:04 +00:00
self . assertEqual ( db [ key ] , value )
self . _dump_and_load_and_test ( db , test )
2017-04-12 21:46:46 +00:00
def test_SERIALISABLE_TYPE_APPLICATION_COMMAND ( self ) :
2017-03-15 20:13:04 +00:00
2017-03-08 23:23:12 +00:00
def test ( obj , dupe_obj ) :
2017-04-12 21:46:46 +00:00
self . assertEqual ( obj . GetCommandType ( ) , dupe_obj . GetCommandType ( ) )
2017-03-08 23:23:12 +00:00
2021-08-25 21:59:05 +00:00
self . assertSequenceEqual ( tuple ( obj . _data ) , tuple ( dupe_obj . _data ) )
2017-03-08 23:23:12 +00:00
2017-04-12 21:46:46 +00:00
acs = [ ]
2017-03-15 20:13:04 +00:00
2021-08-25 21:59:05 +00:00
acs . append ( ( CAC . ApplicationCommand . STATICCreateSimpleCommand ( CAC . SIMPLE_ARCHIVE_FILE ) , ' archive file ' ) )
acs . append ( ( CAC . ApplicationCommand . STATICCreateSimpleCommand ( CAC . SIMPLE_MEDIA_SEEK_DELTA , simple_data = ( - 1 , 2500 ) ) , ' seek media (back 2.5 seconds) ' ) )
acs . append ( ( CAC . ApplicationCommand . STATICCreateSimpleCommand ( CAC . SIMPLE_MEDIA_SEEK_DELTA , simple_data = ( 1 , 800 ) ) , ' seek media (forwards 800 milliseconds) ' ) )
2020-07-08 22:00:33 +00:00
acs . append ( ( CAC . ApplicationCommand ( CAC . APPLICATION_COMMAND_TYPE_CONTENT , ( HydrusData . GenerateKey ( ) , HC . CONTENT_TYPE_MAPPINGS , HC . CONTENT_UPDATE_FLIP , ' test ' ) ) , ' flip on/off mappings " test " for unknown service! ' ) )
acs . append ( ( CAC . ApplicationCommand ( CAC . APPLICATION_COMMAND_TYPE_CONTENT , ( CC . DEFAULT_LOCAL_TAG_SERVICE_KEY , HC . CONTENT_TYPE_MAPPINGS , HC . CONTENT_UPDATE_FLIP , ' test ' ) ) , ' flip on/off mappings " test " for my tags ' ) )
acs . append ( ( CAC . ApplicationCommand ( CAC . APPLICATION_COMMAND_TYPE_CONTENT , ( HydrusData . GenerateKey ( ) , HC . CONTENT_TYPE_RATINGS , HC . CONTENT_UPDATE_SET , 0.4 ) ) , ' set ratings uncertain rating, " 0.4 " for unknown service! ' ) )
2017-03-15 20:13:04 +00:00
2017-04-12 21:46:46 +00:00
for ( ac , s ) in acs :
self . _dump_and_load_and_test ( ac , test )
self . assertEqual ( ac . ToString ( ) , s )
2017-03-15 20:13:04 +00:00
2017-04-12 21:46:46 +00:00
2022-12-14 22:22:11 +00:00
def test_SERIALISABLE_TYPE_DUPLICATE_CONTENT_MERGE_OPTIONS ( self ) :
2017-04-26 21:58:12 +00:00
def test ( obj , dupe_obj ) :
2022-12-14 22:22:11 +00:00
self . assertEqual ( obj . GetTagServiceActions ( ) , dupe_obj . GetTagServiceActions ( ) )
self . assertEqual ( obj . GetRatingServiceActions ( ) , dupe_obj . GetRatingServiceActions ( ) )
self . assertEqual ( obj . GetSyncArchiveAction ( ) , dupe_obj . GetSyncArchiveAction ( ) )
self . assertEqual ( obj . GetSyncURLsAction ( ) , dupe_obj . GetSyncURLsAction ( ) )
self . assertEqual ( obj . GetSyncNotesAction ( ) , dupe_obj . GetSyncNotesAction ( ) )
self . assertEqual ( obj . GetSyncNoteImportOptions ( ) . GetSerialisableTuple ( ) , dupe_obj . GetSyncNoteImportOptions ( ) . GetSerialisableTuple ( ) )
2017-04-26 21:58:12 +00:00
2022-12-14 22:22:11 +00:00
duplicate_content_merge_options_delete_and_move = ClientDuplicates . DuplicateContentMergeOptions ( )
duplicate_content_merge_options_delete_and_move . SetTagServiceActions ( [ ( CC . DEFAULT_LOCAL_TAG_SERVICE_KEY , HC . CONTENT_MERGE_ACTION_MOVE , HydrusTags . TagFilter ( ) ) ] )
duplicate_content_merge_options_delete_and_move . SetRatingServiceActions ( [ ( TC . LOCAL_RATING_LIKE_SERVICE_KEY , HC . CONTENT_MERGE_ACTION_MOVE ) , ( TC . LOCAL_RATING_NUMERICAL_SERVICE_KEY , HC . CONTENT_MERGE_ACTION_MOVE ) ] )
duplicate_content_merge_options_copy = ClientDuplicates . DuplicateContentMergeOptions ( )
duplicate_content_merge_options_copy . SetTagServiceActions ( [ ( CC . DEFAULT_LOCAL_TAG_SERVICE_KEY , HC . CONTENT_MERGE_ACTION_COPY , HydrusTags . TagFilter ( ) ) ] )
duplicate_content_merge_options_copy . SetRatingServiceActions ( [ ( TC . LOCAL_RATING_LIKE_SERVICE_KEY , HC . CONTENT_MERGE_ACTION_COPY ) , ( TC . LOCAL_RATING_NUMERICAL_SERVICE_KEY , HC . CONTENT_MERGE_ACTION_COPY ) ] )
duplicate_content_merge_options_merge = ClientDuplicates . DuplicateContentMergeOptions ( )
duplicate_content_merge_options_merge . SetTagServiceActions ( [ ( CC . DEFAULT_LOCAL_TAG_SERVICE_KEY , HC . CONTENT_MERGE_ACTION_TWO_WAY_MERGE , HydrusTags . TagFilter ( ) ) ] )
duplicate_content_merge_options_merge . SetRatingServiceActions ( [ ( TC . LOCAL_RATING_LIKE_SERVICE_KEY , HC . CONTENT_MERGE_ACTION_TWO_WAY_MERGE ) , ( TC . LOCAL_RATING_NUMERICAL_SERVICE_KEY , HC . CONTENT_MERGE_ACTION_TWO_WAY_MERGE ) ] )
2017-04-26 21:58:12 +00:00
inbox = True
size = 40960
mime = HC . IMAGE_JPEG
width = 640
height = 480
duration = None
num_frames = None
2019-08-07 22:59:53 +00:00
has_audio = False
2017-04-26 21:58:12 +00:00
num_words = None
2021-04-28 21:43:16 +00:00
local_locations_manager = ClientMediaManagers . LocationsManager ( { CC . LOCAL_FILE_SERVICE_KEY : 123 , CC . COMBINED_LOCAL_FILE_SERVICE_KEY : 123 } , dict ( ) , set ( ) , set ( ) , inbox )
trash_locations_manager = ClientMediaManagers . LocationsManager ( { CC . TRASH_SERVICE_KEY : 123 , CC . COMBINED_LOCAL_FILE_SERVICE_KEY : 12 } , dict ( ) , set ( ) , set ( ) , inbox )
deleted_locations_manager = ClientMediaManagers . LocationsManager ( dict ( ) , { CC . LOCAL_FILE_SERVICE_KEY : 120 , CC . COMBINED_LOCAL_FILE_SERVICE_KEY : 123 } , set ( ) , set ( ) , inbox )
2017-04-26 21:58:12 +00:00
# duplicate to generate proper dicts
2020-08-19 22:38:20 +00:00
one_tags_manager = ClientMediaManagers . TagsManager ( { CC . DEFAULT_LOCAL_TAG_SERVICE_KEY : { HC . CONTENT_STATUS_CURRENT : { ' one ' } } } , { CC . DEFAULT_LOCAL_TAG_SERVICE_KEY : { HC . CONTENT_STATUS_CURRENT : { ' one ' } } } ) . Duplicate ( )
two_tags_manager = ClientMediaManagers . TagsManager ( { CC . DEFAULT_LOCAL_TAG_SERVICE_KEY : { HC . CONTENT_STATUS_CURRENT : { ' two ' } } } , { CC . DEFAULT_LOCAL_TAG_SERVICE_KEY : { HC . CONTENT_STATUS_CURRENT : { ' two ' } } } ) . Duplicate ( )
substantial_tags_manager = ClientMediaManagers . TagsManager ( { CC . DEFAULT_LOCAL_TAG_SERVICE_KEY : { HC . CONTENT_STATUS_CURRENT : { ' test tag ' , ' series:namespaced test tag ' } } } , { CC . DEFAULT_LOCAL_TAG_SERVICE_KEY : { HC . CONTENT_STATUS_CURRENT : { ' test tag ' , ' series:namespaced test tag ' } } } ) . Duplicate ( )
empty_tags_manager = ClientMediaManagers . TagsManager ( { } , { } ) . Duplicate ( )
2017-04-26 21:58:12 +00:00
2020-05-06 21:31:41 +00:00
one_ratings_manager = ClientMediaManagers . RatingsManager ( { TC . LOCAL_RATING_LIKE_SERVICE_KEY : 1.0 , TC . LOCAL_RATING_NUMERICAL_SERVICE_KEY : 0.8 } )
two_ratings_manager = ClientMediaManagers . RatingsManager ( { TC . LOCAL_RATING_LIKE_SERVICE_KEY : 0.0 , TC . LOCAL_RATING_NUMERICAL_SERVICE_KEY : 0.6 } )
substantial_ratings_manager = ClientMediaManagers . RatingsManager ( { TC . LOCAL_RATING_LIKE_SERVICE_KEY : 1.0 , TC . LOCAL_RATING_NUMERICAL_SERVICE_KEY : 0.8 } )
empty_ratings_manager = ClientMediaManagers . RatingsManager ( { } )
2017-04-26 21:58:12 +00:00
2020-05-06 21:31:41 +00:00
notes_manager = ClientMediaManagers . NotesManager ( { } )
file_viewing_stats_manager = ClientMediaManagers . FileViewingStatsManager . STATICGenerateEmptyManager ( )
2018-12-05 22:35:30 +00:00
2017-05-31 21:50:53 +00:00
#
2017-04-26 21:58:12 +00:00
local_hash_has_values = HydrusData . GenerateKey ( )
2020-05-06 21:31:41 +00:00
file_info_manager = ClientMediaManagers . FileInfoManager ( 1 , local_hash_has_values , size , mime , width , height , duration , num_frames , has_audio , num_words )
2017-05-31 21:50:53 +00:00
2020-05-20 21:36:02 +00:00
media_result = ClientMediaResult . MediaResult ( file_info_manager , substantial_tags_manager , local_locations_manager , substantial_ratings_manager , notes_manager , file_viewing_stats_manager )
2017-04-26 21:58:12 +00:00
local_media_has_values = ClientMedia . MediaSingleton ( media_result )
2017-05-31 21:50:53 +00:00
#
2017-04-26 21:58:12 +00:00
other_local_hash_has_values = HydrusData . GenerateKey ( )
2020-05-06 21:31:41 +00:00
file_info_manager = ClientMediaManagers . FileInfoManager ( 2 , other_local_hash_has_values , size , mime , width , height , duration , num_frames , has_audio , num_words )
2017-05-31 21:50:53 +00:00
2020-05-20 21:36:02 +00:00
media_result = ClientMediaResult . MediaResult ( file_info_manager , substantial_tags_manager , local_locations_manager , substantial_ratings_manager , notes_manager , file_viewing_stats_manager )
2017-04-26 21:58:12 +00:00
other_local_media_has_values = ClientMedia . MediaSingleton ( media_result )
2017-05-31 21:50:53 +00:00
#
2017-04-26 21:58:12 +00:00
local_hash_empty = HydrusData . GenerateKey ( )
2020-05-06 21:31:41 +00:00
file_info_manager = ClientMediaManagers . FileInfoManager ( 3 , local_hash_empty , size , mime , width , height , duration , num_frames , has_audio , num_words )
2017-05-31 21:50:53 +00:00
2020-05-20 21:36:02 +00:00
media_result = ClientMediaResult . MediaResult ( file_info_manager , empty_tags_manager , local_locations_manager , empty_ratings_manager , notes_manager , file_viewing_stats_manager )
2017-04-26 21:58:12 +00:00
local_media_empty = ClientMedia . MediaSingleton ( media_result )
2017-05-31 21:50:53 +00:00
#
2017-04-26 21:58:12 +00:00
trashed_hash_empty = HydrusData . GenerateKey ( )
2020-05-06 21:31:41 +00:00
file_info_manager = ClientMediaManagers . FileInfoManager ( 4 , trashed_hash_empty , size , mime , width , height , duration , num_frames , has_audio , num_words )
2017-05-31 21:50:53 +00:00
2020-05-20 21:36:02 +00:00
media_result = ClientMediaResult . MediaResult ( file_info_manager , empty_tags_manager , trash_locations_manager , empty_ratings_manager , notes_manager , file_viewing_stats_manager )
2017-04-26 21:58:12 +00:00
trashed_media_empty = ClientMedia . MediaSingleton ( media_result )
2017-05-31 21:50:53 +00:00
#
2017-04-26 21:58:12 +00:00
deleted_hash_empty = HydrusData . GenerateKey ( )
2020-05-06 21:31:41 +00:00
file_info_manager = ClientMediaManagers . FileInfoManager ( 5 , deleted_hash_empty , size , mime , width , height , duration , num_frames , has_audio , num_words )
2017-05-31 21:50:53 +00:00
2020-05-20 21:36:02 +00:00
media_result = ClientMediaResult . MediaResult ( file_info_manager , empty_tags_manager , deleted_locations_manager , empty_ratings_manager , notes_manager , file_viewing_stats_manager )
2017-04-26 21:58:12 +00:00
deleted_media_empty = ClientMedia . MediaSingleton ( media_result )
2017-05-31 21:50:53 +00:00
#
2017-04-26 21:58:12 +00:00
one_hash = HydrusData . GenerateKey ( )
2020-05-06 21:31:41 +00:00
file_info_manager = ClientMediaManagers . FileInfoManager ( 6 , one_hash , size , mime , width , height , duration , num_frames , has_audio , num_words )
2017-05-31 21:50:53 +00:00
2020-05-20 21:36:02 +00:00
media_result = ClientMediaResult . MediaResult ( file_info_manager , one_tags_manager , local_locations_manager , one_ratings_manager , notes_manager , file_viewing_stats_manager )
2017-04-26 21:58:12 +00:00
one_media = ClientMedia . MediaSingleton ( media_result )
2017-05-31 21:50:53 +00:00
#
2017-04-26 21:58:12 +00:00
two_hash = HydrusData . GenerateKey ( )
2020-05-06 21:31:41 +00:00
file_info_manager = ClientMediaManagers . FileInfoManager ( 7 , two_hash , size , mime , width , height , duration , num_frames , has_audio , num_words )
2017-05-31 21:50:53 +00:00
2020-05-20 21:36:02 +00:00
media_result = ClientMediaResult . MediaResult ( file_info_manager , two_tags_manager , local_locations_manager , two_ratings_manager , notes_manager , file_viewing_stats_manager )
2017-04-26 21:58:12 +00:00
two_media = ClientMedia . MediaSingleton ( media_result )
#
2022-12-14 22:22:11 +00:00
self . _dump_and_load_and_test ( duplicate_content_merge_options_delete_and_move , test )
self . _dump_and_load_and_test ( duplicate_content_merge_options_copy , test )
self . _dump_and_load_and_test ( duplicate_content_merge_options_merge , test )
2017-04-26 21:58:12 +00:00
#
def assertSCUEqual ( one , two ) :
2023-01-04 22:22:08 +00:00
self . maxDiff = None
2017-04-26 21:58:12 +00:00
self . assertEqual ( TC . ConvertServiceKeysToContentUpdatesToComparable ( one ) , TC . ConvertServiceKeysToContentUpdatesToComparable ( two ) )
2019-04-10 22:50:53 +00:00
file_deletion_reason = ' test delete '
2017-04-26 21:58:12 +00:00
#
2022-12-14 22:22:11 +00:00
result = duplicate_content_merge_options_delete_and_move . ProcessPairIntoContentUpdates ( local_media_has_values , local_media_empty , delete_second = True , file_deletion_reason = file_deletion_reason )
2017-04-26 21:58:12 +00:00
scu = { }
2019-04-10 22:50:53 +00:00
scu [ CC . LOCAL_FILE_SERVICE_KEY ] = [ HydrusData . ContentUpdate ( HC . CONTENT_TYPE_FILES , HC . CONTENT_UPDATE_DELETE , { local_hash_empty } , reason = file_deletion_reason ) ]
2017-04-26 21:58:12 +00:00
2018-11-07 23:09:40 +00:00
assertSCUEqual ( result , scu )
2017-04-26 21:58:12 +00:00
#
2022-12-14 22:22:11 +00:00
result = duplicate_content_merge_options_delete_and_move . ProcessPairIntoContentUpdates ( local_media_has_values , trashed_media_empty , delete_second = True , file_deletion_reason = file_deletion_reason )
2017-04-26 21:58:12 +00:00
scu = { }
2021-04-28 21:43:16 +00:00
scu [ CC . COMBINED_LOCAL_FILE_SERVICE_KEY ] = [ HydrusData . ContentUpdate ( HC . CONTENT_TYPE_FILES , HC . CONTENT_UPDATE_DELETE , { trashed_hash_empty } , reason = file_deletion_reason ) ]
2017-04-26 21:58:12 +00:00
2018-11-07 23:09:40 +00:00
assertSCUEqual ( result , scu )
2017-04-26 21:58:12 +00:00
#
2022-12-14 22:22:11 +00:00
result = duplicate_content_merge_options_delete_and_move . ProcessPairIntoContentUpdates ( local_media_has_values , deleted_media_empty , delete_second = True , file_deletion_reason = file_deletion_reason )
2017-04-26 21:58:12 +00:00
2018-11-07 23:09:40 +00:00
self . assertEqual ( result , { } )
2017-04-26 21:58:12 +00:00
#
2022-12-14 22:22:11 +00:00
result = duplicate_content_merge_options_delete_and_move . ProcessPairIntoContentUpdates ( local_media_has_values , other_local_media_has_values , delete_second = True , file_deletion_reason = file_deletion_reason )
2017-04-26 21:58:12 +00:00
scu = { }
2019-09-18 22:40:39 +00:00
scu [ CC . DEFAULT_LOCAL_TAG_SERVICE_KEY ] = [ HydrusData . ContentUpdate ( HC . CONTENT_TYPE_MAPPINGS , HC . CONTENT_UPDATE_DELETE , ( ' test tag ' , { other_local_hash_has_values } ) ) , HydrusData . ContentUpdate ( HC . CONTENT_TYPE_MAPPINGS , HC . CONTENT_UPDATE_DELETE , ( ' series:namespaced test tag ' , { other_local_hash_has_values } ) ) ]
2017-04-26 21:58:12 +00:00
scu [ TC . LOCAL_RATING_LIKE_SERVICE_KEY ] = [ HydrusData . ContentUpdate ( HC . CONTENT_TYPE_RATINGS , HC . CONTENT_UPDATE_ADD , ( None , { other_local_hash_has_values } ) ) ]
scu [ TC . LOCAL_RATING_NUMERICAL_SERVICE_KEY ] = [ HydrusData . ContentUpdate ( HC . CONTENT_TYPE_RATINGS , HC . CONTENT_UPDATE_ADD , ( None , { other_local_hash_has_values } ) ) ]
2019-04-10 22:50:53 +00:00
scu [ CC . LOCAL_FILE_SERVICE_KEY ] = [ HydrusData . ContentUpdate ( HC . CONTENT_TYPE_FILES , HC . CONTENT_UPDATE_DELETE , { other_local_hash_has_values } , reason = file_deletion_reason ) ]
2017-04-26 21:58:12 +00:00
2018-11-07 23:09:40 +00:00
assertSCUEqual ( result , scu )
2017-04-26 21:58:12 +00:00
#
2022-12-14 22:22:11 +00:00
result = duplicate_content_merge_options_delete_and_move . ProcessPairIntoContentUpdates ( local_media_empty , other_local_media_has_values , delete_second = True , file_deletion_reason = file_deletion_reason )
2017-04-26 21:58:12 +00:00
scu = { }
2019-09-18 22:40:39 +00:00
scu [ CC . DEFAULT_LOCAL_TAG_SERVICE_KEY ] = [ HydrusData . ContentUpdate ( HC . CONTENT_TYPE_MAPPINGS , HC . CONTENT_UPDATE_ADD , ( ' test tag ' , { local_hash_empty } ) ) , HydrusData . ContentUpdate ( HC . CONTENT_TYPE_MAPPINGS , HC . CONTENT_UPDATE_ADD , ( ' series:namespaced test tag ' , { local_hash_empty } ) ) , HydrusData . ContentUpdate ( HC . CONTENT_TYPE_MAPPINGS , HC . CONTENT_UPDATE_DELETE , ( ' test tag ' , { other_local_hash_has_values } ) ) , HydrusData . ContentUpdate ( HC . CONTENT_TYPE_MAPPINGS , HC . CONTENT_UPDATE_DELETE , ( ' series:namespaced test tag ' , { other_local_hash_has_values } ) ) ]
2017-04-26 21:58:12 +00:00
scu [ TC . LOCAL_RATING_LIKE_SERVICE_KEY ] = [ HydrusData . ContentUpdate ( HC . CONTENT_TYPE_RATINGS , HC . CONTENT_UPDATE_ADD , ( 1.0 , { local_hash_empty } ) ) , HydrusData . ContentUpdate ( HC . CONTENT_TYPE_RATINGS , HC . CONTENT_UPDATE_ADD , ( None , { other_local_hash_has_values } ) ) ]
scu [ TC . LOCAL_RATING_NUMERICAL_SERVICE_KEY ] = [ HydrusData . ContentUpdate ( HC . CONTENT_TYPE_RATINGS , HC . CONTENT_UPDATE_ADD , ( 0.8 , { local_hash_empty } ) ) , HydrusData . ContentUpdate ( HC . CONTENT_TYPE_RATINGS , HC . CONTENT_UPDATE_ADD , ( None , { other_local_hash_has_values } ) ) ]
2019-04-10 22:50:53 +00:00
scu [ CC . LOCAL_FILE_SERVICE_KEY ] = [ HydrusData . ContentUpdate ( HC . CONTENT_TYPE_FILES , HC . CONTENT_UPDATE_DELETE , { other_local_hash_has_values } , reason = file_deletion_reason ) ]
2017-04-26 21:58:12 +00:00
2018-11-07 23:09:40 +00:00
assertSCUEqual ( result , scu )
2017-04-26 21:58:12 +00:00
#
#
2022-12-14 22:22:11 +00:00
result = duplicate_content_merge_options_copy . ProcessPairIntoContentUpdates ( local_media_has_values , local_media_empty , file_deletion_reason = file_deletion_reason )
2017-04-26 21:58:12 +00:00
2018-11-07 23:09:40 +00:00
self . assertEqual ( result , { } )
2017-04-26 21:58:12 +00:00
#
2022-12-14 22:22:11 +00:00
result = duplicate_content_merge_options_copy . ProcessPairIntoContentUpdates ( local_media_empty , other_local_media_has_values , file_deletion_reason = file_deletion_reason )
2017-04-26 21:58:12 +00:00
scu = { }
2019-09-18 22:40:39 +00:00
scu [ CC . DEFAULT_LOCAL_TAG_SERVICE_KEY ] = [ HydrusData . ContentUpdate ( HC . CONTENT_TYPE_MAPPINGS , HC . CONTENT_UPDATE_ADD , ( ' test tag ' , { local_hash_empty } ) ) , HydrusData . ContentUpdate ( HC . CONTENT_TYPE_MAPPINGS , HC . CONTENT_UPDATE_ADD , ( ' series:namespaced test tag ' , { local_hash_empty } ) ) ]
2017-04-26 21:58:12 +00:00
scu [ TC . LOCAL_RATING_LIKE_SERVICE_KEY ] = [ HydrusData . ContentUpdate ( HC . CONTENT_TYPE_RATINGS , HC . CONTENT_UPDATE_ADD , ( 1.0 , { local_hash_empty } ) ) ]
scu [ TC . LOCAL_RATING_NUMERICAL_SERVICE_KEY ] = [ HydrusData . ContentUpdate ( HC . CONTENT_TYPE_RATINGS , HC . CONTENT_UPDATE_ADD , ( 0.8 , { local_hash_empty } ) ) ]
2018-11-07 23:09:40 +00:00
assertSCUEqual ( result , scu )
2017-04-26 21:58:12 +00:00
#
#
2022-12-14 22:22:11 +00:00
result = duplicate_content_merge_options_merge . ProcessPairIntoContentUpdates ( local_media_has_values , local_media_empty , file_deletion_reason = file_deletion_reason )
2017-04-26 21:58:12 +00:00
scu = { }
2019-09-18 22:40:39 +00:00
scu [ CC . DEFAULT_LOCAL_TAG_SERVICE_KEY ] = [ HydrusData . ContentUpdate ( HC . CONTENT_TYPE_MAPPINGS , HC . CONTENT_UPDATE_ADD , ( ' test tag ' , { local_hash_empty } ) ) , HydrusData . ContentUpdate ( HC . CONTENT_TYPE_MAPPINGS , HC . CONTENT_UPDATE_ADD , ( ' series:namespaced test tag ' , { local_hash_empty } ) ) ]
2017-04-26 21:58:12 +00:00
scu [ TC . LOCAL_RATING_LIKE_SERVICE_KEY ] = [ HydrusData . ContentUpdate ( HC . CONTENT_TYPE_RATINGS , HC . CONTENT_UPDATE_ADD , ( 1.0 , { local_hash_empty } ) ) ]
scu [ TC . LOCAL_RATING_NUMERICAL_SERVICE_KEY ] = [ HydrusData . ContentUpdate ( HC . CONTENT_TYPE_RATINGS , HC . CONTENT_UPDATE_ADD , ( 0.8 , { local_hash_empty } ) ) ]
2018-11-07 23:09:40 +00:00
assertSCUEqual ( result , scu )
2017-04-26 21:58:12 +00:00
#
2022-12-14 22:22:11 +00:00
result = duplicate_content_merge_options_merge . ProcessPairIntoContentUpdates ( local_media_empty , other_local_media_has_values , file_deletion_reason = file_deletion_reason )
2017-04-26 21:58:12 +00:00
scu = { }
2019-09-18 22:40:39 +00:00
scu [ CC . DEFAULT_LOCAL_TAG_SERVICE_KEY ] = [ HydrusData . ContentUpdate ( HC . CONTENT_TYPE_MAPPINGS , HC . CONTENT_UPDATE_ADD , ( ' test tag ' , { local_hash_empty } ) ) , HydrusData . ContentUpdate ( HC . CONTENT_TYPE_MAPPINGS , HC . CONTENT_UPDATE_ADD , ( ' series:namespaced test tag ' , { local_hash_empty } ) ) ]
2017-04-26 21:58:12 +00:00
scu [ TC . LOCAL_RATING_LIKE_SERVICE_KEY ] = [ HydrusData . ContentUpdate ( HC . CONTENT_TYPE_RATINGS , HC . CONTENT_UPDATE_ADD , ( 1.0 , { local_hash_empty } ) ) ]
scu [ TC . LOCAL_RATING_NUMERICAL_SERVICE_KEY ] = [ HydrusData . ContentUpdate ( HC . CONTENT_TYPE_RATINGS , HC . CONTENT_UPDATE_ADD , ( 0.8 , { local_hash_empty } ) ) ]
2018-11-07 23:09:40 +00:00
assertSCUEqual ( result , scu )
2017-04-26 21:58:12 +00:00
#
2022-12-14 22:22:11 +00:00
result = duplicate_content_merge_options_merge . ProcessPairIntoContentUpdates ( one_media , two_media , file_deletion_reason = file_deletion_reason )
2017-04-26 21:58:12 +00:00
scu = { }
2019-09-18 22:40:39 +00:00
scu [ CC . DEFAULT_LOCAL_TAG_SERVICE_KEY ] = [ HydrusData . ContentUpdate ( HC . CONTENT_TYPE_MAPPINGS , HC . CONTENT_UPDATE_ADD , ( ' one ' , { two_hash } ) ) , HydrusData . ContentUpdate ( HC . CONTENT_TYPE_MAPPINGS , HC . CONTENT_UPDATE_ADD , ( ' two ' , { one_hash } ) ) ]
2019-02-27 23:03:30 +00:00
scu [ TC . LOCAL_RATING_LIKE_SERVICE_KEY ] = [ HydrusData . ContentUpdate ( HC . CONTENT_TYPE_RATINGS , HC . CONTENT_UPDATE_ADD , ( 1.0 , { two_hash } ) ) ]
scu [ TC . LOCAL_RATING_NUMERICAL_SERVICE_KEY ] = [ HydrusData . ContentUpdate ( HC . CONTENT_TYPE_RATINGS , HC . CONTENT_UPDATE_ADD , ( 0.8 , { two_hash } ) ) ]
2017-04-26 21:58:12 +00:00
2018-11-07 23:09:40 +00:00
assertSCUEqual ( result , scu )
2017-04-26 21:58:12 +00:00
2017-04-12 21:46:46 +00:00
def test_SERIALISABLE_TYPE_SHORTCUT ( self ) :
2017-03-15 20:13:04 +00:00
2017-04-12 21:46:46 +00:00
def test ( obj , dupe_obj ) :
2020-02-12 22:50:37 +00:00
self . assertEqual ( dupe_obj . __hash__ ( ) , ( dupe_obj . shortcut_type , dupe_obj . shortcut_key , dupe_obj . shortcut_press_type , tuple ( dupe_obj . modifiers ) ) . __hash__ ( ) )
2017-04-12 21:46:46 +00:00
self . assertEqual ( obj , dupe_obj )
shortcuts = [ ]
2017-03-15 20:13:04 +00:00
2018-05-16 20:09:50 +00:00
shortcuts . append ( ( ClientGUIShortcuts . Shortcut ( ) , ' f7 ' ) )
2017-03-15 20:13:04 +00:00
2020-02-19 21:48:36 +00:00
shortcuts . append ( ( ClientGUIShortcuts . Shortcut ( ClientGUIShortcuts . SHORTCUT_TYPE_KEYBOARD_SPECIAL , ClientGUIShortcuts . SHORTCUT_KEY_SPECIAL_SPACE , ClientGUIShortcuts . SHORTCUT_PRESS_TYPE_PRESS , [ ] ) , ' space ' ) )
shortcuts . append ( ( ClientGUIShortcuts . Shortcut ( ClientGUIShortcuts . SHORTCUT_TYPE_KEYBOARD_CHARACTER , ord ( ' a ' ) , ClientGUIShortcuts . SHORTCUT_PRESS_TYPE_PRESS , [ ClientGUIShortcuts . SHORTCUT_MODIFIER_CTRL ] ) , ' ctrl+a ' ) )
shortcuts . append ( ( ClientGUIShortcuts . Shortcut ( ClientGUIShortcuts . SHORTCUT_TYPE_KEYBOARD_CHARACTER , ord ( ' A ' ) , ClientGUIShortcuts . SHORTCUT_PRESS_TYPE_PRESS , [ ClientGUIShortcuts . SHORTCUT_MODIFIER_CTRL ] ) , ' ctrl+a ' ) )
shortcuts . append ( ( ClientGUIShortcuts . Shortcut ( ClientGUIShortcuts . SHORTCUT_TYPE_KEYBOARD_SPECIAL , ClientGUIShortcuts . SHORTCUT_KEY_SPECIAL_HOME , ClientGUIShortcuts . SHORTCUT_PRESS_TYPE_PRESS , [ ClientGUIShortcuts . SHORTCUT_MODIFIER_ALT , ClientGUIShortcuts . SHORTCUT_MODIFIER_CTRL ] ) , ' ctrl+alt+home ' ) )
2017-04-12 21:46:46 +00:00
2020-02-19 21:48:36 +00:00
shortcuts . append ( ( ClientGUIShortcuts . Shortcut ( ClientGUIShortcuts . SHORTCUT_TYPE_MOUSE , ClientGUIShortcuts . SHORTCUT_MOUSE_LEFT , ClientGUIShortcuts . SHORTCUT_PRESS_TYPE_PRESS , [ ] ) , ' left-click ' ) )
shortcuts . append ( ( ClientGUIShortcuts . Shortcut ( ClientGUIShortcuts . SHORTCUT_TYPE_MOUSE , ClientGUIShortcuts . SHORTCUT_MOUSE_MIDDLE , ClientGUIShortcuts . SHORTCUT_PRESS_TYPE_PRESS , [ ClientGUIShortcuts . SHORTCUT_MODIFIER_CTRL ] ) , ' ctrl+middle-click ' ) )
shortcuts . append ( ( ClientGUIShortcuts . Shortcut ( ClientGUIShortcuts . SHORTCUT_TYPE_MOUSE , ClientGUIShortcuts . SHORTCUT_MOUSE_SCROLL_DOWN , ClientGUIShortcuts . SHORTCUT_PRESS_TYPE_PRESS , [ ClientGUIShortcuts . SHORTCUT_MODIFIER_ALT , ClientGUIShortcuts . SHORTCUT_MODIFIER_SHIFT ] ) , ' alt+shift+scroll down ' ) )
2017-04-12 21:46:46 +00:00
for ( shortcut , s ) in shortcuts :
2017-03-15 20:13:04 +00:00
2017-04-12 21:46:46 +00:00
self . _dump_and_load_and_test ( shortcut , test )
2020-11-11 22:20:16 +00:00
if HC . PLATFORM_MACOS :
s = s . replace ( ' ctrl ' , ' command ' )
2017-04-12 21:46:46 +00:00
self . assertEqual ( shortcut . ToString ( ) , s )
2017-03-15 20:13:04 +00:00
2017-04-12 21:46:46 +00:00
2019-06-05 19:42:39 +00:00
def test_SERIALISABLE_TYPE_SHORTCUT_SET ( self ) :
2017-03-15 20:13:04 +00:00
2017-04-12 21:46:46 +00:00
def test ( obj , dupe_obj ) :
for ( shortcut , command ) in obj :
2021-08-25 21:59:05 +00:00
self . assertEqual ( dupe_obj . GetCommand ( shortcut ) , command )
2017-04-12 21:46:46 +00:00
default_shortcuts = ClientDefaults . GetDefaultShortcuts ( )
2017-03-15 20:13:04 +00:00
2017-04-12 21:46:46 +00:00
for shortcuts in default_shortcuts :
2017-03-15 20:13:04 +00:00
2017-04-12 21:46:46 +00:00
self . _dump_and_load_and_test ( shortcuts , test )
2017-03-15 20:13:04 +00:00
2017-03-08 23:23:12 +00:00
2021-08-25 21:59:05 +00:00
command_1 = CAC . ApplicationCommand . STATICCreateSimpleCommand ( CAC . SIMPLE_ARCHIVE_FILE )
2020-07-08 22:00:33 +00:00
command_2 = CAC . ApplicationCommand ( CAC . APPLICATION_COMMAND_TYPE_CONTENT , ( HydrusData . GenerateKey ( ) , HC . CONTENT_TYPE_MAPPINGS , HC . CONTENT_UPDATE_FLIP , ' test ' ) )
command_3 = CAC . ApplicationCommand ( CAC . APPLICATION_COMMAND_TYPE_CONTENT , ( CC . DEFAULT_LOCAL_TAG_SERVICE_KEY , HC . CONTENT_TYPE_MAPPINGS , HC . CONTENT_UPDATE_FLIP , ' test ' ) )
2017-04-12 21:46:46 +00:00
2020-02-19 21:48:36 +00:00
k_shortcut_1 = ClientGUIShortcuts . Shortcut ( ClientGUIShortcuts . SHORTCUT_TYPE_KEYBOARD_SPECIAL , ClientGUIShortcuts . SHORTCUT_KEY_SPECIAL_SPACE , ClientGUIShortcuts . SHORTCUT_PRESS_TYPE_PRESS , [ ] )
k_shortcut_2 = ClientGUIShortcuts . Shortcut ( ClientGUIShortcuts . SHORTCUT_TYPE_KEYBOARD_CHARACTER , ord ( ' a ' ) , ClientGUIShortcuts . SHORTCUT_PRESS_TYPE_PRESS , [ ClientGUIShortcuts . SHORTCUT_MODIFIER_CTRL ] )
k_shortcut_3 = ClientGUIShortcuts . Shortcut ( ClientGUIShortcuts . SHORTCUT_TYPE_KEYBOARD_CHARACTER , ord ( ' A ' ) , ClientGUIShortcuts . SHORTCUT_PRESS_TYPE_PRESS , [ ClientGUIShortcuts . SHORTCUT_MODIFIER_CTRL ] )
k_shortcut_4 = ClientGUIShortcuts . Shortcut ( ClientGUIShortcuts . SHORTCUT_TYPE_KEYBOARD_SPECIAL , ClientGUIShortcuts . SHORTCUT_KEY_SPECIAL_HOME , ClientGUIShortcuts . SHORTCUT_PRESS_TYPE_PRESS , [ ClientGUIShortcuts . SHORTCUT_MODIFIER_ALT , ClientGUIShortcuts . SHORTCUT_MODIFIER_CTRL ] )
2017-04-12 21:46:46 +00:00
2020-02-19 21:48:36 +00:00
m_shortcut_1 = ClientGUIShortcuts . Shortcut ( ClientGUIShortcuts . SHORTCUT_TYPE_MOUSE , ClientGUIShortcuts . SHORTCUT_MOUSE_LEFT , ClientGUIShortcuts . SHORTCUT_PRESS_TYPE_PRESS , [ ] )
m_shortcut_2 = ClientGUIShortcuts . Shortcut ( ClientGUIShortcuts . SHORTCUT_TYPE_MOUSE , ClientGUIShortcuts . SHORTCUT_MOUSE_MIDDLE , ClientGUIShortcuts . SHORTCUT_PRESS_TYPE_PRESS , [ ClientGUIShortcuts . SHORTCUT_MODIFIER_CTRL ] )
m_shortcut_3 = ClientGUIShortcuts . Shortcut ( ClientGUIShortcuts . SHORTCUT_TYPE_MOUSE , ClientGUIShortcuts . SHORTCUT_MOUSE_SCROLL_DOWN , ClientGUIShortcuts . SHORTCUT_PRESS_TYPE_PRESS , [ ClientGUIShortcuts . SHORTCUT_MODIFIER_ALT , ClientGUIShortcuts . SHORTCUT_MODIFIER_SHIFT ] )
2017-04-12 21:46:46 +00:00
2019-06-05 19:42:39 +00:00
shortcut_set = ClientGUIShortcuts . ShortcutSet ( ' test ' )
2017-04-12 21:46:46 +00:00
2019-06-05 19:42:39 +00:00
shortcut_set . SetCommand ( k_shortcut_1 , command_1 )
shortcut_set . SetCommand ( k_shortcut_2 , command_2 )
shortcut_set . SetCommand ( k_shortcut_3 , command_2 )
shortcut_set . SetCommand ( k_shortcut_4 , command_3 )
2017-04-12 21:46:46 +00:00
2019-06-05 19:42:39 +00:00
shortcut_set . SetCommand ( m_shortcut_1 , command_1 )
shortcut_set . SetCommand ( m_shortcut_2 , command_2 )
shortcut_set . SetCommand ( m_shortcut_3 , command_3 )
2017-04-12 21:46:46 +00:00
2019-06-05 19:42:39 +00:00
self . _dump_and_load_and_test ( shortcut_set , test )
2017-04-12 21:46:46 +00:00
2021-08-25 21:59:05 +00:00
self . assertEqual ( tuple ( shortcut_set . GetCommand ( k_shortcut_1 ) . _data ) , tuple ( command_1 . _data ) )
2017-04-12 21:46:46 +00:00
2019-06-05 19:42:39 +00:00
shortcut_set . SetCommand ( k_shortcut_1 , command_3 )
2017-04-12 21:46:46 +00:00
2021-08-25 21:59:05 +00:00
self . assertEqual ( tuple ( shortcut_set . GetCommand ( k_shortcut_1 ) . _data ) , tuple ( command_3 . _data ) )
2017-04-12 21:46:46 +00:00
2017-03-29 19:39:34 +00:00
def test_SERIALISABLE_TYPE_SUBSCRIPTION ( self ) :
def test ( obj , dupe_obj ) :
self . assertEqual ( obj . GetName ( ) , dupe_obj . GetName ( ) )
2018-09-05 20:52:32 +00:00
self . assertEqual ( obj . _gug_key_and_name , dupe_obj . _gug_key_and_name )
2020-06-11 12:01:08 +00:00
self . assertEqual ( len ( obj . _query_headers ) , len ( dupe_obj . _query_headers ) )
2017-03-29 19:39:34 +00:00
self . assertEqual ( obj . _initial_file_limit , dupe_obj . _initial_file_limit )
self . assertEqual ( obj . _periodic_file_limit , dupe_obj . _periodic_file_limit )
self . assertEqual ( obj . _paused , dupe_obj . _paused )
2017-09-13 20:50:41 +00:00
self . assertEqual ( obj . _file_import_options . GetSerialisableTuple ( ) , dupe_obj . _file_import_options . GetSerialisableTuple ( ) )
2017-09-20 19:47:31 +00:00
self . assertEqual ( obj . _tag_import_options . GetSerialisableTuple ( ) , dupe_obj . _tag_import_options . GetSerialisableTuple ( ) )
2017-03-29 19:39:34 +00:00
2017-11-08 22:07:12 +00:00
self . assertEqual ( obj . _no_work_until , dupe_obj . _no_work_until )
2017-03-29 19:39:34 +00:00
2018-08-01 20:44:57 +00:00
sub = ClientImportSubscriptions . Subscription ( ' test sub ' )
2017-03-29 19:39:34 +00:00
self . _dump_and_load_and_test ( sub , test )
2018-09-05 20:52:32 +00:00
gug_key_and_name = ( HydrusData . GenerateKey ( ) , ' muh test gug ' )
2020-06-11 12:01:08 +00:00
query_headers = [ ]
q = ClientImportSubscriptionQuery . SubscriptionQueryHeader ( )
q . SetQueryText ( ' test query ' )
query_headers . append ( q )
q = ClientImportSubscriptionQuery . SubscriptionQueryHeader ( )
q . SetQueryText ( ' test query 2 ' )
query_headers . append ( q )
2018-05-16 20:09:50 +00:00
checker_options = ClientImportOptions . CheckerOptions ( )
2017-03-29 19:39:34 +00:00
initial_file_limit = 100
periodic_file_limit = 50
paused = False
2021-06-30 21:27:35 +00:00
file_import_options = FileImportOptions . FileImportOptions ( )
2018-06-27 19:27:05 +00:00
2021-06-30 21:27:35 +00:00
service_tag_import_options = TagImportOptions . ServiceTagImportOptions ( get_tags = False , additional_tags = { ' test additional tag ' , ' and another ' } )
2018-06-27 19:27:05 +00:00
2021-06-30 21:27:35 +00:00
tag_import_options = TagImportOptions . TagImportOptions ( service_keys_to_service_tag_import_options = { HydrusData . GenerateKey ( ) : service_tag_import_options } )
2017-03-29 19:39:34 +00:00
2017-11-08 22:07:12 +00:00
no_work_until = HydrusData . GetNow ( ) - 86400 * 20
2017-03-29 19:39:34 +00:00
2020-04-22 21:00:35 +00:00
sub . SetTuple ( gug_key_and_name , checker_options , initial_file_limit , periodic_file_limit , paused , file_import_options , tag_import_options , no_work_until )
2020-06-11 12:01:08 +00:00
sub . SetQueryHeaders ( query_headers )
2017-03-29 19:39:34 +00:00
2018-09-05 20:52:32 +00:00
self . assertEqual ( sub . GetGUGKeyAndName ( ) , gug_key_and_name )
2017-09-20 19:47:31 +00:00
self . assertEqual ( sub . GetTagImportOptions ( ) , tag_import_options )
2020-06-11 12:01:08 +00:00
self . assertEqual ( sub . GetQueryHeaders ( ) , query_headers )
2017-03-29 19:39:34 +00:00
self . assertEqual ( sub . _paused , False )
sub . PauseResume ( )
self . assertEqual ( sub . _paused , True )
sub . PauseResume ( )
self . assertEqual ( sub . _paused , False )
self . _dump_and_load_and_test ( sub , test )
2018-04-25 22:07:52 +00:00
def test_SERIALISABLE_TYPE_TAG_FILTER ( self ) :
2017-05-24 20:28:24 +00:00
def test ( obj , dupe_obj ) :
self . assertEqual ( obj . _tag_slices_to_rules , dupe_obj . _tag_slices_to_rules )
tags = set ( )
tags . add ( ' title:test title ' )
tags . add ( ' series:neon genesis evangelion ' )
tags . add ( ' series:kill la kill ' )
tags . add ( ' smile ' )
tags . add ( ' blue eyes ' )
#
2021-04-07 21:26:45 +00:00
tag_filter = HydrusTags . TagFilter ( )
2017-05-24 20:28:24 +00:00
2018-04-25 22:07:52 +00:00
self . _dump_and_load_and_test ( tag_filter , test )
2017-05-24 20:28:24 +00:00
2018-04-25 22:07:52 +00:00
self . assertEqual ( tag_filter . Filter ( tags ) , { ' smile ' , ' blue eyes ' , ' title:test title ' , ' series:neon genesis evangelion ' , ' series:kill la kill ' } )
2017-05-24 20:28:24 +00:00
#
2021-04-07 21:26:45 +00:00
tag_filter = HydrusTags . TagFilter ( )
2017-05-24 20:28:24 +00:00
2021-04-07 21:26:45 +00:00
tag_filter . SetRule ( ' ' , HC . FILTER_BLACKLIST )
tag_filter . SetRule ( ' : ' , HC . FILTER_BLACKLIST )
2017-05-24 20:28:24 +00:00
2018-04-25 22:07:52 +00:00
self . _dump_and_load_and_test ( tag_filter , test )
2017-05-24 20:28:24 +00:00
2018-04-25 22:07:52 +00:00
self . assertEqual ( tag_filter . Filter ( tags ) , set ( ) )
2017-05-24 20:28:24 +00:00
#
2021-04-07 21:26:45 +00:00
tag_filter = HydrusTags . TagFilter ( )
2017-05-24 20:28:24 +00:00
2021-04-07 21:26:45 +00:00
tag_filter . SetRule ( ' ' , HC . FILTER_BLACKLIST )
tag_filter . SetRule ( ' : ' , HC . FILTER_BLACKLIST )
tag_filter . SetRule ( ' series: ' , HC . FILTER_WHITELIST )
2017-05-24 20:28:24 +00:00
2018-04-25 22:07:52 +00:00
self . _dump_and_load_and_test ( tag_filter , test )
2017-05-24 20:28:24 +00:00
2018-04-25 22:07:52 +00:00
self . assertEqual ( tag_filter . Filter ( tags ) , { ' series:neon genesis evangelion ' , ' series:kill la kill ' } )
2017-05-24 20:28:24 +00:00
#
2021-04-07 21:26:45 +00:00
tag_filter = HydrusTags . TagFilter ( )
2017-05-24 20:28:24 +00:00
2021-04-07 21:26:45 +00:00
tag_filter . SetRule ( ' ' , HC . FILTER_BLACKLIST )
tag_filter . SetRule ( ' : ' , HC . FILTER_BLACKLIST )
tag_filter . SetRule ( ' series:kill la kill ' , HC . FILTER_WHITELIST )
2017-05-24 20:28:24 +00:00
2018-04-25 22:07:52 +00:00
self . _dump_and_load_and_test ( tag_filter , test )
2017-05-24 20:28:24 +00:00
2018-04-25 22:07:52 +00:00
self . assertEqual ( tag_filter . Filter ( tags ) , { ' series:kill la kill ' } )
2017-05-24 20:28:24 +00:00
#
2021-04-07 21:26:45 +00:00
tag_filter = HydrusTags . TagFilter ( )
2017-05-24 20:28:24 +00:00
2021-04-07 21:26:45 +00:00
tag_filter . SetRule ( ' ' , HC . FILTER_BLACKLIST )
tag_filter . SetRule ( ' : ' , HC . FILTER_BLACKLIST )
tag_filter . SetRule ( ' smile ' , HC . FILTER_WHITELIST )
2017-05-24 20:28:24 +00:00
2018-04-25 22:07:52 +00:00
self . _dump_and_load_and_test ( tag_filter , test )
2017-05-24 20:28:24 +00:00
2018-04-25 22:07:52 +00:00
self . assertEqual ( tag_filter . Filter ( tags ) , { ' smile ' } )
2017-05-24 20:28:24 +00:00
#
2021-04-07 21:26:45 +00:00
tag_filter = HydrusTags . TagFilter ( )
2017-05-24 20:28:24 +00:00
2021-04-07 21:26:45 +00:00
tag_filter . SetRule ( ' : ' , HC . FILTER_BLACKLIST )
2017-05-24 20:28:24 +00:00
2018-04-25 22:07:52 +00:00
self . _dump_and_load_and_test ( tag_filter , test )
2017-05-24 20:28:24 +00:00
2018-04-25 22:07:52 +00:00
self . assertEqual ( tag_filter . Filter ( tags ) , { ' smile ' , ' blue eyes ' } )
2017-05-24 20:28:24 +00:00
#
2021-04-07 21:26:45 +00:00
tag_filter = HydrusTags . TagFilter ( )
2017-05-24 20:28:24 +00:00
2021-04-07 21:26:45 +00:00
tag_filter . SetRule ( ' : ' , HC . FILTER_BLACKLIST )
tag_filter . SetRule ( ' series: ' , HC . FILTER_WHITELIST )
2017-05-24 20:28:24 +00:00
2018-04-25 22:07:52 +00:00
self . _dump_and_load_and_test ( tag_filter , test )
2017-05-24 20:28:24 +00:00
2018-04-25 22:07:52 +00:00
self . assertEqual ( tag_filter . Filter ( tags ) , { ' smile ' , ' blue eyes ' , ' series:neon genesis evangelion ' , ' series:kill la kill ' } )
2017-05-24 20:28:24 +00:00
#
2021-04-07 21:26:45 +00:00
tag_filter = HydrusTags . TagFilter ( )
2017-05-24 20:28:24 +00:00
2021-04-07 21:26:45 +00:00
tag_filter . SetRule ( ' : ' , HC . FILTER_BLACKLIST )
tag_filter . SetRule ( ' series:kill la kill ' , HC . FILTER_WHITELIST )
2017-05-24 20:28:24 +00:00
2018-04-25 22:07:52 +00:00
self . _dump_and_load_and_test ( tag_filter , test )
2017-05-24 20:28:24 +00:00
2018-04-25 22:07:52 +00:00
self . assertEqual ( tag_filter . Filter ( tags ) , { ' smile ' , ' blue eyes ' , ' series:kill la kill ' } )
2017-05-24 20:28:24 +00:00
#
2021-04-07 21:26:45 +00:00
tag_filter = HydrusTags . TagFilter ( )
2017-05-24 20:28:24 +00:00
2021-04-07 21:26:45 +00:00
tag_filter . SetRule ( ' series: ' , HC . FILTER_BLACKLIST )
2017-05-24 20:28:24 +00:00
2018-04-25 22:07:52 +00:00
self . _dump_and_load_and_test ( tag_filter , test )
2017-05-24 20:28:24 +00:00
2018-04-25 22:07:52 +00:00
self . assertEqual ( tag_filter . Filter ( tags ) , { ' smile ' , ' blue eyes ' , ' title:test title ' } )
2017-05-24 20:28:24 +00:00
#
2021-04-07 21:26:45 +00:00
tag_filter = HydrusTags . TagFilter ( )
2017-05-24 20:28:24 +00:00
2021-04-07 21:26:45 +00:00
tag_filter . SetRule ( ' series: ' , HC . FILTER_BLACKLIST )
tag_filter . SetRule ( ' series:neon genesis evangelion ' , HC . FILTER_WHITELIST )
2017-05-24 20:28:24 +00:00
2018-04-25 22:07:52 +00:00
self . _dump_and_load_and_test ( tag_filter , test )
2017-05-24 20:28:24 +00:00
2018-04-25 22:07:52 +00:00
self . assertEqual ( tag_filter . Filter ( tags ) , { ' smile ' , ' blue eyes ' , ' title:test title ' , ' series:neon genesis evangelion ' } )
2017-05-24 20:28:24 +00:00
#
2021-04-07 21:26:45 +00:00
tag_filter = HydrusTags . TagFilter ( )
2017-05-24 20:28:24 +00:00
2021-04-07 21:26:45 +00:00
tag_filter . SetRule ( ' ' , HC . FILTER_BLACKLIST )
2017-05-24 20:28:24 +00:00
2018-04-25 22:07:52 +00:00
self . _dump_and_load_and_test ( tag_filter , test )
2017-05-24 20:28:24 +00:00
2018-04-25 22:07:52 +00:00
self . assertEqual ( tag_filter . Filter ( tags ) , { ' title:test title ' , ' series:neon genesis evangelion ' , ' series:kill la kill ' } )
2017-05-24 20:28:24 +00:00
#
2021-04-07 21:26:45 +00:00
tag_filter = HydrusTags . TagFilter ( )
2017-05-24 20:28:24 +00:00
2021-04-07 21:26:45 +00:00
tag_filter . SetRule ( ' ' , HC . FILTER_BLACKLIST )
tag_filter . SetRule ( ' blue eyes ' , HC . FILTER_WHITELIST )
2017-05-24 20:28:24 +00:00
2018-04-25 22:07:52 +00:00
self . _dump_and_load_and_test ( tag_filter , test )
2017-05-24 20:28:24 +00:00
2018-04-25 22:07:52 +00:00
self . assertEqual ( tag_filter . Filter ( tags ) , { ' title:test title ' , ' series:neon genesis evangelion ' , ' series:kill la kill ' , ' blue eyes ' } )
2017-05-24 20:28:24 +00:00
2020-04-16 00:09:42 +00:00
# blacklist namespace test
blacklist_tags = { ' nintendo ' , ' studio:nintendo ' }
#
2021-04-07 21:26:45 +00:00
tag_filter = HydrusTags . TagFilter ( )
2020-04-16 00:09:42 +00:00
2021-04-07 21:26:45 +00:00
tag_filter . SetRule ( ' nintendo ' , HC . FILTER_BLACKLIST )
2020-04-16 00:09:42 +00:00
self . _dump_and_load_and_test ( tag_filter , test )
self . assertEqual ( tag_filter . Filter ( blacklist_tags ) , { ' studio:nintendo ' } )
#
2021-04-07 21:26:45 +00:00
tag_filter = HydrusTags . TagFilter ( )
2020-04-16 00:09:42 +00:00
2021-04-07 21:26:45 +00:00
tag_filter . SetRule ( ' nintendo ' , HC . FILTER_BLACKLIST )
2020-04-16 00:09:42 +00:00
self . _dump_and_load_and_test ( tag_filter , test )
self . assertEqual ( tag_filter . Filter ( blacklist_tags , apply_unnamespaced_rules_to_namespaced_tags = True ) , set ( ) )
#
2021-04-07 21:26:45 +00:00
tag_filter = HydrusTags . TagFilter ( )
2020-04-16 00:09:42 +00:00
2021-04-07 21:26:45 +00:00
tag_filter . SetRule ( ' nintendo ' , HC . FILTER_BLACKLIST )
tag_filter . SetRule ( ' studio:nintendo ' , HC . FILTER_WHITELIST )
2020-04-16 00:09:42 +00:00
self . _dump_and_load_and_test ( tag_filter , test )
self . assertEqual ( tag_filter . Filter ( blacklist_tags , apply_unnamespaced_rules_to_namespaced_tags = True ) , { ' studio:nintendo ' } )
2017-05-24 20:28:24 +00:00