Пример #1
0
 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())
Пример #2
0
 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)]]))
Пример #3
0
 def test_comment_only_file(self):
     dimacs = StringIO.StringIO("c Hej!\n")
     with self.assertRaises(ValueError):
         cnfutils.dimacs2cnf(dimacs)
Пример #4
0
 def test_invalid_file(self):
     dimacs = StringIO.StringIO("Hej!\n")
     with self.assertRaises(ValueError):
         cnfutils.dimacs2cnf(dimacs)
Пример #5
0
 def test_comment_only_file(self) :
     dimacs = StringIO.StringIO("c Hej!\n")
     with self.assertRaises(ValueError) :
         cnfutils.dimacs2cnf(dimacs)
Пример #6
0
 def test_empty_cnf(self):
     dimacs = io.StringIO("p cnf 0 0\n")
     cnf = cnfutils.dimacs2cnf(dimacs)
     self.assertCnfEqual(cnf, cnfformula.CNF())
Пример #7
0
 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)
Пример #8
0
 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)
Пример #9
0
 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)]]))
Пример #10
0
 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)
Пример #11
0
 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)]]))
Пример #12
0
 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())
Пример #13
0
 def test_invalid_file(self) :
     dimacs = StringIO.StringIO("Hej!\n")
     with self.assertRaises(ValueError) :
         cnfutils.dimacs2cnf(dimacs)
Пример #14
0
 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)]]))
Пример #15
0
 def test_empty_file(self) :
     dimacs = StringIO.StringIO()
     with self.assertRaises(ValueError) :
         cnfutils.dimacs2cnf(dimacs)
Пример #16
0
 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)
Пример #17
0
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()
Пример #18
0
 def test_empty_file(self):
     dimacs = StringIO.StringIO()
     with self.assertRaises(ValueError):
         cnfutils.dimacs2cnf(dimacs)
Пример #19
0
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()