def testExtendVarMap(self, cnf, names): for pre in range(len(names)): varMap = VariableMap() for name in names[:pre]: varMap.addVar(name) # fixed numbers (1,2..pre) for the first 'pre' variables cnf.extendVarMap(varMap) keys = sorted(varMap.keys()) values = sorted([ varMap[v] for v in varMap.keys() ]) self.compare(keys, sorted(names), 'extendVarMap wrong var names %s %s' % (names, cnf.toString())) self.compare(values, list(range(1, len(names)+1)), 'extendVarMap wrong numbers %s %s' % (names, cnf.toString())) for k,v in [ (v,varMap[v]) for v in names[:pre]]: self.compare(varMap[k], v, 'extendVarMap fixed mismatch %s %s' % (names, cnf.toString()))
def testExtendVarMap(self, cnf, names): for pre in range(len(names)): varMap = VariableMap() for name in names[:pre]: varMap.addVar( name ) # fixed numbers (1,2..pre) for the first 'pre' variables cnf.extendVarMap(varMap) keys = sorted(varMap.keys()) values = sorted([varMap[v] for v in varMap.keys()]) self.compare( keys, sorted(names), 'extendVarMap wrong var names %s %s' % (names, cnf.toString())) self.compare( values, list(range(1, len(names) + 1)), 'extendVarMap wrong numbers %s %s' % (names, cnf.toString())) for k, v in [(v, varMap[v]) for v in names[:pre]]: self.compare( varMap[k], v, 'extendVarMap fixed mismatch %s %s' % (names, cnf.toString()))
def testVarMap(self, namesPre, namesAdd): varMap = VariableMap(namesPre) for name in namesAdd: varMap.addVar(name) self.compare(sorted(varMap.keys()), sorted(list(set(namesPre + namesAdd))), 'VariableMap: wrong variables %s' % varMap.toString()) self.compare( sorted([varMap[k] for k in varMap.keys()]), list(range(1, len(sorted(list(set(namesPre + namesAdd)))) + 1)), 'VariableMap: wrong variable numbers %s' % varMap.toString()) rev = varMap.reverse() self.compare(sorted([(k, varMap[k]) for k in varMap.keys()]), sorted([(rev[k], k) for k in rev]), 'VariableMap: reverse() %s' % varMap.toString()) oF = io.StringIO() varMap.writeToFile(oF) iF = io.StringIO(oF.getvalue()) vm = VariableMap.readFromFile(iF) self.compare( sorted([(k, vm[k]) for k in vm.keys()]), sorted([(k, varMap[k]) for k in varMap.keys()]), 'VariableMap read/write %s (%s)' % (varMap.toString(), repr(oF.getvalue())))
'b': False }, False), ({ 'a': False, 'b': True }, False), ({ 'a': False, 'b': False }, False), ]) # # testy pre VariableMap # varMap = VariableMap() varMap.addVar('z').addVar('y').addVar('x') t.compare(varMap.get('y'), 2, 'varMap.get(y)') t.compare(varMap['y'], 2, 'varMap[y]') for p in itertools.permutations(['a', 'b', 'x']): for l in range(3): t.testVarMap(p[:l], p[l:]) # # testy extendVarMap # t.testExtendVarMap( Cnf([ CnfClause([CnfLit('a'), CnfLit.Not('b')]), CnfClause([]),
def testVarMap(self, namesPre, namesAdd): varMap = VariableMap(namesPre) for name in namesAdd: varMap.addVar(name) self.compare(sorted(varMap.keys()), sorted(list(set(namesPre+namesAdd))), 'VariableMap: wrong variables %s' % varMap.toString()) self.compare( sorted([varMap[k] for k in varMap.keys()]), list(range(1, len(sorted(list(set(namesPre+namesAdd)))) + 1)), 'VariableMap: wrong variable numbers %s' % varMap.toString()) rev = varMap.reverse() self.compare( sorted([ (k,varMap[k]) for k in varMap.keys()]), sorted([ (rev[k],k) for k in rev]), 'VariableMap: reverse() %s' % varMap.toString()) oF = io.StringIO() varMap.writeToFile(oF) iF = io.StringIO(oF.getvalue()) vm = VariableMap.readFromFile(iF) self.compare( sorted([ (k,vm[k]) for k in vm.keys()]), sorted([ (k,varMap[k]) for k in varMap.keys()]), 'VariableMap read/write %s (%s)' % (varMap.toString(), repr(oF.getvalue())))
Cnf( [ CnfClause( [ CnfLit('a'), CnfLit.Not('b') ] ), CnfClause( [ CnfLit('b') ] ), ]), 'a -b\nb\n', [ ({'a':True, 'b':True}, True), ({'a':True, 'b':False}, False), ({'a':False, 'b':True}, False), ({'a':False, 'b':False}, False), ]) # # testy pre VariableMap # varMap = VariableMap() varMap.addVar('z').addVar('y').addVar('x') t.compare( varMap.get('y'), 2, 'varMap.get(y)') t.compare( varMap['y'], 2, 'varMap[y]') for p in itertools.permutations(['a', 'b', 'x']): for l in range(3): t.testVarMap(p[:l], p[l:]) # # testy extendVarMap # t.testExtendVarMap( Cnf( [ CnfClause( [ CnfLit('a'), CnfLit.Not('b') ] ), CnfClause( [ ] ),