Ejemplo n.º 1
0
 def test_unknown_filter(self):
     with self.assertRaises(ValueError) as cm:
         SingleTorrentFilter('foo=bar')
     self.assertEqual(str(cm.exception), "Invalid filter name: 'foo'")
     with self.assertRaises(ValueError) as cm:
         SingleTorrentFilter('foo!~bar')
     self.assertEqual(str(cm.exception), "Invalid filter name: 'foo'")
Ejemplo n.º 2
0
 def test_eta_filter_larger_smaller(self):
     tids = SingleTorrentFilter('eta>1h').apply(tlist, key='id')
     self.assertEqual(set(tids), {
         2,
     })
     tids = SingleTorrentFilter('eta>=1h').apply(tlist, key='id')
     self.assertEqual(set(tids), {2, 3})
Ejemplo n.º 3
0
 def test_boolean_fallback(self):
     tids = SingleTorrentFilter('downloaded').apply(tlist, key='id')
     self.assertEqual(set(tids), {
         4,
     })
     tids = SingleTorrentFilter('!downloaded').apply(tlist, key='id')
     self.assertEqual(set(tids), {1, 2, 3})
     tids = SingleTorrentFilter('name').apply(tlist, key='id')
     self.assertEqual(set(tids), {1, 2, 3, 4})
Ejemplo n.º 4
0
    def test_larger_smaller_operator(self):
        # 375Ki == 384k
        tids = SingleTorrentFilter('rate-down>375Ki').apply(tlist, key='id')
        self.assertEqual(set(tids), set())
        tids = SingleTorrentFilter('rate-down<375 Ki').apply(tlist, key='id')
        self.assertEqual(set(tids), {1, 3, 4})
        tids = SingleTorrentFilter('rate-down>=375 ki').apply(tlist, key='id')
        self.assertEqual(set(tids), {
            2,
        })
        tids = SingleTorrentFilter('rate-down<=384K').apply(tlist, key='id')
        self.assertEqual(set(tids), {1, 2, 3, 4})

        tids = SingleTorrentFilter('%downloaded>0').apply(tlist, key='id')
        self.assertEqual(set(tids), {1, 2, 3, 4})
        tids = SingleTorrentFilter('%downloaded>20').apply(tlist, key='id')
        self.assertEqual(set(tids), {1, 3, 4})
        tids = SingleTorrentFilter('%downloaded>90').apply(tlist, key='id')
        self.assertEqual(set(tids), {1, 3})
        tids = SingleTorrentFilter('%downloaded<90').apply(tlist, key='id')
        self.assertEqual(set(tids), {2, 4})
        tids = SingleTorrentFilter('%downloaded<20').apply(tlist, key='id')
        self.assertEqual(set(tids), {
            2,
        })
Ejemplo n.º 5
0
 def test_progress_filter(self):
     tids = SingleTorrentFilter('complete').apply(tlist, key='id')
     self.assertEqual(set(tids), {
         1,
     })
     tids = SingleTorrentFilter('!complete').apply(tlist, key='id')
     self.assertEqual(set(tids), {2, 3, 4})
     tids = SingleTorrentFilter('%downloaded=48').apply(tlist, key='id')
     self.assertEqual(set(tids), {
         4,
     })
Ejemplo n.º 6
0
 def test_status_filter(self):
     tids = SingleTorrentFilter('stopped').apply(tlist, key='id')
     self.assertEqual(set(tids), {
         4,
     })
     tids = SingleTorrentFilter('downloading').apply(tlist, key='id')
     self.assertEqual(set(tids), {
         2,
     })
     tids = SingleTorrentFilter('uploading').apply(tlist, key='id')
     self.assertEqual(set(tids), {2, 3})
     tids = SingleTorrentFilter('active').apply(tlist, key='id')
     self.assertEqual(set(tids), {2, 3})
Ejemplo n.º 7
0
 def test_name_is_default(self):
     tids = SingleTorrentFilter('=foo').apply(tlist, key='id')
     self.assertEqual(set(tids), {
         1,
     })
     tids = SingleTorrentFilter('!=foo').apply(tlist, key='id')
     self.assertEqual(set(tids), {2, 3, 4})
     tids = SingleTorrentFilter('~foo').apply(tlist, key='id')
     self.assertEqual(set(tids), {1, 4})
     tids = SingleTorrentFilter('!~foo').apply(tlist, key='id')
     self.assertEqual(set(tids), {2, 3})
     tl = list(tlist)
     tl.append(Torrent({'id': 999, 'name': ''}))
     tids = SingleTorrentFilter('!').apply(tl, key='id')
     self.assertEqual(set(tids), {
         999,
     })
