def test_commented_empty_cnf(self): dimacs = StringIO.StringIO("c Hej!\np cnf 0 0\n") cnf = cnfutils.dimacs2cnf(dimacs) self.assertCnfEqual(cnf, cnfformula.CNF())
def test_one_clause_cnf(self): dimacs = StringIO.StringIO("c Hej!\np cnf 2 1\n1 -2 0\n") cnf = cnfutils.dimacs2cnf(dimacs) self.assertCnfEqual(cnf, cnfformula.CNF([[(True, 1), (False, 2)]]))
def test_comment_only_file(self): dimacs = StringIO.StringIO("c Hej!\n") with self.assertRaises(ValueError): cnfutils.dimacs2cnf(dimacs)
def test_invalid_file(self): dimacs = StringIO.StringIO("Hej!\n") with self.assertRaises(ValueError): cnfutils.dimacs2cnf(dimacs)
def test_comment_only_file(self) : dimacs = StringIO.StringIO("c Hej!\n") with self.assertRaises(ValueError) : cnfutils.dimacs2cnf(dimacs)
def test_empty_cnf(self): dimacs = io.StringIO("p cnf 0 0\n") cnf = cnfutils.dimacs2cnf(dimacs) self.assertCnfEqual(cnf, cnfformula.CNF())
def test_inverse_random(self) : cnf = self.random_cnf(4,10,100) dimacs = StringIO.StringIO(cnf.dimacs()) cnf2 = cnfutils.dimacs2cnf(dimacs) self.assertCnfEqual(cnf2,cnf)
def test_inverse_random(self): cnf = self.random_cnf(4, 10, 100) dimacs = StringIO.StringIO(cnf.dimacs()) cnf2 = cnfutils.dimacs2cnf(dimacs) self.assertCnfEqual(cnf2, cnf)
def test_one_var_cnf(self) : dimacs = StringIO.StringIO("c Hej!\np cnf 1 2\n1 0\n-1 0\n") cnf = cnfutils.dimacs2cnf(dimacs) self.assertCnfEqual(cnf,cnfformula.CNF([[(True, 1)],[(False, 1)]]))
def test_inverse(self) : cnf = TestCNF.sorted_cnf([[(True,2),(False,1)]]) dimacs = StringIO.StringIO(cnf.dimacs()) cnf2 = cnfutils.dimacs2cnf(dimacs) self.assertCnfEqual(cnf2,cnf)
def test_one_clause_cnf(self) : dimacs = StringIO.StringIO("c Hej!\np cnf 2 1\n1 -2 0\n") cnf = cnfutils.dimacs2cnf(dimacs) self.assertCnfEqual(cnf,cnfformula.CNF([[(True, 1),(False, 2)]]))
def test_commented_empty_cnf(self) : dimacs = StringIO.StringIO("c Hej!\np cnf 0 0\n") cnf = cnfutils.dimacs2cnf(dimacs) self.assertCnfEqual(cnf,cnfformula.CNF())
def test_invalid_file(self) : dimacs = StringIO.StringIO("Hej!\n") with self.assertRaises(ValueError) : cnfutils.dimacs2cnf(dimacs)
def test_one_var_cnf(self): dimacs = StringIO.StringIO("c Hej!\np cnf 1 2\n1 0\n-1 0\n") cnf = cnfutils.dimacs2cnf(dimacs) self.assertCnfEqual(cnf, cnfformula.CNF([[(True, 1)], [(False, 1)]]))
def test_empty_file(self) : dimacs = StringIO.StringIO() with self.assertRaises(ValueError) : cnfutils.dimacs2cnf(dimacs)
def test_inverse(self): cnf = TestCNF.sorted_cnf([[(True, 2), (False, 1)]]) dimacs = StringIO.StringIO(cnf.dimacs()) cnf2 = cnfutils.dimacs2cnf(dimacs) self.assertCnfEqual(cnf2, cnf)
def command_line_reshuffle(argv): # Python 2.6 does not have argparse library try: import argparse except ImportError: print("Sorry: %s requires `argparse` library, which is missing.\n" % argv[0], file=sys.stderr) print( "Either use Python 2.7 or install it from one of the following URLs:", file=sys.stderr) print(" * http://pypi.python.org/pypi/argparse", file=sys.stderr) print(" * http://code.google.com/p/argparse", file=sys.stderr) print("", file=sys.stderr) exit(-1) # Parse the command line arguments parser = argparse.ArgumentParser(prog='shuffle', epilog=""" For more information type 'shuffle <formula type> [--help | -h ]' """) parser.add_argument('--output', '-o', type=argparse.FileType('wb', 0), metavar="<output>", default='-', help="""Output file. The formula is saved on file instead of being sent to standard output. Setting '<output>' to '-' is another way to send the formula to standard output. (default: -) """) parser.add_argument('--seed', '-S', metavar="<seed>", default=None, type=str, action='store', help="""Seed for any random process in the program. Any python hashable object will be fine. (default: current time) """) parser.add_argument( '--input', '-i', type=argparse.FileType('r', 0), metavar="<input>", default='-', help= """Input file. A formula in dimacs format. Setting '<input>' to '-' is another way to read from standard input. (default: -) """) g = parser.add_mutually_exclusive_group() g.add_argument('--verbose', '-v', action='store_true', default=True, help="""Output formula header and comments.""") g.add_argument('--quiet', '-q', action='store_false', dest='verbose', help="""Output just the formula with no header.""") # Process the options args = parser.parse_args(argv[1:]) # If necessary, init the random generator if hasattr(args, 'seed') and args.seed: random.seed(args.seed) input_cnf = dimacs2cnf(args.input) output_cnf = reshuffle(input_cnf) output_cnf.dimacs_dump(output=args.output, export_header=args.verbose) if args.output != sys.stdout: args.output.close()
def test_empty_file(self): dimacs = StringIO.StringIO() with self.assertRaises(ValueError): cnfutils.dimacs2cnf(dimacs)
def command_line_reshuffle(argv): # Python 2.6 does not have argparse library try: import argparse except ImportError: print("Sorry: %s requires `argparse` library, which is missing.\n"%argv[0],file=sys.stderr) print("Either use Python 2.7 or install it from one of the following URLs:",file=sys.stderr) print(" * http://pypi.python.org/pypi/argparse",file=sys.stderr) print(" * http://code.google.com/p/argparse",file=sys.stderr) print("",file=sys.stderr) exit(-1) # Parse the command line arguments parser=argparse.ArgumentParser(prog='shuffle',epilog=""" For more information type 'shuffle <formula type> [--help | -h ]' """) parser.add_argument('--output','-o', type=argparse.FileType('wb',0), metavar="<output>", default='-', help="""Output file. The formula is saved on file instead of being sent to standard output. Setting '<output>' to '-' is another way to send the formula to standard output. (default: -) """) parser.add_argument('--seed','-S', metavar="<seed>", default=None, type=str, action='store', help="""Seed for any random process in the program. Any python hashable object will be fine. (default: current time) """) parser.add_argument('--input','-i', type=argparse.FileType('r',0), metavar="<input>", default='-', help="""Input file. A formula in dimacs format. Setting '<input>' to '-' is another way to read from standard input. (default: -) """) g=parser.add_mutually_exclusive_group() g.add_argument('--verbose', '-v',action='store_true',default=True, help="""Output formula header and comments.""") g.add_argument('--quiet', '-q',action='store_false',dest='verbose', help="""Output just the formula with no header.""") # Process the options args=parser.parse_args(argv[1:]) # If necessary, init the random generator if hasattr(args,'seed') and args.seed: random.seed(args.seed) input_cnf=dimacs2cnf(args.input) output_cnf=reshuffle(input_cnf) output_cnf.dimacs_dump(output=args.output, export_header=args.verbose) if args.output!=sys.stdout: args.output.close()