def test_vct(self): """Test functionality of VariantCombinationTemplates.""" vct_1 = variant.VariantCombinationTemplate( dict([(1, ["a", "b", "c"]), (2, ["z", "y", "x"])])) self.assertEqual(vct_1[1], set(["a", "b", "c"])) self.assertTrue(vct_1.issubset(vct_1)) self.assertEqual(str(vct_1), ' 1="a","b","c" 2="x","y","z"') vct_2 = variant.VariantCombinationTemplate( dict([(1, ["a", "b"]), (2, ["z", "y"])])) self.assertTrue(vct_2.issubset(vct_1)) self.assertTrue(not vct_1.issubset(vct_2)) vct_2.merge_unknown(vct_1) self.assertEqual(vct_2[1], set(["a", "b"])) self.assertEqual(vct_2[2], set(["z", "y"])) vct_3 = variant.VariantCombinationTemplate(dict([(1, ["a", "b", "c"])])) self.assertTrue(vct_3.issubset(vct_1)) self.assertTrue(not vct_1.issubset(vct_3)) vct_3.merge_unknown(vct_1) self.assertEqual(vct_1, vct_3) vct_3 = variant.VariantCombinationTemplate(dict([(1, ["a", "b", "c"])])) vct_m = variant.VariantCombinationTemplate(set([])) vct_m.merge_values(vct_3) self.assertEqual(vct_m, vct_3) vct_m.merge_values(vct_2) self.assertEqual(vct_m[1], set(["a", "b", "c"])) self.assertEqual(vct_m[2], set(["z", "y"])) self.assertEqual(vct_3[1], set(["a", "b", "c"])) self.assertTrue(2 not in vct_3) vct_m.merge_values(vct_1) self.assertEqual(str(vct_m), ' 1="a","b","c" 2="x","y","z"') self.assertEqual(vct_2[1], set(["a", "b"])) self.assertEqual(vct_2[2], set(["z", "y"])) vct_m.merge_values(vct_2) self.assertEqual(str(vct_m), ' 1="a","b","c" 2="x","y","z"')
def test_variant_combinations(self): """Test functionality of VariantCombinations.""" vct_1 = variant.VariantCombinationTemplate( dict([(1, ["a", "b", "c"]), (2, ["z", "y", "x"])])) vct_2 = variant.VariantCombinationTemplate( dict([(10, ["l", "m", "n"]), (20, ["p", "q", "r"])])) vct_3 = variant.VariantCombinationTemplate( dict([(1, ["a"]), (2, ["z"])])) vct_4 = variant.VariantCombinationTemplate( dict([(1, ["a", "b", "d"]), (2, ["z", "y", "x"])])) set_combo = set([ frozenset([(1, "a"), (2, "z")]), frozenset([(1, "a"), (2, "y")]), frozenset([(1, "a"), (2, "x")]), frozenset([(1, "b"), (2, "z")]), frozenset([(1, "b"), (2, "y")]), frozenset([(1, "b"), (2, "x")]), frozenset([(1, "c"), (2, "z")]), frozenset([(1, "c"), (2, "y")]), frozenset([(1, "c"), (2, "x")]) ]) vc1_s = variant.VariantCombinations(vct_1, True) self.assertEqual(vc1_s.sat_set, set_combo) self.assertEqual(vc1_s.not_sat_set, set()) self.assertTrue(not vc1_s.is_empty()) vc1_ns = variant.VariantCombinations(vct_1, False) self.assertEqual(vc1_ns.not_sat_set, set_combo) self.assertEqual(vc1_ns.sat_set, set()) self.assertTrue(not vc1_ns.is_empty()) self.assertRaises(AssertionError, vc1_ns.simplify, vct_2) self.assertEqual(vc1_ns.not_sat_set, set_combo) self.assertEqual(vc1_ns.sat_set, set()) self.assertTrue(not vc1_ns.is_empty()) self.assertRaises(AssertionError, vc1_ns.simplify, vct_4) self.assertEqual(vc1_ns.not_sat_set, set_combo) self.assertEqual(vc1_ns.sat_set, set()) self.assertTrue(not vc1_ns.is_empty()) vc1_tmp = copy.copy(vc1_ns) self.assertTrue(not vc1_tmp.is_satisfied()) vc1_tmp.mark_all_as_satisfied() self.assertTrue(vc1_tmp.is_satisfied()) self.assertEqual(vc1_tmp.sat_set, set_combo) vct3_set_combo = set([frozenset([(1, "a"), (2, "z")])]) vc3_ns = variant.VariantCombinations(vct_3, False) self.assertEqual(vc3_ns.not_sat_set, vct3_set_combo) self.assertTrue(vc3_ns.issubset(vc1_ns, False)) self.assertTrue(not vc1_ns.issubset(vc3_ns, False)) self.assertTrue(vc1_ns.issubset(vc3_ns, True)) self.assertTrue(not vc1_s.issubset(vc3_ns, True)) vc3_s = variant.VariantCombinations(vct_3, True) vc2_s = variant.VariantCombinations(vct_2, True) self.assertTrue(vc3_s.intersects(vc1_s)) self.assertTrue(vc3_ns.intersects(vc1_s)) self.assertTrue(not vc3_ns.intersects(vc2_s)) self.assertTrue(not vc3_s.intersects(vc2_s)) self.assertTrue(vc1_s.intersects(vc3_s)) intersect = vc3_s.intersection(vc1_s) self.assertEqual(intersect.sat_set, vct3_set_combo) self.assertEqual(intersect.not_sat_set, set()) # Test that modifing the original does not modify the copy. vc3_ns_copy = copy.copy(vc3_ns) vc3_ns.mark_all_as_satisfied() self.assertEqual(vc3_ns_copy.not_sat_set, vct3_set_combo) self.assertEqual(vc3_ns.not_sat_set, set()) self.assertEqual(vc3_ns.sat_set, vct3_set_combo) vct_empty = variant.VariantCombinationTemplate(dict([])) vc_empty = variant.VariantCombinations(vct_empty, True) self.assertTrue(vc_empty.is_empty()) self.assertTrue(vc_empty.intersects(vc1_ns)) self.assertTrue(vc1_ns.intersects(vc_empty)) vc1_ns.mark_as_satisfied(vc3_s) self.assertEqual(vc1_ns.sat_set, vct3_set_combo) self.assertEqual(vc1_ns.not_sat_set, set_combo - vct3_set_combo) vc1_s.simplify(vct_1) self.assertEqual(vc1_s.sat_set, set()) self.assertEqual(vc1_s.not_sat_set, set()) vc1_ns_simp = variant.VariantCombinations(vct_1, False) vc1_ns_simp.simplify(vct_1) self.assertEqual(vc1_ns_simp.sat_set, set()) self.assertEqual(vc1_ns_simp.not_sat_set, set())