def test_remove_items(self): # {{{ ' Test removal of many-(many,one) items ' cache = self.init_cache() tmap = cache.get_id_map('tags') self.assertEqual(cache.remove_items('tags', tmap), {1, 2}) tmap = cache.get_id_map('#tags') t = {v:k for k, v in tmap.iteritems()}['My Tag Two'] self.assertEqual(cache.remove_items('#tags', (t,)), {1, 2}) smap = cache.get_id_map('series') self.assertEqual(cache.remove_items('series', smap), {1, 2}) smap = cache.get_id_map('#series') s = {v:k for k, v in smap.iteritems()}['My Series Two'] self.assertEqual(cache.remove_items('#series', (s,)), {1}) for c in (cache, self.init_cache()): self.assertFalse(c.get_id_map('tags')) self.assertFalse(c.all_field_names('tags')) for bid in c.all_book_ids(): self.assertFalse(c.field_for('tags', bid)) self.assertEqual(len(c.get_id_map('#tags')), 1) self.assertEqual(c.all_field_names('#tags'), {'My Tag One'}) for bid in c.all_book_ids(): self.assertIn(c.field_for('#tags', bid), ((), ('My Tag One',))) for bid in (1, 2): self.assertEqual(c.field_for('series_index', bid), 1.0) self.assertFalse(c.get_id_map('series')) self.assertFalse(c.all_field_names('series')) for bid in c.all_book_ids(): self.assertFalse(c.field_for('series', bid)) self.assertEqual(c.field_for('series_index', 1), 1.0) self.assertEqual(c.all_field_names('#series'), {'My Series One'}) for bid in c.all_book_ids(): self.assertIn(c.field_for('#series', bid), (None, 'My Series One')) # Now test with restriction cache = self.init_cache() cache.set_field('tags', {1:'a,b,c', 2:'b,a', 3:'x,y,z'}) cache.set_field('series', {1:'a', 2:'a', 3:'b'}) cache.set_field('series_index', {1:8, 2:9, 3:3}) tmap, smap = cache.get_id_map('tags'), cache.get_id_map('series') self.assertEqual(cache.remove_items('tags', tmap, restrict_to_book_ids=()), set()) self.assertEqual(cache.remove_items('tags', tmap, restrict_to_book_ids={1}), {1}) self.assertEqual(cache.remove_items('series', smap, restrict_to_book_ids=()), set()) self.assertEqual(cache.remove_items('series', smap, restrict_to_book_ids=(1,)), {1}) c2 = self.init_cache() for c in (cache, c2): self.assertEqual(c.field_for('tags', 1), ()) self.assertEqual(c.field_for('tags', 2), ('b', 'a')) self.assertNotIn('c', set(c.get_id_map('tags').itervalues())) self.assertEqual(c.field_for('series', 1), None) self.assertEqual(c.field_for('series', 2), 'a') self.assertEqual(c.field_for('series_index', 1), 1.0) self.assertEqual(c.field_for('series_index', 2), 9)
def test_remove_items(self): # {{{ ' Test removal of many-(many,one) items ' cache = self.init_cache() tmap = cache.get_id_map('tags') self.assertEqual(cache.remove_items('tags', tmap), {1, 2}) tmap = cache.get_id_map('#tags') t = {v:k for k, v in iteritems(tmap)}['My Tag Two'] self.assertEqual(cache.remove_items('#tags', (t,)), {1, 2}) smap = cache.get_id_map('series') self.assertEqual(cache.remove_items('series', smap), {1, 2}) smap = cache.get_id_map('#series') s = {v:k for k, v in iteritems(smap)}['My Series Two'] self.assertEqual(cache.remove_items('#series', (s,)), {1}) for c in (cache, self.init_cache()): self.assertFalse(c.get_id_map('tags')) self.assertFalse(c.all_field_names('tags')) for bid in c.all_book_ids(): self.assertFalse(c.field_for('tags', bid)) self.assertEqual(len(c.get_id_map('#tags')), 1) self.assertEqual(c.all_field_names('#tags'), {'My Tag One'}) for bid in c.all_book_ids(): self.assertIn(c.field_for('#tags', bid), ((), ('My Tag One',))) for bid in (1, 2): self.assertEqual(c.field_for('series_index', bid), 1.0) self.assertFalse(c.get_id_map('series')) self.assertFalse(c.all_field_names('series')) for bid in c.all_book_ids(): self.assertFalse(c.field_for('series', bid)) self.assertEqual(c.field_for('series_index', 1), 1.0) self.assertEqual(c.all_field_names('#series'), {'My Series One'}) for bid in c.all_book_ids(): self.assertIn(c.field_for('#series', bid), (None, 'My Series One')) # Now test with restriction cache = self.init_cache() cache.set_field('tags', {1:'a,b,c', 2:'b,a', 3:'x,y,z'}) cache.set_field('series', {1:'a', 2:'a', 3:'b'}) cache.set_field('series_index', {1:8, 2:9, 3:3}) tmap, smap = cache.get_id_map('tags'), cache.get_id_map('series') self.assertEqual(cache.remove_items('tags', tmap, restrict_to_book_ids=()), set()) self.assertEqual(cache.remove_items('tags', tmap, restrict_to_book_ids={1}), {1}) self.assertEqual(cache.remove_items('series', smap, restrict_to_book_ids=()), set()) self.assertEqual(cache.remove_items('series', smap, restrict_to_book_ids=(1,)), {1}) c2 = self.init_cache() for c in (cache, c2): self.assertEqual(c.field_for('tags', 1), ()) self.assertEqual(c.field_for('tags', 2), ('b', 'a')) self.assertNotIn('c', set(itervalues(c.get_id_map('tags')))) self.assertEqual(c.field_for('series', 1), None) self.assertEqual(c.field_for('series', 2), 'a') self.assertEqual(c.field_for('series_index', 1), 1.0) self.assertEqual(c.field_for('series_index', 2), 9)
def test_remove_items(self): # {{{ ' Test removal of many-(many,one) items ' cache = self.init_cache() tmap = cache.get_id_map('tags') self.assertEqual(cache.remove_items('tags', tmap), {1, 2}) tmap = cache.get_id_map('#tags') t = {v: k for k, v in tmap.iteritems()}['My Tag Two'] self.assertEqual(cache.remove_items('#tags', (t, )), {1, 2}) smap = cache.get_id_map('series') self.assertEqual(cache.remove_items('series', smap), {1, 2}) smap = cache.get_id_map('#series') s = {v: k for k, v in smap.iteritems()}['My Series Two'] self.assertEqual(cache.remove_items('#series', (s, )), {1}) for c in (cache, self.init_cache()): self.assertFalse(c.get_id_map('tags')) self.assertFalse(c.all_field_names('tags')) for bid in c.all_book_ids(): self.assertFalse(c.field_for('tags', bid)) self.assertEqual(len(c.get_id_map('#tags')), 1) self.assertEqual(c.all_field_names('#tags'), {'My Tag One'}) for bid in c.all_book_ids(): self.assertIn(c.field_for('#tags', bid), ((), ('My Tag One', ))) for bid in (1, 2): self.assertEqual(c.field_for('series_index', bid), 1.0) self.assertFalse(c.get_id_map('series')) self.assertFalse(c.all_field_names('series')) for bid in c.all_book_ids(): self.assertFalse(c.field_for('series', bid)) self.assertEqual(c.field_for('series_index', 1), 1.0) self.assertEqual(c.all_field_names('#series'), {'My Series One'}) for bid in c.all_book_ids(): self.assertIn(c.field_for('#series', bid), (None, 'My Series One'))
def test_remove_items(self): # {{{ ' Test removal of many-(many,one) items ' cache = self.init_cache() tmap = cache.get_id_map('tags') self.assertEqual(cache.remove_items('tags', tmap), {1, 2}) tmap = cache.get_id_map('#tags') t = {v:k for k, v in tmap.iteritems()}['My Tag Two'] self.assertEqual(cache.remove_items('#tags', (t,)), {1, 2}) smap = cache.get_id_map('series') self.assertEqual(cache.remove_items('series', smap), {1, 2}) smap = cache.get_id_map('#series') s = {v:k for k, v in smap.iteritems()}['My Series Two'] self.assertEqual(cache.remove_items('#series', (s,)), {1}) for c in (cache, self.init_cache()): self.assertFalse(c.get_id_map('tags')) self.assertFalse(c.all_field_names('tags')) for bid in c.all_book_ids(): self.assertFalse(c.field_for('tags', bid)) self.assertEqual(len(c.get_id_map('#tags')), 1) self.assertEqual(c.all_field_names('#tags'), {'My Tag One'}) for bid in c.all_book_ids(): self.assertIn(c.field_for('#tags', bid), ((), ('My Tag One',))) for bid in (1, 2): self.assertEqual(c.field_for('series_index', bid), 1.0) self.assertFalse(c.get_id_map('series')) self.assertFalse(c.all_field_names('series')) for bid in c.all_book_ids(): self.assertFalse(c.field_for('series', bid)) self.assertEqual(c.field_for('series_index', 1), 1.0) self.assertEqual(c.all_field_names('#series'), {'My Series One'}) for bid in c.all_book_ids(): self.assertIn(c.field_for('#series', bid), (None, 'My Series One'))