def test_clearNodes(self): """Should empty path stack and variable forbidden""" #create a searchpath and add just one node test = SearchPath(SearchPathHelper.alphabets) test.generate(1) #now call clear and make sure path value is "" (empty) test.clearNodes() self.assertEquals(test.Value, "")
def test_generate_correctAlph(self): """Should get correct alphabet even if node is popped then readded""" test_alphs = { 0: "A", 1: "BC", 2: "D", 3: "E", SearchPath.DEFAULT_KEY: "X" } forbidden_seqs = ["CD"] test = SearchPath(test_alphs, forbidden_seqs) #given these position alphabets and this forbidden seq, #the only legal 3-node searchpath should be ABD. Make #a hundred searchpaths and make sure this is the only one #that actually shows up. found_paths = {} for i in xrange(100): curr_path = test.generate(3) found_paths[curr_path] = True test.clearNodes() #next #make sure there is only one path found and that it is the right one found_path_str = str("".join(found_paths.keys())) self.assertEquals(len(found_paths), 1) self.assertEquals(found_path_str, "ABD")
def test_generate_nonePossible(self): """Should return null if no path can match constraints""" alphabet = {SearchPath.DEFAULT_KEY: "AB"} #forbid all combinations of alphabet forbidden_seqs = ["AA", "AB", "BB", "BA"] test = SearchPath(alphabet, forbidden_seqs) output = test.generate(2) self.assertEquals(output, None)
def test_generate_nonePossible(self): """Should return null if no path can match constraints""" alphabet = {SearchPath.DEFAULT_KEY:"AB"} #forbid all combinations of alphabet forbidden_seqs = ["AA", "AB", "BB", "BA"] test = SearchPath(alphabet, forbidden_seqs) output = test.generate(2) self.assertEquals(output, None)
def test_generate_multiple(self): """Should be able to call generate multiple times to extend path""" test = SearchPath(SearchPathHelper.alphabets) output1 = test.generate(2) output2 = test.generate(3) #make sure that the length of the path is now three self.assertEquals(len(output2), 3) #make sure that the new path is a superset of the old one self.assertEquals(output1, output2[:2])
def test_generate_correctAlph(self): """Should get correct alphabet even if node is popped then readded""" test_alphs = {0:"A",1:"BC",2:"D",3:"E",SearchPath.DEFAULT_KEY:"X"} forbidden_seqs = ["CD"] test = SearchPath(test_alphs, forbidden_seqs) #given these position alphabets and this forbidden seq, #the only legal 3-node searchpath should be ABD. Make #a hundred searchpaths and make sure this is the only one #that actually shows up. found_paths = {} for i in xrange(100): curr_path = test.generate(3) found_paths[curr_path] = True test.clearNodes() #next #make sure there is only one path found and that it is the right one found_path_str = str("".join(found_paths.keys())) self.assertEquals(len(found_paths), 1) self.assertEquals(found_path_str, "ABD")