Ejemplo n.º 8
0
 def test_equals_operator(self):
     tids = SingleTorrentFilter('name=Foo').apply(tlist, key='id')
     self.assertEqual(set(tids), {
         1,
     })
     tids = SingleTorrentFilter('name=foo').apply(tlist, key='id')
     self.assertEqual(set(tids), {
         1,
     })
     tids = SingleTorrentFilter('name=Foof').apply(tlist, key='id')
     self.assertEqual(set(tids), set())
     tids = SingleTorrentFilter('name=FooF').apply(tlist, key='id')
     self.assertEqual(set(tids), {
         4,
     })
     tids = SingleTorrentFilter('name=42').apply(tlist, key='id')
     self.assertEqual(set(tids), set())
Ejemplo n.º 9
0
 def test_contains_operator(self):
     tids = SingleTorrentFilter('name~i').apply(tlist, key='id')
     self.assertEqual(set(tids), {
         3,
     })
     tids = SingleTorrentFilter('name~oof').apply(tlist, key='id')
     self.assertEqual(set(tids), {
         4,
     })
     tids = SingleTorrentFilter('name~oof').apply(tlist, key='id')
     self.assertEqual(set(tids), {
         4,
     })
     tids = SingleTorrentFilter('name~OOF').apply(tlist, key='id')
     self.assertEqual(set(tids), set())
     tids = SingleTorrentFilter('name~123').apply(tlist, key='id')
     self.assertEqual(set(tids), {
         2,
     })
Ejemplo n.º 10
0
    def test_parsing_spaces(self):
        self.assertEqual(str(SingleTorrentFilter(' idle ')), 'idle')
        self.assertEqual(str(SingleTorrentFilter('   %downloaded   ')),
                         '%downloaded')
        self.assertEqual(str(SingleTorrentFilter(' name = foo')), '=foo')
        self.assertEqual(str(SingleTorrentFilter(' name != foo  ')), '!=foo')
        self.assertEqual(str(SingleTorrentFilter(' name= foo, bar and baz  ')),
                         '= foo, bar and baz  ')

        self.assertEqual(str(SingleTorrentFilter(' =   foo, bar and baz ')),
                         '=foo, bar and baz')
        self.assertEqual(str(SingleTorrentFilter('=   foo, bar and baz ')),
                         '=   foo, bar and baz ')
Ejemplo n.º 11
0
    def test_larger_smaller_operator_on_strings(self):
        tids = SingleTorrentFilter('name<4').apply(tlist, key='id')
        self.assertEqual(set(tids), {1, 3})
        tids = SingleTorrentFilter('name<=4').apply(tlist, key='id')
        self.assertEqual(set(tids), {1, 3, 4})
        tids = SingleTorrentFilter('name<fo').apply(tlist, key='id')
        self.assertEqual(set(tids), {2, 3})
        tids = SingleTorrentFilter('name<=Foo').apply(tlist, key='id')
        self.assertEqual(set(tids), {1, 2, 3})

        tids = SingleTorrentFilter('name>3').apply(tlist, key='id')
        self.assertEqual(set(tids), {2, 4})
        tids = SingleTorrentFilter('name>=3').apply(tlist, key='id')
        self.assertEqual(set(tids), {1, 2, 3, 4})
        tids = SingleTorrentFilter('name>Bar123').apply(tlist, key='id')
        self.assertEqual(set(tids), {1, 3, 4})
        tids = SingleTorrentFilter('name>=Bar123').apply(tlist, key='id')
        self.assertEqual(set(tids), {1, 2, 3, 4})
Ejemplo n.º 12
0
 def test_inverter(self):
     tids = SingleTorrentFilter('downloading').apply(tlist, key='id')
     self.assertEqual(set(tids), {
         2,
     })
     tids = SingleTorrentFilter('!downloading').apply(tlist, key='id')
     self.assertEqual(set(tids), {1, 3, 4})
     tids = SingleTorrentFilter('name~foo').apply(tlist, key='id')
     self.assertEqual(set(tids), {1, 4})
     tids = SingleTorrentFilter('name!~foo').apply(tlist, key='id')
     self.assertEqual(set(tids), {2, 3})
     tids = SingleTorrentFilter('!name~foo').apply(tlist, key='id')
     self.assertEqual(set(tids), {2, 3})
     tids = SingleTorrentFilter('!name!~foo').apply(tlist, key='id')
     self.assertEqual(set(tids), {1, 4})
