def test_main_versionOption(self): with patch('sys.stdout', new=StringIO()) as mockStdout: sys.argv = ['cut', '--version'] cut.main() self.assertTrue( -1 != mockStdout.getvalue().find('Written by Aldebaran Perseke'))
def test_main_ignoredOption(self): with patch('sys.stdout', new=StringIO()) as mockStdout: with patch('sys.stdin', new=StringIO('abcdefghijklm\n')) as mockStdin: sys.argv = ['cut', '-n', '--bytes=4'] cut.main() self.assertTrue('d\n' == mockStdout.getvalue())
def test_main_invalidOption(self): with patch('sys.stderr', new=StringIO()) as mockStderr: with self.assertRaises(SystemExit) as exit: sys.argv = ['cut', '-a', '--bytes=4'] cut.main() self.assertEqual(exit.exception.code, 2) self.assertTrue( -1 != mockStderr.getvalue().find('unrecognized arguments: -a'))
def test_main_charactersAndFieldsOptions(self): with patch('sys.stderr', new=StringIO()) as mockStderr: with self.assertRaises(SystemExit) as exit: sys.argv = ['cut', '--characters=4', '--fields=5'] cut.main() self.assertEqual(exit.exception.code, 2) self.assertTrue(-1 != mockStderr.getvalue().find( 'only one type of list may be specified'))
def test_main_missingParameterForDelimiterOption(self): with patch('sys.stderr', new=StringIO()) as mockStderr: with self.assertRaises(SystemExit) as exit: sys.argv = ['cut', '--delimiter=', '--field=2'] cut.main() self.assertEqual(exit.exception.code, 2) self.assertTrue(-1 != mockStderr.getvalue().find( 'argument -d/--delimiter=: expected one argument'))
def test_main_hifenAsFileNames(self): with patch('sys.stdout', new=StringIO()) as mockStdout: with patch('sys.stdin', new=StringIO( 'abcdef\nghijklm\nnopqrs\ntuvwxyz')) as mockStdin: sys.argv = ['cut', '--characters=2-3,6', '-'] cut.main() self.assertTrue('bcf\nhil\nops\nuvy\n' == mockStdout.getvalue())
def test_main_invalidParameterForDelimiterOption(self): with patch('sys.stderr', new=StringIO()) as mockStderr: with self.assertRaises(SystemExit) as exit: sys.argv = ['cut', '--delimiter=tab', '--field=2'] cut.main() self.assertEqual(exit.exception.code, 2) self.assertTrue(-1 != mockStderr.getvalue().find( 'the delimiter must be a single character'))
def test_main_ignoredOptionOnly(self): with patch('sys.stderr', new=StringIO()) as mockStderr: with self.assertRaises(SystemExit) as exit: sys.argv = ['cut', '-n'] cut.main() self.assertEqual(exit.exception.code, 2) self.assertTrue(-1 != mockStderr.getvalue().find( 'you must specify a list of bytes, characters, or fields'))
def test_main_invalidParameterForFieldsOptions(self): with patch('sys.stderr', new=StringIO()) as mockStderr: with self.assertRaises(SystemExit) as exit: sys.argv = ['cut', '--fields=f'] cut.main() self.assertEqual(exit.exception.code, 2) self.assertTrue(-1 != mockStderr.getvalue().find( 'invalid byte/character position "f"'))
def test_main_charactersAndOnlyDelimitedOptions(self): with patch('sys.stderr', new=StringIO()) as mockStderr: with self.assertRaises(SystemExit) as exit: sys.argv = ['cut', '--characters=4', '--only-delimited'] cut.main() self.assertEqual(exit.exception.code, 2) self.assertTrue(-1 != mockStderr.getvalue().find( 'suppressing non-delimited lines makes sense only when operating on fields' ))
def test_main_charactersAndDelimiterOptions(self): with patch('sys.stderr', new=StringIO()) as mockStderr: with self.assertRaises(SystemExit) as exit: sys.argv = ['cut', '--characters=5', '--delimiter=;'] cut.main() self.assertEqual(exit.exception.code, 2) self.assertTrue(-1 != mockStderr.getvalue().find( 'an input delimiter may be specified only when operating on fields' ))
def test_main_singleFileName(self): contentFile = tempfile.NamedTemporaryFile(delete=False) contentFile.write(b'abc;def;ghi;jkl\nmno;pqr;stu;vwx;yz\n') contentFile.close() with patch('sys.stdout', new=StringIO()) as mockStdout: sys.argv = [ 'cut', '--fields=1,3-4', '--delimiter=;', contentFile.name ] cut.main() self.assertTrue('abc;ghi;jkl\nmno;stu;vwx\n' == mockStdout.getvalue()) os.remove(contentFile.name)
def test_main_invalidFileName(self): # remember, a temporary file is removed after it's closed invalidFile = tempfile.NamedTemporaryFile() invalidFileName = invalidFile.name invalidFile.write(b'abcdef\nghijklm\nnopqrs\ntuvwxyz') invalidFile.close() with patch('sys.stderr', new=StringIO()) as mockStderr: sys.argv = ['cut', '--characters=2-3,6', invalidFileName] cut.main() self.assertTrue( -1 != mockStderr.getvalue().find('No such file or directory'))
def main(memory, que): wow = cut.main(memory, 2) mymemory = wow[0] deep = wow[1] - 1 root = Node("white", deep + 1, mymemory) lists = [] get_var(mymemory, root, lists, deep + 1) while lists[0].depth != deep + 1: f = sorted(lists, key=key_func) fathers = itertools.groupby(f, key_func) lists = [] for k, g in fathers: if k.color == "black": kam = list(g) k.score += min(f.score for f in kam) else: kam = list(g) k.score += max(f.score for f in kam) lists.append(k) max_score = -sys.maxsize res_move = [] for e in root.kids: if max_score < e.score: max_score = e.score res_move = copy_matrix(e.matrix) xi, yi = compare(mymemory, res_move) que.put(xi + wow[2]) que.put(yi + wow[3])
def test_main_singleFileNameAndHifen(self): contentFile = tempfile.NamedTemporaryFile(delete=False) contentFile.write(b'abcdef\nghijkl\n') contentFile.close() with patch('sys.stdout', new=StringIO()) as mockStdout: with patch('sys.stdin', new=StringIO('mnopqr\nstuvwxyz\n')) as mockStdin: sys.argv = [ 'cut', '--characters=1,3,5-6', contentFile.name, '-' ] cut.main() # sys.stderr.write( '[debug] result: \'' + mockStdout.getvalue() + '\'\n' ) self.assertTrue('acef\ngikl\nmoqr\nsuwx\n' == mockStdout.getvalue()) os.remove(contentFile.name)
def victory_check(self): pat = re.compile(r'1{5}') mem = cut.main(self.memory, 0) slices = evaluate.get_slices(mem[0]) for sl in slices: for e in sl.values(): mo = re.search(pat, e) if mo: return True return False
def test_main_multipleFileNames(self): firstContentFile = tempfile.NamedTemporaryFile(delete=False) firstContentFile.write(b'abcdef\nghijkl\n') firstContentFile.close() secondContentFile = tempfile.NamedTemporaryFile(delete=False) secondContentFile.write(b'mnopqr\nstuvwxyz\n') secondContentFile.close() with patch('sys.stdout', new=StringIO()) as mockStdout: sys.argv = [ 'cut', '--bytes=1,3-4', firstContentFile.name, secondContentFile.name ] cut.main() self.assertTrue('acd\ngij\nmop\nsuv\n' == mockStdout.getvalue()) os.remove(firstContentFile.name) os.remove(secondContentFile.name)