|  | @@ -242,6 +242,7 @@ class TestFormatSelection(unittest.TestCase):
 | 
	
		
			
				|  |  |      def test_format_selection_string_ops(self):
 | 
	
		
			
				|  |  |          formats = [
 | 
	
		
			
				|  |  |              {'format_id': 'abc-cba', 'ext': 'mp4', 'url': TEST_URL},
 | 
	
		
			
				|  |  | +            {'format_id': 'zxc-cxz', 'ext': 'webm', 'url': TEST_URL},
 | 
	
		
			
				|  |  |          ]
 | 
	
		
			
				|  |  |          info_dict = _make_result(formats)
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -253,6 +254,11 @@ class TestFormatSelection(unittest.TestCase):
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          # does not equal (!=)
 | 
	
		
			
				|  |  |          ydl = YDL({'format': '[format_id!=abc-cba]'})
 | 
	
		
			
				|  |  | +        ydl.process_ie_result(info_dict.copy())
 | 
	
		
			
				|  |  | +        downloaded = ydl.downloaded_info_dicts[0]
 | 
	
		
			
				|  |  | +        self.assertEqual(downloaded['format_id'], 'zxc-cxz')
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        ydl = YDL({'format': '[format_id!=abc-cba][format_id!=zxc-cxz]'})
 | 
	
		
			
				|  |  |          self.assertRaises(ExtractorError, ydl.process_ie_result, info_dict.copy())
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          # starts with (^=)
 | 
	
	
		
			
				|  | @@ -262,7 +268,12 @@ class TestFormatSelection(unittest.TestCase):
 | 
	
		
			
				|  |  |          self.assertEqual(downloaded['format_id'], 'abc-cba')
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          # does not start with (!^=)
 | 
	
		
			
				|  |  | -        ydl = YDL({'format': '[format_id!^=abc-cba]'})
 | 
	
		
			
				|  |  | +        ydl = YDL({'format': '[format_id!^=abc]'})
 | 
	
		
			
				|  |  | +        ydl.process_ie_result(info_dict.copy())
 | 
	
		
			
				|  |  | +        downloaded = ydl.downloaded_info_dicts[0]
 | 
	
		
			
				|  |  | +        self.assertEqual(downloaded['format_id'], 'zxc-cxz')
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        ydl = YDL({'format': '[format_id!^=abc][format_id!^=zxc]'})
 | 
	
		
			
				|  |  |          self.assertRaises(ExtractorError, ydl.process_ie_result, info_dict.copy())
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          # ends with ($=)
 | 
	
	
		
			
				|  | @@ -272,16 +283,29 @@ class TestFormatSelection(unittest.TestCase):
 | 
	
		
			
				|  |  |          self.assertEqual(downloaded['format_id'], 'abc-cba')
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          # does not end with (!$=)
 | 
	
		
			
				|  |  | -        ydl = YDL({'format': '[format_id!$=abc-cba]'})
 | 
	
		
			
				|  |  | +        ydl = YDL({'format': '[format_id!$=cba]'})
 | 
	
		
			
				|  |  | +        ydl.process_ie_result(info_dict.copy())
 | 
	
		
			
				|  |  | +        downloaded = ydl.downloaded_info_dicts[0]
 | 
	
		
			
				|  |  | +        self.assertEqual(downloaded['format_id'], 'zxc-cxz')
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        ydl = YDL({'format': '[format_id!$=cba][format_id!$=cxz]'})
 | 
	
		
			
				|  |  |          self.assertRaises(ExtractorError, ydl.process_ie_result, info_dict.copy())
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          # contains (*=)
 | 
	
		
			
				|  |  | -        ydl = YDL({'format': '[format_id*=-]'})
 | 
	
		
			
				|  |  | +        ydl = YDL({'format': '[format_id*=bc-cb]'})
 | 
	
		
			
				|  |  |          ydl.process_ie_result(info_dict.copy())
 | 
	
		
			
				|  |  |          downloaded = ydl.downloaded_info_dicts[0]
 | 
	
		
			
				|  |  |          self.assertEqual(downloaded['format_id'], 'abc-cba')
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          # does not contain (!*=)
 | 
	
		
			
				|  |  | +        ydl = YDL({'format': '[format_id!*=bc-cb]'})
 | 
	
		
			
				|  |  | +        ydl.process_ie_result(info_dict.copy())
 | 
	
		
			
				|  |  | +        downloaded = ydl.downloaded_info_dicts[0]
 | 
	
		
			
				|  |  | +        self.assertEqual(downloaded['format_id'], 'zxc-cxz')
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        ydl = YDL({'format': '[format_id!*=abc][format_id!*=zxc]'})
 | 
	
		
			
				|  |  | +        self.assertRaises(ExtractorError, ydl.process_ie_result, info_dict.copy())
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          ydl = YDL({'format': '[format_id!*=-]'})
 | 
	
		
			
				|  |  |          self.assertRaises(ExtractorError, ydl.process_ie_result, info_dict.copy())
 | 
	
		
			
				|  |  |  
 |