Ejemplo n.º 13
0
 def test_invalid_values(self):
     with self.assertRaises(ValueError) as cm:
         tuple(SingleTorrentFilter('rate-down>foo').apply(tlist, key='id'))
     self.assertEqual(str(cm.exception),
                      "Invalid value for filter 'rate-down': 'foo'")
Ejemplo n.º 14
0
 def test_equality(self):
     self.assertEqual(SingleTorrentFilter('name=foo'),
                      SingleTorrentFilter('name=foo'))
     self.assertNotEqual(SingleTorrentFilter('name=foo'),
                         SingleTorrentFilter('name=Foo'))
     self.assertEqual(SingleTorrentFilter('complete'),
                      SingleTorrentFilter('complete'))
     self.assertNotEqual(SingleTorrentFilter('complete'),
                         SingleTorrentFilter('!complete'))
     self.assertEqual(SingleTorrentFilter('!private'),
                      SingleTorrentFilter('!private'))
     self.assertNotEqual(SingleTorrentFilter('private'),
                         SingleTorrentFilter('!private'))
Ejemplo n.º 15
0
 def test_invalid_operators(self):
     with self.assertRaises(ValueError) as cm:
         tuple(SingleTorrentFilter('%downloaded~4').apply(tlist, key='id'))
     self.assertEqual(str(cm.exception),
                      "Invalid operator for filter '%downloaded': ~")
Ejemplo n.º 16
0
 def test_private_filter(self):
     tids = SingleTorrentFilter('public').apply(tlist, key='id')
     self.assertEqual(set(tids), {1, 3})
     tids = SingleTorrentFilter('private').apply(tlist, key='id')
     self.assertEqual(set(tids), {2, 4})
Ejemplo n.º 17
0
    def test_parser(self):
        self.assertEqual(str(SingleTorrentFilter()), 'all')
        self.assertEqual(str(SingleTorrentFilter('*')), 'all')
        self.assertEqual(str(SingleTorrentFilter('idle')), 'idle')
        self.assertEqual(str(SingleTorrentFilter('!idle')), '!idle')
        self.assertEqual(str(SingleTorrentFilter('foo')), '~foo')
        self.assertEqual(str(SingleTorrentFilter('~foo')), '~foo')
        self.assertEqual(str(SingleTorrentFilter('=foo')), '=foo')
        self.assertEqual(str(SingleTorrentFilter('!=foo')), '!=foo')
        self.assertEqual(str(SingleTorrentFilter('name= foo')), '= foo')
        self.assertEqual(str(SingleTorrentFilter('name!=foo ')), '!=foo ')
        self.assertEqual(str(SingleTorrentFilter('%downloaded>17.2')),
                         '%downloaded>17.2')

        with self.assertRaises(ValueError) as cm:
            SingleTorrentFilter('=')
        self.assertEqual(str(cm.exception), "Missing value: = ...")
        with self.assertRaises(ValueError) as cm:
            SingleTorrentFilter('%downloaded!>')
        self.assertEqual(str(cm.exception), "Missing value: %downloaded!> ...")
        # with self.assertRaises(ValueError) as cm:
        #     SingleTorrentFilter('tracker')
        # self.assertEqual(str(cm.exception), "Missing operator and value: tracker [<|<=|=|>|>=|~] ...")
        with self.assertRaises(ValueError) as cm:
            SingleTorrentFilter('name! =foo')
        self.assertEqual(str(cm.exception),
                         "Malformed filter expression: 'name! =foo'")
Ejemplo n.º 18
0
 def test_path_filter(self):
     f = SingleTorrentFilter('path=/foo/bar/baz/')
     self.assertEqual(str(f), 'path=/foo/bar/baz/')
Ejemplo n.º 19
0
 def test_aliases(self):
     tids1 = tuple(SingleTorrentFilter('verifying').apply(tlist, key='id'))
     tids2 = tuple(SingleTorrentFilter('checking').apply(tlist, key='id'))
     self.assertEqual(set(tids1), set(tids2))
Ejemplo n.º 20
0
 def test_no_filter(self):
     tids = SingleTorrentFilter().apply(tlist, key='id')
     self.assertEqual(set(tids), {1, 2, 3, 4})
Ejemplo n.º 21
0
 def test_path_filter(self):
     f = SingleTorrentFilter('path=/some/path/to/torrents/')
     self.assertEqual(f, SingleTorrentFilter('path=/some/path/to/torrents'))
     tids = f.apply(tlist, key='id')
     self.assertEqual(set(tids), {1, 2})